Vous êtes sur la page 1sur 10

Guin de prcticas

Estructuras secuenciales

GUIN DE PRCTICAS 1: ESTRUCTURAS SECUENCIALES

Introduccin.
Con este guin de prcticas no se pretende ensear el uso de un entorno de programacin, sino que vamos a aprender a programar en C (con algunos trucos de C++) y para ello utilizaremos pequeos ejemplos y ejercicios para afianzar los conocimientos.

El primer programa.
Vamos a realizar nuestro primer programa, por lo tanto escribe el siguiente cdigo:
int main( void ){ }

NOTA: Escribe el texto tal cual aparece aqu, puesto que el lenguaje C es muy estricto con respecto a las maysculas y las minsculas. A continuacin, realiza los siguientes pasos escribiendo en tu entorno de compilacin preferido: Guarda el cdigo escrito en un fichero con el nombre de ejemplo1.cpp Compila el archivo para obtener un programa ejecutable. Ejecuta el programa obtenido en el paso anterior. Si has realizado todos los pasos correctamente podrs comprobar que has escrito un programa que hace NADA. El cdigo escrito es un esqueleto que nos servir para ir aadiendo distintas rdenes hasta obtener un programa totalmente funcional. Vamos a aadir unas lneas al cdigo escrito hasta el momento.
#include <stdio.h> int main( void ){ printf( Hola Mundo ); }

NOTA: Observa que al final de la instruccin printf hay un punto y coma (;). Este smbolo es muy importante y nos indica dnde finaliza la orden. Compila y ejecuta este cdigo. El resultado de ejecutar este programa debera ser:
Hola Mundo_

Pgina 1 de 10

Guin de prcticas

Estructuras secuenciales

Es ese tu resultado? o por el contrario, tu programa no hace nada?. Si has podido ver el mensaje, ests de suerte: Lo ms seguro es que tu entorno de programacin no ha cerrado la ventana de ejecucin del programa para que puedas ver los resultados. Sin embargo, lo ms comn es que dicha ventana se cierre al finalizar la ejecucin. Si ese es tu caso, no te preocupes, que lo vamos a solucionar aadiendo otra lnea ms al cdigo.
#include <stdio.h> #include <stdlib.h> int main( void ){ printf(Hola Mundo); system(PAUSE); }

Ahora compila y ejecuta, vers el siguiente mensaje en pantalla:


Hola Mundo Presione una tecla para continuar . . . _

Puedes ver el mensaje porque el programa an no ha finalizado. Para terminar su ejecucin, pulsa cualquier tecla. Vamos a ver qu significan las distintas lneas que hemos aadido en este primer ejemplo.

Libreras.
Las dos primeras lneas de nuestro cdigo son:
#include <stdio.h> #include <stdlib.h>

Ambas hacen referencia a las cabeceras de unas libreras. Una de las grandes ventajas del lenguaje C consiste en que muchas acciones ya estn implementadas dentro de sus libreras, en secciones de cdigo llamadas funciones, para que nuestros programas sepan qu funciones hay dentro de cada librera, incluimos sus cabeceras al principio del cdigo. Por lo tanto, incluimos 2 libreras para poder utilizar las funciones:

printf stdio.h system stdlib.h

Las libreras estndar ms utilizadas son las siguientes: STDIO: Librera con funciones de entrada y salida estndar. El fichero cabecera es stdio.h (es frecuente confundir el nombre de esta librera aadiendo una U, por lo que hay que prestar atencin para NO ESCRIBIR studio.h)

Pgina 2 de 10

Guin de prcticas

Estructuras secuenciales

STDLIB: Librera con funciones de uso general. La cabecera es stdlib.h MATH: Librera con funciones matemticas. La cabecera es math.h

Algunos entornos de programacin incluyen libreras NO estndar, como por ejemplo la librera CONIO que se utiliza en MS-DOS para manipular la pantalla (escribir texto en zonas de la pantalla, borrar la pantalla, cambiar colores, ). Nosotros no utilizaremos estas libreras. Para conocer ms sobre las libreras estndar (libreras ANSI) puedes consultar la pgina web: http://c.conclase.net/librerias/index.php

