Anda di halaman 1dari 33

ALGORITMICA

ProgramacinEstructurada:BUCLES
ProgramacinEstructurada:BUCLES
I
I
FundamentosIV:EstructurasRepetitivasoIteraciones
(Buclesporcondicin,Buclesporcontador)

Expositor:JorgeMedianeroA.
Autor:JosCarlos,GarcaLaRiva

Bucles:EstructurasRepetitivas
Bucles:
EstructurasRepetitivas
Semantica.
Semantica.
Siunas
Siunaseccin
eccindecdigoserepiteuna
eccin
decdigoserepiteuna
yotravezquetomaelnombredeBucleoloop
yotravezquetomaelnombredeBucleo
loop.
.
Cuandoterminalaejecucindelaultimasentencia
delaseccindecdigoarepetir,elflujodecontrol
vuelvealaprimerasentenciaycomienzaotra
repeticin.
Iteracin. Cadarepeticinseconocecomo
Iteracin.
iteracinopasadaatravsdelbucle
Condicindecontinuidad.
Condicindecontinuidad.
EsunaExpresinlgica
EsunaExpresinlgica
quecontrolalasiteraciones.
quecontrolalasiteraciones.

Estructurasrepetitivastpicas
Estasestructurasseclasificanen:
1.Bucleporcondicin
MIENTRAS/FINMIENTRAS
MIENTRAS/FIN
MIENTRAS
REPETIR/HASTA_QUE

2.Bucleporcontador
2.Bucleporcontador
DESDE/FIN
DESDE/FIN
DESDE
DESDE

1.a.
1.a.
Estructura
Estructura
MIENTRAS/FIN
MIENTRAS/FIN
MIENTRAS
MIENTRAS
Estaestructurapermiteprocesarunaseccindecdigo,si
ysolosilaevaluacindelacondicindecontinuidad
(Expresion_logica
(
Expresion_logica),dacomoresultadounvalorlgico
),dacomoresultadounvalorlgico
verdadero(VERDAD).
Condicindecontinuidad
Condicindecontinuidad

Sintaxis:
MIENTRAS(
MIENTRAS
(Expresion
Expresion<es>)
Expresion
<es>)HACER
HACER
:
VERDAD
:
FIN
FIN
MIENTRAS
MIENTRAS
Instruccionesy/o

Sentenciasaiterar

ProgramacinEstructurada:Iteraciones

Buclesporcondicin
1.EstructurasRepetitivas:
1.a.)Mientras
1.b.)Repetir
1.b.)Repetir

Ejemplo1:Visualizarlos3primeros
nmerosnaturales.
AlgoritmoEjemplo1
AlgoritmoEjemplo1
var
entero:
n
INICIO
n1
//inicializacin
mientras(n<=3)
mientras
(n<=3)hacer
(n<=3)
hacer
escribir(n)
escribir
(n)
nn+1 //incremento
//incremento
fin_mientras
FIN

Ejemplo2:Calcularyvisualizarlasuma
delos3primerosnmerosnaturales.
AlgoritmoEjemplo2
AlgoritmoEjemplo2
var
entero:
n,suma
INICIO
n1:suma0
mientras(n<=3)
mientras
(n<=3)hacer
(n<=3)
hacer
sumasuma+n
//Acumulador
nn+1
//Contador
fin_mientras
escribir(Lasumaes:,suma)
escribir
(Lasumaes:,suma)
(Lasumaes:,suma)
FIN

Ejemplo3:Calcularyvisualizarlasumade
todoslosnmerosenterosde2cifras.
AlgoritmoEjemplo3
AlgoritmoEjemplo3
var
entero:
n,suma
//declaraciones
INICIO
n10:suma0
mientras(n<=99)
mientras
(n<=99)hacer
(n<=99)
hacer
sumasuma+n
nn+1
fin_mientras
escribir(Lasumaes:,suma)
escribir
(Lasumaes:,suma)
(Lasumaes:,suma)
FIN

