You are on page 1of 17

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

FASES DE LA PUESTA A PUNTO DE UN PROGRAMA EN LENGUAJE C

Para convertir un algoritmo en un programa, se deben llevar a cabo las siguientes fases de puesta a punto: 1) Edicin. En esta primera fase, el programador debe convertir el algoritmo que haya diseado en instrucciones escritas en C. Para ello, se debe hacer uso de un editor de textos, con el cual se obtendr el llamado cdigo fuente del programa. El programador deber guardar dicho cdigo fuente en un archivo con extensin (.c) o (.cpp). Si un programa escrito en C se va a compilar con un compilador de C, el cdigo fuente debe ser guardado, obligatoriamente, en un archivo con extensin (.c). Ahora bien, si se utiliza un compilador de C/C++, el archivo se puede guardar con extensin (.c) o (.cpp). 2) Preproceso. El preproceso sirve para realizar modificaciones en el cdigo fuente obtenido en la fase de edicin. Es el programador quien, mediante directivas del preprocesador, "dice" al preprocesador las modificaciones que ste debe llevar a cabo. El preprocesador es un programa caracterstico de C, es decir, en otros lenguajes de programacin no existe, y siempre se ejecuta antes de llevarse a cabo la compilacin. Esto es debido a que, es el propio compilador quien llama al preprocesador antes de realizar la compilacin. 3) Compilacin. Una vez que el cdigo fuente ha sido preprocesado, el compilador traducir ese cdigo fuente (modificado) a cdigo mquina, tambin llamado cdigo objeto, siempre y cuando, el propio compilador no detecte ningn error en dicho cdigo fuente ya preprocesado. Como resultado de la compilacin, el compilador guardar el cdigo objeto del programa en un archivo con otra extensin, que, dependiendo del sistema operativo puede variar. Por ejemplo, en Windows, se guardar con la extensin (.obj), abreviatura de object. 4) Enlace (linkaje o montaje). Los programas pueden utilizar funciones de la biblioteca estndar de C, tales como scanf o printf. De cada una de ellas existe un cdigo objeto que debe ser enlazado (unido) al cdigo objeto del programa que las utilice. Esto se realiza mediante un programa llamado enlazador, montador o linkador. Como resultado del enlace, el enlazador guardar, en disco, un archivo ejecutable. En Windows, dicho archivo tendr extensin (.exe), abreviatura de executable. Dicho archivo ser "el ejecutable".

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Adems de las funciones de la biblioteca estndar de C, el programador tambin puede utilizar funciones que hayan sido desarrolladas por l mismo. stas pueden agruparse en su propia biblioteca de funciones (no estndar). Por lo que, tambin en esta fase, el cdigo objeto de dichas funciones deber ser enlazado al cdigo objeto del programa que las utilice. Grficamente, el proceso de puesta a punto de un programa escrito en C se puede ver en la siguiente figura:

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

Un programa escrito en lenguaje C est compuesto por una o ms funciones. Como ya es sabido, una funcin es un programa que sirve para realizar una tarea determinada, por ejemplo, la funcin scanf sirve para leer datos desde el teclado.

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Existe una funcin que est presente en todos los programas escritos en lenguaje C, su misin es marcar el inicio y fin de la ejecucin de cada uno de ellos; es la funcin principal, la primera que se ejecuta; es la funcin main. Su sintaxis "bsica" es: int main() { <bloque_de_instrucciones> }

La funcin main contiene al bloque de instrucciones principal de un programa, dentro de los caracteres abrir llave ({) y cerrar llave (}). Los parntesis "()" escritos despus de main sirven para indicar que el identificador main es una funcin. Es importante comprender que main no es una palabra reservada de C. Ningn identificador de funcin lo es. Finalmente, no se puede pasar por alto que delante de main se ha escrito la palabra reservada int; enseguida veremos el porqu.

TIPOS DE INSTRUCCIONES EN LENGUAJE C En lenguaje C, las instrucciones, tambin llamadas sentencias, se pueden clasificar en: De expresin. De control.

Compuestas.

Una instruccin compuesta siempre alberga, entre llaves ( {...}), a un <bloque_de_instrucciones>: { <bloque_de_instrucciones> } Un bloque de instrucciones puede estar compuesto por una o ms instrucciones, que, a su vez, pueden ser instrucciones de expresin, de control

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

