Está en la página 1de 20

REPUBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DE EDUCACION SUPERIOR INSTITUTO UNIVERSITARIO DE TECNOLOGIA CARIPITO MATURIN EDO MONAGAS

LENGUAJE C

FACILITADOR: Ing: Vivenes

T.S.U Rubn Restrepo

Fecha de entrega 21/11/2011

LENGUAJE C 1- Un poco de historia El lenguaje de programacin C fue ideado e implementado por Dennis Ritchie en 1972 en un DEC PDP-111 usando UNIX como sistema operativo. Inicialmente, el estndar de C fue realmente la versin proporcionada por la implementacin de la versin V del sistema operativo UNIX. Su rpida expansin lleva a la aparicin de varias variantes y problemas de compatibilidad, por lo que en verano del 1983 se estableci un comit para crear el estndar ANSI2 para C. En 1989 se adopto finalmente el estndar y poco despus aparecieron los primeros compiladores conformes a este estndar. En 1995 se adopto la 1a enmienda con algunos cambios de la biblioteca de funciones, y fue la base para desarrollar C++. Finalmente, en 1999 se adopto el estndar C99 con algunas mejoras e ideas prestadas de C++.Actualmente coexisten las dos versiones, mientras los programas migran a C99. C es un lenguaje de programacin de propsito general que ofrece economa sintctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y ms bien un lenguaje pequeo, sencillo y no est especializado en ningn tipo de aplicacin. Esto lo hace un lenguaje potente, con un campo de aplicacin ilimitado y sobre todo, se aprende rpidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje. C trabaja con tipos de datos que son directamente tratables por el hardware de la mayora de computadoras actuales, como son los caracteres, nmeros y direcciones. Estos tipos de datos pueden ser manipulados por las operaciones aritmticas que proporcionan las computadoras. No proporciona mecanismos para tratar tipos de datos que no sean los bsicos, debiendo ser el programador el que los desarrolle. Esto permite que el cdigo generado sea muy eficiente y de ah el xito que ha tenido como lenguaje de desarrollo de sistemas. No proporciona otros mecanismos de almacenamiento de datos que no sea el esttico y no proporciona mecanismos de entrada ni salida. Ello permite que el lenguaje sea reducido y los compiladores de fcil implementacin en distintos sistemas. Por contra, estas carencias se compensan

mediante la inclusin de funciones de librera para realizar todas estas tareas, que normalmente dependen del sistema operativo. 2- Tipos de Datos C ofrece una coleccin de tipos de datos bastante limitada, aunque no por ello poco funcional. Dicha coleccin se compone de los siguientes tipos: y Char:

 Contenido: Puede contener un carcter del conjunto de caracteres locales.  Tamao: Normalmente1 1 byte. Int:

 Contenido: Un numero entero.  Tamao: El determinado por la arquitectura para nmeros enteros. En arquitecturas Intel/x86 es 4 bytes.

Float:

 Contenido: Un numero en coma flotante.  Tamao: El determinado por la arquitectura para nmeros en coma flotante. En arquitecturas Intel/x86 es 4 bytes.

Double

 Contenido: Un numero en coma flotante de precisin doble.  Tamao: El determinado por la arquitectura para nmeros en coma flotante de doble precisin. En arquitecturas Intel/x86 es 8 bytes.

3- Estructuras de datos

La creacin de tipos nuevos de datos en C se puede hacer de cuatro formas: 1. Combinando un conjunto de variables en una nica variable, lo que denominaremos estructura. 2. Permitiendo que la misma zona de memoria sea compartida por varias variables, mediante una unin. 3. Mediante la enumeracin de los distintos valores que puede tomar la variable se crea el tipo enume-rado. 4. Mediante la palabra clave typedef. Una estructura es un conjunto de variables referenciadas por un nombre comn (similar al registro en PASCAL). El formato general de la denicin de una estructura es: struct nombre_de_estructura { tipo_1 elemento_1; tipo_2 elemento_2; ... tipo_n elemento_n; } variable_struct_1, variable_struct_2,..; Es muy comn tambin denir una matriz cuyos elementos son estructuras. Este tipo de matrices deben declararse una vez declarada la estructura, como cualquier otra variable, o bien en la propia declaracin de sta ltima. Ejemplo: struct agenda { char nombre[10];

char apelli[15]; int edad; struct agenda *prev; /* til para crear una lista enlazada */ struct agenda *next; /* til para crear una lista enlazada */ } listado, *p_listado, libro[10]; La referencia a un elemento de la estructura se hace mediante el operador ., o bien mediante el operador -> si se dispone de puntero a una estructura. Una estructura puede tambin ser inicializada de forma similar a las matrices, mediante una lista ordenada de los valores de cada elemento de la estructura, separados por comas y entre llaves. Veamos unos ejemplos: struct fecha { int dia; char mes[12]; int ao; }; s t r u c t f e c h a d a t e = { 1 2 , " D i c i e mb r e " , 2 0 0 0 } , * p _ d a t e , f e c h a s [ 1 0 ] ;