Ejemplo4:Calcularyvisualizarlasumade
lostodoslosnmerosimparesde3cifras.
AlgoritmoEjemplo4
AlgoritmoEjemplo4
var
entero:
n,suma
INICIO
n101:suma0
mientras(n<=999)
mientras
(n<=999)hacer
(n<=999)
hacer
sumasuma+n
nn+2
//siguienteimpar
fin_mientras
escribir(Lasumaes:,suma)
escribir
(Lasumaes:,suma)
(Lasumaes:,suma)
FIN

Ejemplo5:Calcularyvisualizarlos
divisoresdeunnmeroentero.
AlgoritmoEjemplo5
AlgoritmoEjemplo5
var
entero:
n,d,resto
INICIO
leer(n)
leer
(n)
d1
mientras(d<=n)
mientras
(d<=n)hacer
(d<=n)
hacer
restonMOD
reston
MODd
d
si(resto=0)
si
(resto=0)entonces
(resto=0)
entonces
escribir(d)
escribir
(d)
fin_si
dd+1
fin_mientras
FIN

Ejemplo6:Calcularlasumayvisualizarelvalorde
lasiguienteserie:S2+4+6+8++98
AlgoritmoEjemplo6
AlgoritmoEjemplo6
var
entero:
n,suma
INICIO
n2
mientras(n<=98)
mientras
(n<=98)hacer
hacer
escribir(n)
escribir
(n)
//visualizavaloritem
//visualizavalor
item
sumasuma+n
//calculasuma
nn+2 //siguiente
//siguiente item
itemdelaserie
delaserie
fin_mientras
escribir(Lasumaes:,suma)
escribir
(Lasumaes:,suma)
(Lasumaes:,suma)
FIN

Ejemplo7:Calcularyvisualizarlasumadeloselementos
delasiguienteserie:S1+4+9+16+25++100

AlgoritmoEjemplo7
Algoritmo
Ejemplo7

var
entero: n,suma
INICIO
n1
mientras(n<=10)
mientras
(n<=10)hacer
(n<=10)
hacer
sumasuma+(n2)
nn+1

fin_mientras
escribir(Lasumaes:,suma)
escribir
(Lasumaes:,suma)
(Lasumaes:,suma)
FIN

Ejemplo8:Calcularyvisualizarlasumadelosnmerosde
2cifrasqueestncompuestosporcifrasdiferentes.
AlgoritmoEjemplo8
Algoritmo
Ejemplo8

var
entero:
n,suma,a,b
INICIO
n10:suma0
mientras(n
mientras
(n<=
<=99)
99)hacer
99)
hacer
anDIV
an
DIV10
//primeracifra
bnMOD
bn
MOD10
MOD
10
//segundacifra
si(a
si
(a<>
<>b)
b)entonces
b)
entonces
sumasuma+n
fin_si
nn+1

fin_mientras
escribir(Lasumaes:,suma)
escribir
(Lasumaes:,suma)
(Lasumaes:,suma)
FIN

Ejemplo9:OtraSolucindelproblema8.
AlgoritmoOtra_Solucin_8
AlgoritmoOtra_Solucin_8
var
entero:
n,suma
INICIO
n10:suma0
mientras(n
mientras
(n<=
<=99)
99)hacer
hacer
si(n
si
(nDIV
DIV10
10<>
<>n
nMOD
n
MOD10)
10)entonces
entonces
sumasuma+n
fin_si
nn+1
fin_mientras
escribir(Lasumaes:,suma)
escribir
(Lasumaes:,suma)
(Lasumaes:,suma)
FIN

Ejerciciospropuestos
Ejemplo10:Generaryvisualizarlasiguiente
serie:S1+2+3/2+4/3+5/4++10/9