y/o

compuestas

nuevamente.

El cuerpo de toda funcin es una instruccin compuesta. Sirva como ejemplo el cuerpo de la funcin main, el cual alberga al bloque de instrucciones principal de un programa escrito en lenguaje C. Las instrucciones de expresin, tambin conocidas como instrucciones simples o elementales, son aquellas que representan a las acciones ms pequeas (elementales) que se pueden ejecutar en un programa, y siempre van seguidas de un carcter punto y coma (;), el cual indica que la instruccin ha terminado: <instruccin_de_expresin>; Una instruccin de expresin es, en s misma, una expresin. De modo que, la accin que se ejecuta es la evaluacin de dicha expresin: <expresin>; En cuanto a las instrucciones de control, existen de distintos tipos, y todas sirven para modificar el flujo de control de un programa. Veremos que, algunas de ellas deben ir seguidas del carcter punto y coma (;), pero otras no.

Ejemplo clsico de un programa en lenguaje C

Ejemplo: Se quiere escribir un programa que muestre por pantalla un mensaje de saludo: Hola mundo

Obsrvese que, el saludo se visualiza justo en la esquina superior izquierda de la pantalla. Ms adelante se estudiar cmo se puede mostrar en otro lugar de la pantalla.

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

En lenguaje C, el cdigo fuente de dicho programa puede ser: #include <stdio.h> int main() { printf( "Hola mundo" ); return 0; } Programa (.c): Hola_mundo Todas las funciones de la biblioteca estndar de lenguaje C son subprogramas que ya estn compilados, es decir, junto a cualquier compilador de lenguaje C se acompaan los cdigos objeto de todas las funciones de su biblioteca estndar, pero no sus cdigos fuente. Por tanto, aunque no sea posible modificar sus cdigos fuente, s se puede hacer uso de dichas funciones en cualquier programa. Por ejemplo, se puede llamar a la funcin printf para que muestre por pantalla el saludo "Hola mundo".

printf(

"Hola

mundo"

);

Dentro de los parntesis " ()" de la funcin printf, se debe escribir, entre comillas dobles ("), el mensaje o cadena de caracteres que se desea mostrar por pantalla. Obsrvese que, despus del carcter cerrar parntesis ")" se ha escrito un punto y coma (;), esto implica que la llamada a la funcin printf es considerada como una instruccin de expresin. Del cdigo fuente preprocesado de un programa, el compilador generar un cdigo objeto que se debe unir (enlazar) con los cdigos objeto de las funciones de la biblioteca estndar del lenguaje C que se llamen desde dicho programa. Por ejemplo, el cdigo objeto de nuestro primer programa se debe enlazar con el cdigo objeto del subprograma printf. El enlazador sabe dnde encontrar el cdigo objeto de las funciones de la biblioteca estndar de C que utilice un programa. Sin embargo, para poder utilizar una funcin (sea de la biblioteca estndar de C o no) en un programa, la funcin debe ser declarada previamente, al igual que se tienen que declarar las variables y las contantes que usa un programa.

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Para que el compilador conozca la declaracin de la funcin printf, hay que utilizar la directiva del preprocesador #include: #include <stdio.h>

En este caso, la directiva #include indica, al preprocesador, que debe incluir, antes de la compilacin, en el cdigo fuente del programa, el contenido del archivo <stdio.h> (stdio, Standard Input/Output). En dicho archivo estn escritas las declaraciones de todas las funciones de entrada y salida estndar de la biblioteca estndar de C, como printf. Si el compilador no sabe quien es printf, no podr generar el cdigo objeto del programa. Las funciones de la biblioteca estndar de C estn clasificadas en base a su funcionalidad, y sus declaraciones se agrupan en archivos con extensin (.h), los cuales son llamados archivos de cabecera. Adems de stdio.h, algunos de los archivos de cabecera ms utilizados en lenguaje C son: math.h, string.h y stdlib.h. En ellos estn escritas, respectivamente, las declaraciones de las funciones matemticas, funciones de cadena y funciones de utilidad de la biblioteca estndar de C.

