Sunteți pe pagina 1din 9

Apendice A.................................................................................................................. 2 A.1 Introduccin............................................................................................................... 2 A.2 Ciclo de creacin de un programa ............................................................................. 2 A.2.1 Componentes lxicos del lenguaje.......................................................................... 2 A.2.

2 Estructura de un programa C .................................................................................. 3 A.3 Tipos de datos ............................................................................................................ 3 A.3.1 Tipos fundamentales3 A.3.2 Operador sizeof....................................................................................................... 4 A.3.3 Tipos derivados....................................................................................................... 4 A.3.4 Punteros .................................................................................................................. 4 A.4 Expresiones y operadores .......................................................................................... 5 A.4.2 Operadores de relacin y lgicos............................................................................ 6 A.4.3 Operadores para el manejo de bits.......................................................................... 6 A.4.4 Expresiones abreviadas........................................................................................... 7 A.5 Sentencias de control de flujo.................................................................................... 7 A.5.5 Bucle for ................................................................................................................. 8 A.5.8 break y continue...................................................................................................... 8 A.6 Funciones................................................................................................................... 9 A.6.1 Paso de parmetros por valor y por referencia ....................................................... 9

Apendice A

A.1 Introduccin C es un lenguaje de programacin de alto nivel desarrollado por Dennis Ritchie para codificar el sistema operativo UNIX. Las primeras versiones de UNIX se escribieron en ensamblador, pero a partir de 1973 comenzaron a escribirse en C. Solo la pequea parte del ncleo de UNIX relacionada directamente con el hardware sigue escrita en ensamblador, todas las ordenes y aplicaciones estndar que acompaan al sistema estn escritas en C. Por lo cual este lenguaje es la forma natural de comunicarse con el sistema. El lenguaje se puede clasificar dentro de los lenguajes de alto nivel, sin embargo, tambin le ofrece al programados posibilidades que solo estn presentes en los lenguajes de bajo nivel. As, por ejemplo, en C se pueden manipular bits y aritmtica de direcciones. C tambin permite el desarrollo de la programacin estructurada y modular. A.2 Ciclo de creacin de un programa A la hora de crear un programa empezaremos por la edicin de un fichero que contendr el cdigo fuente. Este fichero, se nombra por convenio aadindole la extensin .c. Si nos valemos del editor vi, la forma de editar el programa ser: $ vi programa.c El compilador cc es el encargado de generar el fichero ejecutable a partir del fichero fuente. Para invocarlo debemos escribir: $ cc programa.c Esta lnea de ordenes genera el fichero a.out, que ya es ejecutable. Si queremos que nuestro ejecutable tenga otro nombre, compilaremos con la orden: $ cc o programa programa.c lo que aria que el fichero ejecutable se llame programa en lugar de a.out. Tambin podemos compilar un programa utilizando la orden make. Si queremos crear el programa ejemplo a partir del fichero fuente ejemplo.c, bastara con escribir: $ make ejemplo A.2.1 Componentes lxicos del lenguaje Existen 6 clases de componentes lxicos: identificadores, palabras reservadas, constantes, cadenas de caracteres, operadores y otros separadores. Identificador. Es una secuencia de dgitos y letras donde el primer elemento debe de ser una letra o los caracteres _ y $. Las letras maysculas y minsculas se consideran distintas. En toda implementacin deben ser significativos al menos los 32 primeros caracteres de un identificador.

Palabras reservadas. Las siguientes palabras no se pueden utilizar como identificadores, ya que tienen un significado especial para el compilador: auto break case char const extern default do double else enum long float for goto if int static register return short signet sizeof void struct switch typedef union unsignet continue volatile while

Constantes. Consideramos 4 tipos: enteras, de carcter, flotantes y de enumeracin. Cadenas de caracteres. Secuencia de caracteres alfanumricos entre comillas dobles. Otros separadores: {, }, [, ], (, ), ;, ->, . Comentarios. Secuencia de caracteres que se inicia con /* y termina con */. Los comentarios no se pueden anidar y son ignorados por el compilador. Los comentarios de lnea se inician con // y se extienden hasta el final de la lnea.

A.2.2 Estructura de un programa C Aunque las formas de un programa C pueden ser muy variadas y no hay formas fijas, suele ser comn estructurar un programa como sigue: 1. 2. 3. 4. #directrices para el preprocesador. Declaracin de variables y funciones externas. Declaracin de variables globales y prototipos de las funciones. Funciones, la funcin main debe aparecer en un mdulo, y slo en uno.

Las directrices del preprocesador son rdenes que ejecuta el preprocesador cpp- para generar el fichero con extensin .i con el que posteriormente trabajar el compilador. Hay dos directrices que se emplean masivamente: include y define. include se emplea para indicar los ficheros de cabecera donde esta definidos tipos derivados y los prototipos de las funciones. definne se emplea para declarar identificadores sinnimos de otros identificadores o constantes. Tambin se emplea para declarar macros.

