Você está na página 1de 38

Captulo

Pseudocdigo

Variables

Palabras reservadas

Constantes

Operadores

Funciones

Estructura secuencial

Estructura selectiva simple

Variables especiales

Estructura repetitiva

14

Captulo 2 Pseudocdigo

l pseudocdigo es una herramienta para estructurar o


disear aplicaciones para computadora, sin importar el SO o
lenguaje de programacin a utilizar. Es decir que una
aplicacin escrita en pseudocdigo puede servir de gua para
escribir una aplicacin en Visual Basic, C++, Fortran, Turbo Pascal,
Delphi o cualquier otro lenguaje para Windows, o lo puedo
utilizar para Kilyx, Lazarus, u otro lenguaje en Ubuntu -SO de
software libre-.
A travs de los pseudocdigos se escriben -en papel y lpiz- todas
las lneas que una aplicacin debe realizar para cumplir con el
propsito del programa. Como estas instrucciones se escriben en
papel, su revisin, ejecucin y modificacin los realiza no una
computadora sino una persona. Para poder escribirlos y para que
sean entendidos por cualquier usuario, existen unas pocas reglas de
sintaxis.
El pseudocdigo es la gran chuleta que utilizaremos a la hora de
estar transcribiendo las instrucciones al lenguaje de programacin
seleccionado, para que por fin pueda ser entendido y ejecutado
por una computadora.
Al momento de estar escribiendo las lneas del pseudocdigo, stas
deben ser escritas siguiendo la secuencia que sigue la informacin
en un sistema de computacin: ENTRADA, PROCESO y SALIDA. Es
decir que las primeras lneas correspondern a la lectura de todas
las variables que sean dato, a continuacin se escribirn las
instrucciones para realizar todos los clculos que la aplicacin debe
realizar y finalmente las ltimas lneas deben ser las que muestren
los resultados.
Para ello se necesita conocer de variables, palabra reservadas,
distintos operadores, funciones y estructuras de proceso.

Guillermo Imery

Palabras reservadas

15

Variables
Son letras, palabras, o secuencia de palabras con nmeros que se
utilizan para identificar los datos, respuestas o cualquier operacin.
Estas no son sensibles a las maysculas, es decir que una variable se
puede escribir en mayscula o minscula y siempre ser la misma,
as la variable SUMA ser la misma que la variable Suma o suma.
Generalmente el nombre de las variables tiene relacin con lo que
stas almacenan. Si se va almacenar el resultado de un producto
puedo llamar a la variable Prod, si almacenar el volumen de una
esfera, la puedo llamar Vesf, etc.

Palabras reservadas
Las palabras reservadas son palabras en espaol que tienen una
funcin especfica a la hora de estar escribiendo una aplicacin en
pseudocdigo. A continuacin se muestran las primeras palabras
reservadas:
Palabra

inicio
leer
escribir

Descripcin

Ejemplo

inicio del programa. Inicio de un bloque de


instrucciones
lectura de una variable dato
escritura de una variable respuesta

fin

fin de un bloque de instrucciones

fin.

fin del programa

leer A
escribir Suma

Guillermo Imery

16

Captulo 2 Pseudocdigo

Constantes
Valores aritmticos de uso cotidiano en expresiones de ingeniera.

Constante
pi

Descripcin
constante matemtica

Valor
3.14159

Operadores
Los operadores son generalmente smbolos o caracteres que tienen
una funcin especfica en el peseudocdigo. Hay diferentes tipos
de operadores: de asignacin, agrupacin, aritmticos, etc.

Operadores de asignacin
Existe un slo operador de este tipo, y es el que asigna el resultado
de una expresin algebraica -ubicada a la derecha del operador- a
una variable -que est a la izquierda del operador-.
Operador

Descripcin

Ejemplo

asignar el resultado de una expresin a una


variable

A B + 3

Guillermo Imery

Operadores aritmticos

17

Operadores de agrupacin
En lgebra hemos aprendido a utilizar tres signos de agrupacin:
parntesis, corchete y llave. Si necesitamos agrupar trminos o
expresiones en pseudocdigo, el nico operador de agrupacin
permitido son los parntesis.
Operador
()

Descripcin
Agrupacin de trminos

Ejemplo
(a +b)

Operadores aritmticos
Para indicar la realizacin de operaciones aritmticas se tienen los
siguientes operadores.
Operador

Descripcin

Ejemplo

suma

A +B

diferencia

A -B

producto

A *B

divisin real

A/B

div

cociente de divisin entera

A div B

mod

residuo de divisin entera

A mod B

Ejemplo,
Si A=7, B=3 y C=37, calcular:
a) A + B
b) b - c
c) A * b
d) A/B
e) raiz (a)
f) A div B g) a div c h) A mod B
i) C mod B
Guillermo Imery

18

Captulo 2 Pseudocdigo

a) A + B = 7 + 3 = 10
b) b - c = 3 - 37 = -34
c) A * b = 7 * 3 = 21
d) A/B = 7/3 = 2.3333
e) raiz (a) = raiz (7) = 2.64575
f) A div B = 7 div 3 = 2
g) a div c = 7 div 37 = 0
h) A mod B = 7 mod 3 = 1
i) C mod B = 37 mod 3 = 1
Operadores de relacin
Son los smbolos que se utilizan en las expresiones matemticas
para establecer la igualdad o desigualdad (inecuaciones) entre sus
variables. El resultado de expresiones con estos operadores es
booleano: verdadero o falso.
Operador

Descripcin

Ejemplo

>

mayor que

A >B

<

menor que

A <B

igual que

A =B

>=

mayor o igual que

A >= B

<=

menor o igual que

A <= B

<>

diferente que

A <> B

Ejemplo
Si A tiene valor de 3.4 y B valor de -5, determinar el valor de las
siguientes expresiones:
a) A > B
b) B >= a
c) -2A < B
a) A > B

3.4 > -5

Guillermo Imery

el resultado es verdadero

Operadores lgicos

b) B >= a
c) -2A < B

-5 >= 3.4
-2 (3.4) < -5

19

el resultado es falso
el resultado es verdadero

Operadores lgicos
Los operadores lgicos producen resultados booleanos y sus
operandos tambin son valores lgicos: verdadero o falso.
Las expresiones conectadas con operadores lgicos se evalan de
izquierda a derecha, hasta obtener un resultado booleano. Hay tres
operadores de este tipo, estos son:
Operador

Descripcin

y lgico. conjuncin

o lgico. disyuncin

no

negacin lgica

Para evaluar las expresiones lgicas, se tienen que utilizar las tablas
de la verdad a travs de las cuales se obtiene el valor de una
proposicin formada por dos componentes lgicos A y B.
La conjuncin es un operador que
opera sobre dos valores de verdad (A
y B), tpicamente los valores de verdad
de dos proposiciones, devolviendo el
valor de verdad verdadero cuando
ambas proposiciones son verdaderas,
y falso en cualquier otro caso
Guillermo Imery

Captulo 2 Pseudocdigo

20

La disyuncin es un operador que