Despus de #include, el nombre del archivo de cabecera se puede escribir entre los caracteres menor y mayor (<stdio.h>), o entre comillas dobles ("stdio.h"). Cuando se escriba entre comillas dobles, el preprocesador buscar dicho archivo en el directorio actual de trabajo, y de no encontrarlo ah, entonces lo buscar en el directorio especificado por el compilador. En el caso de escribirse entre los caracteres menor y mayor, el proceso de bsqueda ser al revs.

Adems de la directiva del preprocesador #include, existen otras, pero, ninguna de ellas es una palabra reservada del lenguaje C. El cdigo objeto generado por el compilador de C tendr "huecos" (espacios) en donde ms tarde el enlazador escribir el cdigo objeto correspondiente a las llamadas de las funciones ya compiladas (como printf) y, as, generar el archivo ejecutable. Toda funcin retorna un valor. En nuestro primer programa se ha escrito: return 0;

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Esto quiere decir que la funcin main devuelve el valor 0. Precediendo a main se ha escrito la palabra reservada int, indicando as, que la funcin retornar un valor de tipo int (entero). int main() En general, la instruccin return suele ser la ltima del bloque de instruccines de la funcin main. Al retornar el valor 0, indica (informa al sistema operativo) que el programa finaliz correctamente, es decir, sin producirse ningn error en su ejecucin. Cuando la funcin main devuelva un valor distinto de cero, esto siginificar que se ha producido algn error en la ejecucin del programa, o que ha ocurrido algo fuera de lo normal. La instruccin return es una de las instrucciones de control que existen en lenguaje C. Por tanto, es una palabra reservada. Despus del valor de retorno (que es una expresin) se debe escribir un punto y coma ( ;). La sintaxis de la instruccin return es: return <expresin>; Por el momento, se ha visto que la sintaxis "bsica" de un programa escrito en lenguaje C es: [ <directivas_del_preprocesador> ] int main() { <bloque_de_instrucciones> }

Los caracteres abrir corchete ([) y cerrar corchete (]) se utilizan para indicar que lo que contienen es opcional.

TIPOS DE DATOS EN LENGUAJE C

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Datos de tipo entero (int)

Un dato de tipo entero (int en lenguaje C ) es aquel que puede tomar por valor un nmero perteneciente al conjunto de los nmeros enteros ( Z), el cual est formado por los nmeros naturales, su opuestos (nmeros negativos) y el cero. Z = { ..., -3, -2, -1, 0, 1, 2, 3, ... } Ejemplo: La edad de una persona y el ao en que naci, son dos datos de tipo entero: Edad...: 29 Ao....: 1976 Z es un conjunto infinito de nmeros enteros, y como el computador no puede representarlos todos, un dato de tipo entero slo puede tomar por valor un nmero perteneciente a un subconjunto de Z. Los valores mximo y mnimo de dicho subconjunto varan segn las caractersticas de cada computador y del compilador que se utilice.

Datos de tipo real (float o double)

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Un dato de tipo real (float o double en lenguaje C) es aquel que puede tomar por valor un nmero perteneciente al conjunto de los nmeros reales ( R), el cual est formado por los nmeros racionales e irracionales. Ejemplo: El peso de una persona (en kilogramos) y su altura (en centmetros), son datos que pueden considerarse de tipo real. Peso.....: 75,3 Altura...: 172,7 R es un conjunto infinito de nmeros reales, y como el computador no puede representarlos todos, un dato de tipo real slo puede tomar por valor un nmero perteneciente a un subconjunto de R. Los valores de dicho subconjunto varan segn las caractersticas de cada computador y del compilador que se utilice. La diferencia principal entre float y double est en el hecho de que un dato de tipo double puede tomar por valor un nmero perteneciente a un subconjunto de R mayor que un dato de tipo float.

Datos de tipo carcter (char)