A.3 Tipos de datos En C se consideran dos bloques de datos: los que suministra el lenguaje tipos fundamentales- y los que define el programador tipos derivados-. A.3.1 Tipos fundamentales Tipos enteros Para declarar variables de alguno de los tipos enteros emplearemos las palabras reservadas char, short, int, long y enum. char define un nmero entero de 8 bits. Su rango es [-128,127]. Tambien se emplea para representar el conjunto de caracteres ASCII. int define un numero entero de 16 o 32 bits dependiendo del bus del procesador.

long define un numero entero de 32 o 64 bits. short define un numero entero menor o igual que int.

Estos cuatro tipos pueden ir precedidos del modificador unsigned para indicar que el tipo solo representa nmeros positivos o el cero. enum se utiliza para definir un subconjunto dentro del conjunto de los numeros enteros.

Tipos reales Para declarar variables de alguno de los tipos reales emplearemos las palabras reservadas float y double. float define un numero en coma flotante de precisin simple, el tamao de este tipo suele ser 4 bytes. double define un nmero en coma flotante de precisin doble, el tamao de este tipo suele se 8 bytes. el tipo double puede ir precedido del modificador long, con lo que su tamao pasa a ser 10 byetes.

A.3.2 Operador sizeof Para determinar el tamao en bytes tanto de un tipo fundamental como derivado, podemos usar el operador sizeof. A.3.3 Tipos derivados Los arrays son bloques de elementos del mismo tipo. El tipo base puede ser fundamental o derivado. Los elementos individuales del array son accesibles mediante una secuencia de ndices. Los ndices deben ser variables o constantes de tipo entero. Se define la dimensin de un array como el total de ndices que necesitamos para acceder a un elemento en particular. A los arrays unidimensionales se les llama vectores, y los bidimensionales matrices. Los arrays unidimensionales de tipo char se llaman cadenas de caracteres, y los arrays de cadenas de caracteres matrices de caracteres- se llaman tablas. A.3.4 Punteros Los punteros son variables que almacenan direcciones de memoria. Se definen tambin en base a un tipo fundamental o a un tipo derivado. La declaracin de un puntero es como sigue: tipo_base *puntero; Para trabajar con punteros hay definidos dos operadores unarios: & y *. El operador & da la direccin de memoria asociada a una variable y se utiliza para inicializar un puntero. El operador * se utiliza para referirse al contenido de una direccin de memoria. Los punteros admiten las operaciones de incremento, decremento, suma de una constante entera y diferencia de punteros. Al realizar estas operaciones, realmente estamos modificando la direccin a la que referencia el puntero. Un array no es lo mismo que un puntero. Mientras que un array es una constante, un puntero es una variable. Unos de los inconvenientes que se plantea en el uso de arrays es que sus dimensiones deben ser conocidas por el compilador. los punteros nos ayudan a solucionar este problema, ya que posibilita el uso de arrays dinmicos arrays que se dimensionan en tiempo de ejecucin-.

Estructuras Una estructura es un agregado de tipos fundamentales o derivados y se compone de varios campos. Puesto que el tipo de cada campo de una estructura puede ser un tipo fundamental o derivado, tambin puede ser otra estructura. Tendremos as declaradas estructuras dentro de estructuras. Uniones Las uniones se definen de forma parecida a las estructuras y se emplean para almacenar en un mismo espacio de memoria variables de distintos tipos. El tamao de una unin no es igual a la suma de cada uno de sus campos, como ocurre con las estructuras, sino que es igual al tamao del mayor de sus campos. Campos de bits C da la posibilidad de definir variables cuyo campo en bits puede no coincidir con un mltiplo de 8. A.3.5 Alias para los nombres de tipo. Para hacer que un identificador sea considerado el nombre de un nuevo tipo, tenemos que emplear la palabra clave typedef. A.4 Expresiones y operadores Una expresin esta formada por operadores y operandos. Los operadores establecen la relacin entre los operandos, y los operandos pueden ser variables, constantes u otras expresiones. Los parntesis tambin pueden formar parte de una expresin y se emplean para modificar la precedencia de los operadores. A.4.1 Operadores aritmticos. Hay 5 operadores aritmticos: + Suma - Resta * Multiplicacin / Divisin. La divisin de nmeros enteros produce un truncamiento del cociente. % Resto de la divisin entera.

Las expresiones aritmticas se evalan de izquierda a derecha. Si en una expresin aritmtica intervienen variables o constantes de diferentes tipos, el tipo del resultado coincidir con el tipo mayor que aparezca en la expresin.