opera sobre dos valores de verdad (A y
B), tpicamente los valores de verdad
de dos proposiciones, devolviendo el
valor de verdad verdadero cuando una
de las proposiciones es verdadera, o
cuando ambas lo son, y falso cuando
ambas son falsas.
La negacin es un operador que opera sobre
un nico valor de verdad (A), devolviendo el
valor contradictorio de la proposicin
considerada.

Otros operadores
Hay operadores que se utilizan para mejorar la comprensin de las
lneas escritas, escribiendo para ello comentarios antes o despus
de las instrucciones. Este operador no se procesa y no tienen efecto
alguno en los clculos o respuestas de las aplicaciones. Se escriben
slo para informar lo que se va a leer, calcular o responder en las las
lneas siguientes a ellos.
Para escribir un mensaje de texto, ste debe inscribirse entre
comillas simples.
Operador

Descripcin

//

comentario. Lnea no procesable

' '

inscribe mensaje de texto a escribir

Guillermo Imery

Ejemplo
// lectura de datos
' este es un mensaje de texto''

Funciones

21

Funciones
Estas son palabras que estn relacionadas con una operacin o
funcin matemtica, trigonomtrica, etc. Las ms utilizadas se
muestran a continuacin.

Funcin

Descripcin

raiz (x)

raz cuadrada de x

abs (x)

valor absoluto de x

ln (x)
exp (x)

logaritmo natural de x
constante de Euler (e=2.71828) elevada a la x

trunc (x)

parte entera de x

redon (x)

redondeo de x al entero ms cercano

sen (x)

seno de x

cos (x)

coseno de x

tan (x)

tangente de x

asen (x)

arco seno de x

acos (x)

arco coseno de x

atan (x)

arco tancente de x

Estructura Secuencial
Una pregunta que puede surgir al escribir un pseudocdigo es cmo
saber el orden de ejecucin de las lneas, ya que en un algoritmo el
orden viene dado por la numeracin de las lneas, en los diagramas
de flujo el orden de ejecucin viene dado por las lneas de conexin
entre las diferentes figuras del diagrama. En el pseudocdigo ni se
enumeran las lneas ni se utilizan flechas para indicar el siguiente
Guillermo Imery

22

Captulo 2 Pseudocdigo

paso, la ejecucin de las instrucciones es SECUENCIAL.


La ejecucin secuencial significa que las instrucciones se deben de
ejecutar una despus de la otra, empezando en el inicio de la
aplicacin y terminado en la ltima lnea de sta.
Como generalmente se escribe una instruccin en una lnea fsica, la
siguiente lnea a ejecutar ser la de abajo, as hasta llegar a la ltima,
desde la cabecera hasta el fondo (top-down).
Todas las primeras aplicaciones seguirn esta estructura. Eso quiere
decir que la primera lnea que se escribe en pseudocdigo es inicio
y la ltima fin. .
Ejemplo 1
Codifique una aplicacin en pseudocdigo que lea tres nmeros:
A, B y C. Y que calcule lo siguiente:
1) Suma de los nmeros
2) Cuadrado del primero menos cubo del tercero
Solucin
inicio
leer A
leer B
leer C
suma a + b + c
d a*a - c*c*c
escribir suma
escribir d
fin.
Guillermo Imery

Estructura secuencial

23

Ejemplo 2
Codifique una aplicacin en pseudocdigo que lea tres nmeros: A,
B y C. Y que calcule lo siguiente:
1) Suma de los nmeros
2) Cuadrado del primero menos cubo del tercero
Nota: Utilice comentarios
Solucin
// inicio de la aplicacin
inicio
// lectura de los datos
leer A
leer B
leer C
// inicio de todos los clculos
suma a + b + c
d a*a - c*c*c
// Las respuestas
escribir suma
escribir d
fin. //el fin del programa
Los comentarios no afectan la lectura, el clculo o las respuestas slo
sirve para documentar internamente su programa.

Guillermo Imery

24

Captulo 2 Pseudocdigo

Ejemplo 3
Codifique una aplicacin en pseudocdigo que lea tres nmeros:
A, B y C. Y que calcule lo siguiente:
1) Suma de los nmeros
2) Cuadrado del primero menos cubo del tercero
Nota: Utilice comentarios y documente la salida
Solucin
// inicio de la aplicacin
inicio
// lectura de los datos
leer A
leer B
leer C
// inicio de todos los clculos
suma a + b + c
d a*a - c*c*c
// Las respuestas
escribir La suma de los nmeros es = , suma
escribir Cuadrado de A menos cubo de C = , d
fin. //el fin del programa

Ejemplo 4
Codifique una aplicacin en pseudocdigo que lea el radio de una
esfera y el radio y altura de un cilindro. Y que calcule lo siguiente:
Guillermo Imery

Estructura secuencial

25

1) Volmenes de todas las figuras


2) Sumar las superficies totales
3) Volumen promedio
Solucin
// Leer variables dato
leer Resf
leer Rcil
leer Hcil
// 1) volumenes
Vesf 4/3*pi*resf*resf*resf
Vcil pi*rcil*rcil*hcil
// 2) Suma superficies totales
STesf 4*pi*resf*resf
STcil 2*pi*rcil*rcil + 2*pi*rcil*hcil
SST stesf + stcil
// 3) Volumen promedio
SVol Vcil + Vesf
Vprom svol/2
// Respuestas
escribir Volumen esfera = , Vesf
escribir Volumen cilindro = , Vcil
escribir Suma superficies totales = , SST
escribir Volumen promedio = , VPROM
fin.
Guillermo Imery

26

Captulo 2 Pseudocdigo

Estructura selectiva simple


Algunas veces los programas tienen que realizar unas instrucciones
dependiendo de las situaciones planteadas. Por ejemplo, si se va a
calcular la raz cuadrada de un valor se tiene que tomar en cuenta
que el valor debe ser mayor o igual que cero, en caso contrario se
genera un error de clculo. Para que no se genere ese error, las
aplicaciones deben tener la capacidad de no hacer ciertas
instrucciones en ciertas circunstancias y hacer otras. Para que se
pueda decidir qu hacer en ciertas situaciones se cuenta con la
estructura selectiva simple.
A travs de esta estructura la computadora puede decidir qu hacer
en situaciones especficas, para ello tienen que preguntar acerca de
la situacin analizada y en base a la respuesta -verdadera o falsa- el
realizar un grupo de instrucciones o ninguna instruccin.
Sintaxis
Para escribir en pseudocdigo una estructura simple, se tienen las
siguientes instrucciones generales

si condicin lgica
entonces
inicio
instrucciones
fin
finsi

Guillermo Imery

Estructura selectiva simple

27

El inicio de una estructura selectiva simple es la palabra SI, seguida


de la condicin lgica a travs de la cual se evala el evento
analizado.
La condicin lgica es la pregunta que se formula y puede ser una
funcin lgica, variable lgica o una inecuacin. Lo ms frecuente
es utilizar una inecuacin para formular la pregunta.
La palabra ENTONCES indica el inicio de las instrucciones que se
deben de realizar si la condicin lgica resultara verdadera. Las
instrucciones a realizar se debe de colocar en un bloque de
instrucciones, las cuales comienzan con un INICIO y terminan con
un FIN. A esta parte de la estructura se le conoce como rama
verdadera.
La palabra FINSI indica la finalizacin de la estructura selectiva
simple.