printf("%s\n", date.mes); /* Imprime "Diciembre" */ p_date = &date; /* p_date apunta a la estructura date */ p_date->dia = 21; date.dia++; /* Tras la asignacin y este incremento dia vale 22 */ printf("%s\n", fechas[2].mes);

if (fechas[3].mes[1] = e) ...; p_date = &(fechas[4]); /* Ahora p_date apunta a la quinta estructura */ /* de la matriz fechas */ Las estructuras son especialmente tiles para crear listas enlazadas de nodos, donde cada nodo de la lista es una estructura. En este caso, resulta obligado incluir como elemento de la estructura un puntero, al menos, a otro nodo de la lista. Habitualmente, como en el caso de la struct agenda denida anterior-mente, se tratar de un puntero al anterior o al siguiente nodo de la lista. En este caso, debera usarse el valor NULL para el puntero prev del primer nodo de la lista, y para el puntero next del ltimo. Todos los elementos de una estructura se almacenan en posiciones de memoria consecutivas, segn el orden establecido en su denicin. Sin embargo, dado que las estructuras se componen habitualmente de elementos de diferentes tipos, y los tipos de datos suelen poseer diferentes requerimientos de alineacin en memoria (dependiendo de la mquina), pueden aparecer huecos en el espacio en memoria ocupado por la estructura. Actualmente, aunque no es norma general pero s el caso de UNIX/LINUX, no se permite que variables de tamao inferior a una palabra de memoria (4 bytes), caso de los tipos char y short int, se extienda en dos palabras de memoria. Por otro lado, las variables de tamao 4 o mltiplo de 4 (caso de las direcciones (punteros) y los tipos long int, float, doubl y long double), deben ocupar palabras de memoria completas (1, 2 3). Este esquema se mantiene incluso con matrices de estos tipos, pues una matriz de n elementos equivaldra a n elementos consecutivos del mismo tipo. 4- Declaracin de Variables Variable: Espacio de memoria, referenciado por un identificador, en el que el programador puede almacenar datos de un determinado tipo. Declarar una variable es indicar al compilador que debe reservar espacio para almacenar valores de un tipo determinado, que sern referenciados por un identificador

determinado. En C debemos declarar todas las variables antes de usarlas, establecer el tipo que tienen y, en los casos que sea necesario, darles un valor inicial. La declaracin de una variable es una sentencia simple con la siguiente sintxis: Tipo Variable nombre Variable; De esta forma declaramos que la variable nombreVariable es de tipo tipoVariable. El siguiente ejemplo declara una variable de tipo int (entero): int contador; Tambin es posible dar un valor inicial a la variable declarada: int contador = 2; Como habrs adivinado esta sentencia declara la variable contador y le da un valor inicial de 3. A veces en necesario declarar varias variables de un mismo tipo. Existe una forma abreviada de declaracin de variables que permite hacer esto en una sola sentencia: int x,y,z; El anterior ejemplo declara tres variables (x, y, z), todas de tipo entero (int). Usando esta forma abreviada tambin es posible dar un valor inicial a las variables: int x=0,y=1,z=23; A la hora de declarar una variable debemos tener en cuenta diversas restricciones : Los nombres de variables se componen de letras, dgitos y el caracter de subrayado _. El primer caracter del nombre debe ser una letra o el carcter de subrayado. Las letras maysculas y minsculas son distintas en C. Las palabras reservadas del lenguaje no se pueden usar como nombres de variable.

5- Constantes Las constantes son valores fijos que no pueden ser modificados por el programa. Pueden ser de cualquier tipo de datos bsico (punteros incluidos). Para marcar que queremos que una variable sea constante utilizamos la palabra reservada const tal que: const int dummy = 321; /* declaramos que dummy vale y valdr siempre 321 */

