You are on page 1of 26

PLE4- CONTENIDOS.

ALGORITMOS: REPRESENTACIN, INSTRUCCIONES, ESTRUCTURAS BSICAS DE


TRATAMIENTO, PSEUDOCDIGO.
Introduccin
Este documento pretende ser un refuerzo para aquellas personas a las que les cueste un poco ms entender cmo descr!"!r
al#or!tmos de forma comprens!"le para los ordenadores$ por med!o de d!a#ramas de flu%o & pseudocd!#o
fundamentalmente. Suele ser un entrenam!ento pre'!o ef!caz que perm!te resol'er el pro"lema de forma mu& s!m!lar a
como lue#o se 'a a (acer con un pro#rama$ pero s!n neces!dad de tener que preocuparnos de respetar los detalles de
s!nta)!s de cualqu!er len#ua%e de pro#ramac!n que tan *en#orrosos+ resultan cuando estamos comenzando & no
dom!namos a,n d!c(o len#ua%e.
-"re la s!mulac!n que se ad%unta$ de nom"re Pseudocodigo_R!.s"#$ con el na'e#ador. En ella puedes encontrar tres
representac!ones d!ferentes del m!smo al#or!tmo & comparar cada uno de los pasos del al#or!tmo en cada una de las
representac!ones. De ellas$ los d!a#ramas N-S se usan poco$ & cas! se presentan slo a modo de cur!os!dad.
A$ esc%i&i% cu'$(uie% '$go%i)*o +', (ue )e-e% e- cue-)':
En cada momento slo se puede e%ecutar una acc!n .o sentenc!a o !nstrucc!n/.
Dentro de las sentenc!as del al#or!tmo pueden e)!st!r *pala"ras reser'adas+$ es dec!r$ pala"ras a las que se les da
un determ!nado s!#n!f!cado$ & que no podremos usar para nada d!st!nto.
S! estamos ut!l!zando pseudocd!#o tenemos tam"!0n que usar la !ndentac!n .d!st!ntos n!'eles de san#r1as del
te)to/$ &a que aumenta la le#!"!l!dad del pro"lema para que se pueda entender me%or.
Diagramas de flujo o flujogramas.
En la presentac!n anter!or (emos menc!onado tres formas de representar los al#or!tmos. La pr!mera de ellas son los
d!a#ramas de flu%o. No so- *.s (ue u-' +e%%'*ie-)' g%.#ic', u-' -o)'ci/- g%.#ic' es).-d'% (ue 0osi&i$i)' $'
co*0%e-si/- de $os 0'sos , e$ o%de- e- (ue +', (ue d'%$os 0'%' %eso$1e% u- 0%o&$e*' 2'$go%i)*o3.
Se "asa en la ut!l!zac!n de unos s1m"olos #rf!cos que denom!namos ca%as$ en las que escr!"!mos las acc!ones que t!ene
que real!zar el al#or!tmo. De"en ser le1dos de arr!"a a"a%o$ & de !zqu!erda a derec(a. T!enen la 'enta%a de proporc!onar una
representac!n mu& '!sual$ que perm!te entender de un solo #olpe de '!sta la estructura del al#or!tmo$ el t!po de acc!ones
que se real!zan & el orden en que se real!zan. Son mu& adecuados para al#or!tmos que no requ!eren d!a#ramas mu&
#randes$ pero se (acen d!f1c!les de mane%ar cuando un solo d!a#rama ocupa muc(as p#!nas. -dems$ resultan en#orrosos
de corre#!r cuando se detectan errores.

Las ca%as estn conectadas entre s1 por l1neas & eso nos !nd!ca el orden en el que tenemos que e%ecutar las acc!ones. En
todo al#or!tmo s!empre (a"r una ca%a de !n!c!o & otra de f!n$ para el pr!nc!p!o & f!nal del al#or!tmo.
Smbolos usados en los diagramas de flujo.
- cont!nuac!n t!enes la an!mac!n Pseudocodigo_R4.s"#. 2"rela con el na'e#ador & 'ers que de forma !nteract!'a 'a
a perm!t!rte consultar rp!damente cada uno de los s1m"olos ut!l!zados en los d!a#ramas de flu%o & qu0 s!#n!f!ca.
- cont!nuac!n te presentamos un cuadro de la clas!f!cac!n de los s1m"olos ut!l!zados en los d!a#ramas de flu%o. Son los
m!smos que aparecen en la presentac!n anter!or$ pero (emos pensado que te puede ser ,t!l que adems los ten#as todos
aqu1 ms a mano$ para que ut!l!ces el s!stema que me%or se adapte a tu forma de estud!ar.
P%o&$e*' e5e*0$o:
En los apartados anter!ores (emos comentado las caracter1st!cas de los d!a#ramas de flu%o$ & los s1m"olos que usan. Es el
momento de que 'eamos un e%emplo.
3ueremos +'$$'% e$ 0%oduc)o de 1'%ios -6*e%os 0osi)i1os i-)%oducidos 0o% )ec$'do , e$ 0%oceso )e%*i-' cu'-do se
i-)%oduce u- -6*e%o -eg')i1o. Los pasos necesar!os son los s!#u!entes4
5. In!c!al!zar la 'ar!a"le del producto .ase#urarnos de que 'ale 5/.
6. Leer el pr!mer n,mero.
7. Pre#untar s! el n,mero le1do es pos!t!'o.
4. S! el n,mero le1do es pos!t!'o$ mult!pl!camos el producto acumulado por el n,mero le1do$ lue#o leemos un nue'o
n,mero$ & se 'uel'e al paso 7.
8. S! por el contrar!o el n,mero le1do es ne#at!'o$ escr!"!mos el producto acumulado & term!namos.
El d!a#rama de flu%o que representa esa soluc!n es el s!#u!ente4
Puede 'erse dos e%emplos de la e%ecuc!n de este flu%o#rama en la s!mulac!n conten!da en el arc(!'o
Pseudocodigo_R7.00) que se ad%unta. - cada cl!c de ratn se !r e%ecutando el al#or!tmo$ de forma que puedes comparar
la e%ecuc!n de cada paso en dos representac!ones d!ferentes .flu%o#rama & pseudocd!#o/. De"er1as !ntentar ant!c!parte a
cada paso antes de a'anzar al s!#u!ente.
PARA SABER MS
9na (erram!enta para (acer d!a#ramas de flu%o$ 'l!da para plataformas :!ndo;s & L!nu) $ es la apl!cac!n DI-$ un
#enerador de d!a#ramas de flu%o mu& ,t!l. En esta p#!na puedes encontrar una "re'e descr!pc!n & al#unos enlaces
!nteresantes4
D!a#ramas de <lu%o
(ttp4=="ulma.net="od&.p(tml>nIdNot!c!a?574@
Pseudocdigo.
Por f!n lle#amos a la forma de representar un al#or!tmo que por otra parte es la ms com,nmente usada. Es una forma
!ntermed!a entre el $e-gu'5e -')u%'$ & el $e-gu'5e de 0%og%'*'ci/- para la descr!pc!n de la soluc!n de un pro"lema$
que e'!ta las am"!#Aedades del len#ua%e natural & no entra en los detalles de si-)'8is de un len#ua%e de pro#ramac!n
concreto.
Lenguaje natural
Lenguaje de programacin
Pseudocdigo
Representacin
algoritmos
Es un len#ua%e de espec!f!cac!n de al#or!tmos$ pero mu& parec!do a cualqu!er len#ua%e de pro#ramac!n.
Su traducc!n a cualqu!er len#ua%e concreto es mu& senc!lla.
No se r!#e por las normas de un len#ua%e en part!cular$ no (a& que tener en cuenta la s!nta)!s concreta de cada
sentenc!a$ s!no que podemos (acerlo cas! como queramos$ s!empre que lo que escr!"amos no sea am"!#uo & sea
claro.
Se centra ms en la l#!ca del pro"lema que en los detalles de s!nta)!s.
No es tan '!sual como los d!a#ramas de flu%o.
Son "astante ms fc!les de (acer & de corre#!r que las representac!ones #rf!cas$ &a que son slo te)to.
El pseudocd!#o tam"!0n 'a a ut!l!zar una ser!e de pala"ras cla'e o pala"ras espec!ales que 'an !nd!cando lo que de"e
(acer el al#or!tmo.
Estructura de un algoritmo en !seudocdigo.
Bemos comentado que el pseudocd!#o es parec!do a cualqu!er len#ua%e de pro#ramac!n$ & por ello t!ene una estructura
ms o menos def!n!da$ como los pro#ramas. C3u0 partes componen esa estructura>
En pseudocd!#o el al#or!tmo t!ene tres partes4 la c'&ece%'$ la 9o-' de dec$'%'ci/- de co-s)'-)es , 1'%i'&$es & el
cue%0o.
La c'&ece%' cont!ene el nom"re del al#or!tmo.
La 9o-' de dec$'%'cio-es de 'ar!a"les & constantes esta"lece qu0 'ar!a"les & constantes 'amos a usar$ !nd!cando
%unto al nom"re el t!po de las m!smas & el 'alor en el caso de las constantes.
El cue%0o del al#or!tmo es el que cont!ene las !nstrucc!ones que !nd!can las acc!ones a real!zar por el pro#rama.
Com!enza con la pala"ra In!c!o & term!na con la pala"ra <!n .o pala"ras s!m!lares/.
El aspecto f!nal del al#or!tmo es al#o s!m!lar al s!#u!ente esquema$ en el que los corc(etes an#ulares !nd!can que
lo que 'a dentro se sust!tu!r por un nom"re concreto$ un t!po concreto$ etc.
Algoritmo <nombre alg>
Const <nombre>: <tipo>, <nombre>: <tipo>,
Var <nombre>: <tipo>, <nombre>: <tipo>,
Inicio
<Instrucciones>
Fin
En el cuerpo$ para que quede ms le#!"le$ (a& que usar la !ndentac!n & s! es necesar!o (a& que usar comentar!os
!dent!f!cados como tales por al#,n s1m"olo$ tal como lla'es$ o entre =D D=$ que es &a cas! un estndar.
Las d!st!ntas estructuras de control de flu%o que se pueden usar en un al#or!tmo son las s!#u!entes4
Estructura de Control Descripcin
1.
Inicio y Fin
Por donde emp!eza & aca"a el al#or!tmo.
6.
Si <condicin> Entonces
<acciones1>
Si no
<acciones2>
Fin-Si
E%ecuc!n cond!c!onal de la acc!n.
7.
Mientras <condicin> hacer
<acciones>
Fin-Mientras
Eepet!c!n de la acc!n m!entras que la cond!c!n
sea 'erdadera.
4.
Repetir
<acciones>
hasta <condicin>
Eepet!c!n de la acc!n (asta que la cond!c!n sea
'erdadera.
8.
Desde <Variable = alor inicial> hasta
<alor !inal> paso <incre"ento> hacer
<acciones>
Fin-Desde
Eepet!c!n de la acc!n depend!endo de una
'ar!a"le de control que emp!eza tomando el 'alor
!n!c!al$ & tras cada 'uelta se !ncrementa sumndole
!ncremento$ (asta que se alcance o supere el 'alor
f!nal.
F. Se#$n Sea <e%presin>
Se comprue"a el 'alor de la e)pres!n$ & se#,n sea
&aso <alor1>' <acciones1>
&aso <alor2>' <acciones2>
(
&aso <alor)>' <acciones)>
*+tro &aso ' <acciones,orDe!ecto>-
Fin-Se#$n
su 'alor$ se e%ecuta la acc!n que le corresponda.
Los corc(etes normales !nd!can que el otro caso es
opc!onal$ puede no ponerse.
Pode*os '#i%*'% (ue e$ 0seudoc/digo es:
9na forma !ntermed!a entre el len#ua%e natural & el len#ua%e de pro#ramac!n para la descr!pc!n de la soluc!n de un
pro"lema$ que e'!ta las am"!#Aedades del len#ua%e natural & no entra en los detalles de s!nta)!s de un len#ua%e de
pro#ramac!n concreto.
Estructuras b"sicas de control de flujo.
Bemos menc!onado anter!os las estructuras de control de flu%o que se usan en pseudocd!#o. CSon las ,n!cas pos!"les>
CSon todas ellas !mpresc!nd!"les>
En real!dad no todas son !mpresc!nd!"les$ pero s1 representan a cas! todas las pos!"les$ al menos a todas las que son
recomenda"les. Cualqu!er pro"lema se resuel'e (ac!endo uso de un con%unto l!m!tado de es)%uc)u%'s de co-)%o$ de$ #$u5o
de e%ecuc!n de las sentenc!as. -qu1 presentamos estas estructuras. Gatemt!camente es pos!"le demostrar que 0'%' )odo
0%o&$e*' co- so$uci/- puede descr!"!rse un al#or!tmo que lo soluc!one us'-do s/$o $'s )%es es)%uc)u%'s de co-)%o$ de
#$u5o &.sic's. Esas estructuras son las s!#u!entes4
Secue-ci'$. Cons!ste en escr!"!r o representar las sentenc!as una detrs de otra %usto en el orden en que de"en
e%ecutarse.
Co-dicio-'$ o se$ec)i1'. Cons!ste en la e%ecuc!n o no de unas sentenc!as depend!endo del 1'$o% de 1e%d'd de
una cond!c!n. En todos los len#ua%es e)!sten d!st!ntas sentenc!as correspond!entes a la estructura cond!c!onal.
C:c$ic', i)e%')i1' o %e0e)i)i1'. Cons!ste en e%ecutar repet!damente unas sentenc!as m!entras se cumpla una
cond!c!n. Tam"!0n e)!sten en todos los len#ua%es d!st!ntas sentenc!as correspond!entes a la estructura c1cl!ca.
El (ec(o de que los len#ua%es !nclu&an 'ar!as sentenc!as de cada t!po responde ms al deseo de proporc!onar una 'ar!edad
de sentenc!as que se adapten me%or a los d!st!ntos casos pos!"les & que fac!l!ten la pro#ramac!n$ que al (ec(o de que sean
realmente necesar!as. De (ec(o$ ser1a pos!"le constru!r cualqu!er pro#rama usando un solo t!po de sentenc!a cond!c!onal &
un solo t!po de sentenc!a c1cl!ca.
Estructura secuencial
S!empre que ten#as que !nd!car una ser!e de pasos que de"en darse en el orden que se !nd!can$ de"ers usar esta estructura.
Es cu'-do u-' i-s)%ucci/- sigue ' o)%' e- secue-ci', esc%i)'s e- e$ o%de- e- (ue 1'- ' e5ecu)'%se.
En pseudocd!#o es la estructura4
Sentencia1
Sentencia2
Sentencia.
(
sentencia)
Como e%emplo puedes 'er cmo se representa la m!sma estructura secuenc!al en los dos s!stemas de representac!n de
al#or!tmos que (emos '!sto4 <lu%o#rama & pseudoc#!do.
Estructura condicional# selecti$a o alternati$a.
CTenemos que compro"ar al#una cond!c!n antes de dec!d!r qu0 sentenc!a es la que de"emos e%ecutar> En ese caso la
estructura cond!c!onal es la adecuada.
Se e1'$6' $' co-dici/- , e- #u-ci/- de$ %esu$)'do se e5ecu)' u- co-5u-)o de i-s)%uccio-es u o)%o.
Ba& tres t!pos de sentenc!as select!'as4
Co-dicio-'$ si*0$e.
Co-dicio-'$ do&$e.
Se$ec)i1' *6$)i0$e. En el caso de la select!'a m,lt!ple$ lo que se e'aluar es una e)pres!n$ que dar un 'alor de
un t!po d!screto .dado un 'alor$ sa"emos cual es el s!#u!ente/. Depend!endo del 'alor resultante$ se e%ecutar una
u otra sentenc!a. Es dec!r$ cada uno de los 'alores pos!"les tendr asoc!ada su prop!a sentenc!a$ que ser la ,n!ca
que se e%ecutar cuando la e)pres!n tome ese 'alor.
Condicional simple.
S! neces!tas (acer al#una sentenc!a slo en el caso de que se cumpla al#una cond!c!n$ el
cond!c!onal s!mple es la estructura adecuada.
E1'$u'*os $' co-dici/- , si es 1e%d'de%' e5ecu)'*os e$ co-5u-)o de se-)e-ci's
'soci'd's '$ e-)o-ces, , si es #'$so, -o +'ce*os -'d' , co-)i-u'*os co- $' se-)e-ci'
(ue +',' ' co-)i-u'ci/-.
En pseudocd!#o es la estructura4
Condicional doble.
S! t!enes que ele#!r entre dos pos!"les alternat!'as$ depend!endo de que se cumpla o
no al#una cond!c!n$ de"es ut!l!zar el cond!c!onal do"le.
Se e1'$6' $' co-dici/- , si es 1e%d'd se e5ecu)'- e$ co-5u-)o de 'ccio-es
'soci'd's ' $' 0'%)e e-)o-ces, , si es #'$so se e5ecu)'- e$ co-5u-)o de 'ccio-es
'soci'd's ' $' 0'%)e si-o 2se e$ige u-o de $os dos c'*i-os , se desc'%)' e$ o)%o3.
La cond!c!n se e'al,a una ,n!ca 'ez$ por lo que las acc!ones que correspondan se
e%ecutarn una ,n!ca 'ez.
En pseudocd!#o esta estructura es4
S/ <condicin> entonces
<acciones1>
Si no
<acciones2>
Fin-S/
Alternativa mltiple o selectiva mltiple:
S! t!enes un caso en el que (a& m,lt!ples 'alores pos!"les para una e)pres!n$ & cada
uno de ellos requ!ere efectuar un con%unto prop!o de acc!ones$ la estructura ms
!nd!cada ser la alternat!'a o select!'a m,lt!ple.
Se e'al,a una e)pres!n que puede tomar m,lt!ples 'alores. Se#,n el 'alor que la
e)pres!n ten#a en cada momento .se#,n el caso de que se trate/ se e%ecutan las
acc!ones correspond!entes al 'alor.
Si <condicin> entonces
<acciones>
Fin-S/
En real!dad equ!'ale a un con%unto de cond!c!ones an!dadas. En cualqu!er len#ua%e suele usarse con las pala"ras Case o
S;!tc(.
Es la estructura4
Se#$n Sea <e%presin>
&aso <Valor1>' <acciones1>
&aso <alor2>' <acciones2>
...
&aso <alor)>' <acciones)>
*<+tro &aso>' <acciones,orDe!ecto>-
Fin-Se#$n