Estructura selectiva doble


En la estructura simple, el programa hace un grupo de instrucciones,
si la condicin analizada resulta verdadera, en caso contrario no
hace instruccin alguna. Pero algunas veces los programas tienen
que realizar unas instrucciones si la condicin es verdadera y si la
condicin resulta falsa realiza otras instrucciones. Por ejemplo, si
quiero calcular la suma de A mas B cuando A sea mayor que B y
quiero calcular el producto de ambos, en caso contrario, entonces
tengo que utilizar una selectiva doble para indicar qu debe hacer
cuando la condicin es verdad y qu hacer cuando sea falsa.
A travs de esta estructura la computadora puede decidir qu hacer
en situaciones especficas, para ello tienen que preguntar acerca de
la situacin analizada y en base a la respuesta -verdadera o falsa- el
Guillermo Imery

28

Captulo 2 Pseudocdigo

realizar un grupo de instrucciones u otro grupo de instrucciones.


Sintaxis
Para escribir en pseudocdigo una estructura simple, se tienen las
siguientes instrucciones
si condicin lgica
entonces
inicio
instrucciones
fin
sino
inicio
instrucciones
fin
finsi
La palabra SINO indica el inicio de las instrucciones a realizar si la
condicin resultase falsa. Igualmente, las instrucciones se inscriben
en un bloque. A esta parte se le conoce como rama falsa.
La palabra FINSI indica la finalizacin de la estructura selectiva
doble.
En una aplicacin pueden haber ms de una estructura selectiva y
en casos ms complejos hasta una dentro de alguna de las ramas de
otra.

Guillermo Imery

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

141

Captulo 8

Ciclos
Ya hemos utilizado no solo esta palabra sino una estructura asociada que nos permite representar
un conjunto de instrucciones que debe repetirse una cantidad determinada de veces, normalmente,
dependiente de una condicin. Los ciclos nos van a permitir iterar todo un proceso tantas veces
como nosotros ( el usuario) lo determinemos.

Concepto General

Un ciclo puede definirse como una estructura que nos permite repetir o iterar un conjunto de
instrucciones y que tiene las siguientes caractersticas:

a.
b.

c.
d.

El conjunto de instrucciones debe ser finito


La cantidad de veces que se repita dicho conjunto de instrucciones tambin debe ser finita. En
algunos casos esta cantidad de veces va a depender de una condicin explcita y en otros
casos va a depender de una condicin implcita. Una condicin es explcita cuando depende
solamente de la misma ejecucin del programa sin que sea importante la participacin del
usuario. Asimismo una condicin es implcita cuando depende solamente de la voluntad del
usuario y por lo tanto la cantidad de iteraciones o repeticiones del ciclo podra llegar a ser
diferente cada vez pues sera posible que cambiara con cada usuario.
Deben estar claramente demarcados el inicio y el fin del ciclo. En los casos en los cuales solo
exista una instruccin a iterar, no sern necesarios dichas marcas.
Dentro de un ciclo podr ir cualquiera de las otras estructuras que se han estudiado incluyendo
otros ciclos.

142

Captulo 8 - Ciclos

Vamos a desarrollar un ejemplo sin ciclos para notar la gran utilidad de estructurar nuestros
algoritmos con ciclos.

Ejemplo
Mostrar los nmeros del 1 al 100 de 1 en 1.

Versin Ineficiente No.1

Programa Vers_Inef_1
Inicio
Escriba 1
Escriba 2
Escriba 3
Escriba 4
Escriba 5
Escriba 6
Escriba 7
Escriba 8
Escriba 9
Escriba 10
Escriba 11
Escriba 12
Escriba 13
Escriba 14
Escriba 15
Escriba 16
Escriba 17
.
.
.
.
.
Escriba 98
Escriba 99
Escriba 100
Fin

Como puede ver en esta versin no se han utilizado variables y los puntos suspensivos
representan toda esa cantidad de instrucciones que hacen falta pues en total seran 100
instrucciones Escriba. Es evidente que se logra el objetivo planteado pero que tal que en vez de ir
el enunciado hasta 100 fuera hasta 1000 o fuera hasta 10000. Nuestro algoritmo se convertira no
solo en una cantidad ineficiente de instrucciones sino que adems por cada vez que existiera una
modificacin prcticamente tendra que existir un algoritmo diferente pues tendramos que
adicionarle mas y mas lneas de rdenes. Veamos a continuacin otra forma ineficiente de
solucionar este mismo problema sin utilizar ciclos.

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

Versin Ineficiente No. 2

Programa Vers_Inef_2
Variables
Entero :
N
Inicio
N=1
Escriba N
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
.
.
.
.
Si N < = 100
N=N+1
Escriba N
Si N < = 100
N=N+1
Escriba N
Fin

Como puede ver, tendramos que escribir 99 veces el esquema

143

144

Captulo 8 - Ciclos

Si N < = 100
N=N+1
Escriba N

Para poder lograr el objetivo con lo cual esta segunda versin ineficiente resultara ser mucho mas
larga que la anterior y, dada la gran cantidad de decisiones que debe tomar el computador, sera a
su vez mas ineficiente. Lo que si podemos hacer es tomar el esquema repetitivo de esta ltima
versin y escribirlo dentro de un ciclo que controle que se repita dicho esquema hasta cuando se
hayan escrito todos los nmeros enteros de 1 a 100 de 1 en 1,

Cmo lo haremos...? Pues muy sencillo. Simplemente note que tenemos que decirle al
computador que inicie una variable en 1 y que mientras el contenido de esta variable sea menor o
igual que 100 que escriba su contenido y que lo incremente en 1. De esta manera el contenido de
la variable ir de 1 en 1 desde 1 hasta 100 escribiendo cada vez que cambie de nmero es decir
cumpliendo el objetivo planteado. Note usted que acabo de decirle el algoritmo informal ahora todo
lo que tenemos que hacer es llevarlo a un algoritmo tcnico para que posteriormente sea fcil
codificarlo en un Lenguaje de Programacin. De manera que la siguiente es la versin tcnica
eficiente de la solucin al enunciado planteado

Versin Eficiente con Ciclos

Programa Nums_1_100
Variables
Entero :N
Inicio
N=1
Mientras N < = 100
Escriba N
N=N+1
Fin_mientras
Fin

Evidentemente el algoritmo as presentado es mucho mas claro. No se puede negar que tanto sta
solucin como las dems soluciones, a pesar de ser ineficientes, tambin cumplen con el objetivo
planteado. Acerca de esta versin podemos hacer algunas reflexiones

a.
b.
c.
d.

e.

f.

Es mucho mas fcil de codificar en un determinado Lenguaje de Programacin pues es una


