-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
1/15
Hasta ahora hemos empleado estructuras SECUENCIALES y CONDICIONALES. Existeotro tipo de estructuras tan importantes como las anteriores que son las estructurasE!E"I"I#AS.Una estructura repetiti$a permite e%ecutar una instrucci&n o un con%unto de instrucciones$arias $eces.Una e%ecuci&n repetiti$a de sentencias se caracteri'a por(
) La o las sentencias que se repiten.) El test o prue*a de condici&n antes de cada repetici&n+ que moti$ar, que se repitan o nolas sentencias.Estructura repetitiva while.epresentaci&n -r,ica de la estructura /hile(
No de*emos conundir la representaci&n -r,ica de la estructura repetiti$a /hile 01ientras2con la estructura condicional i 0Si23uncionamiento( En primer lu-ar se $eriica la condici&n+ si la misma resulta $erdadera see%ecutan las operaciones que indicamos por la rama del #erdadero.
A la rama del $erdadero la -raicamos en la parte inerior de la condici&n. Una l4nea al inaldel *loque de repetici&n la conecta con la parte superior de la estructura repetiti$a.En caso que la condici&n sea 3alsa contin5a por la rama del 3also y sale de la estructurarepetiti$a para continuar con la e%ecuci&n del al-oritmo.El *loque se repite 1IEN"AS la condici&n sea #erdadera.Importante: Si la condici&n siempre retorna $erdadero estamos en presencia de un ciclorepetiti$o ininito. Dicha situaci&n es un error de pro-ramaci&n+ nunca inali'ar, elpro-rama.
Problema 1:
eali'ar un pro-rama que imprima en pantalla los n5meros del 6 al 677.Sin conocer las estructuras repetiti$as podemos resol$er el pro*lema empleando unaestructura secuencial. Iniciali'amos una $aria*le con el $alor 6+ lue-o imprimimos la$aria*le+ incrementamos nue$amente la $aria*le y as4 sucesi$amente.
Diagrama de flujo:
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
2/15
Si continuamos con el dia-rama no nos alcan'ar4an las pr&ximas 8 p,-inas parainali'arlo. Emplear una estructura secuencial para resol$er este pro*lema produce undia-rama de lu%o y un pro-rama en 9a$a muy lar-o.
Ahora $eamos la soluci&n empleando una estructura repetiti$a /hile(
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
3/15
Es muy importante anali'ar este dia-rama(La primera operaci&n iniciali'a la $aria*le x en 6+ se-uidamente comien'a la estructurarepetiti$a /hile y disponemos la si-uiente condici&n 0 x :; 6772+ se lee 1IEN"AS la$aria*le x sea menor o i-ual a 677.
Al e%ecutarse la condici&n retorna #EDADEO porque el contenido de x 062 es menor oi-ual a 677. Al ser la condici&n $erdadera se e%ecuta el *loque de instrucciones quecontiene la estructura /hile. El *loque de instrucciones contiene una salida y unaoperaci&n.Se imprime el contenido de x+ y se-uidamente se incrementa la $aria*le x en uno.La operaci&n x;x < 6 se lee como =en la $aria*le x se -uarda el contenido de x m,s 6=. Esdecir+ si x contiene 6 lue-o de e%ecutarse esta operaci&n se almacenar, en x un >.
Al inali'ar el *loque de instrucciones que contiene la estructura repetiti$a se $eriicanue$amente la condici&n de la estructura repetiti$a y se repite el proceso explicadoanteriormente.1ientras la condici&n retorne $erdadero se e%ecuta el *loque de instrucciones? al retornar also la $eriicaci&n de la condici&n se sale de la estructura repetiti$a y continua elal-oritmo+ en este caso inali'a el pro-rama.Lo m,s di4cil es la deinici&n de la condici&n de la estructura /hile y qu@ *loque deinstrucciones se $an a repetir. O*ser$ar que si+ por e%emplo+ disponemos la condici&n x;677 0 si x es mayor o i-ual a 6772 no pro$oca nin-5n error sint,ctico pero estamos enpresencia de un error l&-ico porque al e$aluarse por primera $e' la condici&n retorna alsoy no se e%ecuta el *loque de instrucciones que quer4amos repetir 677 $eces.
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
4/15
No existe una ECE"A para deinir una condici&n de una estructura repetiti$a+ sino que selo-ra con una pr,ctica continua solucionando pro*lemas.Una $e' planteado el dia-rama de*emos $eriicar si el mismo es una soluci&n $,lida alpro*lema 0en este caso se de*e imprimir los n5meros del 6 al 677 en pantalla2+ para ellopodemos hacer un se-uimiento del lu%o del dia-rama y los $alores que toman las$aria*les a lo lar-o de la e%ecuci&n(
x1234..
100 101 Cuando x vale 101 la condición de la estructura repetitiva retornafalso,
en este caso naliza el diagrama.Importante: !odemos o*ser$ar que el *loque repetiti$o puede no e%ecutarse nin-una $e'
si la condici&n retorna also la primera $e'.La $aria*le x de*e estar iniciali'ada con al-5n $alor antes que se e%ecute la operaci&n x;x< 6 en caso de no estar iniciali'ada aparece un error de compilaci&n.
Programa:
public class EstructuraRepetitivaWhile1 {
public static void main(String[] ar) {
int x;
x=1;
while (x
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
5/15
2 - 'e(emos inicializar x con el valor "0.3 - nicializar x con el valor -"0 ar la condición x+0.4 - nicializar a x con el valor 2 dentro del (lo/ue repetitivo incrementar a xen 2
# x x 2 &.
Problema 2:
Escri*ir un pro-rama que solicite la car-a de un $alor positi$o y nos muestre desde 6hasta el $alor in-resado de uno en uno.E%emplo( Si in-resamos 7 se de*e mostrar en pantalla los n5meros del 6 al 7.Es de 3UNDA1EN"AL importancia anali'ar los dia-ramas de lu%o y la posterior codiicaci&n en 9a$a de los si-uientes pro*lemas+ en $arios pro*lemas se presentan otrassituaciones no $istas en el e%ercicio anterior.
Diagrama de flujo:
!odemos o*ser$ar que se in-resa por teclado la $aria*le n. El operador puede car-ar cualquier $alor.Si el operador car-a 67 el *loque repetiti$o se e%ecutar, 67 $eces+ ya que la condici&nes 1ientras x:;n + es decir mientras x sea menor o i-ual a 67? pues x comien'a enuno y se incrementa en uno cada $e' que se e%ecuta el *loque repetiti$o.
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
6/15
A la prue*a del dia-rama la podemos reali'ar d,ndole $alores a las $aria*les? por e%emplo+ si in-resamos 8 el se-uimiento es el si-uiente(n x" 1 #e imprime el contenido de x& 2 3
4 " $ #ale del )*ile por/ue $ no es menor o igual a "&
Programa:
import java.util.Scanner;
public class EstructuraRepetitivaWhile2 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int n,x; System.out.print("Ingrese el valor final:");
n=teclado.nextInt();
x=1;
while (x
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
7/15
En este pro*lema+ a seme%an'a de los anteriores+ lle$amos un CON"ADO llamado x quenos sir$e para contar las $ueltas que de*e repetir el /hile."am*i@n aparece el concepto de ACU1ULADO 0un acumulador es un tipo especial de
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
8/15
$aria*le que se incrementa o decrementa con $alores $aria*les durante la e%ecuci&n delpro-rama2Hemos dado el nom*re de suma a nuestro acumulador. Cada ciclo que se repita laestructura repetiti$a+ la $aria*le suma se incrementa con el contenido in-resado en la$aria*le $alor.La prue*a del dia-rama se reali'a d,ndole $alores a las $aria*les(
valor suma x promedio 0 0#ntes de entrar a la estructura repetitiva estos son los valores&. " " 11$ 21 2 2% 310 3% 4 2 40 "20 $0 $ " $" " 0 %10 %0 5
2 %2 10 % 50 11
5
Este es un se-uimiento del dia-rama planteado. Los n5meros que toma la $aria*le $alor depender, de qu@ ciras car-ue el operador durante la e%ecuci&n del pro-rama.El promedio se calcula al salir de la estructura repetiti$a 0es decir primero sumamos los 67$alores in-resados y lue-o los di$idimos por 672Hay que tener en cuenta que cuando en la $aria*le $alor se car-a el primer $alor 0en estee%emplo 82 al car-arse el se-undo $alor 062 el $alor anterior 8 se pierde+ por ello lanecesidad de ir almacenando en la $aria*le suma los $alores in-resados.
Programa:
import java.util.Scanner;
public class EstructuraRepetitivaWhile3 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int x,suma,valor,promedio;
x=1;
suma=0;
while (x
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
9/15
System.out.print("El promedio es:");
System.out.print(promedio);
}
}
Problema :
Una planta que a*rica periles de hierro posee un lote de n pie'as.Coneccionar un pro-rama que pida in-resar por teclado la cantidad de pie'as a procesar y lue-o in-rese la lon-itud de cada peril? sa*iendo que la pie'a cuya lon-itud est@comprendida en el ran-o de 6+>7 y 6+7 son aptas. Imprimir por pantalla la cantidad depie'as aptas que hay en el lote.
Diagrama de flujo:
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
10/15
!odemos o*ser$ar que dentro de una estructura repetiti$a puede ha*er estructurascondicionales 0inclusi$e puede ha*er otras estructuras repetiti$as que $eremos m,sadelante2En este pro*lema hay que car-ar inicialmente la cantidad de pie'as a in-resar 0 n 2+se-uidamente se car-an n $alores de lar-os de pie'as.Cada $e' que in-resamos un lar-o de pie'a 0lar-o2 $eriicamos si es una medida correcta0de*e estar entre 6.>7 y 6.7 el lar-o para que sea correcta2+ en caso de ser correcta laCON"A1OS 0incrementamos la $aria*le cantidad en 62
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
11/15
Al contador cantidad lo iniciali'amos en cero porque inicialmente no se ha car-ado nin-5nlar-o de medida.Cuando salimos de la estructura repetiti$a porque se han car-ado n lar-os de pie'asmostramos por pantalla el contador cantidad 0que representa la cantidad de pie'as aptas2En este pro*lema tenemos dos CON"ADOES(x #Cuenta la cantidad de piezas cargadas *asta el momento&
cantidad #Cuenta los perles de *ierro aptos&
Programa:
import java.util.Scanner;
public class EstructuraRepetitivaWhile4 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int x,cantidad,n;
float largo;
x=1; cantidad=0;
System.out.print("Cuantas piezar procesará:");
n=teclado.nextInt();
while (x=1.20 && largo
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
12/15
while(i
/0I12%.33/%%;
! los resultados de la compilacin:
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
13/15
UNIVERSIDAD NACIONAL DEL ALTIPLANO - PUNO Ingeniería de SistemasCurso: Fundamentos de Programai!n" #amani #o$a% RO&ERT'
")
Ingresado el número de t#rminos de la serie, mostrar la suma de la serie completa.6+ >+ >+ F+ + + F+ G+ 8+ 67++.
Cdigo:#include #include using namespacestd;intmain(intargc,char*argv[]){inti,4,5,n,suma;coutn;i!$; 4!; 5!$; suma!;cout
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
14/15
(i6!!){ cout
-
8/15/2019 Hasta Ahora Hemos Empleado Estructuras SECUENCIALES y CONDICIONALES
15/15
UNIVERSIDAD NACIONAL DEL ALTIPLANO - PUNO Ingeniería de SistemasCurso: Fundame
ntos de Programai!n" #amani #o$a% RO&ERT