Ejemplo11:Generaryvisualizarlasiguiente
serie:S0,1,1,2,3,5,8,13,,<100
serie:S0,1,1,2,3,5,8,13,,<100
(SeriedeFibonacci
(Seriede
Fibonacci)
)

AlgoritmoSolucion10
AlgoritmoSolucion10
var
entero:
n
real:
suma
INICIO
n2:suma0
mientras(n<=10)
mientras
(n<=10)hacer
(n<=10)
hacer
sumasuma+(n/(n
sumasuma+(n/(n
1))
1))
nn+1
fin_mientras
sumasuma+1
escribir(Lasumaes:,suma)
escribir
(Lasumaes:,suma)
(Lasumaes:,suma)
FIN

AlgoritmoSolucion11
AlgoritmoSolucion11
var
entero: a,b
INICIO
a0:b1
mientras(a<100)
mientras
(a<100)hacer
(a<100)
hacer
escribir(a)
escribir
(a)
aa+b
ba
ba
b

b
fin_mientras
FIN

PROBLEMAS
DE
DESCOMPOSICION
NUMERICA
NUMERICA

Problema1:Ingreseunnmeroenteroyluego
visualiceelnmerodecifrasquelocomponen.
AlgoritmoProblema1
AlgoritmoProblema1
var
entero: n,cifras
INICIO
leer(n)
leer
(n)
cifras0
mientras(n<>0)
mientras
(n<>0)hacer
(n<>0)
hacer
cifrascifras+1
nnDIV
nn
DIV10
DIV
10 //retirarcifras
fin_mientras
escribir(NumeroCifras:,cifras)
escribir
(NumeroCifras:,cifras)
(NumeroCifras:,cifras)
FIN

Problema2:Ingreseunnmeroenteroy
calculelasumadelascifrasdelnmero.
AlgoritmoProblema2
AlgoritmoProblema2
var
entero:
n,cifra,suma
INICIO
leer(n)
leer
(n)
suma0
mientras(n<>0)
mientras
(n<>0)hacer
(n<>0)
hacer
cifranMOD
cifran
MOD10
MOD
10 //obtenercifra
sumasuma+cifra
nnDIV
nn
DIV10
//retirarcifra
fin_mientras
escribir(Lasumaes:,suma)
escribir
(Lasumaes:,suma)
(Lasumaes:,suma)
FIN