Funciones utilizadas.
En nuestro primer programa hemos utilizado 2 funciones distintas (de distintas libreras). La primera es:
printf( Hola Mundo );

Hace referencia a una funcin existente en la librera STDIO, y es una funcin de salida, ya que muestra por pantalla el mensaje incluido entre comillas. Ejercicios:

Cambia el mensaje Hola Mundo entre comillas por el siguiente texto:

Bienvenido\n.
Cambia el mensaje que se muestra por uno personalizado.

La segunda es una funcin genrica:


system(PAUSE);

Esta funcin ejecuta un programa existente en nuestro sistema operativo que se llama PAUSE. El programa muestra el texto Presione una tecla para continuar . . . y espera hasta que se pulse una tecla.

Pgina 3 de 10

Guin de prcticas

Estructuras secuenciales

Un programa algo ms complejo.


Vamos a continuar con un programa con algo ms de complejidad. Copia el siguiente cdigo en el entorno de programacin elegido:
#include <stdio.h> #include <stdlib.h> #define PI 3.14 int main( void ){ int radio; float perimetro; printf( "Introduzca el radio de una circunferencia: " ); scanf("%i", &radio); perimetro = 2*PI*radio; printf( "El perimetro es: %f\n", perimetro); } system("PAUSE");

Guarda el cdigo con el nombre ejemplo2.cpp, a continuacin, compila y ejecuta el programa. Cuando pida el radio introduce el valor 5. Si todo est correcto, en la pantalla veremos lo siguiente:
Introduzca el radio de una circunferencia: 5 El perimetro es: 31.400000 Presione una tecla para continuar . . .

Vamos a ver qu significan los nuevos elementos que hemos introducido en el cdigo.

Constantes.
En nuestro programa hemos declarado una constante con la siguiente lnea:
#define PI 3.14

Como puedes comprobar tiene 3 partes separadas por espacios: 1. La palabra reservada #define que indica que se va definir una constante (o macro). Esta palabra hay que escribirla siempre en minscula. 2. El nombre de la constante, en este caso PI. Se suele escribir en mayscula para aclarar visualmente que se trata de una constante. 3. El valor de la contaste, en este caso 3.14. En realidad, para C esto es una macro, es decir, la palabra PI ser sustituida por el valor 3.14 antes de realizar la compilacin.

Pgina 4 de 10

Guin de prcticas

Estructuras secuenciales

Ejercicio:

Aumenta la precisin de PI cambiando su valor por el de 3.141593

Variables.
Las variables son zonas de memoria reservadas para almacenar datos. C es un lenguaje fuertemente tipificado, por lo tanto, es necesario declarar el identificador de las variables y su tipo antes de utilizarlas. En nuestro programa hemos declarado 2 variables:
int radio; float perimetro;

Observa que cada declaracin termina con punto y coma, y estn compuestas de 2 partes separadas por espacios: 1. El tipo de datos que se almacenar (en el primer caso un entero y en el segundo un real - float). 2. El nombre (o identificador) que deseamos asignar a la variable para poder referenciarla. Se pueden declarar varios identificadores del mismo tipo, en una misma lnea separndolos con comas, de la siguiente manera:
int radio, edad, numero;

Los tipos ms sencillos de variables son: Declaracin en C Tipo de dato Entero Real (aprox. 6 dgitos de precisin) Real (aprox. 10 dgitos de precisin) Carcter

int float double char


Ejercicio:

Cambia el tipo de la variable radio para poder introducir valores reales y une las 2 declaraciones en una sola lnea. Compila y ejecuta el programa. Funciona correctamente?.

Si has realizado la modificacin del ejercicio, comprobars que el programa s compila, pero no funciona correctamente, ya que los valores mostrados son errneos. El problema NO EST EN LA DECLARACIN. El problema se encuentra en la entrada de datos, ya que intentamos leer y almacenar un entero dentro de la variable real radio. A continuacin vamos a ver con ms detalle las entradas y las salidas.

