Operadores de comparación Los operadores de comparación en C son: Igual (==) Distinto (!=) Mayor (>) y Mayor o igual (>=) Menor (<) y Menor o igual (<=) El resultado de un operador de comparación es un valor entero (0 es falso) y (distinto de 0 verdadero). a=3>7 /* a vale 0 (falso) */ Resultado lógico: falso cero cierto distinto de cero
Operadores lógicos Sobre expresiones booleanas (enteros) se definen los siguientes operadores lógicos: And lógico (&&) Or lógico ( ) Negación lógica (!)
Ejecución repetida de un grupo de sentencias: De acuerdo a ciertas condiciones, o Un número prefijado de veces Diversas estructuras: for while do-while Introducción
Inicialización Incremento Cond Estructura FOR for ( inicializ ; cond ; increm) Sentencia a ejecutar; ACCIÓN ACCION for ( inicializ ; cond ; increm) Sentencias a ejecutar; Es una estructura muy flexible en donde se puede omitir cualquiera de sus secciones.
Ejemplo: inicio S = 0 C=0 C=C+1 A S = S + A C< 10 Estructura FOR (I) S FIN # include <stdio.h> # include <conio.h> void main ( ) int A, S=0, C; for ( c=0; c<10;c++) printf ( ingrese un número ); scand ( %d, & A); S = S + A; printf ( \n La suma es %d, S); getch(); return;
Estructura FOR (II) Las tres partes son opcionales. Ejemplo: for ( ; 1 ; ) /* Grupo de sentencias */ El operador coma (, ). Ejemplo: for ( i= 0, j= 10 ; i< 10, j> 0 ; i++, j-= 2 ) /* Grupo de sentencias */ for suele usarse cuando el número de iteraciones es conocido a priori y puede controlarse con una variable contador
Estructura WHILE COND While ( condición) Sentencia a ejecutar; ACCIÓN ACCIÓN While ( condición) Sentencias a ejecutar;
Ejemplo: Estructura WHILE (I) inicio S = 0,C =0 C< 10 A S = S + A C = C + 1 S FIN # include <stdio.h> # include <conio.h> void main ( ) int A, S=0, C=0; while (c<10) printf ( ingrese un número ); scand ( %d, & A); S = S + A; C = C + 1; printf ( \n La suma es %d, S); getch(); return;
Otro ejemplo: inicio S = 0 A A!= 0 S = S + A A Estructura WHILE (II) S FIN # include <stdio.h> # include <conio.h> void main ( ) int A, S=0; printf ( ingrese un número ); scand ( %d, & A); while (A!= 0) S = S + A; printf ( ingrese un número ); scand ( %d, & A); printf ( \n La suma es %d, S); getch(); return;
Estructura WHILE (III) La condición se evalúa al principio del bucle El cuerpo se ejecuta entre 0 y N veces Cuidado con crear bucles infinitos el cuerpo modifica la condición En C toda sentencia es una expresión la condición puede ser cualquier cosa. Ejemplos: while (x..)... while (x = x+ 1); El cuerpo del bucle puede ser nulo
Estructura DO - WHILE Acción Acción Cond do Sentencia a ejecutar; while (condición); do Sentencias a ejecutar; while (condición);
Ejemplo: Estructura DO WHILE (I) inicio S = 0,C =0 A S = S + A C = C + 1 C< 10 S FIN # include <stdio.h> # include <conio.h> void main ( ) int A, S=0, C=0; do printf ( ingrese un número ); scand ( %d, & A); S = S + A; C = C + 1; while (c<10); printf ( \n La suma es %d, S); getch(); return;
Estructura DO WHILE (II) Similar a while Primero se ejecuta el cuerpo del bucle y luego se verifica la condición El cuerpo se ejecuta entre 1 y N veces Tanto while como do.while suelen usarse cuando el número de iteraciones se desconoce a priori
Equivalencia For -While for ( inicialización ; condición ; increm/decrem) Grupo de sentencias a ejecutar; Inicialización; while (condición) Grupo de sentencias a ejecutar; Incremento/decremento;
break SENTENCIAS... Interrumpe la ejecución de un bucle donde se ha incluido. Finaliza forzadamente la ejecución del bucle. continue Hace que el programa comience el siguiente ciclo del bucle donde se halla, es decir, evita la ejecución del resto del cuerpo del bucle en una iteración determinada. No muy elegante, pero puede simplificar el código.
SENTENCIAS... Ejemplo de break y continue int main() int i; for(i=0;i<100;i++) if(i%2==0) continue;/*comienza la iteración*/ if(i%17==0) break; /*Sale del bucle*/ printf( %d,i);
Errores de programación Olvidar una o las dos llaves que delimitan una instrucción compuesta. Colocar un punto y coma después de la condición de una instrucción if provocar un error de lógica. No proporcionar una acción dentro del cuerpo de una instrucción while que permita que ésta se haga falsa, ocasionará que dicha estructura no termine nunca. Si no se inicializa un contador o una variable sumadora, probablemente los resultados de su programa serán incorrectos. Intentar una división entre cero ocasiona un error fatal. Ej, Calculo de promedios. Controle los ciclos con valores enteros. Utilizar el valor final en la condición de una instrucción while o for, ayudará a evitar errores por desplazamiento en uno. Por ejemplo, para un ciclo de 10 utilizar la condición <10, si empieza de 0, o <=10 si se inicializa el contador en 1. Aunque el valor de la variable de control del ciclo puede modificarse en el cuerpo de un ciclo for, esto puede provocar errores sutiles. Es mejor no cambiarlo. No utilizar sangría en las instrucciones correspondientes al cuerpo de toda instrucción de control, puede ocasionar una mala interpretación y seguimiento del programa.