Problema3:Ingreseunnmeroenteroyluegocalcule
cuantascifraspareseimparesestncontenidasenel
nmeroingresado.
AlgoritmoProblema3
AlgoritmoProblema3
var
entero: n,
n,cPares
cPares,
,cImpares
cImpares,cifra
,cifra
INICIO
leer(n)
leer
(n)
cPares 0:
0:cImpares
cImpares0
cImpares
0
mientras(n<>0)
mientras
(n<>0)hacer
hacer
cifranMOD
cifran
MOD10
MOD
10
//obtenercifras(unidad)
si(cifra
si
(cifraMOD
MOD2=0)
MOD
2=0)entonces
entonces
cPares
cPares
cPares
cPares+1
+1
si_no
cImpares
cImpares
cImpares
cImpares+1
+1
fin_si
nnDIV
nn
DIV10
10
//retiracifra(unidad)
fin_mientras
escribir(NumerodeCifrasPares:,
escribir
(NumerodeCifrasPares:,cPares
(NumerodeCifrasPares:,
cPares)
)
escribir(NumerodeCifrasImpares:,
escribir
(NumerodeCifrasImpares:,cImpares
(NumerodeCifrasImpares:,
cImpares)
)
FIN

Problema4:Ingreseunnmeroentero(de3omasdgitos)
yluegocalculelasumadecifraspareseimparesqueestn
contenidasenelnmeroingresado.
AlgoritmoProblema4
AlgoritmoProblema4
var
entero: n,
n,cPares
cPares,
,cImpares
cImpares,cifra
,cifra
INICIO
leer(n)
leer
(n)
cPares 0:
0:cImpares
cImpares0
0
mientras(n<>0)
mientras
(n<>0)hacer
hacer
cifranMOD
cifran
MOD10
10
//obtenercifra:unidaddelnumero
si(cifra
si
(cifraMOD
MOD2=0)
2=0)entonces
entonces //cifrapar
//cifrapar
impar
impar
cPares
cPares
cPares
cPares+cifra
cPares
+cifra
si_no
cImpares
cImpares
cImpares
cImpares+cifra
cImpares
+cifra
fin_si
nnDIV
nn
DIV10
10 //disminuir:demilesacentenas,adecenas
fin_mientras
escribir(SumadeCifrasPares:,
escribir
(SumadeCifrasPares:, cPpares
cPpares)
)
escribir(SumadeCifrasImpares:,
escribir
(SumadeCifrasImpares:, cImpares
cImpares)
)
FIN

Problema5:Ingreseunnmeroenteroycalculelamayory
menorcifracontenidasenelnmeroingresado.
AlgoritmoProblema5
AlgoritmoProblema5
var
entero:
n,max
n,
max,min,cifra
max
,min,cifra
INICIO
leer(n)
leer
(n)
max 0:min9
mientras(n<>
mientras
(n<>hacer
hacer
cifranMOD
cifran
MOD10
MOD
10
//obtenerdigito
si(cifra
si
(cifra>
>max
max)
max
)entonces
entonces
maxcifra
fin_si
si(cifra
si
(cifra<
<min)
min)entonces
min)
entonces
mincifra
fin_si
nnDIV
nn
DIV10
10
//retirardigito
fin_mientras
escribir(Mayorcifra:,
escribir
(Mayorcifra:,max
(Mayorcifra:,
max)
)
escribir(Menorcifra:,min)
escribir
(Menorcifra:,min)
(Menorcifra:,min)
FIN

Problema6:Ingreseunnmeroenteroyluegoformeun
2donmeroconlascifrasdelnmeroingresadoenforma
inversa.

AlgoritmoProblema6
AlgoritmoProblema6
var
entero:
n,cifra,m
INICIO
leer(n)
leer
(n)
m0
mientras(n<>0)
mientras
(n<>0)hacer
hacer
cifranMOD
cifran
MOD10
m(m*
m(m
*10)+cifra
10)+cifra
//acumulainverso
nnDIV
nn
DIV10
10
fin_mientras
escribir(NuevoNmero:,m)
escribir
(NuevoNmero:,m)
(NuevoNmero:,m)
FIN

Problema7:Ingreseunnmeroenteroyluego
obtengasuequivalenteenbase5.
AlgoritmoProblema7
AlgoritmoProblema7
var
entero:
n,B5,p,cifra
INICIO
leer(n)
leer
(n)
B50:p1
mientras(n
mientras
(n<>
<>0)
0)hacer
hacer
cifranMOD
cifran
MOD5
5
B5B5+
B5B5
+(cifra
(cifra*
(cifra
*P)
P)
pp*
pp
*10
10
nnDIV
nn
DIV5
5
fin_mientras
escribir(B5)
escribir
(B5)
FIN

Problema8:Ingreseunnmeroenteroyluegounacifra,generarun
nuevonmeroconlascifrasdelnmeroingresadoperoexcluyendoala
cifraingresada.Ej.Numero=232425262,Cifra=2,entonces
NuevoNumero=3456)
NuevoNumero
=3456)

AlgoritmoProblema8
AlgoritmoProblema8
var
entero: n,m,r,p,cifra
entero:
INICIO
leer(n,cifra)
leer
(n,cifra)
m0:p1
mientras(n
mientras
(n<>
<>0)
0)hacer
hacer
rnMOD
rn
MOD10
10
si(r
si
(r<>
<>cifra)
cifra)entonces
entonces
mm +
+(r
(r*
(r
*p)
p)
pp*
pp
*10
10
fin_si
nnDIV
nn
DIV10
10
fin_mientras
escribir(Nuevonumero:,m)
escribir
(Nuevonumero:,m)
(Nuevonumero:,m)
FIN

PROBLEMASPROPUESTOS
Problema9:Ingreseunnmeroenteroy
Problema9:Ingreseunnmeroenteroy
luegocalculeyvisualicelacifraquemas
vecesserepiteenelnmero.
Ej.Numero=23452535,Respuesta=5
Problema10:Ingreseunnmeroenteroy
Problema10:Ingreseunnmeroenteroy
ordenesuscifrasenordenascendente.
Ej.Numero=329481,Respuesta=123489
Ej.Numero=329481,Respuesta=123489

1.b.)Estructura
REPETIR/HASTA_QUE
Estaestructurapermiteprocesarungrupode
instruccionesy/osentencias,siempreycuando
lacondicindecontinuidad(queseevalaal
finaldelbloquedecdigo)dacomoresultadoun
valorlgicofalso(FALSO
valorlgicofalso(
FALSO).
FALSO
).
Sintaxis:
REPETIR
FALSO

Instruccionesy/o
Sentenciasaiterar
Sentenciasaiterar

:
:
HASTA_QUE(
HASTA_QUE
(Expresion
(
Expresion<es>)
<es>)

Ejemplo1:Visualizarlos5primerosnmeros
naturales.

AlgoritmoEjemplo1
AlgoritmoEjemplo1
var
entero: n
INICIO
n1
repetir
escribir(n)
escribir
(n)
nn+
nn
+1
+
1
hasta_que(n>5)
hasta_que
(n>5)
(n>5)
FIN

Ejemplo2:Visualizartodoslosnmeros
Ejemplo2:Visualizartodoslosnmeros
paresde2cifras.
AlgoritmoEjemplo2
AlgoritmoEjemplo2
var
entero:
n
INICIO
n10
repetir
escribir(n)
escribir
(n)
nn+
nn
+2
2
hasta_quen>98
hasta_que
n>98
FIN

Ejemplo3:Generarlasiguienteserie:1,4,9,16,
25,,100

AlgoritmoEjemplo3
AlgoritmoEjemplo3
var entero: n
INICIO
n1
repetir
escribir(n2)
escribir
(n2)
nn+1
hasta_que(n>10)
hasta_que
(n>10)
(n>10)
FIN

Ejemplo4:Ingreseunnmeroenteroyluego
visualicetodossusdivisores.
AlgoritmoEjemplo4
AlgoritmoEjemplo4
var
entero:
n,divisor,resto
n
,divisor,resto
INICIO
leer(n)
leer
(n)
divisor1
repetir
restonMOD
reston
MODdivisor
MOD
divisor
si(resto
si
(resto=
=0)
=
0)entonces
entonces
escribir(divisor)
escribir
(divisor)
fin_si
divisordivisor+1
hasta_que(divisor>n)
hasta_que
(divisor>n)
(divisor>n)
FIN

Ejemplo5:Ingreseunnmeroyluegovisualiceunmensaje
indicandosielnmeroESCAPICUAoNOESCAPICUA.
AlgoritmoEjemplo5
AlgoritmoEjemplo5
var
entero: n,m,INV,cifra
INICIO
leer(n)
leer
(n)
mn:INV0
repetir
ciframMOD
cifram
MOD10
10
INV(INV*
INV(INV
*10)
10)+
+cifra
cifra
mmDIV
mm
DIV10
10
hasta_que(m
hasta_que
(m=
=0)
0)
si(n
si
(n=
=INV)
INV)entonces
entonces
escribir(EsCAPICUA)
escribir
(EsCAPICUA)
si_no
escribir(NoesCAPICUA)
escribir
(NoesCAPICUA)
(NoesCAPICUA)
fin_si
FIN

Anda mungkin juga menyukai