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 -