Un dato de tipo carcter (char en lenguaje C) es aquel que puede tomar por valor un carcter perteneciente al conjunto de los caracteres que puede representar el computador. En lenguaje C, el valor de un dato de tipo carcter se debe representar entre comillas simples ('). Ejemplo: En un examen con preguntas en las que hay que seleccionar la respuesta correcta entre varias opciones dadas (a, b, c, d, e), la respuesta correcta de cada una de las preguntas es un dato de tipo carcter. Respuesta correcta a la pregunta 3...: 'c'

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Datos sin valor (void)

Un dato sin valor (void en lenguaje C) es un dato que no puede tomar por valor nign valor, es decir, es un dato vaco (nulo).

Datos de tipo lgico En programacin, un dato de tipo lgico es aquel que puede tomar por valor slo uno de los dos siguientes: { verdadero, falso } Los valores verdadero y falso son contrapuestos, de manera que, un dato de tipo lgico siempre est asociado a que algo se cumpla o no se cumpla. Ejemplo: El estado de una barrera de paso de trenes es un dato que puede considerarse de tipo lgico, por ejemplo, asociando verdadero a que est subida y falso a que est bajada. Estado...: falso (indica que la barrera est bajada) En lenguaje C no existen datos de tipo lgico (que s existen en otros lenguajes de programacin). Ahora bien, se pueden simular con datos de tipo entero, considerndose el valor cero (0) como falso, y cualquier otro valor entero como verdadero (para ello, generalmente, se emplea el valor uno (1)).

Datos de tipo cadena De todos los tipos de datos que no son bsicos se dice que son derivados, ya que, estn basados en alguno que s lo es. Por ejemplo, los datos de tipo cadena son aquellos que pueden tomar por valor una secuencia de caracteres. En lenguaje C, el valor de un dato de tipo cadena se debe representar entre comillas dobles (").

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Ejemplo: El ttulo de un libro y el nombre de su autor, son datos de tipo cadena. Ttulo...: "La Odisea" (cadena de 9 caracteres) Autor....: "Homero" (cadena de 6 caracteres) Obsrvese que, en la cadena "La Odisea", el carcter espacio en blanco tambin se cuenta.

IDENTIFICADORES EN LENGUAJE C La mayora de los elementos de un programa se diferencian entre s por su nombre. Por ejemplo, los tipos de datos bsicos en lenguaje C se nombran como: char, int, float, double y void Cada uno de ellos es un identificador. Un identificador es el nombre que se le da a un elemento de un algoritmo (o programa). Por ejemplo, el tipo de dato int hace referencia a un tipo de dato que es distinto a todos los dems tipos de datos, es decir, los valores que puede tomar un dato de tipo entero, no son los mismos que los que puede tomar un dato de otro tipo. Los identificadores char, int, float, double y void estn predefinidos, forman parte del lenguaje C. No obstante, en el cdigo de un programa tambin pueden existir identificadores definidos por el programador. Por ejemplo, un programa puede utilizar variables y constantes definidas por el programador. En lenguaje C, a la hora de asignar un nombre a un elemento de un programa, se debe tener en cuenta que todo indenficador debe cumplir las siguientes reglas de sintaxis:
1. Consta de uno o ms caracteres.

2. El primer carcter debe ser una letra o el carcter subrayado (_), mientras que, todos los dems pueden ser letras, dgitos o el carcter subrayado (_). Las letras pueden ser minsculas o maysculas del alfabeto ingls. As pues, no est permitido el uso de las letras '' y ''.

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

3. No pueden exitir dos identificadores iguales, es decir, dos elementos de un programa no pueden nombrarse de la misma forma. Lo cual no quiere decir que un identificador no pueda aparecer ms de una vez en un programa. De la segunda regla se deduce que un identificador no puede contener caracteres especiales, salvo el carcter subrayado (_). Es importante resaltar que las vocales no pueden llevar tilde ni diresis.

Ejemplos de identificadores vlidos y no vlidos en lenguaje C

A continuacin, se muestran algunos ejemplos de identificadores vlidos en lenguaje C y otros que no lo son: Ejemplo 1: Algunos identificadores vlidos que pueden ser definidos por el programador son: numero dia_del_mes PINGUINO1 _ciudad Z Ejemplo 2: Los siguientes identificadores no son vlidos por incumplir la segunda regla: 123 _DA numero* lugar de nacimiento ao Ejemplo 3: Los siguientes identificadores no pueden ser definidos por el programador: int char

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

int y char son identificadores predefinidos (ya existen en lenguaje C), por tanto, no pueden ser definidos por el programador, en cumplimiento de la tercera regla. Los identificadores son sensibles a minsculas y maysculas. Ejemplo 4: Mes y mes son considerados identificadores distintos. Por ltimo, hay que decir que, es aconsejable que los identificadores tengan un significado afn a lo que representan.

PALABRAS RESERVADAS EN LENGUAJE C

Las palabras reservadas son identificadores predefinidos (tienen un significado especial). En todos los lenguajes de programacin existe un conjunto de palabras reservadas. Por el momento, en lenguaje C, se han estudiado las siguientes: char, int, float, double y void En la sintaxis de ANSI C, puede consultar toda la lista de palabras reservadas que existen en lenguaje C.

VARIABLES EN LENGUAJE C

En lenguaje C hay que escribir un punto y coma ( ;) despus de la declaracin de una o ms variables. As pues, la sintaxis para declarar una variable es: <tipo_de_dato> <variable> [ = <expresin> ]; Y para ms de una variable del mismo tipo se utiliza la sintaxis:

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

<tipo_de_dato> <variable_1> [= <expresin_1>], <variable_2> [= <expresin_2>], ..., <variable_n> [= <expresin_n>]; Una expresin representa a un valor de un tipo de dato. En el apartado 1.8 Operadores y expresiones se estudiarn en detalle las expresiones.

Ejemplos de declaracin de variables en lenguaje C

A continuacin, se muestran algunos ejemplos de declaracin de variables en lenguaje C. Ejemplo 1: La declaracin de una variable para almacenar la edad de una persona se escribe: int edad;

Ejemplo 2: Para declarar varias variables del mismo tipo de dato se puede escribir: int edad; int numero_de_hijos; Ejemplo 3: O tambin, en la misma lnea separadas por el carcter coma (,): int edad, numero_de_hijos;

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Ejemplo 4: Si se desea declarar una variable para almacenar un nmero entero y que, inicialmente, contenga el valor 35, se debe escribir: int numero = 35;

Ejemplo 5: A continuacin, se muestra la declaracin de una variable para almacenar una letra del alfabeto y que, inicialmente, contenga el valor 'Z': char letra = 'Z'; Ejemplo 6: Para declarar una variable que pueda almacenar el nombre de una persona y que, inicialmente, contenga el valor "Isabel", escribiremos: char nombre[7] = "Isabel"; Un dato de tipo cadena es un dato compuesto (estructurado), debido a que est formado por una agrupacin de caracteres. Pues bien, dicha agrupacin se define por medio de un array. Un array agrupa, bajo el mismo nombre de variable, a una coleccin de elementos (datos) del mismo tipo. Para declarar un array de caracteres, despus del identificador de la variable, se tiene que escribir, entre corchetes "[]", el nmero de caracteres que se van a almacenar en el array, ms uno. Por tanto, en este caso, puesto que "Isabel" tiene seis caracteres, hay que escribir un 7 entre los corchetes. Se tiene que escribir un nmero ms, porque en la memoria se va a reservar

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

espacio para los seis caracteres de la cadena "Isabel", ms uno, conocido ste como el carcter nulo, el cual se representa mediante una barra invertida y un cero (\0). El sistema se encarga de "poner" dicho carcter, que indica el fin de la cadena. Por consiguiente, en la memoria se almacenarn siete caracteres consecutivos:

Los caracteres del array pueden ser referenciados mediante el identificador del mismo, seguido de un nmero entre corchetes. A dicho nmero, de manera formal, se le llama "ndice", y puede oscilar entre el valor 0 y n-1, siendo n el nmero de caracteres que pueden ser almacenados en memoria en el array, en este caso 7. <nombre_de_la_variable>[<ndice>] Por ejemplo, nombre[3] hace referencia al espacio de memoria donde est el carcter 'b'. Ejemplo 7: Si se declara la variable de tipo cadena: char nombre[7] = "June"; En memoria tendremos:

FACULTAD DE CIENCIAS Y TECNOLOGIA DE LA UNIVERSIDAD DE CARABOBO CURSO BASICO DE LENGUAJE C

Fjese que, en esta ocasin, el array de caracteres nombre ha sido inicializado con el valor "June". De manera que, el fin de la cadena se encuentra en nombre[4], y no en el ltimo espacio de memoria reservado para el array, ya que, "June" tiene, solamente, cuatro caracteres.

You might also like