A.4.2 Operadores de relacin y lgicos Los operadores de relacin y los lgicos se emplean para formar expresiones booleanas. Una expresin booleana solo puede tomar dos valores: VERDADERO o FALSO. En C se considera una expresin booleana FALSA cuando su resultado es 0 y VERDAD cuando es distinto de 0. Los operadores de relacin son: > Mayor >= Mayor o igual < Menor <= Menor o igual == Igual, hay que tener cuidado de no confundir el operador de asignaci = con el de comparacin ==. ! = Distinto Los operadores lgicos son: && And lgica. || Or lgica. ! Negacin lgica.

A.4.3 Operadores para el manejo de bits C tambin implementa operadores para manipular los bits de las variables o contantes enteras. Estos operadores son: & And a nivel de bits. | Or a nivel de bits. ^ Or exclusiva --- XOR --- a nivel de bits. ~ Negacin a nivel de bits o complemento a 1. << Desplazamiento hacia la izquierda. >> Desplazamiendo hacia la derecha haciendo una extensin del signo.

A.4.4 Expresiones abreviadas En esta tabla se muestra una relacin entre expresiones abreviadas y sus equivalentes:

A.5 Sentencias de control de flujo A.5.1 Proposiciones y bloques Una proposicin es una expresin seguida de ;. Una proposicin compuesta o bloque es un cojunto de declaraciones y proposiciones agrupadas entre llaves { }. A.5.2 Seleccin (if else) Su sintaxis es: if (expresin) proposicin1; else proposicin2; Si expresin es verdadera se ejecuta proposicin1; en caso contrario, se ejecuta proposicion2. A.5.3 Seleccin mltiple (else-if) Su sintaxis es: if (expr1) (proposicion1); else if (expr2); (proposicion2); ... else if (expr n) (proposicion n) else (proposicion m)

A.5.4 Seleccin por casos (switch) La proposicin switch es una decisin mltiple que prueba si una expresin coincide con alguno de entre un nmero de valores constantes enteros y traslada el control adecuadamente. su sintaxis es: switch (expresin) { case exp_const1: proposiciones1; case expr_const2: proposiciones2; ... case exp_const n: proposiciones n; default: proposiciones; } A.5.5 Bucle for Su sintaxis es: for (inicializacin; expresin; progresin) proposicin; Mientras la expresin sea verdadera, se estar ejecutando proposicin; inicializacin es una expresin, o conjunto de expresiones, para inicializar las variables de control que intervienen en expresin; y progresin es una o conjunto de expresiones que indica como evolucionan las variables de control. A.5.6 Bucle (while) Su sintaxis es; while (expresion) proposicin; donde proposicin se estar ejecutando mientras expresin sea verdadera. A.5.7 Bucle (do-while) Su sintaxis es: do { proposicin; } while (expresin); donde proposicin se estar ejecutando mientras expresin sea verdadera, la primera vez siempre se ejecuta. A.5.8 break y continue La proposicin break produce una salida anticipada de un bucle for, while o do while, y tambin produce la salida de la sentencia switch. La proposicin continue provoca que se inicie la siguiente iteracin del bucle for, while o do while que la contiene.

A.6 Funciones Las funciones se utilizan para agrupar bajo un identificador una serie de proposiciones concebidas para realizar alguna tarea especfica. La organizacin de un programa grande en funciones sencillas har que el programa sea estructurado adems de fcil de depurar y mantener. Una funcin puede ser de cualquier tipo, excepto del tipo funcin o array. Si no se especifica nada, el tipo es int. Las variables locales y los parmetros de la funcin se reservan en la pila de usuario del programa, por lo que al entrar en la funcin se reserva espacio para ellos, pero al salir de la funcin desaparecen. Este tipo de almacenamiento se conoce como automtico, en contraposicion al esttico. Si una variable local va precedida del calificador static, su almacenamiento ser esttico y ocupara una zona de memoria reservada a las variables globales; adems, esa variable existir durante todo el tiempo de ejecucin del programa. A.6.1 Paso de parmetros por valor y por referencia Es importante tener en cuenta que los parmetros de una funcin slo se pueden modificar a nivel local. Para modificar un parmetro de forma permanente hay que trabajar con un puntero al mismo. El paso de arrays como parmetros de funciones siempre se realiza por referencia. Las estructuras se pueden pasar por valor o por referencia. Si pasamos una estructura por valor, las modificaciones de sus campos sern locales mientras que pasndolas por referencia, las modificaciones sern permanentes. El hecho de que los parmetros pasados por valor slo sufran modificaciones a nivel local se debe a que el parmetro es una copia en la pila de usuario de la variable a que se refiere. As, las modificaciones se hacen sobre la copia de la variable que hay en la pila y no sobre la propia variable.

S-ar putea să vă placă și