Pgina 5 de 10

Guin de prcticas

Estructuras secuenciales

Entradas y salidas bsicas.


Nuestro programa es capaz de leer un valor por teclado y almacenarlo en una variable. A esto se le llama operacin de entrada de datos y se realiza con la siguiente funcin:
scanf("%i", &radio);

Esta funcin pertenece a la librera STDIO y est formada por varias partes: Nombre de la funcin: scanf( ); Parmetros, que en este caso son dos: 1. Tipo de dato que se quiere leer, en este ejemplo un entero: "%i". 2. Variable donde se almacena el valor: &radio. NOTA: El nombre de la variable va antecedido por el smbolo &, para indicarle a la funcin scanf que modifique el contenido de dicha variable. Si se omite ese smbolo, la funcin scanf leer el valor pero no lo almacenar. A esto se le llama paso por referencia. En cuanto al tipo de dato que se quiere leer, hay una letra para cada tipo. Las letras son las siguientes: Letra %i, %d %c %f %lg, %lf %s Ejercicios: Tipo de variable int char float double cadena de caracteres

Cambia la funcin scanf para que pueda leer un real y lo almacene en la variable radio (que tras los cambios realizados antes, debe ser tambin real). Qu ocurre ahora?.

Adems de esta entrada de datos, tenemos una salida de datos algo diferente a escribir un simple mensaje por pantalla. La lnea de cdigo en concreto es:
printf( "El perimetro es: %f\n", perimetro);

Al igual que scanf , la funcin printf tiene varios parmetros (en este caso dos). El primero de ellos es totalmente distinto a los dems, ya que nos indica qu texto se va a mostrar por la pantalla:

"El perimetro es: %f\n"


Dentro de dicha cadena indicamos dnde queremos mostrar los valores, y de qu tipo son. En este caso, vamos a mostrar un real (%f) al final de la cadena de texto. Las letras utilizadas para indicar los valores son las mismas que para scanf. Por ejemplo, si queremos mostrar 2 valores por pantalla necesitaremos modificar la instruccin printf para que quede de la siguiente manera:

Pgina 6 de 10

Guin de prcticas

Estructuras secuenciales

printf("El perimetro para el radio %f es: %f\n", radio, perimetro);

En este caso el texto indica que se van a mostrar 2 nmeros reales:

"El perimetro para el radio %f es: %f\n"


El primer %f ser sustituido por el valor de radio, mientras que el segundo %f ser sustituido por el valor almacenado en la variable perimetro. En resumen, despus de la cadena de texto deben ponerse tantas variables (o expresiones) como elementos del estilo %tipo tengamos en dicha cadena. Ejercicio: Cambia el programa para que muestre varias veces el resultado pero de distintas formas. Es decir, si el radio vale 5, el permetro 31,4 y PI vale 3.14 deber mostrar las siguientes lneas:

radio = 5, perimetro = 31.4 2 * 3.14 * 5 = 31.4 El perimetro es de 31.4, para un radio de 5. Para PI = 3.14 y radio = 5 el perimetro es 31,4
NOTA: Es muy comn confundir el funcionamiento de printf y escribir mal sus parmetros. Escribir instrucciones del tipo:

printf("El precio es ", valor, "euros")


slo muestra por pantalla el primer texto:

El precio es
y el contenido de valor y el texto euros no se mostrarn, ya que en el primer texto no hay elementos de la forma %tipo para ser sustituidos.

Asignacin y operadores bsicos.


La ltima lnea de cdigo que nos queda por describir es:
perimetro = 2*PI*radio;

Esta es la ms simple de todas las lneas, ya que lo nico que hace es realizar una operacin aritmtica:

2*PI*radio
y guardar el resultado dentro de la variable perimetro.

Pgina 7 de 10

Guin de prcticas

Estructuras secuenciales

