Académique Documents
Professionnel Documents
Culture Documents
Bibliografa
Metodologadelaprogramacin.Dr.OsvaldoCairBattistutti
EditorialAlfaOmega
II semestre de 2015
Sentencias
RepetitivaMientras
Lgicadeprogramacin
Introduccin
Comohemosmencionadoeneltemaanteriorenocasionesvamosaencontraralgoritmoscuyasoperacionesse
debanejecutarunnmerorepetidodevecesformandounciclodeejecucindesentencias.Ademstambinse
mencionoqueunciclo,siempredebetenerunacondicindeparadaofindeciclo.
Lacondicindeparadadeunciclosepuedeindicaraliniciooalfinaldelbucle,deacuerdoaestapremisa
podemosclasificaralassentenciasrepetitivasendosgrupos:
Conlacondicindeparadaalinicio
Conlacondicindeparadaalfinal
Dentro del grupo de sentencias repetitivas con la condicin de parada al inicio tenemos a la sentencia
MIENTRAS yalasentencia PARA. Ydentrodelgrupodesentenciasconlacondicinalfinaltenemosala
sentenciaREPETIR.
Enestaetapahablaremosdelfuncionamientodelassentencias MIENTRASyREPETIR..
EstructurarepetitivaMIENTRAS
Laestructuraalgortmica MIENTRAS es quizs la estructura de repeticinms sencilla, y sinembargoes
consideradapormuchoscomolamspotente.Sufuncinconsisteenejecutarunnmerodeterminadodeveces
unasecuenciadeinstrucciones,noobstante,estenmeroderepeticionesdependedelacondicindeparadaque
contengaelpropiociclo.
PorlotantoelcicloMIENTRASseejecutarahastaquelacondicinqueseevalaresulteserfalsa.
Sintanxis
Mientras expresion_logica Hacer
secuencia_de_acciones
FinMientras
Donde:
expresion_logica:escualquierexpresinlgicacuyoresultadoseaverdaderoofalso.
LaestructurarepetitivaMIENTRASpermiteejecutarlasinstruccionesmientraslaexpresin_lgicasea
verdadera.Silaprimeravezqueseevalalaexpresinlgicaresultafalsa,elconjuntodesentencias
pertenecientesalciclonoseejecutaran.
II semestre de 2015
Lgicadeprogramacin
Representacingrfica
PseIntutilizalasiguientemaneraderepresentarelcicloMIENTRAS
Ejemplo:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Proceso cuentaNumeros
Definir contador Como Entero;
contador <- 1;
Mientras contador <= 10 Hacer
Escribir "Repeticion numero ", contador;
contador <- contador + 1;
FinMientras
FinProceso
Diagramadeflujo
Resultado
II semestre de 2015
Lgicadeprogramacin
EnlaestructurarepetitivaMIENTRASelnmerodevecesqueseejecuteelbucleestdeterminadoporla
condicin.Alejecutarlainstruccinmientras,loprimeroqueseevalaeslaexpresinlgica
Silaexpresinlgicaresultafalsa,nose tomaningunaaccinyseprosigueconlainstruccin
siguientealbucle.
Perosilaexpresinlgicaresultaverdadera,seejecutaelcuerpodelbucleydespussevuelve
aliniciodelbucleyseevalanuevamentelaexpresin.
EjemplosestructurarepetitivaMIENTRAS
Ejemplo1
Esteejemplomuestraunalgoritmoquepresentaelvalorcorrespondientealasumadedosnmerosenteros,Esta
sumaserealizarimplementadounciclopormediodelcualseleirasumandolaunidadalprimerodelos
nmerosingresadoyluegoselerestaralaunidadalsegundonmero.Deteniendoenprocesohastaqueel
segundodelosnmerostomeelvalor0.
Datosdeentrada:
Elusuarioingresaradosnmerosenteros.
Datosdesalida:
Sepresentaraenpantallaelvalorcorrespondientealasumadeambosnmeros.
Variablesautilizar
num1:almacenaraelprimervaloringresadoporporelusuario.
num2:almacenaraelsegundovaloringresadoporelusuarioyademscontrolaralasiteracionesdelciclo
Procedimiento:
Selesolicitaraalusuarioelingresodelosdosvaloresenteros
Mientraselsegundovalorseamayorque0,seejecutaraelciclo.
Dentrodelgrupodesentenciasdelciclo,selesumaralaunidadalprimervaloringresadoporelusuario,
luegoselerestaralaunidadalsegundovaloringresadoporelusuario.
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Proceso SumaLenta
Definir num1, num2 Como Entero;
Escribir sin saltar "Ingrese el valor del 1er numero ";
Leer num1;
Escribir sin saltar "Ingrese el valor del 2do numero ";
Leer num2;
Mientras num2 > 0 Hacer
num1 <- num1+1;
num2 <- num2-1;
FinMientras
Escribir "La suma es: ", num1;
FinProceso
II semestre de 2015
Lgicadeprogramacin
Diagramadeflujo
5
Resultado
Qupasasiqueremossumar4y0?
Cuandosedeseasumarunnumerocualquieraconel
cero,alevaluarselaexpresinlgicadelciclomientras
resultarafalsa,porlotantonoseejecutaranlas
sentenciasqueformanpartedelciclomientras.
Ejemplo2
EsteejemplomuestraunalgoritmoquepormediodelaestructurarepetitivaMIENTRASsolicitaalusuarioel
ingresode10valoresyluegopresentaenpantallaelvalormayoringresadoporpartedelusuario.
Datosdeentrada
Elusuariovaaintroducirlosvaloresloscualessevanalmacenandoenunavariablenum.
Datosdesalida
Alterminarlaejecucindelalgoritmosehadepresentarelvalormayordelosintroducidosporpartedel
usuario.
Variablesautilizar
contador:variablequellevaraelcontroldelas10iteraciones.
vmayor:variableenlaquesealmacenaelvalormayoringresadoporpartedelusuario
num:Seutilizaraparacapturarlosnmerosingresadosporpartedelusuario.
Procedimiento
Antesdeiniciarelciclo,selehadesolicitaralusuarioingreseelprimerodelosvalores.
Esteprimerelementoingresadoseasumecomoelvalormayor,porlotantolavariablevmayortomara
elvalordeesteprimerelementoingresado.
Pormediodeuncicloprocederemosapedirelrestantedeloselementoscomparandocadaunoconel
II semestre de 2015
Lgicadeprogramacin
valordelavariablevmayoryelelementoingresado.Sielvalordelelementoingresadoesmayorque
elvalordelavariable vmayor,sereemplazaelvalordeesteltimoporelvaloringresadoporel
usuario.
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Proceso MayorValor
Definir contador, num, vmayor
Como Entero;
Diagramadeflujo
Resultado
II semestre de 2015
Lgicadeprogramacin
Ejemplo3
EsteejemplomuestrapormediodelaestructurarepetitivaMIENTRASenpantallalatablademultiplicardeun
nmeroingresadoporpartedelusuario.
Datosdeentrada
Nmerodelquesepresentaralatablademultiplicar,estevalorseralmacenadoenlavariablenum.
Datosdesalida
Presentarenpantallalatablademultiplicardelnmeroingresadoporpartedelusuario.
Procedimiento
Solicitarelnmeroalusuario
PormediodelcicloMientrasirpresentandoenpantallaelresultadodemultiplicaralavariablecuenta
conelnumero(num)ingresadoporpartedelusuario
Variablesautilizar
cuenta:Variablequellevaraelcontroldelasiteraciones,enestecasosern12iteraciones.
num:Estavariablealmacenaelnmeroingresadoporpartedelusuario.
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Proceso TablaMultiplicar
Definir cuenta, num Como Entero;
Escribir sin saltar "Ingrese el numero ";
Leer num;
cuenta<-1;
Mientras cuenta <= 12 Hacer
Escribir num, " x ", cuenta, " = ", cuenta*num;
cuenta<-cuenta+1;
FinMientras
FinProceso
Diagramadeflujo
Resultado
II semestre de 2015
Lgicadeprogramacin
Ejemplo4
Elsiguienteejemplomuestraunalgoritmoenelcualsesolicitan10nmerosenterosypresentaenpantallael
promediodelosnmerosingresados.
Datosdeentrada:
Seriedenmerosingresadosporelusuario.
Datosdesalida:
Promediodelosnmerosingresadosporelusuario.
Variablesautilizar
contador:Estavariablellevaraelcontroldelasiteracionesdelciclo.
numero:Almacenaelnumeroingresadoporpartedelusuarioencadaiteracin.
suma:Seralavariablequealmacenalasumadetodoslosnmerosingresados.
promedio:Almacenaelpromediodetodoslosnmerosingresados.
Procedimiento:
Definirlasvariablesautilizar.
Asignarelvalor0alavariablesuma
Solicitaralusuarioingreseunaseriede10valores,estoserealizarautilizandoelcicloMientras.
DentrodelcicloMientrasseirnsumandolosvaloresingresados.Almacenandoelresultadoenla
variablesuma.
Alterminarelciclosecalcularaelpromedio.
Presentarenpantallaelpromedioobtenido.
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Proceso CalcularPromedio
Definir contador, numero, suma
Definir promedio como real;
Como Entero;
suma<-0;
contador<-1;
Mientras contador <= 10 Hacer
Escribir Sin Saltar "Ingrese el elemento ", contador;
Leer numero;
suma<-suma + numero;
contador<-contador+1;
FinMientras
promedio<-suma/10;
Escribir "El promedio es: ", promedio;
FinProceso
II semestre de 2015
Lgicadeprogramacin
Diagramadeflujo
Resultado
Ejemplo5
Calcularlasumasiguiente:100+98+96+94+...+0enesteorden
Datosdeentrada:
Nohaydatosdeentrada
Datosdesalida:
Lasumadecadaunodelosnmerospertenecientesalaserie
Variablesautilizar
num:estavariablecontrolalacantidaddeiteracionesdelciclos
sum:almacenalasumadelosnmerosdelaserie
II semestre de 2015
Lgicadeprogramacin
10
Procedimiento:
Definirlasvariablesautilizar.
Asignarelvalor100alavariablemun,asignarelvalor0alavariablesum
CrearelcicloMientras,elcualserepetirhastaqueelvalordenumseamenorque0
Sumarcadanumerodelaserie
Restar2alvaloractualdelavariablenum
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Proceso SerieNumeros
Definir num, sum como entero;
num<-100;
sum<-0;
Mientras num >= 0 Hacer
sum<-sum+num;
num<-num-2;
FinMientras
Escribir "La suma es ", sum;
FinProceso
Solucin
Resultado
II semestre de 2015
Lgicadeprogramacin
11
EstructurarepetitivaREPETIR
La estructura repetitiva REPETIR permite ejecutar al menos una vez su bloque repetitivo, a diferencia de
MIENTRAS y PARA que podan no ejecutarse. Esta estructura repetitiva se utiliza cuando conocemos de
antemanoquepor lomenos unavezseejecutar el bloque repetitivoyaquelacondicindeparada dela
estructurarepetitivaestalfinaldelbloqueaREPETIR.
Sintaxis
Repetir
secuencia_de_acciones
Hasta Que expresion_logica
LaestructurarepetitivaREPETIRpermitelaejecucindelgrupodesentenciasalmenosunavez.Puestoquela
condicindeparadaserevaluadahastaqueseejecuteelgrupodesentencias,elcicloREPETIRseejecutara
hastaquelacondicindeparadaresulteserverdadera.
Representacingrfica
PseIntutilizalasiguientemaneraderepresentarelcicloREPETIR
Ejemplo:
Deseamospresentarenpantallalosprimeros10nmerosnaturales
1. Proceso contarNumeros
2.
Definir contador Como Entero;
3.
contador <- 1;
4.
5.
Repetir
6.
Escribir "Repeticion numero ", contador;
7.
contador <- contador + 1;
8.
Hasta Que contador > 10
9. FinProceso
II semestre de 2015
Lgicadeprogramacin
12
Diagramadeflujo
Resultado
EnlasentenciarepetitivaREPETIR,lacondicindeparadasecompruebaalfinaldelbucle.Loque
permitequeelbucleseejecutealmenosunavezantesdecomprobarlacondicindeparada.Elbuclese
repite mientras la condicin sea falsa y termina cuando sea verdadera (contrario a la sentencia
mientras).
EjemplosestructurarepetitivaREPETIR
Ejemplo1
Elsiguienteejemplomuestraunalgoritmoenelcualsesolicitan10nmerosenterosypresentaenpantallael
promediodelosnmerosingresados.
Datosdeentrada:
Seriedenmerosingresadosporelusuario.
Datosdesalida:
Promediodelosnmerosingresadosporelusuario.
Variablesautilizar
contador:Estavariablellevaraelcontroldelasiteracionesdelciclo.
numero:Almacenaelnumeroingresadoporpartedelusuarioencadaiteracin.
suma:Seralavariablequealmacenalasumadetodoslosnmerosingresados.
promedio:Almacenaelpromediodetodoslosnmerosingresados.
II semestre de 2015
Lgicadeprogramacin
13
Procedimiento:
Definirlasvariablesautilizar.
Asignarelvalor0alavariablesuma
Solicitaralusuarioingreseunaseriede10valores,estoserealizarautilizandoelcicloRepetir.
DentrodelcicloRepetirseirnsumandolosvaloresingresados.Almacenandoelresultadoenla
variablesuma.
Alterminarelciclosecalcularaelpromedio.
Presentarenpantallaelpromedioobtenido.
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Proceso CalcularPromedio
Definir contador, numero, suma
Definir promedio como real;
Como Entero;
suma<-0;
contador<-1;
Repetir
Escribir Sin Saltar "Ingrese el elemento ", contador;
Leer numero;
suma<-suma + numero;
contador<-contador+1;
Hasta Que contador > 10
promedio<-suma/10;
Escribir "El promedio es: ", promedio;
FinProceso
Resultado
II semestre de 2015
Lgicadeprogramacin
14
Diagramadeflujo
Ejemplo2
Enelsiguienteejemplolepediremosalusuarioquenosindiquesideseaquesecontinuejecutandoelciclo,
dentrodelciclosepresentaraenpantallaunnmeroaleatoriogeneradoporlafuncinAZAR.
Datosdeentrada
ElusuarioingresaraSoNcomorespuestaalapreguntadeconfirmacin
Datosdesalida
Sepresentaraenpantallaelvalorgeneradodeformaaleatoria
Variablesautilizar
continuar:capturalarespuestadelusuarioalapreguntadeconfirmacin
Procedimiento
Dentrodelgrupodesentenciasdelciclosepresentaraenpantallaelvalorgeneradoporlafuncin
AZAR,Luegosepreguntaraalusuariosideseacontinuar.
II semestre de 2015
Lgicadeprogramacin
15
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
Proceso numeroAzar
Definir continuar Como Caracter;
Repetir
Escribir "Numero generado al azar: ", azar(100);
Escribir "Desea continuar S / N ";
Leer continuar;
Hasta Que continuar = "N" | continuar = "n"
FinProceso
Diagramadeflujo
Resultado
II semestre de 2015
Lgicadeprogramacin
16
Ejemplo3
Elsiguienteejemplomuestralatablademultiplicardeunnumero,dichonumeroseraingresadoporelusuario.
Datosdeentrada
Nmerodelquesepresentaralatablademultiplicar,estevalorseralmacenadoenlavariablenum.
Datosdesalida
Presentarenpantallalatablademultiplicardelnmeroingresadoporpartedelusuario.
Procedimiento
Solicitarelnmeroalusuario
PormediodelcicloMientrasirpresentandoenpantallaelresultadodemultiplicaralavariablecuenta
conelnumero(num)ingresadoporpartedelusuario
Variablesautilizar
cuenta:Variablequellevaraelcontroldelasiteraciones,enestecasosern12iteraciones.
num:Estavariablealmacenaelnmeroingresadoporpartedelusuario.
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Proceso TablaMultiplicar
Definir cuenta, num Como Entero;
Escribir sin saltar "Ingrese el numero ";
Leer num;
cuenta<-1;
Repetir
Escribir num, " x ", cuenta, " = ", cuenta*num;
cuenta<-cuenta+1;
Hasta Que cuenta > 12
FinProceso
Diagramadeflujo
Resultado
II semestre de 2015
Lgicadeprogramacin
17
Ejemplo4
Enesteejemplosemuestracomopresentarunmenenpantalla,estemenusepresentarahastaqueelusuario
seleccionesalir.
Datosdeentrada
Seingresaraunnmero(correspondientealaopcindelusuario),cuyovalorsealmacenaraenla
variableopcin.
Datosdesalida
Sepresentaraenpantallaunmensajequeindiqueelvalordelaopciningresadaporpartedelusuario.
Variablesautilizar
opcin:variabledetipoentero,almacenaraelvalorcorrespondientealnmeroingresadoporpartedel
usuario.
Procedimiento
UtilizandoelcicloREPETIR,sepresentaraunmencon4opciones.Elusuarioingresaraunnmero
quepuedeonoestarenelrangode14.
Sielvaloringresadoestafueraderango,sevuelveamostrarcadaunadelasopciones.
Elcicloserepetirhastaqueelusuarioingreseunnmeroenelrangode14
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Proceso ejemploMenu
Definir opcion Como Entero;
Repetir
Escribir "1.- Ingrese 1 para esta Opcion";
Escribir "2.- Ingrese 2 para esta Opcion";
Escribir "3.- Ingrese 3 para esta Opcion";
Escribir "4.- Ingrese 4 para esta Opcion";
Escribir "Que opcion desea: ?";
Leer opcion;
Hasta Que opcion >= 1 & opcion <= 4
Escribir "Opcion ingresada: ", opcion;
FinProceso
II semestre de 2015
Lgicadeprogramacin
18
Diagramadeflujo
Resultado
II semestre de 2015
Lgicadeprogramacin
19
Ejemplo5
Calcularlasumasiguiente:100+98+96+94+...+0enesteorden
Datosdeentrada:
Nohaydatosdeentrada
Datosdesalida:
Lasumadecadaunodelosnmerospertenecientesalaserie
Variablesautilizar
num:estavariablecontrolalacantidaddeiteracionesdelciclos
sum:almacenalasumadelosnmerosdelaserie
Procedimiento:
Definirlasvariablesautilizar.
Asignarelvalor100alavariablemun,asignarelvalor0alavariablesum
CrearelcicloRepetir,elcualserepetirhastaqueelvalordenumseamenorque0
Sumarcadanumerodelaserie
Restar2alvaloractualdelavariablenum
Solucin
Solucin
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Proceso SerieNumeros
Definir num, sum como entero;
num<-100;
sum<-0;
Repetir
sum<-sum+num;
num<-num-2;
Hasta Que num < 0
Escribir "La suma es ", sum;
FinProceso
Resultado
II semestre de 2015
Lgicadeprogramacin
20
REPETIRvsMIENTRAS
Comoyahemosmencionadoanteriormente,laestructurarepetitivaREPETIRevalalacondicindeparadaal
final,luegodehaberejecutadotodaslassentenciasqueformanpartedelciclo.Loquepermitequeelbuclese
ejecutealmenosunavezantesdecomprobarlacondicindeparada,elbucleserepitemientraslacondicinsea
falsayterminacuandoseaverdadera(contrarioalasentenciamientras).
LasestructurasrepetitivasMIENTRASyPARAevalanlacondicindeparadaaliniciodelbucle,porlotanto
paraqueelcicloseejecutelaexpresinlgicadebeserverdaderadesdeelprincipio.
Veamoselsiguienteejemploenelquesemuestrauncicloenelquesesolicitannmerosenterosalusuario,el
ciclosedetendrcuandoseingreseunvalornegativo.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Proceso leerEnteros
Definir contador, num Como Entero;
contador<-0;
Escribir "Ingrese un numero entero: ";
Leer num;
Mientras num >= 0 Hacer
contador<-contador+1;
Escribir "Ingrese un numero entero: ";
Leer num;
FinMientras
Escribir "Se ingresaro ", contador, " numeros";
FinProceso
Enesteejemplo,parapoderingresaralcicloprimeroseevalalaexpresinlgica(condicindeparada)y
despusseejecutanlassentenciasqueformanpartedelciclo.Qupasasiingresamosunnmeronegativo
desdeelprincipio?.Alingresarunnmeronegativodesdeelprincipiolassentenciasqueformanpartedelciclo
noseejecutaran.Comosemuestraenlasiguientecaptura.
VeamosquepasasiutilizamoselcicloREPETIR
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Proceso leerEnteros
Definir contador, num Como Entero;
contador<-0;
Repetir
Escribir "Ingrese un numero entero: ";
Leer num;
contador<-contador+1;
Hasta Que num < 0
Escribir "Se ingresaron ", contador, " numeros positivos";
FinProceso
AlutilizarelcicloREPETIR,seejecutanelgrupodesentenciaspertenecientesalcicloyposteriormentese
evalalacondicindeparada.
II semestre de 2015
Lgicadeprogramacin
21
Ejerciciospropuestos
Ejercicio1
RealiceunalgoritmoquepresenteenpantallalaunaseriedenmerosllamadalaconjeturadeULAMenhonor
delmatemticoS.Ulam.Porejemplo:26,13,40,20,10,5,16,84,2,1.
ParapresentarlosnmerosquecorrespondenalaconjeturadeULAM,seguimoslossiguientespasos:
Comienceconcualquierenteropositivo.
Siespar,sedivideentre2;siesimpar,semultiplicapor3yselesuma1.
Obtengaenterossucesivamenterepitiendoelproceso.
Alfinal,obtendrelnmero1,independientementedelenteroinicial.
Debersolicitaralusuariounvalor,elqueserelprimerodelalista.
Ejercicio2
Realizarunprogramaquenospidaunnmeron,ynosdigacuantosnmerosimpareshayentre1yn.Paraeste
realiceunaversinutilizandomientrasyotraversinutilizandopara.
Ejercicio3
Hacerunalgoritmoquesimuleelcomportamientodeuncronmetrodigitaldesde0segundoshastallegara5
minutosencuentaprogresiva.
Ejercicio4
Hacerunalgoritmoquesimuleelcomportamientodeuncronmetrodigitalencuentaregresivadesde5minutos
hasta0segundos.
Ejercicio5
Obtengaelseno,cosenoytangentedelosnmerosubicadosenunrangoexpresadosenngulos,dichosngulos
(nguloinicialyngulofinal)serningresadosporelusuario.Considereunaumentode10.
II semestre de 2015