Vous êtes sur la page 1sur 21

Lgicadeprogramacin

Facultad de Ciencias y Tecnologa


Departamento de Computacin
Lgica de programacin
Elaborado por:
Lic. Luis Ernesto Daz Beteta
La caracterstica fundamental de la programacin estructurada consiste en
que todas las instrucciones tienen un nico punto de entrada y un nico punto
de salida. Esto permite descomponer fcilmente un problema en
subproblemas, reduciendo la complejidad y facilitando la programacin

Bibliografa
Metodologadelaprogramacin.Dr.OsvaldoCairBattistutti
EditorialAlfaOmega

II semestre de 2015

Sentencias
RepetitivaMientras

Universidad Nacional Autnoma de Nicaragua - Len

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

Como se puede observar el ciclo


MIENTRAS se ejecuta en diez
ocasiones, estas repeticiones estn
dadas por el valor de la variable
contador, laqueenuniniciovale
1.Lavariablecontadordeberser
incrementada dentro del grupo de
instruccionesdelbucle,sinoelciclo
nuncasedetendr.

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;

Escribir sin saltar "Ingrese el elemento 1 ";


Leer vmayor;
contador<-2;
Mientras contador <= 10 Hacer
Escribir sin saltar "Ingrese el elemento ", contador ;
Leer num;
Si num > vmayor Entonces
vmayor <- num;
FinSi
contador <- contador + 1;
FinMientras
Escribir "El valor mayor introducido es: ", vmayor;
FinProceso

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

Vous aimerez peut-être aussi