Programación en c primer programa en c

4

Click here to load reader

Transcript of Programación en c primer programa en c

Page 1: Programación en c primer programa en c

Programación en C/Primer programa en C

En el libro “El Lenguaje de Programación C”, Kernighany Ritchie introdujeron al lenguaje C utilizando un sencilloprograma que mostraba un saludo por la pantalla. Desdeentonces se hizo tradición empezar con cualquier lenguajede programación con el ejemplo del Hola mundo.En particular en C se involucran muchas partes y sintaxisdel lenguaje, por lo cual es especialmente útil verlo comoel primer ejemplo de programación en C.Ejemplo: Hola mundo/* Inclusión de archivos */ #include <stdio.h> /* Funciónprincipal */ int main (int argc,char **argv) { /* Impre-sión por pantalla y salida del programa*/ printf(“Holamundo\n”); return 0; }

Para poder editar y ejecutar este programa será necesa-rio utilizar algún editor y luego un compilador, como seexplicó en la sección Herramientas necesarias.Si se tiene el compilador gcc en un entorno UNIX oGNU/Linux, la forma sencilla de compilar y ejecutar se-rá:$ gcc holamundo.c $ ./a.out Hola Mundo $Es decir que el compilador genera un archivo, en este ca-so llamado a.out, y la salida generada por ese archivo es“Hola mundo”. A continuación una explicación detalladasobre el proceso de compilación del programa, y luego unanálisis línea por línea del contenido de este ejemplo.

1 Pre-requisitos para la compila-ción de programas

Como ya se mencionó, será necesario tener instalado elcompilador y un editor o entorno de desarrollo que permi-tan escribir el código a compilar. Para más informaciónver la sección Herramientas necesarias.El código a compilar debe guardarse con un nombre querepresente al programa en cuestión y la extensión .c. Enel caso del ejemplo del Hola mundo, el archivo puede lla-marse hola.c.En las explicaciones a continuación, se asume que secuenta con un compilador instalado y se ha editado unarchivo hola.c que se quiere compilar. Si tu sistema ope-rativo no aparece en esta lista busca en internet, ya queseguro que existe algún compilador para ese sistema.

2 Compilación de programas se-gún la plataforma

2.1 Windows

Para compilar un programa C en entornos Windows, de-bemos seguir una serie de pasos que varían según el com-pilador de C que queramos utilizar. Antes que nada, se-ría bueno que se revises la documentación del compiladorelegido para conocer los comandos exactos.

2.1.1 Compilación del código fuente

Si se utiliza un entorno de desarrollo, será posible com-pilar directamente desde el entorno, mediante un botón ouna combinación de teclas.Si se ejecuta el compilador desde la línea de comandos, lalínea será distinta según el compilador utilizado. A con-tinuación algunos ejemplos de ciertos comandos según elcompilador:

• En Turbo C de Borland es: tcc hola.c

• En C++ de Borland: bcc hola.c

• En Visual C de Microsoft: cl hola.c

• En GNU gcc: gcc hola.c o cc hola.c

• El C de Zortech: ztc hola.c

Una vez compilado el código fuente se genera un archivollamado archivo objeto o programa objeto que es luegoenlazado mediante el enlazador, para generar el archivoejecutable.Los compiladores actuales suelen hacer dos funciones deuna vez, compilando y enlazando todo en una sola fun-ción, aunque es posible pedirles que no lo hagan medianteparámetros adicionales.Según el compilador y la configuración utilizada, se ob-tendrán dos o tres archivos:El archivo fuentehola.cEl archivo objetohola.objEl archivo ejecutable

1

Page 2: Programación en c primer programa en c

2 3 DISECCIONANDO EL “HOLA MUNDO”

hola.exeEste último es el que nos interesa, puesto a que es el có-digo ejecutable, el programa en sí. Al ejecutarlo se pro-ducirá la salida deseada en una ventana de consola.

2.1.2 Salida por pantalla