solucin mucho mas compacta
Es mucho mas entendible y por lo tanto es mucho mas fcil de concebir como solucin
No necesita muchas lneas de cdigo para lograr el objetivo
Cuando necesiten mostrar los nmeros del 1 al 10000 todo lo que tenemos que hacer es
cambiar el nmero 100 que aparece al inicio del ciclo por el nmero 10000 y el mismo
algoritmo funcionar bien. No tendremos necesidad de adicionar lneas de cdigo.
Cuando necesiten mostrar los nmeros del 45 al 951 simplemente tendremos que reemplazar
la lnea que dice N = 1 por N = 45 y en donde aparece el nmero 100 cambiarlo por el nmero
951 y el algoritmo lograr bien este nuevo objetivo.
Finalmente la solucin planteado con ciclos al enunciado Mostrar los nmeros del 1 al 100 de 1
en 1 se ha convertido en una solucin mucho mas genrica que cambiando los valores tope

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

145

del mismo ciclo ser Mostrar todos los enteros comprendidos entre dos nmeros asumiendo
que el primer nmero es el menor y el segundo es el mayor.

Con estas reflexiones podemos justificar plenamente la utilizacin de ciclos dentro de un algoritmo
y, en lo posible, buscar hacer un uso muy eficiente de esta estructura.

Tipos de Ciclos

Solo para facilitar la escritura de algunos algoritmos y con el nimo de que desde el balcn de la
lgica de programacin se puedan tener mas herramientas que faciliten la estructuracin de los
ciclos, la mayora de los lenguajes de programacin tienen tres formas de presentacin de los
ciclos, ellas son:
a.
b.
c.

Ciclo Mientras
Ciclo Para
Ciclo Haga Hasta

Precisamente vamos a revisar la estructura de construccin de cada uno de los ciclos tal como son
concebidos por la mayora de lenguajes de programacin y posteriormente los utilizaremos para
representar el mismo algoritmo con cada una de las estructuras.

a.- Ciclo Mientras


Este es el ciclo que hemos utilizado desde que comenzamos a hablar de algoritmos. Es el
esquema general de trabajo para todos los ciclos, esto quiere decir que si usted entiende
claramente la lgica de funcionamiento de este ciclo se le va a facilitar entender no solo los otros
ciclos que aqu se explican sino cualquier otro ciclo que encuentre en algn otro libro de Lgica de
Programacin. Es til que sepa que este ciclo tambin es llamado en algunos libros el Ciclo
Mientras Que pero su filosofa es la misma del Ciclo Mientras que vamos a explicar aqu y que
hemos venido utilizando.

Su estructura general es la siguiente

Mientras Condicin
.
.
Cuerpo del Ciclo
.
.
Fin_Mientras

146

Captulo 8 - Ciclos

Su forma de ejecucin (textualmente explicada) es muy sencilla: Mientras se cumpla que la


condicin sea Verdadera entonces se ejecutar el Cuerpo del Ciclo. De manera que tambin
podramos decir que el Cuerpo del Ciclo se repetir tantas veces como lo permita la condicin o
mientras dicha condicin sea Verdadera. En condiciones normales la cantidad de veces que se
repita el cuerpo del ciclo ser siempre una cantidad finita y deber existir, dentro del mismo cuerpo
del ciclo, una o mas instrucciones que nos permitan aproximarnos a la condicin o sea que
propendan porque en algn momento la condicin sea Falsa.

b.- Ciclo Para


El ciclo Para tiene la siguiente estructura

Para Var = tope_inicial hasta tope_final Paso Valor


.
.
Cuerpo del Ciclo
.
.
Fin_Para

En este ciclo su forma de ejecucin es la siguiente : Var representa una variable que va a tomar
valores iniciando en tope_inicial y terminando en tope_final avanzando con un Paso de Valor. En
los casos en los que no se especifica el valor del paso la mayora de los lenguajes de
programacin asume el incremente de 1. El Cuerpo del Ciclo se ejecutar una vez por cada valor
que tome la variable Var. Veamos con un ejemplo cul sera la aplicacin de este ciclo.

Ejemplo
Escribir los nmeros impares comprendidos entre 1 y 20.

Es evidente que este ejemplo lo podemos desarrollar usando el ciclo mientras pero para efectos
didcticos lo vamos a desarrollar usando el ciclo Para.

Programa Ejem_Ciclo_Para
Variables
Entero :Num
Inicio
Para Num = 1 hasta 20 Paso 2
Escriba Num
Fin_Para
Fin

Puede usted notar que este algoritmo es muy breve gracias a la presencia del ciclo Para en su
contexto ya que si se hubiera estructurado utilizando el ciclo Mientras, una versin de solucin
hubiera podido ser la siguiente

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

147

Programa Ejem_Ciclo_Mientras
Variables
Entero :Num
Inicio
Num = 1
Mientras Num < = 20
Escriba Num
Num = Num + 2
Fin_Mientras
Fin

Ambas versiones logran el mismo objetivo lo cual significa que ambas versiones son correctas. Es
importante anotar que dentro de lo normal cada ciclo siempre va a tener una variable que es la que
almacena el valor de inicio del ciclo, es la que va a estar presente en la evaluacin de la condicin
y es la que se incrementa para que en algn momento la condicin sea Falsa. Es evidente que
esta variable es muy importante por ello ste tipo de variables de ha caracterizado con el nombre
de Indice del Ciclo. Podramos decir que el ndice del ciclo es la variable que permite la ejecucin
del cuerpo del ciclo. Un ciclo puede llegar a tener varios ndices al tiempo.

Como los ndices no son mas que variables entonces varios ciclos pueden tener el mismo ndice
siempre que se utilice ste en un ciclo solo hasta cuando haya terminado la ejecucin del ciclo
anterior.

c.- Ciclo Haga Hasta


Esta es otra de las otra de las formas que traen algunos de los lenguajes de programacin para
expresar un ciclo. Su estructura general es la siguiente

Haga
.
.
.
Cuerpo del Ciclo
.
.
.
Hasta Condicin

En este ciclo el Cuerpo del mismo se va a ejecutar hasta cuando se cumpla una condicin esto
quiere decir que el conjunto de instrucciones que conforman el cuerpo del ciclo se va a repetir
mientras la evaluacin de la condicin sea Falsa. Es un ciclo muy parecido al Ciclo Mientras con la
diferencia de que en ste la instrucciones se repiten Mientras la condicin sea Falsa y no
verdadera como sera en el Ciclo Mientras.

148

Captulo 8 - Ciclos

d. Ciclo Haga Mientras


Muy parecido al esquema anterior, algunos lenguajes de programacin cuentan con esta otra
estructura para representar un ciclo

Haga
.
.
.
Cuerpo del Ciclo
.
.
.
Mientras Condicin

Podra decirse que esta es una inversin de la estructura del ciclo mientras. En este ciclo el cuerpo
del mismo se repite mientras la condicin sea Verdadera y su nica diferencia con el ciclo Mientras
es que en el Ciclo Haga Mientras primero se ejecuta el cuerpo del ciclo y luego se evala la
condicin en cambio en el ciclo Mientras primero se evala la condicin y luego se ejecuta el
cuerpo del ciclo.

Ejemplos Usando Todas Las Estructuras De Ciclos

1. Leer un nmero entero y determinar cuntos dgitos tiene