No tiene demasiado sentido declarar una variable de tipo const sin darle valor inicial, pero algunos compiladores permiten hacerlo. Constantes numricas Aparte de consntantes enteras tipo 234 y en coma flotante de la forma 10.4, a veces, sobre todo al trabajar a bajo nivel, resulta ms cmodo poder introducir la constante en base 8 (octal) o 16 (hexadecimal) que en base 10. Dado que es corriente usar estos sistemas de numeracin, C permite especificar constantes enteras en hexadecimal u octal. Una constante hexadecimal empieza por 0x seguido del nmero esa base. Igulmente una constante octal comienza por 0: const int hex = 0x80A; /* 2058 en decimal */ const int oct = 012; /* 10 en decimal */ Constantes de caracteres Las cadenas de caracteres se representan encerrando la cadena entre comillas dobles ("hola caracola" sera un ejemplo). Hay ciertos caracteres que no se puede (o no es cmodo) introducir de esta forma, como son los caracteres de control: tabulador, retorno de carro, etc... Para introducirlos hay que usar unos cdigos que consisten en una barra invertida y una letra, estos son los principales:

Tabla . Constantes de Cadena

Cdigo Significado \n \t \" \' \\ Retorno de carro Tabulador Comillas dobles Comillas simples Barra invertida

Constantes enumeradas Las constantes enumeradas permiten definir una lista de constantes representadas por identificadores. Estas constantes son, realmente, enteros. Si no se especifica una correspondencia entre nombre y nmero el compilador se encarga de asignarles nmeros correlativos (empezando por 0). Se pueden usar como enteros que son, pero la idea es usarlos en comparaciones, haciendo as el cdigo ms legible. Para definirlas se usa la palabra reservada enum tal que: enum color{rojo, amarillo, morado}; enum bool{false=0, true=1};

6- Expresiones Expresiones Numricas Las expresiones son secuencias de operandos y operadores. Los operadores ms comunes son:

Operador Funcin () [] . -> ! -++ & * / % + < > <= >= llamada a funcin Subndice de un arreglo Punto . acceso a miembro de una estructura. Flecha. Apunta a miembro " " " Inversor Lgico Resta Decrementar en uno Incrementar en uno Obtener la direccin de memoria Obtiene la indireccin (contenido de) Divisin modulo (resto de la divisin) suma menor que mayor que menor igual mayor igual

== != && || ?: =

igualdad de comparacin desigualdad operador lgico AND operador lgico OR condicional evala dos expresiones asignacin simple separador de variables, constantes y

expresiones dentro de funciones, estructuras de control, etc. Determina el tamao de una variable o una estructura.

sizeof

Operadores de Asignacin: Operador Significado multiplicado por dividido por modulo de aadir a sustraer

*=

/= %= += -=

desde

Expresiones Condicionales C Tiene un operador ternario (?:), que se utiliza en expresiones condicionales, las cuales tienen la forma: operando 1 ? operando2 : operando3 La expresin operando1 debe ser de tipo entero, real o puntero. La evaluacin se realiza de la siguiente forma: Si el resultado de la evaluacin de operando1 es distinta de 0, el resultado de la expresin condicional es operando2. Si el resultado de la evaluacin de operando1 es 0, el resultado de la expresin condicional es operando3. 7- Sentencias Una sentencia es cualquier expresin en C que se espera que tenga alguna consecuencia. Pueden ser asignaciones, operaciones, llamadas a funciones o combinaciones de ellas. Toda sentencia termina con un ";". Una sentencia simple consiste en una expresin acabada en un punto y coma (;).7.1 Etiquetas de sentencia Sirven para etiquetar una sentencia de forma que el control del programa pueda ser transferido a ella. Se separan de la sentencia por dos puntos ":". La sintaxis es: etiqueta: sentencia; Por ejemplo, etiq100: x++;.7.2 Sentencias compuestas Es un conjunto de sentencia simples que se encierran entre los smbolos "{" y "}" para formar un bloque de cdigo. Pueden aparecer en cualquier sitio en el que podra aparecer una sentencia simple. Pueden contener declaraciones de nuevos objetos (el alcance de la declaracin afecta al bloque).