O)%o C'so4 Las acc!ones asoc!adas a la et!queta HOtro CasoI se e%ecutan cuando la e)pres!n no toma n!n#uno de los
'alores pre'!stos en las dems et!quetas$ & suele ser opc!onal. o)+e%"ise, e$se, de#'u$) son pala"ras que se usan
frecuentemente para esta alternat!'a.
Los 'alores que se pueden poner como et!quetas .como alternat!'as a compro"ar/ 'an a depender de los len#ua%es.
-l#unos len#ua%es perm!ten usar cualqu!er e)pres!n que de'uel'a un t!po ordenado & d!screto$ & en las et!quetas perm!ten
poner 'alores !nd!'!duales o ran#os de 'alores$ e !ncluso cond!c!ones que determ!nen ran#os de 'alores.
Otros$ como es el caso de Ja'a$ slo perm!te usar e)pres!ones de t!po entero$ & como et!quetas slo 'alores !nd!'!duales$
aunque queramos que se (a#an las m!smas acc!ones para 'ar!os de ellos.
Como cas! s!empre$ un e%emplo puede a&udar "astante a entender esto.
E5e*0$o: Bacer un pro#rama que pueda d!"u%ar una recta$ un punto o un rectn#ulo.
Algoritmo Dibujo
Var op' car0cter
Escribir 12Introd3ce 3na opcin4
15 ,3nto
25 Recta
.5 Rect0n#3lo46
7eer op
Se#$n Sea op
214' 89dib3:ar p3nto98
555555555
224' 89dib3:ar recta98
5555555555
2.4' 89dib3:ar rect0n#3lo98
5555555555
2otro4' escribir 2opcin errnea4
Fin-Se#$n
O)%o E5e*0$o: Bacer un al#or!tmo para leer una nota num0r!ca & escr!"!r en pantalla la cal!f!cac!n asoc!ada4
Algoritmo LeerNotaEscribirCalificacin
Var nota' entero
7eer nota
Se#$n Sea nota
155;' escribir 12s3spenso46
<55=' escribir 12aprobado46
>55?' escribir 12)otable46
@' escribir 12Sobresaliente46
1A' escribir 12Matric3la de honor46
+tro &aso' escribir 12)ota errnea5 Slo se ad"iten notas entre 1 y 1A46
Fin-Se#$n
Inicio
Leer nota Leer nota
opcin
Escribir
uspenso!
Escribir notable!
Escribir
aprobado!
Escribir
sobresaliente!
"in
Escribir #.
$onor!
Escribir nota
errnea
1..%
&..' (..) * +tro
caso
1,
En al#unos len#ua%es se perm!te poner una cond!c!n que determ!ne un ran#o. -l#o como lo que se !nd!ca a cont!nuac!n4
Se#,n sea nota
nota I?5 & nota H?44 escr!"!r *suspenso+
K
Puedes 'er la ela"orac!n de este al#or!tmo en la s!mulac!n del arc(!'o Pseudocodigo_R;.00) en la que cada paso es
comentado para que comprendas lo que p!ensa el pro#ramador al d!seLar un al#or!tmo.
En pseudocd!#o supondremos que no se pueden poner cond!c!ones de este t!po en las sentenc!as select!'as m,lt!ples$ &a
que son !nfrecuentes en los len#ua%es$ & adems Ja'a que es el len#ua%e que usaremos en el curso$ no las perm!te. -s1 nos
'amos acostum"rando.
Estructuras re!etiti$as# cclicas o iterati$as.
Son muc(as las s!tuac!ones en las que para soluc!onar un pro"lema es necesar!o repet!r una ser!e de pasos (asta que se
cons!#a un determ!nado resultado$ o m!entras se cumpla una determ!nada cond!c!n. P!ensa por e%emplo en el profesor que
corr!#e & e'al,a los e)menes de los alumnos de una clase. Ba"r una ser!e de tareas que tendr que repet!r para cada
alumno .co#er el e)amen$ corre#!r cada pre#unta$ puntuarlas$ sumar la puntuac!n del e)amen$ anotar la nota en su
cuaderno$ #uardar el e)amen/. M todos esos pasos de"er repet!rlos m!entras que queden e)menes de alumnos .o (asta
que se a#oten los e)menes$ que es otra forma de dec!r lo m!smo/
Las estructuras repet!t!'as son aquellas que cont!enen un "ucle .con%unto de !nstrucc!ones que se rep!ten un n,mero f!n!to
de 'eces/. Cada repet!c!n del "ucle se llama !terac!n.
Todo "ucle t!ene que lle'ar asoc!ada una cond!c!n$ que es la que 'a a determ!nar cuando se rep!te el "ucle.
Despu0s de cada !terac!n se 'uel'e a e'aluar la cond!c!n$ & s! s!#ue cumpl!0ndose$ se 'uel'en a e%ecutar todas
las sentenc!as del "ucle.
En las !nstrucc!ones del "ucle de"e (a"er al#una o al#unas que mod!f!quen el 'alor de la cond!c!n para e'!tar
que entremos en un "ucle !nf!n!to.
S! la cond!c!n es 'erdadera cuando entramos$ & no (a& nada que la mod!f!que$ s!empre se#u!r s!endo 'erdadera
& 'ol'eremos a real!zar otra !terac!n$ (asta el !nf!n!to.
Los )i0os de &uc$es so-:
Mie-)%'s < +'ce% =+i$e < do
Re0e)i% < +'s)' Re0e') < u-)i$
Desde >o%
Los "ucles t!po *repeat+ son ms adecuados cuando sa"emos que las sentenc!as del "ucle s!empre se 'an a tener que
e%ecutar al menos una 'ez.
Estructura repetitiva tipo mientras-.acer /0.ile-do1
CCuando ser aprop!ado usar este t!po de "ucle en 'ez de otro> S! es necesar!o compro"ar la
cond!c!n antes de (acer n!n#una de las acc!ones que de"en repet!rse$ 0sta es la estructura
adecuada.
La cond!c!n del "ucle se e'al,a al pr!nc!p!o$ antes de entrar en 0l. S! la cond!c!n es
'erdadera$ comenzamos a e%ecutar las acc!ones del "ucle & despu0s de la ,lt!ma 'ol'emos a
e'aluar la cond!c!n para 'er s! (a& que 'ol'er a e%ecutar el "ucle de nue'o. En el momento
en el que la cond!c!n sea falsa nos sal!mos del "ucle & e%ecutamos la s!#u!ente sentenc!a
poster!or al "ucle.
-l e'aluarse la cond!c!n al pr!nc!p!o$ antes de entrar en el "ucle$ si $' co-dici/- ,' es #'$s'
$' 0%i*e%' 1e9, -o e-)%'%e*os e- e$ &uc$e, , -o se e5ecu)'%. -i-gu-' de $'s 'ccio-es
(ue co-)ie-e -i-gu-' 1e9. Por tanto usaremos o"l!#ator!amente este t!po de "ucle en el caso
de que e)!sta la pos!"!l!dad de que el "ucle no de"a e%ecutarse n!n#una 'ez.
La estructura en pseudocd!#o es4
Mientras <condicin> hacer
< acciones >
Fin-Mientras
9na 'ez ms$ un e%emplo puede a&udar.
E5e*0$o: G!ra la descr!pc!n del s!#u!ente al#or!tmo4
3ueremos (allar el producto de 'ar!os n,meros pos!t!'os !ntroduc!dos por teclado. El
proceso de"e term!nar cuando se meta un n,mero ne#at!'o.
En un apartado anter!or se descr!"! la soluc!n en d!a#rama de flu%o$& a(ora lo (acemos con
pseudocd!#o & usando la estructura c1cl!ca m!entras-(acer4
Bl#orit"o ,rod3cto
Var
,C n3"' entero
Inicio
, 1
7eer n3"
Mientras n3" >=A hacer
, , 9 n3"
7eer n3"
Fin-Mientras
Escribir 1,6
Fin
O)%o E5e*0$o:
Leer 7 n,meros & dar su suma4
PSEUDOCDIGO
Algoritmo uma2res3umeros
Inicio
Cont ,
uma ,
Cont 4 5
Leer num
uma uma6num
Cont Cont 6 1
Escribir suma
"in
"L78+9RA#A
Bl#orit"o S3"arDres)3"eros
Var
&ontC S3"aC n3"' entero
Inicio
&ont A
S3"a A
Mientras &ont < .
7eer n3"
S3"a S3"a E n3"
&ont &ont E 1
Fin "ientras
Escribir 1FFla s3"a esGGC S3"a6
Fin
En la s!mulac!n del arc(!'o Pseudocodigo_R?.00) puedes o"ser'ar cmo se e%ecutar1a el al#or!tmo con un e%emplo.
D'do e$ siguie-)e '$go%i)*o e- 0seudoc/digo, @cu.$ es e$ %esu$)'do co%%ec)oA
% 1
R A
Mientras %<=;
R% 9 R
% %E1
Fin-Mientras
Eespuesta4 E?N
D'do e$ siguie-)e '$go%i)*o e- 0seudoc/digo, @cu.$ es e$ %esu$)'do co%%ec)oA
% 1
R 1
"ientras %<=.
R% 9 R
% %E1
Fin-Mientras
Eespuesta4 E?F
D'do e$ siguie-)e '$go%i)*o e- 0seudoc/digo, @cu.$ es e$ %esu$)'do co%%ec)oA
&ont A
S3"a A
Mientras cont < .
S3"a S3"a E &ont
&ont &ont E 1
Fin-Mientras
Eespuesta4 Suma?7
Estructura repetitiva tipo repetir-.asta /repeat-until1
CP!ensas que esta estructura ser adecuada para los m!smos casos que la estructura c1cl!ca t!po (acer-m!entras>
Se#,n se m!re. Es pos!"le constru!r una sentenc!a (acer-m!entras usando otra t!po repet!r-(asta$ pero 0sta ,lt!ma es mu&
adecuada en aquellos casos que queremos #arant!zar que las sentenc!as del "ucle se 'an a e%ecutar al menos una 'ez.
S! por e%emplo el "ucle t!ene que repet!r la lectura de un n,mero (asta que tome un 'alor ma&or que 8$ sa"emos que
s!empre 'amos a tener que (acer al menos la pr!mera lectura. S! es la adecuada$ no se repet!r ms la lectura$ pero por lo
menos un n,mero se#uro que neces!tamos leer.
En este t!po de "ucles$ se rep!ten las sentenc!as que !nclu&e (asta que la cond!c!n sea 'erdadera$ que es lo m!mo que dec!r
que se rep!te m!entras la cond!c!n sea falsa. La cond!c!n se e'al,a s!empre al f!nal del "ucle$ s! es falsa 'ol'emos a
e%ecutar las acc!ones$ s! es 'erdad se sale del "ucle.
Como la cond!c!n se e'al,a al f!nal$ !ncluso aunque la pr!mera 'ez &a sea 'erdadera$ (a"remos pasado al menos una 'ez
por el "ucle & real!zado una !terac!n.
No o"stante$ al#unos len#ua%es$ como Ja'a$ no t!enen e)actamente esta
estructura$ s! no una parec!da$ que podr1amos llamar *repet!r-m!entras+. .Do-
:(!le/ Por lo dems es !#ual. Las acc!ones del "ucle se (acen al menos una
'ez$ & al f!nal del "ucle se e'al,a la cond!c!n$ & s! es c!erta$ se 'uel'e a
repet!r el "ucle. S! es falsa$ se sale del "ucle. -unque la cond!c!n fuera falsa
de entrada$ la pr!mera 'ez de todas formas se e%ecutar1a. Es dec!r$ func!ona
e)actamente !#ual que un repeat-unt!l s! ponemos %ustamente la cond!c!n
contrar!a. .ser1a lo m!smo dec!r *rep!te las acc!ones (asta que nI5N+ que
dec!r *(az las acc!ones m!entras n H?5N+/
Naturalmente se podr1a (acer lo m!smo que (ace cualqu!er "ucle repet!r O
(asta usando "ucles m!entras O (acer.
La estructura repet!r-(asta$ en pseudocd!#o ser1a4
Repetir
<acciones>
hasta <condicin>
Como s!empre$ es oportuno 'erlo con un e%emplo.
E5e*0$o: Otra forma de conse#u!r el m!smo resultado para el al#or!tmo del punto anter!or$ que le1a n,meros pos!t!'os &
los mult!pl!ca"a (asta que se !ntroduc1a un ne#at!'o ser1a usar la estructura repet!r-(asta4
Bl#orit"o ,rod3cto
Var
,C n3"' entero
Inicio
, 1
Repetir
7eer n3"
Si n3" >=A
Entonces , , 9 n3"
Fin-Si
Hasta n3" < A
Escribir p
Fin
O)%o E5e*0$o:
Leer 7 n,meros & dar su suma4
Bl#orit"o S3"arDres)3"eros
Var &ontC S3"aC n3"' entero
Inicio
&ont A
S3"a A
Repetir
7eer n3"
S3"a S3"a E n3"
&ont &ont E 1
Hasta &ont >= .
Escribir FFla s3"a esGGC S3"a
Fin
-unque parece (acer lo m!smo que el e%emplo usando (acer-m!entras del apartado
anter!or$ no son totalmente !#uales$ &a que s! por e%emplo Cont se !n!c!al!za a 7 en
am"os$ el pr!mero .m!entras/ no se e%ecutar1a n!n#una 'ez$ m!entras que el se#undo
.repet!r/ se e%ecutar1a la pr!mera 'ez s!empre.
Para conse#u!r el m!smo efecto en el pr!mer caso$ "astar1a con cop!ar todas las sentenc!as del "ucle %usto delante del
m!smo$ para que se e%ecutaran de forma !ncond!c!onal la pr!mera 'ez antes de compro"ar la cond!c!n. En ese caso el
efecto ser1a el m!smo$ pero el esfuerzo de escr!"!r el "ucle por dupl!cado no merece la pena.
Inicio
Cont ,
uma ,
Cont 4 5
Leer num
Escribir uma
"in
uma uma6num
Cont Cont 6 1
D'do e$ siguie-)e '$go%i)*o e- 0seudoc/digo, @cu.$ es e$ %esu$)'do co%%ec)oA
s3"a 1
cont 1
Repetir
n3" 29cont
s3"a s3"a En3" cont
cont cont E 1
Hasta cont >= .
Eespuesta4
Suma?P
Estructura repetitiva tipo :or.
En los casos anter!ores tenemos que repet!r un con%unto de sentenc!as una ser!e de 'eces$ pero no tenemos en cuenta s!
conocemos de antemano o no el n,mero de 'eces que se t!ene que e%ecutar el "ucle. CEs pos!"le s!mpl!f!car las cosas s!
sa"emos que un "ucle se de"e repet!r$ por e%emplo$ e)actamente P 'eces> Justamente es lo que (ace el cic$o )i0o #o%.
Este t!po de "ucles se ut!l!za cuando se sa"e &a antes de e%ecutar el "ucle el n,mero e)acto de 'eces que (a& que
e%ecutarlo. Para ello el "ucle lle'ar asoc!ada una 'ar!a"le que denom!namos 'ar!a"le 1nd!ce$ a la que le as!#namos un
'alor !n!c!al & determ!namos cual 'a a ser su 'alor f!nal. La 'ar!a"le 1nd!ce se 'a a !ncrementar o decrementar en cada
!terac!n del "ucle en un 'alor constante$ pero esto se 'a a (acer de manera automt!ca al term!nar cada !terac!n$ .el
pro#ramador no se t!ene que ocupar de !ncrementar o decrementar esta 'ar!a"le en cada !terac!n/$ s!no que 'a a ser una
operac!n !mpl1c!ta .lo (ace !nternamente la prop!a estructura/.
Por tanto en cada !terac!n del "ucle$ la 'ar!a"le 1nd!ce se actual!za automt!camente & cuando alcanza el 'alor que (emos
puesto como f!nal se term!na la e%ecuc!n del "ucle.
En al#unos len#ua%es como C o Ja'a$ esta estructura se (a mod!f!cado para con'ert!rla en una 'ers!n reduc!da de un "ucle
t!po m!entras-(acer$ !ntroduc!endo al#unas d!ferenc!as$ como 'eremos ms adelante$ al !ntroduc!rnos en el uso de Ja'a.
La estructura en pseudocd!#o es4
Desde <Variable=alor inicial > hasta <alor !inal> paso <incre"ento>
hacer <acciones>
Fin-Desde
El m!smo e%emplo de la suma de tres n,meros$ podemos 'erlo con una estructura t!po for.
E5e*0$o:
Leer 7 n,meros & dar su suma4
PSEUDOCDIGO
Bl#orit"o S3"arDres)3"eros
Var &ontC S3"aC n3"' enteros
Inicio
S3"a A
Desde &ont = A hasta 2 paso 1
7eer n3"
S3"a S3"a E n3"
Fin-Desde
Escribir FFla s3"a esGGC S3"a
Fin
E;emplos de algoritmos resueltos.
Se pretende que ten#as a tu d!spos!c!n al#unos e5e*0$os de di'g%'*'s de #$u5o , 0seudoc/digos (ue %e0%ese-)'-
'$gu-os '$go%i)*os$ para que te fam!l!ar!ces con su uso$ & te s!r'an de #u1a a la (ora de resol'er tus prop!os pro"lemas &
representar la soluc!n de forma clara. Puesto que la f!nal!dad es comprender & fam!l!ar!zarse con el uso de las estructuras
"s!cas de control de flu%o$ la func!onal!dad prct!ca de los e%emplos es l!m!tada$ & fundamentalmente se e)ponen e%emplos
que requ!eren efectuar clculos matemt!cos$ &a que en ellos el pro"lema a resol'er suele estar ms claro.
Ba& que de%ar claro que !ncluso en estos e%erc!c!os$ "astante "s!cos$ es pos!"le encontrar 'ar!as soluc!ones$ que aunque
parec!das ten#an l!#eras d!ferenc!as entre s1. S! 'ar!os de 'osotros !ntent!s resol'er estos pro"lemas$ u otros s!m!lares$
cas! con toda se#ur!dad que las soluc!ones encontradas tendrn d!ferenc!as$ que en al#,n caso pueden ser !ncluso
s!#n!f!cat!'as. En la ma&or1a de los pro#ramas que se a"ordan .en el curso & en la '!da real/ normalmente no e)!ste una
,n!ca soluc!n 'l!da. Nuestra o"l!#ac!n es encontrar la ms senc!lla & ef!c!ente. Pero eso se cons!#ue slo con la prct!ca$
por lo que una tarea !mportante en esta un!dad ser que 'osotros os entren0!s en la descr!pc!n de al#or!tmos que
soluc!onen pro"lemas.
Estos e%emplos por ser los pr!meros$ lle'an muc(os comentar!os .que no t!enen efecto en su func!onam!ento$ & que (emos
d!ferenc!ado por ello en otro color/$ pero dada la s!mpl!c!dad de estos al#or!tmos$ en cond!c!ones normales no de"er1an
lle'ar n! tantos comentar!os n! tan e)tensos.
Inicio
%&'()*RAMA
A$go%i)*o Su*'T%esNu*e%os
uma ,
Leer num Leer num
uma uma6num
Cont < ,= 1= >
Escribir uma
"in
C?lculo del per@metro A super:icie de un c@rculo= le@do el valor del radio.
3ueremos calcular la superf!c!e & el per1metro de un c1rculo$ una 'ez !ntroduc!do por teclado el
'alor del rad!o$ & escr!"!r los resultados. Se supone conoc!do Q ? 7.545F$ & que las frmulas
para la superf!c!e & el per1metro son4
Sup ? Q r
6
& Per ? 6 Q r s!endo r el 'alor del rad!o.
PSEUDOCDIGO
Bl#orit"o &irc3lo
89 Declaracin de la constante ,I5 Se declara co"o constante porI3e s3
alor no a a ca"biar598
&onst
,I = .51;1=
89 Declaracin de ariables5 De tipo real para I3e ad"itan deci"ales598
Var
RadioC S3per!icieC ,er/"etro ' real
Inicio
89 ,ide I3e se !acilite el alor del Radio 98
Radio Valor le/do por teclado
89 &o"pr3eba si el alor del Radio es correcto 98
Si el alor del Radio no es 3n entero positio oler a pedirlo5
En caso contrario contin3ar con el paso si#3iente5
89 &alc3la"os la s3per!icie y el per/"etro se#$n la !r"3la 98
S3per!icie ,I 9 Radio 9 Radio
,er/"etro 2 9 ,I 9 Radio
89 Escribi"os los res3ltados 98
Escribir 12El c/rc3lo de radio 4 C Radio C 2 tiene 3na s3per!icie de
4 C S3per!icie C 2 y 3n per/"etro de 4 C ,er/"etro6
Fin
Puedes 'er dos e%emplos de la e%ecuc!n de este al#or!tmo en la s!mulac!n del arc(!'o Pseudocodigo_RB.00). En el
pr!mero de los e%emplos el func!onam!ento es !nmed!ato &a que se !ntroduce 'alor 4 para el rad!o del c1rculo. En el
se#undo el rad!o que se !ntroduce es errneo & de"e 'ol'er a ped!rlo.
Inicio Inicio
Bedir el radio
Calcular Ber@metro
< pi C > C radio
Calcular Ber@metro
< pi C > C radio
Calcular uper:icie
< pi C radio C radio
Calcular uper:icie
< pi C radio C radio
#ostrar
Ber@metro
A uper:icie
#ostrar
Ber@metro
A uper:icie
"in "in
%&'()*RAMA
D
Es v?lido
E
3o
i
D
Es v?lido
E
3o
i
Intercambio del valor de dos variables.
Se trata de una operac!n mu& "s!ca$ pero frecuente. Suponemos que tenemos dos
'ar!a"les de t!po entero$ - & R$ a las que se les (a dado un 'alor cualqu!era desde
teclado$ & que queremos !ntercam"!ar sus 'alores de forma que en - s!empre quede el
menor de los dos 'alores !ntroduc!dos. Como sal!da$ de"e escr!"!rse el 'alor que ten1an
!n!c!almente - & R & de nue'o los 'alores de - & R una 'ez ordenados.
PSEUDOCDIGO
Bl#orit"o Interca"bioVariables
Var BC JC B3%iliar ' entero
89 B3%iliar se 3sa para poder interca"biar los alores sin perder
nin#3no598
Inicio
7eer B
7eer J
89 Bl escribirC separa"os entre co"as los distintos ele"entos I3e
I3ere"os escribir5 7o I3e a entre co"illas es 3n literal I3e se escribe
tal y co"o est05 7o I3e no llea co"illasC es 3na ariableC constante o
e%presin I3e se s3stit3ye al escribir por s3 alor 98
Escribir 12Inicial"ente B= 4C B C 2 y J= 4C J6
89 Si B es "ayor I3e JC se interca"bian s3s aloresC y si no lo esC no es
necesario hacer nada especialC ya est0n ordenados 98
Si 1B > J6 Entonces
B3%iliar B 89 Se copia en B3%iliar el alor de B 98
B J 89 Se escribe en B el alor de JC I3e s3stit3ye a
s3 anterior alor 98
J B3%iliar 89 Se escribe en J el alor de B3%iliarC
I3e es 3na copia del alor inicial de B 98
Fin-Si
Escribir 12Desp3Ks de ordenar B= 4C B C 2 y J= 4C J6
Fin
Inicio Inicio
Bedir A A F Bedir A A F
#ostrar A A F
ordenados
"in "in
%&'()*RAMA
D
on v?lidos
E
3o
i
D
on v?lidos
E
3o
i
D
A 4 F
E
3o
i
#ostrar A A F
AuGiliar A AuGiliar A
A F A F
F AuGiliar F AuGiliar
Calcular la media de varias notas le@das desde teclado.
3ueremos calcular la med!a de 'ar!as notas que se !ntroducen desde teclado. - pr!or! no sa"emos cuntas notas 'an a
leerse$ por lo que lo pr!mero que (aremos en nuestro al#or!tmo es pre#untarlo .leer un n,mero pos!t!'o que nos !nd!que
cuntas son/. - cont!nuac!n las leeremos$ descartando los 'alores que no sean correctos$ calcularemos la med!a &
escr!"!remos su 'alor en pantalla.
PSEUDOCDIGO
Bl#orit"o Media)otas
Var
cantidad)otasC contadorC notaC s3"aDotalC "edia ' real
89 7a "edia y las notas p3eden tener deci"ales 98
Inicio
89 Se repite la lect3ra de la cantidad de notas hasta I3e sea 3n alor positio 98
Repetir
7eer cantidad)otas
Hasta cantidad)otas > A
s3"aDotal A 89 Se inicialiLa s3"aDotal al alor cero 98
89 Se hace 3n b3cle I3e se repite tantas eces co"o se indiI3e en cantidad)otas 98
Desde contador = 1 hasta cantidad)otas paso 1
7eer nota 89 7ee"os la pri"era nota98
89 Mientras I3e sea 3na nota errneaC se rechaLa y se 3ele a leer otra nota 98
Mientras nota < A + nota > 1A hacer
Escribir 12)ota errnea5Valor "/ni"o A y "0%i"o 1A5 V3ela a introd3cir la nota46
7eer nota
Fin-Mientras
89 Desp3Ks de cada nota correcta le/da se ac3"3la a la s3"a total 98
s3"aDotal s3"aDotal E nota
Fin-Desde
89 3na eL le/das todas las notas correcta"enteC calc3la"os la "edia 98
"edia s3"atotal 8 cantidad)otas
89 Final"ente escribi"os adec3ada"ente el res3ltado 98
Escribir 127a "edia de las 4 C cantidad)otasC 2 notas le/das es 4 C "edia6
Fin
Inicio
&eer cantidad+otas
cantidad+otas ,-
3o
.ontador/
.ontador0,cantidad+otas
i
&eer +ota
i
+ota0-
nota,/-
Escribir nota
errnea
&eer +ota
i
3o
Sumatotalsumatotal 1 nota
.ontador contador 1 /
3o
Mediasumatotal 2cantidad notas
Escribir media
%in
%&'()*RAMA
Lectura de 1,, nmeros= indicando cantidad de positivos= negativos A nulos=
calculando la suma de cada tipo.
3ueremos leer una ser!e de 5NN n,meros enteros desde teclado$ !nd!cando cuntos de ellos son pos!t!'os$ cuntos
ne#at!'os$ & cuntos cero. Tam"!0n se p!de calcular la suma de los ne#at!'os$ la suma de los pos!t!'os & su med!a$ & la
suma de los 5NN. Se desea mostrar con'en!entemente los 'alores calculados.
PSEUDOCDIGO:
Bl#orit"o S3"a,ositios)e#atios)3los
Var
&ontadorC n3"eroC n,ositiosC n)e#atiosC n&erosC s3"a,ositiosC s3"a)e#atiosC s3"aDotal '
entero
"edia,ositios ' real 89 7a "edia la a"os a calc3lar con deci"ales 98
Inicio
89 InicialiLa"os todas las ariables ac3"3ladoras para ase#3rarnos de I3e alen cero 98
s3"a,ositios A
s3"a)e#atios A
s3"aDotal A
"edia,ositios A
n)e#atios A
n,ositios A
n&eros A
89 Repeti"os 3n b3cle 1AA ecesC leyendo en cada iteracin 3n n$"ero y clasi!ic0ndolo y
act3aliLando los ac3"3ladores I3e correspondan 98
Desde contador = 1 hasta 1AA paso 1
7eer n3"ero
89 Bc3"3la"os el alor del n$"eroC es decirC a la s3"a total le s3"a"os el n3"ero I3e
acaba"os de leer 98
s3"aDotal s3"aDotal E n3"ero
89 &o"proba"os si el n$"ero es ne#atio5 Si lo es conta"os 3n positio "0s y lo
s3"a"os a
la s3"a de los positios598
Si n3"ero < A entonces
n)e#atios n)e#atios E 1
s3"a)e#atios s3"a)e#atios E n3"ero
89 Si no es ne#atioC co"proba"os si es cero5 Si lo es conta"os 3n cero "0s598
Si no
Si n3"ero = A entonces
n&eros n&eros E 1
89 Si no es ne#atio ni es ceroC tiene I3e ser positio5 S3"a"os 3n positio "0s y
ac3"3la"os el n$"ero a la s3"a de positios 98
Si no
n,ositios n,ositios E 1
s3"a,ositios s3"a,ositios E n3"ero
Fin-Si
Fin-Si
Fin-Desde
89 Mna eL le/dosC clasi!icados y ac3"3lados los 1AA n$"erosC calc3la"os la "edia de los
positios encontrados 98
"edia,ositios s3"a,ositios 8 n,ositios
89 N !inal"ente escribi"os los res3ltados 98
Escribir 1 2En total se han le/do 4 C n,ositios C 2 n$"eros positiosC 4 C ne#atios C
2n$"eros ne#atios y 2 C n&eros C 2ceros46
Escribir 127os positios s3"an 4 C s3"a,ositios C 2 y s3 "edia es 4 C "edia,ositios6
Escribir 127os ne#atios s3"an 4 C s3"a)e#atios6
Escribir 127a s3"a de los 1AA n$"eros le/dos es 4 C s3"aDotal6
Fin
Inicio
umaBositivos ,
uma3egativos,
uma2otal ,
mediaBositivos ,
n3egativos ,
nBositivos ,
nCeros ,
Contador < 1= 1,,=1
Leer numero
suma2otal suma2otal6numero
3umero 4 ,
3umero < ,
i
3o
i
nBositivos nBositivos61
umaBositivos sumaBositivos6numero
3o
nCeros nCeros 6 1
n3egativos n3egativos61
uma3egativossuma3egativos6numero
mediaBositivos sumaBositivosHnBositivos
Escribir nBositivos= n3egativos= nCeros=
sumaBositivos= suma negativos= suma2otal
"in
"L78+9RA#A
Leer nmeros positivos A contar: cu?ntos son pares A cu?ntos impares.
El pr!nc!pal pro"lema de este e%erc!c!o es que no sa"emos cuntos n,meros 'amos a rec!"!r & adems que es prec!so
d!st!n#u!r entre pares e !mpares .para ello de"e comparar el resto de d!'!d!r el n,mero por 6/. Por ,lt!mo es necesar!o
ut!l!zar una 'ar!a"le para contar pares & otra para contar !mpares.
3ueremos leer n,meros pos!t!'os para 'er s! son pares o !mpares$ contando cuntos se leen de cada t!po & calculando la
suma de cada t!po & la suma del total de n,meros pos!t!'os le1dos. Tam"!0n contaremos cuntos n,meros pos!t!'os (emos
le1do en total. Los n,meros ne#at!'os sern rec(azados$ & estaremos le&endo n,meros (asta que se lea un cero. El 'alor
cero lo usaremos como *centinela+ para sa"er cundo tenemos que sal!r del "ucle que nos lee cada n,mero.
PSEUDOCDIGO
Bl#orit"o n3"eros,aresI"pares
Var
n3"eroC n)3"erosC total)3"erosC n,aresC total,aresC nI"paresC totalI"pares ' entero
Inicio
89 InicialiLa"os las ariables a cero5 ,ara n3"ero no es necesario ya I3e la pri"era eL I3e lo 3sa"os
es :3sta"ente para darle 3n alor le/do desde teclado598
n)3"eros A
total)3"eros A
n,ares A
total,ares A
nI"pares A
totalI"pares A
89 7ee"os el pri"er n$"ero antes de entrar en el b3cle598
Escribir 12Introd3Lca 3n n$"ero positio o A para ter"inar46
7eer n3"ero
89 Mientras el n$"ero sea distinto de ceroC ole"os a hacer otra iteracin para leer otro n3eo
n$"ero5 7a pri"era eLC si el n$"ero I3e se ha le/do antes del b3cle es ceroC habre"os ter"inado sin
leer nin#$n n$"ero5 Si es distinto de ceroC hare"os 3na iteracin en la I3e procesa"os ese n$"ero
le/doC y al !inal lee"os otro n$"ero para la si#3iente iteracin598
Mientras n3"ero <> A hacer
89 &o"proba"os si el n$"ero le/do es ne#atio5 En caso a!ir"atioC lo descarta"osC y salta"os a la
sentencia de lect3ra del si#3iente n$"eroC para oler a leerlo598
Si n3"ero < A entonces
Escribir 12ERR+R' Debe introd3cir 3n n$"ero positio o cero5 V3ela a intentarlo46
89 Si no es ne#atioC lo procesa"os con nor"alidadC ya I3e es 3n n$"ero positio5 )o p3ede ser 3n cero
porI3e si la $lti"a lect3ra !3e de 3n ceroC al co"probar la condicin del b3cleC ser/a !alsa y no
habr/a"os entrado en Kl5 Si esta"os en este p3ntoC es porI3e he"os entradoC l3e#o no era 3n cero 98
Si no
total)3"eros total)3"eros E n3"ero
n)3"eros n)3"eros E 1
89 Si el resto de diidir el n3"ero entre 2 1operador "d3lo6 es ceroC I3iere decir I3e se trata de 3n
n$"ero par5 En caso contrarioC ser0 i"par598
Si 1n3"ero "od 26 = A entonces
n,ares npares E 1
total,ares total,ares E n3"ero
Si no
nI"pares nI"pares E 1
totalI"pares totalI"pares E n3"ero
Fin-Si
Fin-Si
89 7ect3ra del n$"ero para la si#3iente iteracin 98
Escribir 12Introd3Lca 3n n$"ero positio o A para ter"inar46
7eer n3"ero
Fin-Mientras
89 Escrit3ra de los res3ltados 98
Escribir12Se han le/do 4 C n)3"erosC 2n$"eros positiosC de los I3e 4 C n,ares C 2son pares y 4C
nI"pares C 2 son i"pares46
Escribir 127a s3"a de los pares es 4Ctotal,aresC4 y la s3"a de los i"pares es 4 C totalI"pares C
45 7a s3"a total es 4 Ctotal)3"eros6
Fin
Inicio
n3umeros ,
total3umeros ,
nBares ,
totalBares ,
nImpares ,
totalImpares ,
Escribir IntroduIca numJ,
, para terminar
Leer numero
numero 4J,
Escribir error numero 4 ,
numero K><<,
nImpares nImpares 6 1
totalImpares totalImpares 6 numero
Escribir IntroduIca otro numero!
Leer numero
Escribir n3umeros= nBares= nImpares=
totalBares= totalImpares=total3umeros
"in
nBares nBares 6 1
totalBares totalBares 6 numero
i
i
3o
3o
3o
C?lculo del sueldo neto= en :uncin de las .oras traba;adas A de los impuestos
a deducir.
La d!f!cultad de este e%erc!c!o rad!ca en que ut!l!za un ele'ado n,mero de 'ar!a"les & frmulas que es necesar!o usar
adecuadamente.
3ueremos (acer un al#or!tmo para calcular el sueldo neto semanal de un tra"a%ador & la deducc!n por !mpuestos a
apl!carle en func!n de las (oras tra"a%adas en esa semana. Se supone que se !ntroducen por teclado el n,mero de (oras
tra"a%adas en la semana %unto al nom"re del tra"a%ador. Las (oras se pa#an a tar!fa normal (asta las pr!meras 4N (oras$ &
como tar!fa e)tra las que pasen de esa cant!dad. La tar!fa normal es de P$8 S la (ora. La tar!fa e)tra es un 8NT ms cara que
la tar!fa normal. 9na 'ez calculado el sueldo "ruto se calculan los !mpuestos a deduc!r$ ten!endo en cuenta lo s!#u!ente4
Los pr!meros 58N S semanales no pa#an !mpuestos.
Los s!#u!entes 58N S pa#an una tasa de !mpuestos del 58T
El resto de salar!o pa#a una tasa de !mpuestos del 78T
Se neces!ta escr!"!r como sal!da el nom"re del tra"a%ador$ su sueldo "ruto$ los !mpuestos a pa#ar & el sueldo neto.
PSEUDOCDIGO
Bl#orit"o &alc3loDelS3eldo
&onst
tari!a)or"al = >5<
Var
no"breE"pleado ' &adena
horas ' entero
s3eldoJr3to C s3eldo)etoC i"p3estos ' real
Inicio
7eer no"breE"pleado
7eer horas
89 7as pri"eras ;A horas se pa#an a tari!a nor"al598
Si horas <;A entonces
s3eldoJr3to horas 9 tari!a)or"al
89 7as pri"eras ;A horas se pa#an a tari!a nor"al y el resto a 1C< eces la tari!a nor"al598
Si no
s3eldoJr3to ;A 9 tari!a)or"al E 1horas -;A6 9 tari!a)or"al 9 15<
Fin-Si
89 7os pri"eros 1<A O no pa#an i"p3estos 98
Si s3eldoJr3to <= 1<A entonces
i"p3estos A
Si no
89 Si el s3eldo br3to es "ayor de 1<A O pero "enor o i#3al I3e .AAC todo lo I3e pase de 1<A pa#a 3nos
i"p3estos del 1<P 98
Si s3eldoJr3to <= .AA entonces
i"p3estos A51< 9 1s3eldoJr3to Q 1<A6
89 Si el s3eldo es "ayor I3e .AAC los pri"eros 1<A O no pa#an i"p3estosC los si#3ientes 1<A hasta
lle#ar a .AA pa#an el 1<P y el resto pa#an el .<P 98
Si no
I"p3estos 1<A 9A51< E 1s3eldoJr3to -.AA6 9 A5.<
Fin-Si
Fin-Si
89 El s3eldo neto se calc3la rest0ndole los i"p3estos al s3eldo br3to 98
s3eldo)eto s3eldoJr3to Q i"p3estos
89 Salida de los res3ltados 98
Escribir 1no"breE"pleado C 2S3eldo Jr3to = 4C s3eldoJr3to C 25 Retencin i"p3estos = 4 C
i"p3estos C 25 SB7BRI+ )ED+ = 4C s3eldo)eto C 2546
Fin
Leer nombreEmpleado
.oras 4 %, .oras 4 %,
Inicio Inicio
Leer .oras Leer .oras
sueldoFruto .oras C tari:a3ormal
sueldoFruto %, C tari:a3ormal 6 /.oras L %,1 C tari:a3ormal C 1.&
i 3o
ueldoFruto 41&, Impuestos ,
i
ueldoFruto 45,,
i
3o
Impuestos ,.1& C/ sueldoFruto L 1&,1
Impuestos 1&,C ,.1&6/ sueldoFruto L 5,,1C,.5&
sueldo3eto sueldoFruto - Impuestos
Escribir nombreEmpleado= sueldoFruto=
impuestos= sueldo3eto
"in "in
"L78+9RA#A
C?lculo del :actorial de un nmero entero positivo o nulo.
El factor!al se calcula como un producto de 'alores que 'amos calculando al restar 5 al resultado anter!or. Lo ms
compl!cado es ut!l!zar el "ucle controlado por un contador descendente.
3ueremos calcular el factor!al de un n,mero entero le1do desde teclado. -unque e)!ste una soluc!n %ecu%si1' para este
pro"lema$ no es la que apl!caremos aqu1. En su lu#ar usaremos la soluc!n !terat!'a. .poster!ormente en una un!dad
ded!cada a la recurs!'!dad se anal!zar con detalle el concepto de %ecu%si1id'd/.
El factor!al de un n,mero entero pos!t!'o o nulo n se def!ne como4
nU ? 5 $ s! n 'ale N
nU ? n D .n-5/ D .n-6/ D .n-7/ D
C
D 6 D 5 $ s! n I ?5
PSEUDOCDIGO
Bl#orit"o Factorial
Var
nC !actorialC contador ' entero
Inicio
89 RealiLa"os la pri"era lect3ra 98
Escribir 12Introd3Lca 3n n$"ero positio o n3lo para calc3lar s3 !actorial46
7eer n
89 Si el n$"ero le/do es ne#atioC y "ientras I3e los I3e si#a"os leyendo lo si#an siendoC ser0
descartado y 3elto a leer5 ,or tantoC no saldrK del b3cle hasta haber le/do 3n n$"ero "ayor o i#3al a
cero598
Mientras n <A hacer
Escribir 12ERR+R' slo se ad"iten n$"eros positios o n3los para el c0lc3lo del !actorial5
V3ela a introd3cir el n$"ero46
7eer n
Fin-Mientras
89 InicialiLa"os !actorial a 1 para I3e al "3ltiplicar la pri"era eL ten#a"os el res3ltado correcto
98
!actorial = 1
89 contador a a ser 3sado para ir to"ando los alores nC n-1C n-2C ( I3e son los !actores I3e hay I3e
ir "3ltiplicando para calc3lar el !actorial5 ,or eso lo inicialiLa"os al alor de nC y en cada
iteracin del b3cle repetir ire"os decre"ent0ndolo en 3na 3nidad para ir "3ltiplicando por 3n n3eo
!actor598
contador n
89 Si el n$"ero es distinto de ceroC calc3la"os el alor de !actorial con el ciclo repetirC en el I3e
e"peLa"os "3ltiplicando por contadorC inicialiLado al alor de n5 Si es ceroC no tene"os I3e hacer
nadaC p3esto I3e s3 !actorial ale 1C I3e es :3sta"ente el alor de inicialiLacin de la ariable
!actorial598
Si n <> A entonces
Repetir
!actorial !actorial 9 contador
contador contador Q 1
Hasta contador = A
Fin-Si
89 Escrit3ra del res3ltado 98
Escribir 1nC 2R = 4 C !actorial6
Fin
Escribir IntroduIca numero
n 4 ,
Inicio
Leer n
Escribir Error
Leer n
"actorial1
contador n
n 4J ,
:actorial :actorial C contador
contador contador - 1
Contador < ,
i
3o
i
3o
i
3o
Escribir :actorial
"in
"L78+9RA#A
C?lculo de las soluciones reales de una ecuacin de segundo grado.
Vste es un e%erc!c!o t1p!co de pro#ramac!n$ &a que de"!do al resultado o"ten!do en el d!scr!m!nante de la frmula las
soluc!ones o"ten!das pueden 'ar!ar desde dos ra1ces reales a no tener n!n#una. Presta atenc!n a la forma en que se tratan
las frmulas.
Dada una ecuac!n de se#undo #rado con la forma #eneral a3
4
1 b3 1 c 5 -$ & le1dos desde teclado los 'alores de sus
coef!c!entes .a# b# c/$ se qu!ere determ!nar s! t!ene soluc!n real o no$ & s! t!ene soluc!n$ calcularla & escr!"!rla. La
frmula de la ecuac!n de se#undo #rado se supone conoc!da4 3 5 67b 8 Rai9.uadrada6b
4
: ;<a<c== 2 64<a=
PSEUDOCDIGO
Bl#orit"o Ec3acionSe#3ndoSrado
Var
aC bC cC discri"inanteC %1C %2' real
Inicio
7eer a
7eer b
7eer c
Si a = A entonces 89 )o es de se#3ndo #rado 98
Si b = A entonces 89 )i siI3iera es 3na ec3acin 98
Escribir 12Error' )o es 3na ec3acinC y por tanto no tiene sol3cin46
Si no 89 De pri"er #rado b%Ec=A 98
%1 -c8b
Escribir 12Real"ente es 3na ec3acin de pri"er #radoC c3ya sol3cin es %= 4C %16
Fin-Si
Si no 89 De se#3ndo #rado 98
discri"inante b9b Q ;9a9c
Si discri"inante = A entonces
%1 -b8129a6
Escribir 12Slo tiene 3na sol3cinC a3nI3e es dobleC I3e es %= 4 C %16
Si no 89 Discri"inante distinto de cero 98
Si discri"inante > A 89 distinto de cero y ade"0s positio 98
%1 1-b E RaiL&3adrada1discri"inante668129a6
%2 1-b - RaiL&3adrada1discri"inante668129a6
Escribir12Diene dos sol3ciones si"plesC I3e son %1= 4 C %1 C 2 y %2= 4 C %26
Si no 89 discri"inante distinto de ceroC pero ne#atioC por lo I3e no se p3ede calc3lar s3
ra/L c3adrada dentro de los n$"eros reales 98
Escribir 12)o tiene sol3cin realC a3nI3e s/ se podr/a resoler en el con:3nto de n$"eros &o"ple:os46
Fin-Si
Fin-Si
Fin-Si
Fin
Escribir la ecuacin slo
tiene una solucin!= G1
Inicio
Leer a= b= c Leer a= b= c
a<, a<, b<, b<,
discriminante bCb L %CaCc
discriminante<,
G1-bH/>Ca1
Escribir la ecuacin slo
tiene una solucin!= G1
discriminanteJ,
M1/-b 6 //discriminante1N/-1H>11H>Ca1
M>/-b - //discriminante1N/-1H>11H>Ca1
Escribir la ecuacin tiene
dos soluciones!= G1= G>
Escribir la ecuacin no
tiene solucin!
G1-cHb
Escribir no es ecuacin A
no tiene solucin!
%in %in
S! No
S!
No
S!
No
S!
No
%&'()*RAMA

You might also like