Es til recordar que los datos enteros se manejan con aritmtica entera, concepto que ser muy til
para la concepcin de este algoritmo ya que la cantidad de dgitos que tiene un nmero entero es
igual a la cantidad de veces que se pueda dividir el nmero entre 10 sin que el cociente sea cero.
Entonces lo que vamos a hacer en este algoritmo es leer un nmero, inicializar una variable (que
actuar como contador_de_dgitos), dividir progresivamente el nmero entre 10 hasta cuando sea
igual a cero y por cada vez que se divida entre 10 vamos a incrementar el contenido de la variable
contador_de_dgitos en 1. De esta manera cuando el nmero haya llegado a cero tendremos en la
variable contador_de_dgitos la cantidad de dgitos que originalmente tena el nmero.

En caso de que el nmero original sea negativo tambin funciona esta lgica. No se olvide que
siempre que vaya desarrollar un algoritmo primero debe clarificar el objetivo para que sepa hacia
donde va y hasta donde debe llegar.

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

149

a. Usando Ciclo Mientras

Programa Ejemplo_1
Variables
Entero : Numero, Cuenta_Digitos
Inicio
Escriba Digite un nmero entero
Lea Numero

// Declara Variables
// Solicita un dato entero
// Lee un entero y lo almacena
// en la variable Numero

Cuenta_Digitos = 0

// Inicializa el contador en ceros

Mientras Numero < > 0


Numero = Numero / 10
Cuenta_Digitos = Cuenta_Digitos + 1
Fin_Mientras

// Mientras Numero sea diferente de 0


//Divida entre 10
// y cuente

Escriba Tiene , Cuenta_Digitos, dgitos

// Escriba la cantidad de dgitos

Fin