La sintaxis es:{ sentencia; sentencia; . sentencia; } Sentencias de seleccin Existen dos tipos, if y switch. Adems, el operador "?" es una alternativa para if en ciertas situaciones. if y switch. Adems, el operador "?" es una alternativa para if en ciertas situaciones. IF La forma general es: if (expresion) sentencia; else sentencia; Donde sentencia puede ser una sentencia simple, un bloque de sentencias o nada (en el caso de sentencias vacas). La clusula else es opcional. Si la expresin del if es cierta (cualquier valor que no sea 0), se ejecuta la sentencia o el bloque de sentencias que constituye el objetivo del if; en cualquier otro caso se ejecuta la sentencia o bloque de sentencias que constituye el objetivo del else, si existe. Siempre se ejecuta el cdigo asociado al if o al else, nunca ambos. Un if anidado es un if que es el objeto de otro if o else. Son muy comunes en la programacin. Un sentencia else siempre se refiere al if ms prximo que est en el mismo bloque que el else y que no est asociado con un if. Por ejemplo: else es

opcional. Si la expresin del if es cierta (cualquier valor que no sea 0), se ejecuta la sentencia o el bloque de sentencias que constituye el objetivo del if; en cualquier otro caso se ejecuta la sentencia o bloque de sentencias que constituye el objetivo del else, si existe. Siempre se ejecuta el cdigo asociado al if o al else, nunca ambos. if(i) { if(j) sentencia 1; if(k) sentencia 2; /* este if esta */ else sentencia 3; /* asociado con este else */ } El estndar ANSI especfica que al menos se deben permitir 15 niveles de anidamiento. En la prctica, la mayora de los compiladores permiten bastantes ms. La alternativa ? Se puede usar el operador "?" para reemplazar las sentencias if-else con la forma general: general:if(condicin) Expresin1; else Expresin2; la ? es un operador ternario, ya que necesita tres operandos y tiene la forma general: Condicin ? Expresin1 : Expresin2;Donde Condicin, Expresin1 y Expresin2 son expresiones. El valor de una expresin con ? se determina de esta forma, se evala Condicin, si es cierta se evala Expresin1 y se convierte en el valor de la expresin completa. Si Condicin es falsa, se evala Expresin2 y su valor se convierte en el valor de la expresin completa. Por ejemplo: x = 10; y = x >9 ? 100 : 200; En el ejemplo a "y" se le esta asignando el valor 100.

SWITCH Es una sentencia de seleccin mltiple, que compara sucesivamente el valor de una expresin con una lista de constantes enteras o de caracteres. Cuando se encuentra una16-correspondencia, se ejecutan las sentencias asociadas con la constante. La forma general es: -correspondencia, se ejecutan las sentencias asociadas con la constante. La forma general es: switch (expresin) { case constante1: secuencia de sentencias; break; .. .. default: secuencia de sentencias; } Se comprueba el valor de la expresin, por orden, con los valores de las constantes especificadas en las sentencias case. Cuando se encuentra una correspondencia, se ejecuta la secuencia de sentencias asociada con ese case, hasta que se encuentra la sentencia break o el final de la sentencia switch. Si no se incluye la sentencia break, sigue buscando ms correspondencias en las siguientes sentencias case. La sentencia sentencia break o el final de la sentencia switch. Si no se incluye la sentencia break, El estndar ANSI especfica que una sentencia switch debe permitir al menos 257 sentencias case. En la prctica el nmero empleado es menor por razones de eficiencia.

Aunque case es una sentencia de etiqueta, no tiene calidad por s misma fuera de un case. En la prctica el nmero empleado es menor por razones de eficiencia. Aunque case es una sentencia de etiqueta, no tiene calidad por s misma fuera de un case es una sentencia de etiqueta, no tiene calidad por s misma fuera de un switch. La sentencia switch se diferencia de la sentencia if en que slo puede comparar la igualdad, mientras que if puede evaluar expresiones relacionales o lgicas. No puede haber dos constantes case en el mismo switch que tengan los mismos valores (por supuesto que una sentencia switch contenida en otra sentencia switch pude tener constantes case que sean iguales). Si se utilizan constantes de tipo carcter en la sentencia switch, se convierten automticamente a sus valores enteros. Sentencias de iteracin Tambin denominadas bucles. Permiten realizar un conjunto de instrucciones hasta que se alcance una cierta condicin (que puede estar predefinida como en el bucle for; o no haber final predeterminado, como en los bucles while y do-while). FOR El formato general es: for (inicializacin; condicin; incremento) sentencia; La inicializacin normalmente es una sentencia de asignacin que se utiliza para iniciar la variable de control del bucle. La condicin es una expresin relacional que determina cuando finaliza el bucle. El incremento define como cambia la variable de control cada vez que se repite el bucle. Estas tres secciones principales deben ser separadas por punto y coma (";"). El bulce for continua ejecutndose mientras que la condicin sea cierta. Una vez que la condicin es falsa, la ejecucin del programa sigue por la sentencia siguiente al for.

