Curso básico de Lenguaje C - UNAM



4000310515center17 de Septiembre de 2019330009500017 de Septiembre de 2019420003263900175001760220Curso básico de Lenguaje C 450000Curso básico de Lenguaje C 32670758639175Germán Ignacio Cervantes GonzálezUNAM - Facultad de contaduría y administración450000Germán Ignacio Cervantes GonzálezUNAM - Facultad de contaduría y administraciónContenido TOC \o "1-3" \h \z \u Introducción PAGEREF _Toc20222845 \h 2Bibliotecas PAGEREF _Toc20222846 \h 2Características Relevantes PAGEREF _Toc20222847 \h 21.Mi primer programa en Lenguaje C (Baby Steps) PAGEREF _Toc20222848 \h 22.Ventajas y Desventajas de programar en Lenguaje C (?Para qué lo uso?) PAGEREF _Toc20222849 \h 3Ventajas PAGEREF _Toc20222850 \h 3Desventajas PAGEREF _Toc20222851 \h 4Uso de lenguaje C PAGEREF _Toc20222852 \h 43.IDE (El bonito ambiente de desarrollo) PAGEREF _Toc20222853 \h 4Notepad ++ PAGEREF _Toc20222854 \h 5Dev C ++ PAGEREF _Toc20222855 \h 5Linux (vim) PAGEREF _Toc20222856 \h 54.Sintaxis y estructura de un programa en C (Si quieres que te entienda, escribe bien) PAGEREF _Toc20222857 \h 5?Cómo se organiza un programa? PAGEREF _Toc20222858 \h 5Mi primer programa en Lenguaje C PAGEREF _Toc20222859 \h 5Identificadores PAGEREF _Toc20222860 \h 7Palabras reservadas PAGEREF _Toc20222861 \h 7Tipos de datos PAGEREF _Toc20222862 \h 8Variables PAGEREF _Toc20222863 \h 9Constantes PAGEREF _Toc20222864 \h 9Bibliotecas PAGEREF _Toc20222865 \h 10Operadores PAGEREF _Toc20222866 \h 12Estructuras de control condicionales PAGEREF _Toc20222867 \h 15Estructuras Cíclicas PAGEREF _Toc20222868 \h 18Funciones PAGEREF _Toc20222869 \h 19IntroducciónC es un lenguaje de programación de propósito general originalmente desarrollado por Dennis Ritchie entre 1969 y 1972, está orientado a la implementación de sistemas operativos, concretamente para UNIX.Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio nivel” (alto nivel). El lenguaje que define este estándar fue conocido como ANSI C (1989), después con el ISO (1990) se hizo más popular por la portabilidad entre plataformas. CITATION Wik7 \l 2058 (Wikipedia: Lenguaje C, s.f.)Bibliotecas Una biblioteca de C es una colección de funciones utilizadas en el lenguaje de programación C. La más común es la biblioteca estándar (stdio.h), que incluye funciones para la entrada y salida de archivos, alojamiento de memoria y operaciones con datos comunes: funciones matemáticas, funciones de manejo de cadenas de texto y funciones de hora y fecha. Muchas bibliotecas de otros lenguajes de programación están escritas en C.CITATION Wik7 \l 2058 (Wikipedia: Lenguaje C, s.f.)Características RelevantesFácil de aprenderLenguaje estructuradoProduce programas eficientesPuede manejar actividades de “bajo nivel”Se puede compilar en gran variedad de arquitecturas de computadorasMi primer programa en Lenguaje C (Baby Steps)Un programa en C consiste en:Comandos del preprocesadorFuncionesVariablesInstrucciones y ExpresionesComentariosEn el programa anterior:La primera línea del programa #include <stdio.h> es un comando del preprocesador, que le dice a un compilador de C que incluya el archivo stdio.h antes de ir a la compilación real.La siguiente línea int main () es la función principal donde comienza la ejecución del programa e indica que la función devolverá un entero y que no recibe ningún parámetro.La siguiente línea /*...*/ será ignorada por el compilador y se ha agregado para poner un bloque de comentarios al programa.La siguiente línea printf (...) es otra función disponible en C que causa el mensaje "?Hola, mundo!" para ser exhibido en la pantalla.La siguiente línea, return 0; termina la función main () y devuelve el valor 0.Ventajas y Desventajas de programar en Lenguaje C (?Para qué lo uso?)VentajasEs altamente portable.Es relativamente sencillo de programar y fácil de aprender.Un sistema de tipos, lo que hace más claro el uso de las variables y el que no se usen operaciones extra?as.Se utilizan apuntadores para realizar acceso a la memoria.Se pueden llamar funciones que sirven del enlace con el núcleo del sistema operativo.Se pueden pasar parámetros a las funciones por valor o por referencia.El hecho de que se puedan hacer llamadas de bajo nivel ayuda a optimizar los programas.El compilador de C se ha portado a casi todos los sistemas operativos conocidos.Permite la programación modular ya que se pueden incluir programas compilados separadamente.DesventajasNo es un lenguaje visual por lo que no puede ser deducido de forma intuitiva como Visual Basic.Las variables no pueden utilizarse con diferentes tipos de datos, sólo se les puede asignar el tipo con el que fueron declaradas.De forma nativa carece de funciones que permitan la programación multihilo, hay que utilizar bibliotecas adicionales.No cuenta con instrucciones que permitan la programación orientada a objetos.Uso de lenguaje CMuchos de los programas de software libre más populares están escritos en éste lenguaje, como el sistema operativo Linux (kernel) o manejadores de bases de datos como MariaDB.Los programadores principiantes deben de tener cuidado con la gestión de memoria, ya que se puede reservar y liberar memoria explícitamente, pero características como ésta que tiene Lenguaje C, es muy útil para escribir controladores de hardware.C es un lenguaje muy común para programar sistemas embebidos. El código ligero que un compilador C genera, combinado con la capacidad de acceso a capas del software cercanas al hardware son la causa de su popularidad en estas aplicaciones.Otros usos:Compiladores para otros lenguajes.Intérpretes para otros lenguajes.Editores de TextoDiferentes tipos de programas que tienen buen desempe?oUtilidades del sistema operativoIDE (El bonito ambiente de desarrollo)En inglés Integrated Development Environment (IDE), es una aplicación informática que proporciona servicios integrales para facilitarle al desarrollador o programador el desarrollo de software.Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción automáticas y un depurador. La mayoría de los IDE tienen auto-completado inteligente de código (IntelliSense). Algunos IDE contienen un compilador, un intérprete, o ambos, tales como NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus. CITATION Wik8 \l 2058 (Wikipedia: IDE, s.f.)Notepad ++Es solamente un editor de texto, para compilar necesitamos otra herramienta.Dev C ++Es un entorno de programación, cuenta con editor, compilador y otras herramientas como depurador.Linux (vim)En Linux generalmente se utilizan una serie de programas que se ejecutan en una terminal por medio de comandos.Sintaxis y estructura de un programa en C (Si quieres que te entienda, escribe bien)?Cómo se organiza un programa?Declaraciones para el preprocesador.Declaración de variables Globales.Declaración de funciones.Declaración de programa principal.En cualquier parte del programa pueden ir uno o más comentarios.Mi primer programa en Lenguaje Cright-127000right46863000IdentificadoresVariables: las variables son espacios reservados en la memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa, es decir, pueden ser manipuladas en el programa.Funciones: Las funciones se crearon para evitar tener que repetir constantemente fragmentos de código. Se presenta como una subrutina (procedimiento) que forma parte del programa principal, el cual permite resolver una tarea específica; además nos permite organizar mejor nuestro programa.Es un nombre utilizado para identificar una variable, función o cualquier otro elemento definido por el usuario. Un identificador comienza con una letra A a la Z, una a la z, o un guion bajo '_' seguido de cero o más letras, guiones bajos y dígitos (0 a 9).C no permite caracteres de puntuación como @, $ y% dentro de los identificadores. C es un lenguaje de programación sensible a mayúsculas y minúsculas. Ejemplos:mohd zara abc move_name a_123myname50 _temp j a23b9 retValEl punto y coma se utiliza para terminar una instrucción.Palabras reservadasautoelselongswitchbreakenumregistertypedefcaseexternreturnunioncharfloatshortunsignedconstforsignedvoidcontinuegotosizeofvolatiledefaultifstaticwhiledointstruct_PackeddoubleTipos de datosTipo EnteroTipoEspacio Rango de valoreschar1 byte-128 to 127 or 0 to 255unsigned char1 byte0 to 255signed char1 byte-128 to 127int2 or 4 bytes-32,768 to 32,767 or -2,147,483,648 to 2,147,483,647unsigned int2 or 4 bytes0 to 65,535 or 0 to 4,294,967,295short2 bytes-32,768 to 32,767unsigned short2 bytes0 to 65,535long8 bytes-9223372036854775808 to 9223372036854775807unsigned long8 bytes0 to 18446744073709551615Tipo flotanteTipoEspacioRango de ValoresPrecisiónfloat4 byte1.2E-38 to 3.4E+386 decimalesdouble8 byte2.3E-308 to 1.7E+30815 decimaleslong double10 byte3.4E-4932 to 1.1E+493219 decimalesTipo VoidEspecifica que ningún valor está disponible (ausencia de valor)Se usa en 3 situaciones:Una función que regresa o argumento de función.Un apuntador a una dirección de memoria que no tiene un tipo de dato en específico.Los tipos de datos que más se usan son: char, int, float, double, void.int i, j, k;char c, ch;float f, salary;double d;Asignaciones enteras212 /* Entero */0x4b /* Hexadecimal */Delcaración flotante3.14159 /* Legal */314159E-5L /* Legal */Caracteres especiales\t /* Tabulador */ \n /* Salto de línea */Cadenas“Soy el rayo que no cesa”;Variablesint d = 3, f = 5;byte z = 22; char x = 'x'; Constantes#define TAM 10 const int TAM = 10;BibliotecasBibliotecaDescripción<assert.h>Contiene la macro?assert?(aserción), utilizada para detectar errores lógicos y otros tipos de fallos en la?depuración?de un programa.<complex.h>Conjunto de funciones para manipular?números complejos?(nuevo en C99).<ctype.h>Contiene funciones para clasificar caracteres según sus tipos o para convertir entre mayúsculas y minúsculas independientemente del?conjunto de caracteres?(típicamente?ASCII?o alguna de sus extensiones).<errno.h>Para analizar los códigos de error devueltos por las funciones de biblioteca.<fenv.h>Para controlar entornos en?coma flotante?(nuevo en C99).<float.h>Contiene la definición de constantes que especifican ciertas propiedades de la biblioteca de coma flotante, como la diferencia mínima entre dos números en coma flotante (_EPSOLON), el número máximo de dígitos de precisión (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX).<inttypes.h>Para operaciones de conversión con precisión entre tipos enteros (nuevo en C99).<iso646.h>Para utilizar los conjuntos de caracteres?ISO 646?(nuevo en NA1).<limits.h>Contiene la definición de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se pueden representar (_MIN, _MAX).<locale.h>Para la función?setlocale()?y las constantes relacionadas. Se utiliza para seleccionar el entorno?local?apropiado (configuración regional).<math.h>Contiene las funciones matemáticas comunes.<setjmp.h>Declara las macros?setjmp?y?longjmp?para proporcionar saltos de flujo de control de programa no locales.<signal.h>Para controlar algunas situaciones excepcionales como la división por cero.<stdarg.h>Posibilita el acceso a una cantidad variable de argumentos pasados a una función.<stdbool.h>Para el tipo?booleano?(nuevo en C99).<stdint.h>Para definir varios?tipos enteros?(nuevo en C99).<stddef.h>Para definir varios tipos de macros de utilidad.<stdio.h>Proporciona el núcleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable función?printf).<stdlib.h>Para realizar ciertas operaciones como conversión de tipos, generación de números pseudo-aleatorios, gestión de memoria dinámica, control de procesos, funciones de entorno, de se?alización, de ordenación y búsqueda.<string.h>Para manipulación de?cadenas de caracteres.<tgmath.h>Contiene funcionalidades matemáticas de tipo genérico (type-generic) (nuevo en C99).<time.h>Para tratamiento y conversión entre formatos de fecha y hora.<wchar.h>Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos (2 o más bytes por carácter), necesario para soportar caracteres de diferentes idiomas (nuevo en NA1).<wctype.h>Para clasificar caracteres anchos (nuevo en NA1). CITATION Wik \l 2058 (Wikipedia: Archivos de cabeceras de la biblioteca ANSI C, s.f.)OperadoresAritméticosEn los ejemplos A=10 y B=20.OperadoresDescripciónEjemplo+Suma dos operandos.A + B = 30?Resta el segundo operando del primero.A ? B = -10*Multiplica dos operandos.A * B = 200/Divide el numerador por el denominador.B / A = 2%Módulo de una división entera.B % A = 0++Aumenta un valor entero en 1.A++ = 11--Disminuye un valore entero en 1.A-- = 9Imagen que nos representa la operación módulo de 12RelacionalesEn los ejemplos A=10 y B=20.OperadoresDescripciónEjemplo==Comprueba si los valores de dos operandos son iguales o no. Si es así, entonces la condición es vuelve verdadera.(A == B) Verdadero!=Comprueba si los valores de los dos operandos son iguales o no. Si los valores no son iguales, entonces la condición es verdadera..(A != B) Falso>Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho. Si es así, entonces la condición es verdadera.(A > B) Falso<Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho.?Si es así, entonces la condición es verdadera.(A < B) Verdadero>=Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho.?Si es así, entonces la condición es verdadera.(A >= B) Falso<=Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho.?Si es así, entonces la condición es verdadera.(A <= B) VerdaderoLógicosEn los ejemplos A=1 y B=0. (0 en Lenguaje C significa falso, cualquier número diferente a 0 significa verdadero).OperadorDescripciónEjemplo&&Llama al operador lógico AND.?Si ambos operandos son distintos de cero, la condición se vuelve verdadera.(A && B) es falso.||Llama al operador lógico OR.?Si alguno de los dos operandos es distinto de cero, la condición se vuelve verdadera.(A || B) es verdadero.!Llama al operador lógico NOT.?Se utiliza para revertir el estado lógico de su operando.?Si una condición es verdadera, entonces el operador lógico NOT la vuelve falsa.! (A && B) es verdadero.Se usan paréntesis para agrupar operadores.Operadores de bitsOperadorDescripciónEjemplo&El operador binario AND copia un bit al resultado si existe en ambos operandos.(A & B) = 12, i.e., 0000 1100|El operador binario OR copia un bit al resultado si existe en alguno de los operandos.(A | B) = 61, i.e., 0011 1101^El operador binario XOR copia el bit si se establece en un operando pero no en ambos.(A ^ B) = 49, i.e., 0011 0001~El operador complemento intercambia los bits; es decir de 0 a 1 o de 1 a 0.(~A ) = ~(60), i.e,. -0111101<<Operador binario de desplazamiento a la izquierda.?El valor de los operandos de la izquierda se mueve hacia la izquierda por la cantidad de bits especificados por el operando de la derecha.A << 2 = 240 i.e., 1111 0000>>Operador binario de desplazamiento a la derecha.?El valor de los operandos de la izquierda se mueve hacia la derecha por la cantidad de bits especificados por el operando de la derecha.A >> 2 = 15 i.e., 0000 1111OperadorDescripciónEjemplo=Operador de asignación simple.?Asigna valores de operandos del lado derecho al operando del lado izquierdoC = A + B asignará el valor de A + B a C+=Agrega el operando derecho al operando izquierdo y asigna el resultado al operando izquierdo.C + = A es equivalente a C = C + A- =Resta el operando derecho del operando izquierdo y asigna el resultado al operando izquierdo.C - = A es equivalente a C = C - A* =Multiplica el operando derecho con el operando izquierdo y asigna el resultado al operando izquierdo.C * = A es equivalente a C = C * A/ =Divide el operando izquierdo con el operando derecho y asigna el resultado al operando izquierdo.C / = A es equivalente a C = C / A%=Calcula el módulo usando dos operandos y asigna el resultado al operando izquierdo.C% = A es equivalente a C = C% A<< =Operador de asignación, desplazamiento a la izquierda.C << = 2 es lo mismo que C = C << 2>> =operador de asignación, desplazamiento a la derecha.C >> = 2 es lo mismo que C = C >> 2& =Operador de asignación AND.C & = 2 es lo mismo que C = C & 2^=Operador de asignación XOR.C ^ = 2 es lo mismo que C = C ^ 2|=Operador de asignación ORC | = 2 es lo mismo que C = C |?2Cambiar el programa de la calculadora, utilizando éstos operadores.Estructuras de control condicionalesIfSintaxis:if( expresión_lógica ) { /* Bloque de instrucciones que se ejecutarán si la expresión es verdadera */}Completar Ejemplo.If …elseSintaxis:if( expresión_lógica ) { /* Bloque de instrucciones que se ejecutarán si la expresión es verdadera */} else { /* Bloque de instrucciones que se ejecutarán si la expresión es falsa */}Completar Ejemplo.If… else… ifSintaxisif( expresión_condicional_1 ) { /* Si la expresión 1 es verdadera */}else{ /* Si la expresión 1 es falsa */ if( expresión_condicional_2 ) { /* Si la expresión 2 es verdadera */ }else{ . . . }}De acuerdo a la siguiente línea, define las etapas del desarrollo humano, revisa el programa EstructuraSiNoSi.c. Ternario “? ..:”SwitchEstructuras CíclicasWhilewhile(condición_Lógica_y/o_relacional) { Intrucciones; }Mientras se cumpla la condición realizara las instrucciones.Forfor ( inicialización; condición; Incremento ) { Instrucciones;}Meintras de compla la condición se incrementa la variableDo whiledo { Instrucciones;} while( condición );Modifica la calculadora para que utilice un do while.Ciclos Anidados for ( inicialización; condición; Incremento ) { Instrucciones; for ( inicialización; condición; Incremento ) { Instrucciones; }}Funcionestipo_devuelto NombreFunción( lista_parámetros ) { cuerpo_función}Creando una biblioteca.Creamos un nuevo proyectoVamos a crear 3 archivos MiCalculadora.cmibib.cmibib.hPaso de valores por referenciaIntercambio de variables#include <stdio.h>void intercambio(float *x, float *y) { float temp=0; temp = *x; printf("TEMP vale: %f\n",temp); *x = *y; *y = temp; return;} int main () { float a = 100; float b = 200; printf("Antes del intercambio,valor de a: %f\n", a ); printf("Antes del intercambio, valor de b: %f\n", b ); intercambio(&a, &b); printf("Después del intercambio, valor de a: %f\n", a ); printf("Después del intercambio, valor de b: %f\n", b ); return 0;}Alcance de VariablesGlobalesLocales Arreglostipo nombre_arreglo [ tama?o ];double precios[] = {1000.0, 2.0, 3.4, 7.0, 50.0};precio[4] = 50.0;#include <stdio.h> int main () { int n[ 10 ]; int i,j; for ( i = 0; i < 10; i++ ) { n[ i ] = i + 100; } for (j = 0; j < 10; j++ ) { printf("Element[%d] = %d\n", j, n[j] ); } return 0;}#include <stdio.h> int main () { int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}}; int i, j; for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 2; j++ ) { printf("a[%d][%d] = %d\n", i,j, a[i][j] ); } } return 0;}CadenasFormas de declararchar saludo[5] = {'H', 'o', 'l', 'a', '\0'};char saludo[] = "Hola";#include <stdio.h>int main () { char saludo[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; printf("Saludo: %s\n", greeting ); return 0;}ApuntadoresUn apuntador es una dirección en memoria que hace referencia a un espacio de almacenamiento (variable, arreglo o estructura) o hace referencia a NULO; es decir, no apunta a ningún espacio.Declaracionesint *ip; /* Apuntador a un entero */double *dp; /* Apuntador a un flotante doble */float *fp; /* Apuntador a flotante */char *ch /* Apuntador a a caracter */#include <stdio.h>int main () { int var = 20; /* Declaración de una variable */ int *ip; /* Apuntador a una variable entera */ ip = &var; /* Guardamos la dirección de memoria en donde se almacena la variable var*/ printf("La dirección de memoria de la variable var es: %x\n", &var ); /* La dirección guardada en el apuntador es */ printf("Dirección de memoria guardada en la variable de apuntador: %x\n", ip ); /* Accedemos a lo que está almacenado en var por medio del apuntador */ printf("Valor de es espacio al que apunta *ip: %d\n", *ip ); return 0;}#include <stdio.h>int main () { int *ptr = NULL; printf("Apuntador a Nada : %x\n", ptr ); return 0;}RecursiónFunción que se llama a sí misma.#include <stdio.h>int factorial(int i) { if(i <= 1) { return 1; } return i * factorial(i - 1);}int main() { int i = 12; printf("Factorial de %d is %d\n", i, factorial(i)); return 0;}#include <stdio.h>int fibonacci(int i) { if(i == 0) { return 0; } if(i == 1) { return 1; } return fibonacci(i-1) + fibonacci(i-2);}int main() { int i; printf("Serie de Fibonacci:\n"); for (i = 0; i < 10; i++) { printf("%d\t\n", fibonacci(i)); } return 0;} ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery

Related searches