Introducción a la programación. Lenguaje C.

Anuncio
Programación en C
I.E.S. SIETE COLINAS – CEUTA
1º BACHILLERATO – TECNOLOGÍA DE LA INFORMACIÓN
Manuel A. Martín Santiago
FUNDAMENTOS DE PROGRAMACIÓN – PROGRAMACION EN C
1.- Introducción.
Para poder manipular y gestionar información o procesos con un ordenador se hace necesario un
componente básico denominado software. En su momento se definió el mismo como un conjunto de
programas (sistema operativo y aplicaciones) que permiten sacar el máximo rendimiento a un sistema
informático. En lenguaje popular el software es lo que se conoce como programas.
En este tema vamos a plantear el software desde un punto de vista particular del usuario. En
ocasiones el usuario necesita mecanizar procesos o cálculos para los cuales no existen herramientas
específicas (software), por lo cual se ve obligado a desarrollar las mismas. En este punto el usuario deja
de utilizar el software de usuario desarrollado por las empresas especializadas para diseñar sus propias
soluciones, es decir, pasa a ser un programador. Es entonces cuando el usuario necesita adquirir una
serie de conocimientos, en los cuales, determinados conceptos (lenguajes, variables, gestión de
memoria, estructuras de datos, etc…..) ya no pueden ser tan trasparentes como lo eran cuando
simplemente manejaba software de usuario.
2.- Conceptos básicos. Programa. Lenguaje. Compilador e intérprete. Instrucciones. Datos.
Para que un usuario pueda realizar tareas con un ordenador queda claro que necesita programas.
Podemos definir un programa como un conjunto de instrucciones que el ordenador puede interpretar y
ejecutar para obtener un resultado determinado.
Para escribir un programa (conjunto de instrucciones) se necesita un lenguaje. Evidentemente el
ordenador no entiende el lenguaje humano por lo que es necesario disponer de un lenguaje intermedio
entre la máquina y el ser humano, estos son los lenguajes de programación. Los lenguajes de
programación existentes son muy variados y dependiendo del tipo de aplicación que deseamos
utilizaremos uno u otro lenguaje. Ejemplos típicos son C, C++, Pascal, Basic, Fortran, PL/SQL etc….
Al igual que los diferentes idiomas hablados por el ser humano tienen unas reglas sintácticas y
semánticas para el idioma, los lenguajes de programación también las tienen. Resumiendo podemos
decir que las sintácticas definen como se han de escribir las instrucciones y las semánticas cual es el
significado de las mismas.
De todo lo anterior podemos deducir que un programa es un conjunto de instrucciones escritas en
un determinado lenguaje por un programador con la misión de realizar una determinada tarea con el
ordenado.
Los programas escritos por un programador en un lenguaje de programación pueden tener errores
sintácticos y semánticos al igual que ocurre cuando se habla o escribe un idioma existen faltas de
ortografía. Debido a esto es necesario corregir estos programas para que el ordenador pueda entenderlos.
Esta corrección de posibles errores se hace posteriormente a la escritura del programa. Para realizar esta
corrección se utilizan herramientas específicas encargadas de avisar al programador donde están los
posibles errores. Estas herramientas (software) se denominan compiladores / intérpretes. La diferencia
entre un compilador y un intérprete es que al primero se le suministra un programa escrito en un
-1-
Programación en C
lenguaje y el compilador lo analiza suministrando un listado de errores; por otro lado el intérprete no
analiza el programa en conjunto, analiza las instrucciones independientemente y da los errores para cada
instrucción.
Parece claro pues que cuando se escribe un programa (modo texto) este ha de pasar previamente
por un programa corrector y que traduce el programa a “algo” que entienda el ordenado para poder
ejecutarlo. Al programa original escrito por el programador en modo texto se le denomina programa
fuente y al programa generado por el compilador listo para ejecución se le denomina programa objeto.
Programa fuente
--------Instrucción 1
Instrucción 2
.
.
Instrucción N
Compilador
Herramienta
Software
Programa objeto
-----Programa ejecutable
por el ordenador
-Código máquina-
Figura -1En la figura superior se describe básicamente el proceso de compilación. El programador escribe
el programa en un lenguaje de programación. Una vez escrito lo compila y genera un programa objeto.
La función real de la compilación es detectar los errores y una vez corregidos traducir el programa
fuente en algo que pueda entender el ordenador (programa objeto).
Hemos mencionado anteriormente que un programa esta formado por instrucciones. Las
instrucciones son órdenes escritas en un determinado lenguaje y que normalmente realizan funciones
básicas. Para entender el concepto de instrucción vamos a poner un ej. Básico. Supongamos que
deseamos realizar un programa para sumar dos números introducidos por teclado del ordenador y
mostrar el resultado en pantalla
El programa del ej. Podría escribirse en muchos lenguajes. Vamos a escribirlo en lenguaje
natural con algunos símbolos para facilitar la lectura del mismo. Si bien no es entendible para el
ordenador si lo es para aquellas personas que no conocen ningún lenguaje de programación. Luego solo
bastaría realizar las traducciones pertinentes a un lenguaje de programación. Para separar una
instrucción de otra utilizamos el símbolo “;”.
PROGRAMA SUMA_DOS_NUMEROS; Æ Nombre del programa escrito en lenguaje natural.
{
Æ Símbolo que indica el comienzo de instrucciones
Dato1, dato2 y resultado son enteros; Æ declaramos cuales son los valores que utilizaremos
PEDIR dato1;
Æ pedimos el primer numero que se denomina dato1
PEDIR dato2;
Æ pedimos el primer numero que se denomina dato2
resultado = dato1+dato2 ;
Æ Asignamos al dato resultado la suma de dato1 y dato2
MOSTRAR resultado ;
Æ Mostramos el valor del dato resultado
}
Æ Símbolo que indica el fin de un conjunto de instrucciones
-2-
Programación en C
El programa consta de un área para el nombre del programa y cada línea comprendida entre los
símbolos “{“ y “}” es una instrucción con lo que está claro que hay 5 instrucciones. La primera es una
instrucción donde se declaran cuales son los datos (variables) que se utilizan en el programa y las demás
realizan una función determinada en el programa. La instrucción resultado = dato1 + dato2 es una
instrucción de asignación que da valor a la variable resultado. Ese valor es la suma de los datos
previamente introducidos (dato1 y dato2).
Aunque este programa no es directamente entendible por ningún compilador bastaría traducir
cada instrucción a un lenguaje (con sus reglas sintácticas y semánticas) para que fuera entendible por un
compilador para ese lenguaje. Por ello cuando uno va a realizar un programa es muy útil previamente
realizar una aproximación en lenguaje natural de cuales son los pasos a realizar. Esto facilitará la
elaboración del programa ya que luego solo hay que traducir. Para realizar una primera aproximación al
programa se utilizan distintas herramientas: organigramas, ordinogramas, pseudo código o lenguaje
natural.
Las instrucciones en un programa pueden ser de varios tipos
-
Instrucciones de entrada / salida : Leer datos o escribir datos.
Instrucciones de asignación: Asignan valores a las variables.
Instrucciones de decisión: Permiten realizar un conjunto de instrucciones u otro en función de
una condición determinada.
Instrucciones iterativas (repetitivas): Permiten realizar una instrucción repetidamente un
número determinado de veces o en función de si se cumple una condición o no.
Por otro lado hemos introducido un concepto que todavía no hemos definido: Variable. Las
variables de un programa no son más que una forma de hacer referencia a los datos que se manejan en el
mismo por ej. Supongamos el siguiente conjunto de datos: 32ºC - Antonio - 170 cm.
Estos datos se pueden manejar en cualquier programa pero si el primero hace referencia a una
temperatura está claro que es un valor que mide una magnitud. En un programa para hacer la media de
temperaturas (por ej.) tendríamos que almacenar varias temperaturas solicitadas por teclado lo que
implica que como no sabemos cuales serán las introducidas debemos de darle un nombre genérico a
cada una para referenciarlas. Si suponemos que el programa pide 7 temperaturas tendríamos 7 variables
una para cada temperatura, que podríamos llamar temperatura1, temperatura2……temperatura7. Para
los otros datos podríamos usar una variable denominada nombre u otra denominada estatura.
En definitiva las variables son las encargadas de almacenar los valores de los datos para que el
usuario pueda manejarlos con un nombre determinado independientemente del valor que tomen. Las
variables son de un tipo determinado en función del dato que almacenan. Los tipos más elementales son
entero, carácter, cadena, real, array, registro. En su momento explicaremos estos tipos para el lenguaje
C. Existe otro tipo de objetos denominados Constantes cuyo cometido es asignar un valor fijo a un
nombre determinado para utilizarlo en un programa.
Variable estructurada Array
Un array es un tipo de variable estructurada caracterizada por contener varios datos de un mismo tipo.
Es similar al concepto de vector con componentes. Para entender su funcionamiento podemos poner el
siguiente ejemplo. Supongamos que deseamos manejar un conjunto de temperaturas tomadas por un
observatorio para poder calcular la media, máxima, mínima, etc…
-3-
Programación en C
Si suponemos que son 100 temperaturas las tomadas, podríamos definir 100 variables una para
cada temperatura: temp1,temp2,…..temp100 y ella almacenar cada valor. Más cómodo resultaría utilizar
una ARRAY o VECTOR que llamaríamos temperatura, el cual tendría 100 posiciones para almacenar
100 temperaturas. Las ventajas serían que para manejar las temperaturas se realiza con una estructura
iterativa (bucle) para recorrer el vector o array.
Gráficamente
Array T
23
12
5
T[0] T[1] T[2]
23
31
.
.
.
.
.
.
.
..
.
.
.
.
.
21
T[99]
Según el esquema la temperatura T[0] que es la primera almacenada, sería 23ºC, la segunda T[1]
sería 12 y así sucesivamente. Básicamente es una estructura que almacena un conjunto de datos del
mismo tipo.
Más adelante al explicar como se definen las variables en lenguaje C explicaremos como se
define la variable tipo array.
3.- Introducción al lenguaje C
El lenguaje C es un lenguaje de programación de gran implantación en el mundo informático. Se
puede considerar de propósito general por lo que se pueden realizar múltiples aplicaciones con él. Un
programa en C tiene una estructura bien definida con unas partes elementales. Volviendo al ejercicio de
ej. realizado para sumar dos números vamos a realizar una traducción a lenguaje C que permitirá
conocer las partes básicas de un programa en este lenguaje.
PROGRAMA ESCRITO EN LENGUAJE NATURAL
PROGRAMA SUMA_DOS_NUMEROS; Æ Nombre del programa escrito en lenguaje natural.
{
Æ Símbolo que indica el comienzo de instrucciones
Dato1, dato2 y resultado son enteros ; Æ declaramos cuales son los valores que utilizaremos
PEDIR dato1 ;
Æ pedimos el primer numero que se denomina dato1
PEDIR dato2 ;
Æ pedimos el primer numero que se denomina dato2
resultado = dato1+dato2 ;
Æ Asignamos al dato resultado la suma de dato1 y dato2
MOSTRAR resultado ;
Æ Mostramos el valor del dato resultado
}
Æ Símbolo que indica el fin de un conjunto de instrucciones
-4-
Programación en C
En este programa realiza la suma de dos números y muestra su resultado. Las instrucciones
utilizadas en lenguaje natural vamos ahora a traducirlas a lenguaje C para obtener un programa que
pueda ser compilado y ejecutado en un ordenador. A la derecha de los dos programas (lenguaje natural y
C) se realizan comentarios sobre la función de cada instrucción.
//PROGRAMA PARA SUMAR DOS NUMEROS (esto simplemente es un comentario).
#include <stdio.h>
// Indica al compilador que se utilizan funciones de esta
// librería. Estas funciones son printf, scanf (entrada y salida
// de datos)
main()
// con esta orden se indica el comienzo del programa principal
{
// Símbolo que indica el comienzo de instrucciones
int Dato1, dato2 y resultado ;
// Declaramos las variables que utilizaremos y su tipo (entero)
printf (“introduce numero 1”);
scanf (“%d”,&dato1);
printf (“\nintroduce numero 2”);
scanf (“%d”,&dato2);
// Muestra un mensaje en pantalla solicitando un número.
//Captura el dato introducido por teclado y lo introduce en la variable dato1
resultado=dato1+dato2;
//Almacena en la variable resultado la suma de dato1 y dato2
printf(“El valor de la suma es: %d”, resultado); //muestra el resultado en pantalla
}
// símbolo para indicar el fin de programa o bloque o función
Vamos ahora a proceder a un análisis particular del programa para comentar las funciones de
cada instrucción dentro de un programa.
Los programas en su cabecera incluyen un comentario explicativo . Posteriormente viene el área
de include, donde se le indica al compilador que en este programa ha de incluir las instrucciones
contenidas en las librerías que se indican (en este caso solo se ha indicado la librería stdio.h que contiene
funciones básicas como printf y scanf para mostrar y leer información).
Después de estos apartados comienza propiamente el programa o código diseñado por el usuario.
La instrucción main() seguida del símbolo “{“ indica el comienzo de cualquier programa. El símbolo
“{“ en particular indica el comienzo de cualquier programa, función o bloque de instrucciones. El
símbolo “}”en C se utiliza para la finalización de programas, funciones o bloques.
Una vez comenzado el programa lo primero es declarar las variables y los tipos de datos que
vamos a utilizar. La variable la decide el programador ha de declarar de que tipo de dato se trata.
Primero se declara el tipo (entero en nuestro ej. por eso utilizamos la palabra int) seguida de las
variables de ese tipo separadas por comas. La declaración se finaliza con el símbolo “;”. En general
todas las instrucciones de C finalizan con “;” para indicar el final de una y el principio de otra.
La instrucción para mostrar un texto en pantalla es printf(“texto a mostrar”). A estas
instrucciones se les añaden lo que se denominan secuencias de escape para realizar saltos de línea,
tabulaciones, sonidos, etc…. Existe muchas secuencias de escape pero las más utilizadas son: \n (salto
de línea), \a (emite un sonido por el altavoz del ordenador), \t (introduce un tabulador), \b (retroceso).
Por ej la instrucción printf(\nintroduce número 2”) introduciría un “enter” y luego escribiría el texto
“introduce numero 2”. Si la función printf tiene que mostrar en pantalla el valor de una variable ha de
-5-
Programación en C
incluir el formato de salida de la misma lo que supone utilizar los códigos de formato. Los códigos más
utilizados para salida son: %d (enteros), %f(reales), %c (carácter ASCII). Existen otros muchos pero por
ser esto una introducción a la programación solo mencionamos estos aunque sobre la marcha se irán
introduciendo los que se necesiten. En el caso de la instrucción printf(“ el valor de la suma es: %d”,
resultado) lo que hace el programa es mostrar el texto y donde pone %d lo sustituye por el valor de la
variable resultado.
Para leer datos de teclado se utiliza la función scanf. Esta instrucción funciona pasándole el
formato de la variable que queremos leer así como el nombre de la variable precedido del símbolo “&”
que es lo que se denomina operador direccional. Existen dos operadores “&” y “*” pero en esta
introducción no se va a detallar su funcionalidad. Solo diremos que el primero, dado el nombre de
variable permite trabajar con la dirección del dato y el segundo dada la dirección permite trabajar con el
valor almacenado en la misma. En cualquier caso para no complicar el tema solo debemos saber que
cuando se lea una variable por teclado con scanf, está deberá estar precedida de “&”. De este modo en
nuestro ej. la instrucción scanf(“%d”,&dato2) captura el valor tecleado y lo introduce en la variable
dato2 como un entero que es el formato indicado con “%d”.
Una vez leídas las variables, la instrucción resultado = dato1+dato2 es una expresión matemática
que asigna a la variable resultado el valor de la suma de las dos variables situadas a la derecha. Las
expresiones no son más que variables relacionadas con operadores aritméticos o lógicos. Los operadores
más conocidos son: + (suma), - (resta), * (producto), / (división), % (resto división entera), > (mayor
que), < (menor que), == (igual que).
A continuación se muestra un recordatorio de los tipos de variables, formatos, y operadores
descritos anteriormente.
ALGUNOS TIPOS DE DATOS ELEMENTALES
•
•
•
•
•
Enteros . Se declaran con la palabra “int”. Ejemplo: int resultado; Æ Formato: %d
Reales. Se declaran con la palabra “float”. Ejemplo: float superficie; Æ Formato: %f
Carácter. Se declaran con la palabra Char. Ejemplo: char letra; Æ Formato: %c
Booleanos. Se declaran con la palabra Bolean. Ejemplo: boolean encontrado; (las
variables booleanas toman valores verdadero y falso).
Array. Se declaran con el tipo que contienen y nombre con nº de posiciones. Por
ejemplo un array con 100 temperaturas enteras podría ser : int temperaturas [100].
ALGUNAS SECUENCIAS DE ESCAPE
•
•
•
•
ALGUNAS SECUENCIAS DE ESCAPE
•
\n: salto de línea (enter).
\t: tabulador.
\b: retroceso.
\a: emite un sonido el altavoz
•
•
-6-
+, –, *, /, %: Suma, resta producto
división, resto división entera .
++ , --: incremento, decremento de
una variable en una unidad.
>, <, ==, >=, <=, !=: mayor, menor,
igual, mayor o igual, menor o igual,
distinto.
Programación en C
Una vez comentado el programa vamos a recordar conceptos generales sobre elementos que se utilizan
en el mismo.
•
•
Instrucción: Orden dada en un determinado lenguaje. Por ej.: scanf(“hola”)
Bloque de instrucciones: Un conjunto consecutivo de instrucciones con dos o más pudiendo ser
de cualquier tipo. Los bloques se suelen colocar enter los símbolos “{“ y “}”Por ej:
{
printf(“introduce dato”):
scanf(“%d”, dato);
}
// bloque con dos instrucciones
• Variable: Es una posición de memoria que contiene un dato. El programador le asigna un
nombre para poder referenciarla de una forma cómoda. Por ej.
int edad;
//declaración de la variable edad de tipo entero.
•
Programa: Conjunto o bloque de instrucciones escritas en un lenguaje de programación para
realizar una función determinada. Por ej.
//PROGRAMA PARA SUMAR DOS NUMEROS
#include <stdio.h>
main()
// Indica al compilador que se utilizan funciones de esta
// librería. Estas funciones son printf, scanf (entrada y salida
// de datos)
// con esta orden se indica el comienzo del programa principal
{
// Símbolo que indica el comienzo de instrucciones
int Dato1, dato2 y resultado ;
// Declaramos las variables que utilizaremos y su tipo (entero)
printf (“introduce numero 1”);
scanf (“%d”,&dato1);
printf (“\nintroduce numero 2”);
scanf (“%d”,&dato2);
// Muestra un mensaje en pantalla solicitando un número.
//Captura el dato introducido por teclado y lo introduce en la variable dato1
resultado=dato1+dato2;
//Almacena en la variable resultado la suma de dato1 y dato2
printf(“El valor de la suma es: %d”, resultado);
//muestra el resultado en pantalla
}
// símbolo para indicar el fin de programa, bloque o función
Los programas contienen bloques de bloques de instrucciones que son las que interpreta el
compilador así como partes que son descriptivas para que la persona que lea el código fuente sepa que
hace cada instrucción. Aunque no son obligatorias si son aconsejables. Los comentarios en una línea se
pueden realizar precediendo el texto del comentario por los símbolos “//”. Si el comentario ocupa dos
líneas hay que colocar los símbolos en cada línea como en el ejemplo superior. También se pueden
utilizar los símbolos “/*” y “*/” para varias líneas de comentario.
-7-
Programación en C
3.- Instrucciones en lenguaje C. Tipos.
Como hemos visto para realizar un programa necesitamos dar al ordenador instrucciones precisas
en un lenguaje de programación para que el mismo las pueda ejecutar de forma automática. Hasta ahora
hemos visto instrucciones sencillas para mostrar texto en pantalla (printf), leer un dato desde el teclado
(scanf) o realizar operaciones de asignación (resultado=dato1+dato2). Es el momento de hacerse la
pregunta : ¿Qué debo hacer cuando deseo realizar algo un número determinado de veces?, ¿Qué debo
hacer cuando si ocurre algo, tengo que hacer una tarea y si no ocurre, debo hacer otra?. Esto nos hace
pensar que tienen que haber métodos o instrucciones que permitan al programador realizar un bloque de
instrucciones 50 veces por ej., sin la necesidad de escribir ese bloque 50 veces, una detrás de otra.
Vamos a describir los tipos de instrucciones básicas en C así como las que nosotros utilizaremos
en nuestra introducción al lenguaje C. Los tipos de instrucciones básicas son:
SECUENCIALES
Son las que hemos visto hasta el momento y realizan una función determinada dentro del
lenguaje. Dentro de estás podemos englobar también a las instrucciones que son expresiones para dar
valor a las variables como por ej : resultado=dato1+dato2.
Nosotros utilizaremos las siguientes en nuestros programas:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
printf(“texto”): Su función es mostrar texto en pantalla.
printf(“secuencia de formato”, variable): Su función será mostrar el valor de una variable.
scanf(“secuencia de formato”,&variable): Su función es leer de teclado un valor y asignarlo a
la variable.
variable=expresión: Asigna el valor de la expresión a la variable. Por ej:
resultado=dato1+dato2.
clrscr(): Limpia el contenido de la pantalla.
random(n): Genera un número aleatorio entre 0 y n-1. ej: random(3) genera un nº aleatorio entre
0 y2
randomize(): Cambia la “semilla” de números aleatorios. Si no se utiliza las secuencias
generadas son aleatorias pero producen siempre los mismos números ya que la base de
generación sería la misma.
getch(): Captura una tecla pulsada en el teclado y se la asigna a una variable. Se puede utilizar
para los menús. Ej. opcion=getch().
fopen: Abrir ficheros de texto para escritura
fprintf : permite escribir en un archivo de texto
fscanf: Permite leer de un archivo de texto
Existen muchas otras funciones para trabajar con cadenas, utilizar ficheros pero con estas
comenzaremos a trabajar en programas sencillos e iremos introduciendo nuevas a medida que vayan
siendo necesarias para nuestros programas.
-8-
Programación en C
CONDICIONALES CON CAMBIO EN LINEA DE EJECUCIÓN
Estas instrucciones permiten ejecutar un bloque de instrucciones u otro en función de una condición.
En los ejemplos que siguen se muestra un ejemplo de cómo funcionan.
Sentencia if
if (expresión) sentencia1 else sentencia2
La sentencia1 se ejecuta si expresión tiene un valor verdadero (1) y si tiene un valor falso (0) se ejecuta
la sentencia2.
if (estado == 'S')
tasa = 0.20 * pago;
else
tasa = 0.14 * pago;
Sentencia1 o Sentencia2 pueden ser una única sentencia o un bloque de ellas encerrado entre dos
llaves “{“ y “}”
La sentencia if puede ser anidada es decir dentro del apartado if o el apartado else puede colocarse
otra sentencia if para evaluar otra condición.
Sentencia switch
switch (expresión)
{
case expresión1: sentencia; sentencia; ...
case expresión2: sentencia; sentencia; ...
case expresión3: sentencia; sentencia; ...
default: sentencia; sentencia; ...
}
. Se evalúa la expresión y si su valor coincide con el valor de alguna expresión indicada en los
case se ejecutan todas las acciones asociadas que le siguen. Las expresiones deben ser de tipo entero o
carácter. Si el valor de expresión no se encuentra en la lista case se ejecuta/n la/s sentencia/s
correspondiente/s a la opción default, si ésta no existe se continúa con la sentencia situada a
continuación de switch. Una vez se elija una opción se ejecutan las sentencias asociadas y se continúan
ejecutando todas las sentencia a partir de ésta (incluso las correspondientes a otras opciones) hasta que
aparezca una sentencia break.
switch (edad) {
case 10: printf(“eres un niño”); break;
case 30: printf(“eres un adulto”);break;
case 80: printf(“eres un anciano”);break; }
-9-
Programación en C
Permite en muchos casos sustituir los if anidados. La cláusula default: permite dentro de la
instrucción definir que instrucciones hay que realizar en caso de que el valor de edad no sea los
indicados en el case.
ITERATIVAS O REPETITIVAS (bucles)
- Instrucción for Esta instrucción permite repetir un nº de veces determinado una operación o instrucción. Se utiliza solo
cuando se sabe con certeza el nº de veces a realizar una instrucción o bloque de ellas.
for (expresión1; expresión2; expresión3)
Es la sentencia de control más potente y la más usada. Consta de tres expresiones: la primera es
la inicialización del bucle, la segunda indica la condición en la que se debe continuar el bucle y la
tercera es la que se encarga de incrementar los índices del bucle. Expresión1 se ejecuta una sola vez al
principio del bucle. La sentencia se ejecuta mientras la expresión2 sea verdadera. Esta expresión es
evaluada antes que la sentencia por lo que es posible que el bucle no se ejecute ni siquiera una vez. La
expresión3 se ejecuta después de la sentencia. Las expresiones 1 y 3 pueden ser compuestas, expresiones
simples separadas por comas. La instrucción for equivale directamente a lo siguiente.
int i,suma = 0;
for (i = 0; i < 100; i++)
{
suma= suma+i;
printf(“%d\n”, suma)
}
Estas líneas de código permiten calcular la suma de los 100 primeros números e ir mostrando el
resultado de cada una de las 100 primeras sumas. Al final muestra el resultado total. Hay que observar
que las instrucciones que realiza repetitivamente el for son las comprendidas entre llaves. Si estas no se
colocan solo realizaría la suma y luego mostraría el total.
Una de las aplicaciones típicas de estas estructuras es el recorrido de un vector o array para
mostrar todos los valores almacenados en un array o para introducirlos. Por ej si queremos introducir
datos en un vector de temperaturas con 100 posiciones podemos introducir el siguiente código:
For (i=0; i<=99;i++)
scanf (“%d”,temperatura[i]);
- Sentencia while
while (expresión) sentencia;
Se repite la sentencia mientras el valor de expresión sea cierto (no 0). La condición se evalúa antes
de ejecutar la sentencia.
- 10 -
Programación en C
while (i < 100)
-a-
while (i < 100)
{
-b-
suma=suma+i;
suma=suma+i;
printf(“%d”, suma);
printf(“%d\n”, suma);
}
Este código realiza las mismas operaciones que el anterior pero con la instrucción while . El
modelo –a- realiza la suma y muestra en cada paso el resultado acumulado; el modelo –b- realiza la
suma pero solo muestra el total al final, al no estar la instrucción printf dentro del ámbito del bucle
while. La diferencia radica en el hecho de evaluar una condición. Mientras que el for no comprueba
ninguna condición y lo hace para el nº de veces que se indica, en el caso del while se puede establecer
una condición que determine el nº de veces que se repite una instrucción o bloque, pudiendo ser para
cada ejecución un número de veces diferente.
-Aclaración sobre escritura de programas y condiciones lógicas
Los programas que se escriben en C son sensibles a la escritura en mayúsculas y minúsculas es
decir no es lo mismo la variable Temperatura que temperatura. Las instrucciones también sufren esta
sensibilidad por lo que las mismas se escribirán en minúscula. Las variables las puede definir el
programador pero siempre deberá utilizarlas tal y como las haya declarado.
Por otro lado hemos utilizado durante este documento un concepto denominado condición. Una
condición no es más que una expresión o afirmación de la que se puede decir si es verdadera o falsa. Por
ej:
(edad > 20) Æ edad mayor que 20
(edad >20 && <30) Æ edad mayor que 20 y menor que 30 (entre 20 y 30)
(edad !=20) Æ edad distinta de 20
(edad >= 20) Æ edad mayor o igual que 20
(i=20 || veces>30) Æ i igual a 20 o veces mayor que 30
Todas ellas son expresiones lógicas (condiciones) que suelen utilizarse en estructuras del tipo if o
while. Los símbolos que se muestran a continuación permiten unir más de una expresión lógica.
&&: conjunción lógica (y).
||: disyunción lógica (o)
!: Negación lógica
- 11 -
Descargar