Si ejecutamos en entorno Windows el programa directa-mente desde el navegador de archivos, o también desdealgunos entornos de desarrollo, lo que sucederá será queapenas abierta la ventana de la consola, se mostrará la ca-dena esperada y luego de terminada la función, la conso-la se cerrará sin tener el tiempo suficiente de ver nuestromensaje en pantalla.Para poder ver la salida por pantalla será necesario ejecu-tar el programa desde la línea de comandos, o modificarla configuración del entorno de desarrollo para que mues-tre la salida por pantalla al ejecutar el programa.Una posible solución es agregar una función adicional anuestro “hola.c":/* Inclusión de archivos */ #include <stdio.h> #include<stdlib.h> /* Función principal */ int main (int argc,char**argv) { /* Impresión por pantalla y salida del progra-ma*/ printf(“Hola mundo\n”); system (“pause”); return0; }

Las dos líneas agregadas permiten que utilicemos la bi-blioteca stdlib, que incluye la función system y que me-diante esta función se ejecute el comando pause del siste-ma, que evita que el programa siga hasta que se presioneuna tecla.Así es posible visualizar que la salida de hola.c se com-pletó perfectamente.

2.2 GNU

Si bien existen otros compiladores, lo más usual y mássencillo para compilar un programa en GNU/Linux es elcompilador gcc, ya que es el que se incluye en todas lasdistribuciones.De cualquier forma, es posible realizar la compilacióndesde línea de comandos o desde el entorno gráfico.Para realizarla desde línea de comandos, será necesa-rio contar con una terminal (xterm, konsole, gnome-terminal, etc). No es necesario contar con permisos deroot para crear o compilar programas. En esa terminalserá necesario escribirgcc hola.cSi no existen errores en el código, este comando noscreará un archivo ejecutable, que por omisión se llama“a.out”, y que podemos ejecutar desde la línea de coman-dos de la siguiente forma:

./a.out Hola mundoEs una buena idea especificar el nombre que el archivoejecutable tendrá, pasando como parámetro al compila-dor la opción -o, de la siguiente forma:gcc hola.c -o holaCon lo cual, el nombre del archivo creado será hola. Estearchivo no tiene extensión ya que es la forma usual dellamar a los archivos ejecutables en los entornos UNIX yGNU/Linux, sin embargo funcionaría de la misma formasi se llamara hola.exe.Para ejecutarlo, haremos los mismo que en el caso ante-rior:./hola Hola mundoExisten otros parámetros que podemos especificar alcompilador en la línea de comandos, dependiendo del ti-po de programa, y en función de la complejidad del mis-mo. Por ejemplo, podemos agregar las siguientes opcio-nes:gcc hola.c -o hola -Wall -pedanticLa opción -Wall nos mostrará todos los avisos que pro-duzca el compilador, no solamente los errores. Los avisosnos indican dónde y/o porqué podría surgir algún error ennuestro programa.La opción -pedantic nos aporta más información sobrelos errores y los avisos mostrados por GCC.

3 Diseccionando el “Hola Mundo”

A continuación veremos cuál es la estructura básica de unprograma en C, para poder entender qué hace cada unade las líneas de nuestro sencillo programa.Es probable que lo primero que salte a la vista sea la línea:printf(“Hola mundo\n”);

Esta es la línea que hace aparecer la cadena Hola Mundoen nuestra pantalla. Notamos que en C la sentencia paraimprimir algo por pantalla es printf() y, además, hay quecolocar paréntesis alrededor de lo que queremos imprimirpara utilizarla.Esto se debe a que en C, printf es una función, que impri-me su argumento (la cadena Hola Mundo\n) en la pan-talla. Se denomina invocar una función a la acción deutilizarla para que realice una acción.Podemos observar también que la cadena a imprimir ter-mina con una extraña combinación: \n. La combinación\n no representa a dos caracteres independientes, sino querepresenta un único carácter no imprimible: el salto delínea. Sin el salto de línea, el resultado al ejecutar el pro-grama sería:$ ./a.out Hola Mundo$

Page 3: Programación en c primer programa en c

3

Es decir que no hay salto de línea entre la cadena impresa,y la siguiente entrada de la línea de órdenes, que no es loque esperábamos.Lo último a notar en la línea es que termina con un puntoy coma. En C, todas las sentencias terminan con un puntoy coma. Al principio puede parecer obvio dónde terminauna sentencia, pero ya veremos más adelante que no lo estanto.Observemos ahora la siguiente sentencia del programa:return 0;