Ejercicios: Modifica el cdigo del clculo del permetro de una circunferencia para que, adems, calcule el rea del crculo, teniendo en cuenta que el rea se calcula multiplicando PI por el radio al cuadrado. Aade tambin el clculo del rea de una esfera del mismo radio: rea esfera = 4 * PI * radio2 Calcula tambin el volumen de dicha esfera: volumen esfera = 4/3 * PI * radio3

Pgina 8 de 10

Guin de prcticas

Estructuras secuenciales

Comentarios.
Cuando tenemos mucho cdigo es muy til poder incluir texto que explique lo que se est haciendo en cada parte. De esta forma, cuando vayamos a mirar un cdigo de otra persona (o uno que hace mucho tiempo que hicimos) podramos comprender rpidamente su funcionamiento. Adems, los comentarios no tienen ningn efecto en nuestra aplicacin, ya que son ignorados por el compilador. Observa cmo quedara el cdigo del clculo del permetro comentado.
#include <stdio.h> #include <stdlib.h> #define PI 3.14 /* Programa principal */ int main( void ){ int radio; //ENTRADA: radio de la circunferencia float perimetro; //SALIDA: Permetro que vamos a calcular /* Leer los valores de entrada. */ printf( "Introduzca el radio de una circunferencia: " ); scanf("%i", &radio); /* Calcular el permetro */ perimetro = 2*PI*radio; /* Mostrar el resultado */ printf( "El perimetro es: %f\n", perimetro); system("PAUSE"); }

Como puedes observar hay 2 formas de realizar los comentarios: Indicando dnde empieza y dnde acaba con /* */. Este tipo de comentarios no se pueden anidar. Indicando dnde empieza con // . Este tipo de comentarios acaba al final de la lnea. Ejercicio: Aade comentarios a tu programa que calcula el permetro y el rea de una circunferencia, y el volumen y el rea de una esfera.

Pgina 9 de 10

Guin de prcticas

Estructuras secuenciales

Recuerda.
El lenguaje C es muy estricto, por lo que hay que tener cuidado con las maysculas y las minsculas. La gran mayora de las rdenes finalizan con un punto y coma (;) y es fcil olvidarse de l. La librera de entrada y salida estndar es stdio.h . En la funcin scanf, no olvides poner el smbolo & antes del nombre de la variable. Si lo omites, no se almacenar el valor ledo. La primera cadena de texto de printf es un patrn donde se indica dnde colocar los valores a mostrar, utilizando elementos de la forma %tipo. Poner los valores seguidos, simplemente separados por comas, no es suficiente para que se muestren todos los valores. Los comentarios de tipo /* */ no se pueden anidar.

Ejercicios finales.
1. Disear un algoritmo que lea un valor entero y otro real, y muestre los resultados de sumar, restar, dividir y multiplicar dichos nmeros. 2. Queremos conocer los datos estadsticos de una asignatura, por lo tanto, necesitamos un algoritmo que lea el nmero de suspensos, aprobados, notables y sobresalientes de una asignatura, y nos devuelva: a. El porcentaje de alumnos que han superado la asignatura. b. El porcentaje de suspensos, aprobados, notables y sobresalientes. 3. Un departamento de climatologa ha realizado recientemente su conversin al sistema mtrico. Disear un algoritmo para realizar las siguientes conversiones: a. Leer la temperatura dada en la escala Celsius e imprimir en su equivalente Fahrenheit (la frmula de conversin es F=9/5 C+32). b. Leer la cantidad de agua en pulgadas e imprimir su equivalente en milmetros (25.5 mm = 1 pulgada). 4. Abajo se muestra el men de un restaurante de bocadillos. Disear un algoritmo capaz de leer el nmero de unidades consumidas de cada alimento ordenado y calcular la cuenta total. a. b. c. d. e. Bocadillo de jamn: Bocadillo de queso: Patatas fritas: Refresco: Cerveza: 2,50 2,00 1,00 1,75 1,25

Pgina 10 de 10

Vous aimerez peut-être aussi