Note usted que al lado derecho del algoritmo tcnico est prcticamente escrito el algoritmo
informal para mayor claridad al momento que usted le desarrolle una prueba de escritorio.
Igualmente la doble barra inclinada ( // ) representa el inicio de un comentario. Los comentarios son
textos explicativos de las rdenes o de bloque de rdenes de los algoritmos. No tienen incidencia
en su ejecucin. Todos los lenguajes tienen un equivalente para escribir comentarios. En nuestro
caso vamos a utilizar la doble barra inclinada que es utilizada en Lenguaje C.

b. Usando Ciclo Para


Este algoritmo no es fcilmente implementable con un ciclo Para. Tenga en cuenta que la
utilizacin de uno y otro ciclo es precisamente para que se haga mucho mas sencilla la
implementacin de su algoritmo. La razn por la cual no es fcilmente implementable con este ciclo
se remite a su estructura ya que este ciclo necesita un valor exacto de inicio, un valor exacto de
finalizacin y un incremento y en este caso no es fcil encontrar estos tres valores.

c. Usando Ciclo Haga Hasta

Programa Ejemplo_1
Variables
Entero : Numero, Cuenta_Digitos
Inicio
Escriba Digite un nmero

// Declaracin de Variables
// Ttulo de Aviso

150

Captulo 8 - Ciclos

Lea Numero

// Lea un entero y gurdelo en Numero

Cuenta_Digitos = 0

// Inicializa Cuenta_Digitos en 0

Haga

// Inicia el ciclo
// Divida entre 10
// y cuente

Numero = Numero / 10
Cuenta_Digitos = Cuenta_Digitos + 1
Hasta que Numero = 0

// Hasta que Numero sea igual a 0

Escriba Tiene , Cuenta_Digitos, Dgitos

// Escriba el resultado solicitado

Fin

Cabe anotar que la estructuracin de un algoritmo utilizando un Ciclo Haga Hasta implica razonar
muy bien la condicin del ciclo ya que como puede verse es diferente a la condicin utilizada en el
ciclo mientras.

Ciclo Mientras
Ciclo Haga Hasta

Mientras Numero < > 0


Hasta que Numero = 0

Normalmente si realizamos dos soluciones para un mismo algoritmo pero en una de ellas
utilizamos un Ciclo Mientras y en otro utilizamos un Ciclo Haga Hasta, podramos decir que las
condiciones deben ser contrarias (a nivel lgico).

d. Usando Ciclo Haga Mientras

Programa Ejemplo_1
Variables
Entero : Numero, Cuenta_Digitos
Inicio
Escriba Digite un nmero
Lea Numero

// Ttulo de Aviso
// Lea un entero y gurdelo en Numero

Cuenta_Digitos = 0

// Inicializa Cuenta_Digitos en 0

Haga

// Inicia el ciclo
// Divida entre 10
// y cuente

Numero = Numero / 10
Cuenta_Digitos = Cuenta_Digitos + 1

Fin

// Declaracin de Variables

Mientras Numero > 0

// Mientras el Nmero sea mayor que 0

Escriba Tiene , Cuenta_Digitos, Dgitos

// Escriba el resultado solicitado

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

151

Esta versin es muy aproximada a la anterior pero la condicin esta vez es diferente. Tenga en
cuenta que utilizar cualquier estructura de ciclos requiere razonar muy bien la condicin que se ha
de usar para que, a nivel lgico, el algoritmo entregue los resultados esperados.

2. Leer dos nmeros enteros y mostrar


comprendidos entre el menor y el mayor

todos

los

enteros

En este ejemplo vamos a generar todos los nmeros enteros comprendidos entre dos nmeros
ledos. Ntese que el algoritmo en ningn momento nos indica cul es el mayor y cul es el menor,
lo cual significa que tenemos que averiguarlo antes de generar los nmeros porque lo que el
algoritmo s dice es que deben escribirse ascendentemente (ya que reza mostrar los enteros
comprendidos entre el menor y el mayor). Verifique si el objetivo es completamente claro para
usted y de esta forma ahora s puede revisar las soluciones aqu planteadas a este ejemplo.

Conceptualmente, primero vamos a detectar cul de los dos nmeros es el menor y cul es el
mayor. Luego haremos una variable Auxiliar igual al nmero menor y a medida que la vayamos
incrementando en 1 vamos a ir escribiendo su contenido hasta cuando esta variable alcance el
valor del nmero mayor.

a. Usando Ciclo Mientras

Programa Ejemplo_2
Variables
Entero : Numero1, Numero2, Auxiliar
Inicio
Escriba Digite un Entero
Lea Numero1

// Declaracin de Variables
// Solicita el primero nmero
// Lo lee y lo almacena en Numero1

Escriba Digite otro Entero


Lea Numero2

// Solicita el segundo nmero


// Lo lee y lo almacena en Numero2

Si Numero1 < Numero2

// Si el primer nmero es el menor

Auxiliar = Numero1

// Haga Auxiliar igual a Numero1

Mientras Auxiliar < = Numero2


Escriba Auxiliar
Auxiliar = Auxiliar + 1
Fin_Mientras

// Mientras Auxiliar sea <= Numero2


// Escriba el contenido de Auxiliar
// e incremente Auxiliar

Fin_Si
Si Numero2 > Numero1
Auxiliar = Numero2
Mientras Auxiliar < = Numero1
Escriba Auxiliar
Auxiliar = Auxiliar + 1
Fin_Mientras

//
//
//
//
//

Si el segundo nmero es el menor


Haga Auxiliar igual a Numero2
Mientras Auxiliar sea <= Numero2
Escriba el contenido de Auxiliar
e incremente Auxiliar

152

Captulo 8 - Ciclos

Fin_Si
Si Numero1 = Numero2
// Si los dos nmeros son iguales
Escriba Los nmeros son iguales
// Avise que son iguales
Fin

b. Usando Ciclo Para

Programa Ejemplo_2
Variables
Entero : Num1, Num2, Aux
Inicio
Escriba Digite un Entero
Lea Num1
Escriba Digite otro Entero
Lea Num2

// Declaracin de variables
// Solicita el primero nmero
// Lo lee y lo almacena en Num1
// Solicita el segundo nmero
// Lo lee y lo almacena en Num2

Si Num1 < Num2


// Si Num1 es el menor
Para Aux = Num1 hasta Num2 Paso 1 // Haga que Aux vaya de Num1 a
// Num2 de 1 en 1
Escriba Auxiliar
// y escriba cada valor de Aux
Fin_Si
Si Num2 < Num1
// Si Num2 es el menor
Para Aux = Num2 hasta Num1 Paso 1 // Haga que Aux vaya de Num2 a
// Num1 de 1 en 1
Escriba Auxiliar
// y escriba cada valor de Aux
Fin_Si
Si Num1 = Num2
Escriba Los nmeros son iguales
Fin_Si
Fin

c. Usando Ciclo Haga Hasta


Programa Ejemplo_2
Variables
Entero : Num1, Num2, Aux
Inicio

// Si los dos nmeros son iguales


// Avise que son iguales

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

Escriba Digite un Entero


Lea Num1

// Solicita el primero nmero


// Lo lee y lo almacena en Num1

Escriba Digite otro Entero


Lea Num2

// Solicita el segundo nmero


// Lo lee y lo almacena en Num2

Si Num1 < Num2


Aux = Num1
Haga
Escriba Aux
Aux = Aux + 1
Hasta que Aux = Num2
Fin_Si

// Si Num1 es el menor
// Inicie Aux con el valor de Num1

Si Num2 < Num1


Aux = Num2
Haga
Escriba Aux
Aux = Aux + 1
Hasta que Aux = Num1

// Si Num2 es el menor
// Inicie Aux con el valor de Num2

Si Num1 = Num2
Escriba Los nmeros son iguales

// Si los dos nmeros son iguales


// Avise que son iguales

// Escriba el contenido de Aux


// e incremente dicho contenido
// Hasta que Aux alcance a Num2

// Escriba el contenido de Aux


// e incremente dicho contenido
// Hasta que Aux alcance a Num1

Fin

d. Usando Ciclo Haga Mientras

Programa Ejemplo_2
Variables
Entero : Num1, Num2, Aux
Inicio
Escriba Digite un Entero
Lea Num1

// Solicita el primero nmero


// Lo lee y lo almacena en Num1

Escriba Digite otro Entero


Lea Num2

// Solicita el segundo nmero


// Lo lee y lo almacena en Num2

Si Num1 < Num2


Aux = Num1
Haga
Escriba Aux
Aux = Aux + 1
Mientras Aux <= Num2
Fin_Si

// Si Num1 es el menor
// Inicie Aux con el valor de Num1

Si Num2 < Num1


Aux = Num2
Haga
Escriba Aux
Aux = Aux + 1

// Si Num2 es el menor
// Inicie Aux con el valor de Num2

// Escriba el contenido de Aux


// e incremente dicho contenido
// Mientras que Aux sea <= Num2

// Escriba el contenido de Aux


// e incremente dicho contenido

153

154

Captulo 8 - Ciclos

Mientras Aux <= Num1

// Mientras que Aux sea <= Num1

Si Num1 = Num2
Escriba Los nmeros son iguales

// Si los dos nmeros son iguales


// Avise que son iguales

Fin

3. Leer dos nmeros enteros y determinar cual de los dos tiene mas
dgitos
Para la solucin de este problema podemos remitirnos al algoritmo que nos permita saber cuntos
dgitos tena un nmero ya que en el fondo ste es casi lo mismo. Fundamentalmente el objetivo de
este es contar los dgitos que tiene un nmero, luego contar los dgitos que tiene otro nmero y
comparar ambos resultados para decir cul de los dos tiene mas dgitos.

a. Usando Ciclo Mientras

Programa Ejemplo_3
Variables
Entero :

Num1,
Num2,
Aux1,
Aux2,
ContDig1,
ContDig2

//
//
//
//
//
//

Almacenar el primer nmero


Almacenar el segundo nmero
Almacenar provisionalmente a Num1
Almacenar provisionalmente a Num2
Almacenar la cantidad de dgitos de Num1
Almacenar la cantidad de dgitos de Num2

Inicio
Escriba Digite un entero
Lea Num1

// Solicita un dato entero


// Lo lee y lo almacena en Num1

Escriba Digite otro entero


Lea Num2

// Solicita otro dato entero


// Lo lee y lo almacena en Num2

Aux1 = Num1
ContDig1 = 0

// Almacene en Aux1 el contenido de Num1


// Inicialice ContDig1 en 0

Mientras Aux1 < > 0


Aux1 = Aux1 / 10
ContDig1 = ContDig1 + 1
Fin_Mientras

// Mientras Aux1 sea difte. de cero


// Divida Aux1 entre 10
// y cuente

Aux2 = Num2
ContDig2 = 0

// Almacene en Aux2 el contenido de Num2


// Inicialice ContDig2 en 0

Mientras Aux2 < > 0


Aux2 = Aux2 / 10

// Mientras Aux2 sea difte. de cero


// Divida Aux2 entre 10

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

ContDig2 = ContDig2 + 1
Fin_Mientras

155

// y cuente

Si ContDig1 > ContDig2


// Si el primer nmero tiene mas dgitos
Escriba Num1, tiene mas dgitos que , Num2
// Avise
Si ContDig1 < ContDig2
// Si el segundo nmero tiene mas dgitos
Escriba Num2, tiene mas dgitos que , Num1
// Avise
Si ContDig1 = ContDig2

// Si los dos nmeros tienen la misma cantidad


// de dgitos
Escriba Num1, tiene la misma cantidad de dgitos que , Num2
// Avise

Fin

Como puede ver nos hemos basado en el algoritmo que determinaba cuntos dgitos tena un
nmero para desarrollar este algoritmo.

b. Usando Ciclo Para


Este algoritmo no es implementable con un Ciclo Para por las mismas razones que no era
implementable el algoritmo en el cual nos basamos para desarrollar esta solucin. Debo anotar que
en casos muy particulares como el Lenguaje C este algoritmo es implementable pero debido a que
la filosofa de este lenguaje en cuanto al Ciclo Para es un poquito diferente y adems porque las
herramientas de programacin que brinda este lenguaje son un poco mas flexible que en otros
lenguajes.

c. Usando Ciclo Haga Hasta


Programa Ejemplo_3
Variables
Entero :

Num1,
Num2,
Aux1,
Aux2,
ContDig1,
ContDig2

//
//
//
//
//
//

Almacenar el primer nmero


Almacenar el segundo nmero
Almacenar provisionalmente a Num1
Almacenar provisionalmente a Num2
Almacenar la cantidad de dgitos de Num1
Almacenar la cantidad de dgitos de Num2

Inicio
Escriba Digite un entero
Lea Num1

// Solicita un dato entero


// Lo lee y lo almacena en Num1

Escriba Digite otro entero


Lea Num2

// Solicita otro dato entero


// Lo lee y lo almacena en Num2

Aux1 = Num1

// Almacena en Aux1 el contenido de Num1

156

Captulo 8 - Ciclos

ContDig1 = 0

// Inicialice ContDig1 en 0

Haga
Aux1 = Aux1 / 10
ContDig1 = ContDig1 +1
Hasta que Aux1 = 0

// Divida Aux1 entre 10


// y cuente
// Hasta que Aux1 sea igual a 0

Aux2 = Num2
ContDig2 = 0

// Almacena en Aux2 el contenido de Num2


// Inicialice ContDig2 en 0

Haga
Aux2 = Aux2 / 10
ContDig2 = ContDig2 +1
Hasta que Aux2 = 0

// Divida Aux2 entre 10


// y cuente
// Hasta que Aux2 sea igual a 0

Si ContDig1 > ContDig2


// Si el primer nmero tiene mas dgitos
Escriba Num1, tiene mas dgitos que , Num2
// Avise
Si ContDig1 < ContDig2
// Si el segundo nmero tiene mas dgitos
Escriba Num2, tiene mas dgitos que , Num1
// Avise
Si ContDig1 = ContDig2

// Si los dos nmeros tienen la misma cantidad


// de dgitos
Escriba Num1, tiene la misma cantidad de dgitos que , Num2
// Avise

Fin

d. Usando Ciclo Haga Mientras


Programa Ejemplo_3
Variables
Entero :

Num1,
Num2,
Aux1,
Aux2,
ContDig1,
ContDig2

//
//
//
//
//
//

Almacenar el primer nmero


Almacenar el segundo nmero
Almacenar provisionalmente a Num1
Almacenar provisionalmente a Num2
Almacenar la cantidad de dgitos de Num1
Almacenar la cantidad de dgitos de Num2

Inicio
Escriba Digite un entero
Lea Num1

// Solicita un dato entero


// Lo lee y lo almacena en Num1

Escriba Digite otro entero


Lea Num2

// Solicita otro dato entero


// Lo lee y lo almacena en Num2

Aux1 = Num1
ContDig1 = 0

// Almacena en Aux1 el contenido de Num1


// Inicialice ContDig1 en 0

Haga
Aux1 = Aux1 / 10

// Divida Aux1 entre 10

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

ContDig1 = ContDig1 +1
Mientras Aux1 < > 0

// y cuente
// Mientras Aux1 sea diferente de cero

Aux2 = Num2
ContDig2 = 0

// Almacena en Aux2 el contenido de Num2


// Inicialice ContDig2 en cero

157

Haga
Aux2 = Aux2 / 10
ContDig2 = ContDig2 +1
Mientras Aux2 < > 0

// Divida Aux2 entre 10


// y cuente
// mientras Aux2 sea diferente de cero

Si ContDig1 > ContDig2


// Si el primer nmero tiene mas dgitos
Escriba Num1, tiene mas dgitos que , Num2
// Avise
Si ContDig1 < ContDig2
// Si el segundo nmero tiene mas dgitos
Escriba Num2, tiene mas dgitos que , Num1
// Avise
Si ContDig1 = ContDig2

// Si los dos nmeros tienen la misma cantidad


// de dgitos
Escriba Num1, tiene la misma cantidad de dgitos que , Num2
// Avise

Fin

4. Leer nmeros enteros hasta que digiten 0 y determinar a cunto es


igual el promedio de los nmeros ledos que hayan sido positivos.

De nuevo y al igual que en todos los ejercicios vamos a clarificar el objetivo. Necesitamos leer
nmeros enteros y a medida que vamos leyendo estos nmeros los vamos contando y los vamos
acumulando en sendas variables. Cuando digiten el nmero 0 eso significar que en ese momento
debemos obtener el resultado entero de dividir el resultado de haber acumulado todos los nmeros
entre el resultado de haberlos contado es decir lo que vamos a dividir es la sumatoria de nmeros
entre la cantidad de nmeros y ese resultado es lo que debemos mostrar en pantalla porque es el
dato que nos estn solicitando.

a. Usando Ciclo Mientras


Programa Ejemplo_4
Variables
Entero :Num,
Acum,
Cont
Real :

Promedio

// Almacenar cada uno de los


// nmeros ledos
// Almacenar la suma de los nmeros
// ledos diferentes de cero
// Almacenar la cantidad de nmeros
// ledos diferentes de cero
// Almacenar el resultado de dividir la
// sumatoria de nmeros entre la
// cantidad de nmeros

158

Captulo 8 - Ciclos

Inicio
Acum = 0
Cont = 0

// Inicialice el acumulador en cero


// Inicialice el contador en cero

Escriba Digite enteros y finalice con 0


Lea Num

// Aviso para solicitar los nmeros


// Lea el primer nmero

Mientras Num < > 0


Si Num > 0
Acum = Acum + Num
Cont = Cont + 1
Fin_Si

// Mientras los nmeros que entren


// sean diferentes de cero
// Si el ltimo nmero ledo es positivo
// Acumule el ltimo nmero ledo
// y cuntelo

Lea Num
Fin_Mientras

// Lea un nuevo nmero

Promedio = Acum / Cont

// Calcule el promedio

Escriba El promedio es , Promedio

// Muestre el promedio en pantalla

Fin

Hemos utilizado la primera orden Lea Num para recibir el primer nmero y con esto poder entrar al
ciclo.

b. Usando Ciclo Para


Si se supiera con exactitud cuntos nmeros se van a leer entonces si sera implementable este
algoritmo con el ciclo Para pero como el algoritmo dice que Hasta que digiten 0 entonces este
algoritmo no es implementable con un ciclo Para.

c. Usando Ciclo Haga Hasta

Programa Ejemplo_4
Variables
Entero :Num,
Acum,
Cont
Real :

Promedio

// Almacenar cada uno de los


// nmeros ledos
// Almacenar la suma de los nmeros
// ledos diferentes de cero
// Almacenar la cantidad de nmeros
// ledos diferentes de cero
// Almacenar el resultado de dividir la
// sumatoria de nmeros entre la
// cantidad de nmeros

Inicio
Acum = 0
Cont = 0

// Inicialice el acumulador en cero


// Inicialice el contador en cero

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

Escriba Digite enteros y finalice con 0


Lea Num

159

// Aviso para solicitar los nmeros


// Lea el primer nmero

Haga
Acum = Acum + Num
Cont = Cont + 1
Lea Num
Hasta que Num = 0

// Acumule el ltimo nmero ledo


// Cuntelo
// Lea el siguiente nmero
// Hasta que el ltimo nmero ledo sea
// igual a 0

Promedio = Acum / Cont

// Calcule el promedio

Escriba El promedio es , Promedio

// Muestre el promedio en pantalla

Fin

d. Usando Ciclo Haga Mientras


Programa Ejemplo_4
Variables
Entero :Num,
Acum,
Cont
Real :

Promedio

// Almacenar cada uno de los


// nmeros ledos
// Almacenar la suma de los nmeros
// ledos diferentes de cero
// Almacenar la cantidad de nmeros
// ledos diferentes de cero
// Almacenar el resultado de dividir la
// sumatoria de nmeros entre la
// cantidad de nmeros

Inicio
Acum = 0
Cont = 0

// Inicialice el acumulador en cero


// Inicialice el contador en cero

Escriba Digite enteros y finalice con 0


Lea Num

// Aviso para solicitar los nmeros


// Lea el primer nmero

Haga
Acum = Acum + Num
Cont = Cont + 1
Lea Num
Mientras Num < > 0

Fin

// Acumule el ltimo nmero ledo


// Cuntelo
// Lea el siguiente nmero
// Mientras el ltimo nmero ledo sea
// diferente de 0

Promedio = Acum / Cont

// Calcule el promedio

Escriba El promedio es , Promedio

// Muestre el promedio en pantalla

160

Captulo 8 - Ciclos

5. Leer un nmero entero y calcular su factorial.

Primero que nada vamos a ver Qu es factorial de un nmero. Se define como Factorial de un
nmero N cualquiera, el resultado de multiplicar sucesivamente todos los enteros comprendidos
entre 1 y ese nmero N. No se aplica esta definicin cuando dicho nmero N es negativo y en caso
de que ese nmero N sea 0 se asume que el factorial de 0 es 1. De esta forma el factorial de 6 es
el resultado de multiplicar 1 * 2 * 3 * 4 * 5 * 6 lo cual nos da como resultado 720, igualmente el
factorial de 3 es igual a multiplicar 1 * 2 * 3 que es igual a 6, el factorial de 0 es 1 y el factorial de 8
no est definido o mejor no est incluido en la definicin.

Ya con esta definicin lo que tendremos que hacer es implementarla a nivel de un algoritmo. Para
ello primero que nada vamos a leer dicho nmero N y validando de que dicho nmero sea positivo,
utilizando otra variable a manera de contador, vamos a generar la secuencia de nmeros enteros
comprendida entre 1 y N solo que a medida que la vayamos generando vamos a ir multiplicando
los nmeros generados, resultado que ser almacenado en una variable Facto que ser la que al
final se mostrar en pantalla para cumplir con el objetivo del enunciado.

a. Usando Ciclo Mientras


Programa Ejemplo_5
Variables
Entero :N,

Cont,

Facto

// Almacenar el nmero ledo que es el


// nmero al cual se le quiere calcular el
// factorial
// Esta variable es la que nos va a permitir
// generar la secuencia de todos los enteros
// comprendidos entre 1 y el nmero ledo (a
// manera de contador)
// Almacenar el resultado del factorial

Inicio
Escriba Digite un nmero entero
Lea N

// Solicita un nmero entero


// Lo lee y lo almacena en N

Si N < 0
// Si el nmero es negativo entonces avisa
Escriba El factorial no est definido para nmeros negativos
Facto = 1
Cont = 1
Mientras Cont < = N
Facto = Facto * Cont
Cont = Cont + 1
Fin_Mientras

// Inicializa el factorial en 1
// Inicializa el contador en 1
// Mientras el contador sea menor que el
// nmero ledo
// Multiplique Facto por cada uno de los valores
// que tome Cont
// Incremente el valor de Cont

Escriba El factorial de , N, es , Facto


Fin

// Escriba el resultado

La Esencia de la Lgica de Programacin Omar Ivan Trejos Buritic

161

b. Usando Ciclo Para


Programa Ejemplo_5
Variables
Entero :N,

Cont,

Facto

// Almacenar el nmero ledo que es el


// nmero al cual se le quiere calcular el
// factorial
// Esta variable es la que nos va a permitir
// generar la secuencia de todos los enteros
// comprendidos entre 1 y el nmero ledo (a
// manera de contador)
// Almacenar el resultado del factorial

Inicio
Escriba Digite un nmero entero
Lea N

// Solicita un nmero entero


// Lo lee y lo almacena en N

Si N < 0
// Si el nmero es negativo entonces avisa
Escriba El factorial no est definido para nmeros negativos
Facto = 1

// Inicializa el factorial en 1

Para Cont = 1 hasta N (Paso 1)

// Genera la secuencia de nmeros enteros


// desde 1 hasta el nmero ledo de 1 en 1 y
// cada valor lo va almacenando en la Cont
// Multiplique Facto por cada uno de los valores
// que tome Cont

Facto = Facto * Cont


Fin_Para

Escriba El factorial de , N, es , Facto

// Escriba el resultado del factorial

Fin

c. Usando Ciclo Haga Hasta


Programa Ejemplo_5
Variables
Entero : N,

Cont,

Facto

// Almacenar el nmero ledo que es el


// nmero al cual se le quiere calcular el
// factorial
// Esta variable es la que nos va a permitir
// generar la secuencia de todos los enteros
// comprendidos entre 1 y el nmero ledo (a
// manera de contador)
// Almacenar el resultado del factorial

Inicio
Escriba Digite un nmero entero
Lea N

// Solicita un nmero entero


// Lo lee y lo almacena en N

Si N < 0

// Si el nmero es negativo entonces avisa

162

Captulo 8 - Ciclos

Escriba El factorial no est definido para nmeros negativos


Facto = 1
Cont = 1

// Inicializa el factorial en 1
// Inicializa el contador en 1

Haga
Facto = Facto * Cont
Cont = Cont + 1
Hasta que Cont > N

// Multiplique Facto por cada uno de los valores


// que vaya tomando Cont
// Incremente el valor de Cont
// Hasta que el valor almacenado en Cont sea
// mayor que el valor almacenado en N

Escriba El factorial de , N, es , Facto

// Escriba el resultado

Fin

d. Usando Ciclo Haga Mientras


Programa Ejemplo_5
Variables
Entero :N,

Cont,

Facto

// Almacenar el nmero ledo que es el


// nmero al cual se le quiere calcular el
// factorial
// Esta variable es la que nos va a permitir
// generar la secuencia de todos los enteros
// comprendidos entre 1 y el nmero ledo (a
// manera de contador)
// Almacenar el resultado del factorial

Inicio
Escriba Digite un nmero entero
Lea N

// Solicita un nmero entero


// Lo lee y lo almacena en N

Si N < 0
// Si el nmero es negativo entonces avisa
Escriba El factorial no est definido para nmeros negativos
Facto = 1
Cont = 1

// Inicializa el factorial en 1
// Inicializa el contador en 1

Haga
Facto = Facto * Cont
Cont = Cont + 1
Mientras Cont < = N

// Multiplique Facto por cada uno de los valores


// que vaya tomando Cont
// Incremente el valor de Cont
// Mientras que el valor almacenado en Cont
// sea menor o igual al valor almacenado en N

Escriba El factorial de , N, es , Facto


Fin

// Escriba el resultado

Você também pode gostar