Estructuras de selección

Anuncio
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
Detalles a tener en cuenta en el uso del for
- Pueden faltar alguna de las expresiones que componen el for, pero
deben permanecer los signos de punto y coma.
:
:
i=1;
suma = 0;
for (;i<=10;i++)
suma=suma+i;
:
-
La condición es una expresión que puede ser de cualquier tipo según
el/los operador/es usado/s.
( a >= 5)
(azar >= LIM1) && (azar <= LIM2)
j <= 4 * x * y
// de tipo relacional
// de tipo lógica
// de tipo aritmética
- Cuando falta la condición, se asume el valor verdadero siempre, en
cuyo caso se transforma en una iteración infinita.
- El contador de iteraciones y el límite de un lazo for puede ser
modificado dentro del ciclo. Práctica poco recomendable.
- El incremento puede ser negativo.
#include <stdio.h>
void main()
{ int i,n;
printf("Ingrese n \n"); scanf("%d",&n);
for (i = n; i >0 ;i--) printf("%3d\n",i) ; }
Agrm. María Eugenia Marquetti de Vallvé
15
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
- Un proceso iterativo puede ser interrumpido por una proposición
break o por la modificación de la/s condición/es.
- El enunciado o sentencia vacía.
Se usará en casos muy particulares. Ejemplo: cuenta la cantidad de
caracteres en una línea de texto terminada en un punto.
int cont, n;
:
for (n=o; getchar() != ‘.’ ; n++) ;
// enunciado vacío
El operador coma
Es un operador binario para expresiones. De uso frecuente en la
proposición for. Es una pareja de expresiones.
Forma de uso:
expresion1, expresión2
Se evalúa primero expresión 1 y luego expresión2.
Permite hacer asignaciones múltiples de valores iniciales y
procesamiento múltiple de índices.
Ejemplo:
que suma los primeros n números enteros pares e impares
#include <stdio.h>
void main()
{ int cont,j,k,n; int suma_par=0, suma_impar=0 ;
printf("Ingrese n \n"),
scanf("%d",&n);
for (cont=0, j=2,k=1; cont <n; cont++, j=j+2, k=k+2)
{
suma_par=suma_par+j;
suma_impar=suma_impar+k;
}
printf("%7d %7d\n",suma_par,suma_impar);
}
for anidados
Agrm. María Eugenia Marquetti de Vallvé
16
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
Los procesos iterativos se pueden anidar. Se hace cuando un programa
necesita repetir un ciclo más de una vez.
Ejemplo: programa que escribe una tabla de valores de verdad
#include <stdio.h>
// tabladev.cpp
#define EXPRESION a && b
#define V 1
#define F 0
void main()
{ int a, b;
for (a=F; a<=V;a++)
{
for (b=F; b<=V;b++)
if (EXPRESION )
printf("%d %d Verdadero",a,b);
else
printf("%d %d Falso ",a,b);
printf("\n");
}
}
Otras estructuras de control
Iteración condicionalWhile A nivel diseño se relaciona con la
estructura algorítmica fundamental:
MIENTRAS (la condición sea verdadera)
Acción;
FIN_MIENTRAS;
MIENTRAS la condición sea verdadera, la Acción se realizará.
Sintaxis y semántica
while (condición)
sentencia;
Donde:
while: palabra reservada del lenguaje.
sentencia: proposición simple o compuesta.
Agrm. María Eugenia Marquetti de Vallvé
17
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
condición: expresión condicional.
La sentencia se ejecutará MIENTRAS que la condición sea verdadera.
Cuando la expresión condicional asume el valor falso, termina el ciclo.
El ciclo se repite una cantidad NO predefinida de veces y puede no
ejecutarse nunca, depende de la condición.
Ejemplo:
#include <stdio.h>
/* MIENTRAS la variable i no supere a 100, escribe
y suma */
void main()
{ int i=2, max = 100;
while( i< max)
{ printf("%d\n",i);
i=i+2;
}
}
do while
A nivel diseño se relaciona con la estructura algorítmica fundamental:
REPETIR
Acción;
HASTA QUE (la condición sea falsa)
La Acción se REPETIRA HASTA QUE la condición sea falsa.
Sintaxis y semántica
do
sentencia;
while (condición);
Agrm. María Eugenia Marquetti de Vallvé
18
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
Donde:
do , while: palabras reservadas del lenguaje.
sentencia: proposición simple o compuesta.
condición: expresión condicional.
La sentencia se ejecutará siempre que la expresión sea verdadera,
cuando la expresión asume el valor falso, termina la iteración.
El ciclo se repite una cantidad NO predefinida de veces y se lleva a
cabo por lo menos una vez, depende de la condición.
Ejemplo:
#include <stdio.h>
#include <values.h>
/* se repite la suma
representable */
hasta alcanzar el valor del mayor entero
void main()
{
int i=1;
do
{
i++;
}
while (i < MAXINT);
printf(" El mayor entero representable es:
constante MAXINT = %5d\n",i,MAXINT);
}
%5d y la
while versus do while
while
controla
ejecuta
Agrm. María Eugenia Marquetti de Vallvé
controla
ejecuta
:
19
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
do while
ejecuta
controla
ejecuta
controla
:
- La iteración do while es una variante del while.
- Ambos ciclos se repiten siempre que la expresión sea verdadera.
Sentencias continue y goto
Agrm. María Eugenia Marquetti de Vallvé
16
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
La proposición continue provoca que inicie la siguiente iteración del
ciclo. Es de poco uso.
La proposición goto es una bifurcación incondicional a una proposición
etiquetada arbitrariamente dentro de la función.
NO SE RECOMIENDA SU USO, PORQUE SUELE ROMPER LA
ESTRUCTURACION DE LOS ALGORITMOS
Al igual que la proposición break,
es una
herramienta de la
programación no estructurada.
La proposición break permite una salida anticipada de todos los
procesos iterativos.
Ambas permiten alternativas de “escape” de ciclos.
Agrm. María Eugenia Marquetti de Vallvé
16
Descargar