Luego de esta sentencia, termina el programa. En el casode la instrucción return dentro de la función main, el re-sultado es que se finaliza el programa, comunicándoleal sistema operativo que el valor de retorno (un códigonumérico que el sistema utiliza para saber si el progra-ma ha funcionado bien o ha dado fallos) es 0, es decir,correcto.Las dos últimas sentencias se encuentran encerradas entrellaves. De esta manera, forman un bloque, es decir, ungrupo de sentencias que se ejecutarán siempre de formacorrelativa.¿Y qué es esa línea que precede (en realidad, que da nom-bre) al bloque?int main (int argc, char **argv)

Pues es la definición de una función, en este caso llama-da main. En C (y en general en todos los lenguajes deprogramación estructurada) todo se hace a base de fun-ciones, como main y printf.La función main es especial, porque es el la que se invocacuando se ejecuta el programa. Todos los programas en Ccomienzan su ejecución al principio de la función main,y cuando ésta acaba, el programa también.Veamos con más detalle la definición de la función:int main (int argc, char **argv) { ... }

• El nombre de la función que viene a continuación,entre llaves, es main.

• Recibe dos argumentos: int argc y char **argv (querepresentan a la cantidad de argumentos ingresadosal ejecutar el programa y a los valores de estos argu-mentos respectivamente).[1]

• La función devuelve como resultado un número en-tero, int (que es el 0 de la instrucción return).[2]

Finalmente, y un tanto aparte (está separada del resto poruna línea en blanco), tenemos la línea:#include <stdio.h>

Que parece bastante distinta al resto del programa, y que,además, parece no tener sentido, puesto que ya hemosdefinido la función main que hace todo el trabajo.Efectivamente, esa línea no es parte del programa, aun-que sea imprescindible. La línea es una instrucción delpreprocesador de C, como nos lo indica el símbolo #, ylo que hace es incluir en ese punto el contenido de otrofichero, antes (de ahí el nombre de preprocesador) de quecomience la compilación. El fichero stdio.h es el que con-tiene la definición de la función printf(), que antes utili-zamos pero que no escribimos, ya que forma parte de labiblioteca estándar de C.

4 Comentarios

Una vez escrito un código, tratar de entenderlo un añomás tarde solo con leerlo puede ser frustrante: no hay ma-nera de saber (si el programa es medianamente compli-cado) qué es cada variable, o qué hace cada bloque decódigo. Por esto, en cualquier lenguaje de programaciónson importantes los comentarios.Un comentario en C es todo lo que se encuentre entre lossímbolos /* y */. Hay que tener en cuenta que los comen-tarios no se pueden anidar: si dentro de un comentariohay un /*, seguirá siendo el primer */ el que finalice elcomentario, no se esperará al segundo.Hay otro tipo de comentarios en C, procedentes del len-guaje C++, e incorporadas al estándar de C a partir deC99: //. Todo lo que esté después de estos signos, has-ta el final de la línea, se considerará un comentario y elcompilador no lo tomará en cuenta.En el ejemplo presentado pueden verse tres líneas concomentarios, que documentan someramente las distin-tas funcionalidades del código. En los próximos capítulospodrán verse mejores usos de los comentarios dentro delcódigo.También podría decirse que es una herramienta básicabasada en compilador

[1] En un capítulo posterior podrá ver un ejemplo del uso delos parámetros que recibe main.

[2] Es importante señalar que el estándar dice que main de-berá definirse como función que retorna un entero, o delo contrario el resultado queda indefinido.

Page 4: Programación en c primer programa en c

4 5 ORIGEN DEL TEXTO Y LAS IMÁGENES, COLABORADORES Y LICENCIAS

5 Origen del texto y las imágenes, colaboradores y licencias

5.1 Texto• Programación en C/Primer programa en C Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Primer_programa_en_

C?oldid=292632 Colaboradores: ManuelGR, Envite, Almorca, Rutrus, X.Cyclop~eswikibooks, Ikks, M.estarellas, Ksaver, Morza, Mar-coAurelio, Luckas Blade, Maxy, Margamanterola, Url999, Dessaya y Anónimos: 15

5.2 Imágenes

5.3 Licencia del contenido• Creative Commons Attribution-Share Alike 3.0