No es obligatoria ninguna de las tres expresiones, por ejemplo, se puede realizar un bucle infinito de la forma: for. No es obligatoria ninguna de las tres expresiones, por ejemplo, se puede realizar un bucle infinito de la forma:for(;;) printf("este bucle estar siempre ejecutndose.\n");WHILE Su forma general es:while (condicin) sentencia; La condicin puede ser cualquier expresin, cualquier valor distinto de 0 es cierto. El bucle itera mientras la condicin sea cierta. Cuando la condicin se hace falsa, el control del programa pasa a la lnea siguiente al cdigo del bucle.DO-WHILE A diferencia de los bucles for y while, que analizan la condicin del bucle al principio del mismo, el bucle do-while analiza la condicin al final del bucle. Esto significa que le bucle do-while siempre se ejecuta al menos una vez. La forma general es: for y while, que analizan la condicin del bucle al principio do { sentencia; } while (condicin); Aunque las llaves no son necesarias cuando slo hay una sentencia, se utilizan normalmente para evitar confusiones al programador con el while. Sentencias de salto C tiene cuatro sentencias que llevan a cabo un salto incondicional (adems de goto, pero su uso no est bien visto por sus programadores): return, break, exit() y continue. goto, pero su uso no est bien visto por sus programadores): return, break, exit() y continue.

RETURN Se usa para volver de una funcin. Se trata de una sentencia de salto porque hace que la ejecucin vuelva al punto en que se hizo la llamada a la funcin. Si hay algn valor asociado con return, se trata del valor de vuelta de la funcin. Si no se especifica un valor de vuelta, se asume que devuelve un valor sin sentido. Donde expresin es opcional. Se pueden usar tantas sentencias return como se quiera en una funcin. Sin embargo, la funcin termina al encontrar el primero. BREAK Tiene dos usos: para finalizar un case en una sentencia switch y para forzar la terminacin inmediata de un bucle, saltando la evaluacin condicional normal del ciclo. Cuando se encuentra la sentencia break dentro de un bucle, el bucle finaliza inmediatamente y el control sigue en la sentencia posterior al bucle. EXIT() Igual que se puede interrumpir un bucle, se puede salir anticipadamente de un programa usando la funcin exit() de la biblioteca estndar. Esta funcin da lugar a la terminacin inmediata del programa, forzando la vuelta al sistema operativo. La forma general de la funcin exit() es: void exit (int cdigo_de_vuelta); El valor de cdigo_de_vuelta es el que se devuelve al proceso de llamada, que normalmente es el sistema operativo. Generalmente se usa un cero como cdigo de vuelta para indicar que se trata de una terminacin normal del programa. Se utiliza otros argumentos para indicar algn tipo de error. CONTINUE

Funciona de forma similar a break. Sin embargo, en vez de forzar la terminacin, break. Sin embargo, en vez de forzar la terminacin, continue fuerza una nueva iteracin del bucle y salta cualquier cdigo que exista entremedias. Para el bucle for, continue hace que se ejecuten las partes de prueba condicional y de incremento del bucle. Para los bucles while y do-while, el control del programa pasa a la prueba condicional. 8- Estructura de un programa en C Todo programa escrito en C consta de una o ms funciones, una de las cuales se llama main. El programa siempre comenzar por la ejecucin de la funcin main. Cada funcin debe contener:    Una cabecera de la funcin, que consta del nombre de la funcin, seguido de una lista opcional de argumentos encerrados con parntesis. Una lista de declaracin de argumentos, si se incluyen estos en la cabecera. Una sentencia compuesta, que contiene el resto de la funcin. Los argumentos son smbolos que representan informacin que se le pasa a la funcin desde otra parte del programa. (Tambin se llaman parmetros a los argumentos). Cada sentencia compuesta se encierra con un par de llaves, {.....}. Las llaves pueden contener combinaciones de sentencias elementales (denominadas sentencias de expresin) y otras sentencias compuestas. As las sentencias compuestas pueden estar anidadas, una dentro de otra. Cada sentencia de expresin debe acabar en punto y coma (;). Los comentarios pueden aparecer en cualquier parte del programa, mientras estn situados entre los delimitadores /* ................ */ (por ejemplo: /*esto es un ejemplo*/). Los comentarios son tiles para identificar los elementos principales de un programa o simplemente para orientar a un posible usuario de ese cdigo.

También podría gustarte