You are on page 1of 24

Algoritmos

INDICE DE CONTENIDO
CAPTULO I. CONCEPTOS GENERALES
1.1 Introduccin

1.2 Definicin de Lenguaje

1.3 Definicin de Algoritmo

1.4 Tipos de Algoritmos

1.5 Lenguajes Algoritmicos. Pseudocdigo

1.5 Lenguajes Algoritmicos. Pseudocdigo

1.5 Lenguajes Algoritmicos. Pseudocdigo

1.5 Lenguajes Algoritmicos. Pseudocdigo

1.5 Lenguajes Algoritmicos. Pseudocdigo

1.5 Lenguajes Algoritmicos. Pseudocdigo

1.5 Lenguajes Algoritmicos. Pseudocdigo

1.5 Lenguajes Algoritmicos. Pseudocdigo

1.5 Lenguajes Algoritmicos. Pseudocdigo

CAPITULO II. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS


4
2.1 Tipos De Datos

2.2 Expresiones

2.3 Operadores y Operandos 4


2.3.1 Operadores Aritmticos.
2.3.2 Operadores Relacinales:
2.3.3 Operadores Lgicos: 5
2.4 Identificadores

4
5

2.5 Constantes y Variables


2.5.1 Variables.
6
2.5.2 Constante
7

CAPTULO III. ESTRUCTURAS ALGORITMICAS


3.1. Estructuras Secuenciales
3.1.1 Asignacin 8
3.1.2 Entrada
9
3.1.3 Salida
9
3.2 Estilo de programacin
Problemas Secuenciales

9
10

3.3 Estructuras de Condicionales


10
3.3.1 Simples
10
3.3.3 Mltiples
11
3.3.4 Uso de estructuras selectivas 12
Problemas Condicionales 12
3.4. Estructuras Cclicas o Repetitivas

12
0

3.4.1 Ciclos con un Numero Indeterminado de Iteraciones (Mientras, HacerMientras) 12


3.4.2 Uso de estructuras repetitivas
12
3.4.3 Hacer - mientras
12
3.4.4 Ciclos con un Numero Determinado de Iteraciones (Para)
12
CAPITULO iV. ALGORITMOS DE EJEMPLO 12
4.1 Ejemplo de uso de contadores y acumuladores
4.2 Uso de distintas estructuras repetitivas

12

4.3 Obtencin de mximos y mnimos

12

12

ANEXO - Convenciones de Pseudocdigo a utilizar 12


El desarrollo de algoritmos es un tema fundamental en el diseo de programas
por lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de
manera fcil y rpida sus programas.
Estos apuntes servirn de apoyo a los alumnos del Curso introductorio de la
Carrera de Analista de Sistemas de la U.T.N., y al estudiante le facilitar desarrollar su
capacidad analtica y creadora, para de esta manera mejorar su destreza en la
elaboracin de algoritmos que sirven como base para la codificacin de los diferentes
programas que tendr que desarrollar a lo largo de su carrera.
El desarrollo de algoritmos es un tema fundamental en el diseo de programas
por lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de
manera fcil y rpida sus programas.
Estos apuntes servirn de apoyo a los alumnos del Curso introductorio de la
Carrera de Analista de Sistemas de la U.T.N., y al estudiante le facilitar desarrollar su
capacidad analtica y creadora, para de esta manera mejorar su destreza en la
elaboracin de algoritmos que sirven como base para la codificacin de los diferentes
programas que tendr que desarrollar a lo largo de su carrera.
El desarrollo de algoritmos es un tema fundamental en el diseo de programas
por lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de
manera fcil y rpida sus programas.
Estos apuntes servirn de apoyo a los alumnos del Curso introductorio de la
Carrera de Analista de Sistemas de la U.T.N., y al estudiante le facilitar desarrollar su
capacidad analtica y creadora, para de esta manera mejorar su destreza en la
elaboracin de algoritmos que sirven como base para la codificacin de los diferentes
programas que tendr que desarrollar a lo largo de su carrera.
CAPTULO I. CONCEPTOS GENERALES
1.1 Introduccin
La computadora no solamente es una maquina que puede realizar procesos
para darnos resultados, sin que tengamos la nocin exacta de las operaciones que
realiza para llegar a esos resultados. Con la computadora adems de lo anterior tambin
podemos disear soluciones a la medida, de problemas especficos que se nos
presenten. Mas aun, si estos involucran operaciones matemticas complejas y/o
repetitivas, o requieren del manejo de un volumen muy grande de datos.
El diseo de soluciones a la medida de nuestros problemas, requiere como en
otras disciplinas una metodologa que nos ensee de manera gradual, la forma de llegar
a estas soluciones.
A las soluciones creadas por computadora se les conoce como programas y no
son mas que una serie de operaciones que realiza la computadora para llegar a un

resultado, con un grupo de datos especficos. Lo anterior nos lleva al razonamiento de


que un programa nos sirve para solucionar un problema especifico.
Para poder realizar programas, adems de conocer la metodologa mencionada,
tambin debemos de conocer, de manera especifica las funciones que puede realizar la
computadora y las formas en que se pueden manejar los elementos que hay en la
misma.
Computadora: Es un dispositivo electrnico utilizado para procesar informacin y
obtener resultados. Los datos y la informacin se pueden introducir en la computadora
como entrada (input) y a continuacin se procesan para producir una salida (output).
Proceso de informacin en la computadora

Datos de
entrada

Proceso

Datos de
salida

Programa: Es el conjunto de instrucciones escritas de algn lenguaje de programacin y


que ejecutadas secuencialmente resuelven un problema especifico.
1.2 Definicin de Lenguaje
Lenguaje: Es una serie de smbolos que sirven para transmitir uno o mas mensajes
(ideas) entre dos entidades diferentes. A la transmisin de mensajes se le conoce
comnmente como comunicacin.
La comunicacin es un proceso complejo que requiere una serie de reglas
simples, pero indispensables para poderse llevar a cabo. Las dos principales son las
siguientes:
Los mensajes deben correr en un sentido a la vez.
Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicacin y
Mensaje.
Lenguajes de Programacin
Es un conjunto de smbolos, caracteres y reglas (programas) que le permiten a
las personas comunicarse con la computadora.
Los lenguajes de programacin tienen un conjunto de instrucciones que nos
permiten realizar operaciones de entrada/salida, calculo, manipulacin de textos,
lgica/comparacin y almacenamiento/recuperacin.
1.3 Definicin de Algoritmo
La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe
alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado
sobre manipulacin de nmeros y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se
debe seguir, para dar solucin a un problema especifico.
Es un mtodo para resolver un problema mediante una serie de pasos precisos,
definidos y finitos.
Preciso: no se presta a interpretaciones ambiguas
Definido: si se siguen 2 o ms veces los pasos, se obtiene el mismo resultado cada
vez
Finito: tiene comienzo y fin; tiene un nmero determinado de pasos
Son ejemplos de algoritmos las instrucciones para hacer una receta de cocina, para usar
un electrodomstico, para obtener el m.c.m. de 2 nmeros, etc.
Los algoritmos se pueden expresar en forma de diagramas, por frmulas y en
PSEUDOCDIGO. Esta ltima herramienta es la ms usada en lenguajes estructurados
( como lenguaje C ).

Preciso
2

ALGORITMO

Definido
Finito

formado por

SENTENCIAS

Acciones que pueden ser ejecutadas

1.4 Tipos de Algoritmos


Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir
los pasos del proceso.
1.5 Lenguajes Algoritmicos. Pseudocdigo
Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma)
que se emplea, dentro de la programacin estructurada, para realizar el diseo de un
algoritmo. En esencial, el Pseudocdigo se puede definir como un lenguaje de
especificaciones de algoritmos.
Es la representacin narrativa de los pasos que debe seguir un algoritmo para
dar solucin a un problema determinado. El Pseudocdigo utiliza palabras que indican el
proceso a realizar.
Ventajas de utilizar un Pseudocdigo
Permite representar en forma fcil operaciones repetitivas complejas
Es muy fcil pasar de Pseudocdigo a un programa en algn lenguaje de
programacin.
Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operacin.
Diseo del Algoritmo
Las caractersticas de un buen algoritmo son:
Debe tener un punto particular de inicio.
Debe ser definido, no debe permitir dobles interpretaciones.
Debe ser general, es decir, soportar la mayora de las variantes que se puedan
presentar en la definicin del problema.
Debe ser finito en tamao y tiempo de ejecucin.
Existen varias herramientas para hacerlo, entre ellas Pseudocdigo.
CAPITULO II. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS
2.1 Tipos De Datos
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple
carcter, tal como b, un valor entero tal como 35. El tipo de dato determina la naturaleza
del conjunto de valores que puede tomar una variable.
2.2 Expresiones
Las expresiones son combinaciones de constantes, variables, smbolos de
operacin, parntesis y nombres de funciones especiales. Por ejemplo:
a+(b + 3)/c
Cada expresin toma un valor que se determina tomando los valores de las
variables y constantes implicadas y la ejecucin de las operaciones indicadas.
Una expresin consta de operadores y operandos. Segn sea el tipo de datos
que manipulan, se clasifican las expresiones en:
- Aritmticas
- Relacinales
- Lgicas
2.3 Operadores y Operandos

Operadores: Son elementos que relacionan de forma diferente, los valores de una o
mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores.
Aritmticos
Relacinales
Lgicos

Tipos de Operadores

2.3.1 Operadores Aritmticos.


Los operadores aritmticos permiten la realizacin de operaciones matemticas con los
valores (variables y constantes).
Los operadores aritmticos pueden ser utilizados con tipos de datos enteros o
reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el
resultado es real.
Operando (Operador) Operando
Valor
(constante o variable)
Operadores Aritmticos
+
Suma
Resta
*
Multiplicacin
/
Divisin
Mod
Modulo (residuo de la divisin entera)
Ejemplos:
Expresin Resultado
7*2
14
12 mod 7
5
4 +2*5
14
Prioridad de los Operadores Aritmticos
Todas las expresiones entre parntesis se evalan primero. Las expresiones con
parntesis anidados se evalan de dentro a fuera, el parntesis mas interno se evala
primero.
Dentro de una misma expresin los operadores se evalan en el siguiente orden.
1.- ^ Exponenciacin
2.- *, /, Multiplicacin, divisin, modulo.
3.- +, - Suma y resta.
Los operadores en una misma expresin con igual nivel de prioridad se evalan de
izquierda a derecha.
2.3.2 Operadores Relacinales:
Se utilizan para establecer una relacin entre dos valores.
Compara estos valores entre si y esta comparacin produce un resultado de certeza
o falsedad (verdadero o falso).
Los operadores relacinales comparan valores del mismo tipo (numricos o
cadenas)
Tienen el mismo nivel de prioridad en su evaluacin.
Los operadores relacinales tiene menor prioridad que los aritmticos.
Operadores Relacinales
>
Mayor que
<
Menor que
>=
Mayor o igual que
<=
Menor o igual que
<>
Diferente
4

=
Igual
Ejemplos:
Si a = 10, b = 20 y c = 30
a+b>c
a-b<c
a-b=c
a*b<>c

Falso
Verdadero
Falso
Verdadero

2.3.3 Operadores Lgicos:


Estos operadores se utilizan para establecer relaciones entre valores lgicos.
Estos valores pueden ser resultado de una expresin relacional.

And
Or
Not

Operadores Lgicos
Y
O
Negacin

Operador AND
Operando1 Operando2 Resultado
V
V
V
V
F
F
F
V
F
F
F
F

Operador OR
Operando1 Operando2 Resultado
V
V
V
V
F
V
F
V
V
F
F
F

Operador NOT
Operando Resultado
T
F
F
T

Ejemplos:
Si a = 10, b = 20 y c = 30
(a < b) and (b < c)
V and
V
V
Prioridad de los Operadores Lgicos
Not
And
Or
Prioridad de los Operadores en General
1.- ( )
2.- ^
3.- *, /, Mod, Not
4.- +, -, And
5.- >, <, > =, < =, < >, =, Or
Ejemplos:
Si a = 10, b = 12, c = 13 y d =10
1)

((a > b)or(a < c)) and ((a = c) or (a > = b))


F
V
F
F
V
F
F

2)

not (a = c) and (c > b)


F
V
V
V

2.4 Identificadores

Los identificadores representan los datos de un programa (constantes, variables,


tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar
una posicin en la memoria de la computadora, que nos permite acceder a su contenido.
Ejemplo:

Nombre
Num_hrs
Calif2

Reglas para formar un Identificador


Debe comenzar con una letra (A a Z, maysculas o minsculas) y no deben contener
espacios en blanco.
Letras, dgitos y el carcter guin ( - ) estn permitidos despus del primer carcter.
La longitud de identificadores. El nombre de un identificador debe ser descriptivo de
aquello que representa, y considerando adems la practicidad de su invocacin durante
el desarrollo del algoritmo. Si es muy extenso estaremos ms expuestos a errores al
nombrarlo.
2.5 Constantes y Variables
2.5.1 Variables.
Son objetos de un programa cuyo valor puede cambiar durante la ejecucin del
mismo. Datos que pueden sufrir modificaciones a lo largo de un programa. El cambio se
produce mediante sentencias ejecutables como por ejemplo la asignacin o el ingreso de
datos. Es en realidad una porcin (o posicin) de memoria con nombre que permite
almacenar temporalmente un dato durante la ejecucin de un proceso. Para poder
reconocer una variable en la memoria de la computadora, es necesario darle un nombre
con el cual podamos identificarla dentro de un algoritmo (a esto se lo denomina
Declaracin de variables). Al declararlas se reserva una posicin de memoria para la
misma, donde se almacenar el valor que toma cada variable en cada momento del
programa. El nombre de la posicin es el NOMBRE DE LA VARIABLE y el valor
almacenado es el VALOR DE LA VARIABLE. Las variables pueden ser de todos los tipos
de datos conocidos: entero, decimal, carcter, cadena de carcter.
Variables y constantes se unen por medio de los operadores aritmticos,
relacionales y lgicos constituyendo lo que se denomina una EXPRESIN.
2.5.2 Constante
Dato invariable a lo largo del programa. Es un valor que no puede cambiar
durante la ejecucin del programa; recibe un valor en el momento de la compilacin del
programa y este valor no puede ser modificado.
Literales: es un valor de cualquier tipo que se utiliza como tal
Ejemplo:
sup-triangulo base * altura * 1/2
1 y 2 son constantes literales
numricas: 5 , 3.14 , 4/3
carcter: S , N
cadena: Positivo
Nota: las constantes de carcter se escriben entre apstrofes o comillas simples y las de
cadena entre comillas. De este modo se las diferencia de los nombre de las variables.
Con nombre o declaradas. Se les asigna un nombre y un valor y no se lo modifica
durante el transcurso del porgrama. En C se acostumbra nombrar esta clase de
constantes con maysculas
Ejemplo:
Define constante PI valor 3.14
sup-circulo PI * r * r
El uso de constantes literales limita la flexibilidad del programa. Es conveniente el uso de
constantes con nombre.
6

Tipeadas. Nos referimos a los textos que aparecen como mensajes de salida en un
programa. Dichos mensajes son inalterables.
Ejemplo: Mostrar ("Hola")

CAPTULO III. ESTRUCTURAS ALGORITMICAS


Las estructuras de operacin de programas son un grupo de formas de trabajo,
que permiten, mediante la manipulacin de variables, realizar ciertos procesos
especficos que nos lleven a la solucin de problemas. Estas estructuras se clasifican de
acuerdo con su complejidad en:

Estructuras
algortmicas

Secuenciales

Asignacin
Entrada
Salida

Condicionales

Simples
Compuestas
Mltiples

Cclicas o
repetitivas

Repetir hasta (Hacer mientras)


Mientras
Para

3.1. Estructuras Secuenciales


La estructura secuencial es aquella en la que una accin (instruccin) sigue a
otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada
de la siguiente y as sucesivamente hasta el fin del proceso. Una estructura secuencial
se representa de la siguiente forma:
Comienzo
Accion1
Accion2
.
.
AccionN
Fin
3.1.1 Asignacin
La asignacin consiste, en el paso de valores o resultados a una zona de la
memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor.
variable expresin ( puede ser una variable, una constante, una expresin o frmula
a evaluar)
Ejemplos:
promedio suma /5
alumno nombre
cantidad-de-notas 5
Ejemplo de funcionamiento de la asignacin: en las variables transfiero el valor de B a A
20

50

A
(receptora)

B
(emisora)
A B

50

50

ASIGNACIN: la emisora mantiene su


valor y la receptora lo modifica, el dato
de la emisora reemplaza al valor anterior

Se pueden asignar operaciones Ej. A B * 2


La asignacin se puede clasificar de la siguiente forma:
Simples: Consiste en pasar un valor constante a una variable (a15)
Contador: Es una variable que se incrementa, cuando se ejecuta, en una unidad o
en una cantidad constante
contador contador + 1
multiplo multiplo + 3
Acumulador: Es una variable que se incrementa en una cantidad variable
suma suma + numero
Donde numero es una variable que recibe distintos valores
Considerar:
Una variable del lado derecho debe tener valor antes de que la sentencia se ejecute.
Si numero no tiene valor antes de:
suma suma + numero
Se produce un Error LGICO. Se dice que numero no se ha inicializado.
A la izquierda de una sentencia de asignacin slo puede haber variables. No puede
haber operaciones.
Nota: la operacin de asignacin es una operacin destructiva debido a que el valor
almacenado en una variable se pierde o destruye y se sustituye por el nuevo valor de
asignacin. Ejemplo
numero 16
numero -23
numero conservar el ltimo valor asignado, en este caso -23
3.1.2 Entrada
La entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el
teclado) un valor. Esta operacin se representa en pseudocodigo como sigue:
Leer (a )
Leer ( b )
Donde a y b son las variables que recibirn los valores
3.1.3 Salida
Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un
resultado o mensaje. Este proceso se representa en pseudocodigo como sigue:
Mostrar ( El resultado es:, R )
Donde El resultado es: es un mensaje que se desea aparezca y R es una variable que
contiene un valor.
3.2 Estilo de programacin
Antes de escribir los algoritmos de los ejercicios en Pseudocdigo considerar:
Un programa
legible y
comprensible

- Entender
- Corregir
- Mantener

Ms fcil de:
Seguir las siguientes sugerencias:

1. SANGRADO O INDENTACIN. En cada estructura, y alineando las instrucciones


(sentencias) dentro de cada una de ellas y dentro de todo el algoritmo (Comienzo,
Fin)
2. LNEAS EN BLANCO. Dejarlas entre partes importantes o que estn lgicamente
separadas. Recomendable luego de cada estructura (Repetitiva o Selectiva), luego de
declaracin de variables.
3. COMENTARIOS. Parte importante de la documentacin de un programa que permite
mayor comprensin del mismo. (luego lo haremos en C) En Pseudocdigo entre { }
4. NOMBRES SIGNIFICATIVOS DE IDENTIFICADORES. que representen aquello que
estamos tratando. Si son palabras compuestas usar guin comn. Todos deben
comenzar con una letra.
5. CADA SENTENCIA EN UNA LNEA DISTINTA. Al colocar una nueva sentencia
comenzar una nueva lnea, incluso las palabras claves de las estructuras en lneas
separadas.
6. ESPACIOS ENTRE ELEMENTOS DE UNA SENTENCIA. lo hace ms legible. Por
ejemplo:
suma suma + numero
Problemas Secuenciales
1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto
dinero ganara despus de un mes si el banco paga a razn de 2% mensual.
Comienzo
Leer ( capital )
ganancia capital * 0.02
Mostrar ( ganancia )
Fin
2) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea
saber cuanto deber pagar finalmente por su compra.
Comienzo
Leer ( total-compra)
descuento total-compra * 0.15
total-a-pagar total-compra - descuento
Mostrar ( total-a-pagar )
Fin
3) Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay
en un grupo de estudiantes.
Comienzo
Leer ( nun-hombres )
Leer ( num-mujeres )
total-alumnos nun-hombres + num-mujeres
porcen-hombres nun-hombres * 100 / total-alumnos
porcen-mujeres num-mujeres * 100 / total-alumnos
Mostrar ( porcen-hombres )
Mostrar (porcen-mujeres )
Fin
3.3 Estructuras de Condicionales
Las estructuras condicionales comparan una variable contra otro(s) valor(es),
para que, en base al resultado de esta comparacin, se siga un curso de accin dentro
del programa. Cabe mencionar que la comparacin se puede hacer contra otra variable o
contra una constante, segn se necesite. Existen dos tipos bsicos, las simples y las
mltiples.
3.3.1 Simples
Las estructuras condicionales simples se les conoce como Tomas de decisin.
Estas tomas de decisin tienen la siguiente forma:

10

Si <condicin> entonces
Accin(es)
Fin-si
3.3.2. Dobles
Las estructuras condicionales dobles permiten elegir entre dos opciones o
alternativas posibles en funcin del cumplimiento o no de una determinada condicin. Se
representa de la siguiente forma:
Si <condicin>
entonces
Accin(es)
Fin-entonces
Sino
Accin(es)
Fin-si
Donde:
Si
Condicin
entonces..
accin(es)
sino
condicin

Indica el comando de comparacin


Indica la condicin a evaluar
Precede a las acciones a realizar cuando se cumple la condicin
Son las acciones a realizar cuando se cumple o no la condicin
Precede a las acciones a realizar cuando no se cumple la

Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o mas


acciones.
3.3.3 Mltiples
Las estructuras de comparacin mltiples, son tomas de decisin especializadas
que permiten comparar una variable contra distintos posibles resultados, ejecutando para
cada caso una serie de instrucciones especificas. La forma comn es la siguiente:
LEER (variable)
CON-SELECCIN (VARIABLE) HACER
CASO constante1:
Sentencias
ROMPER
CASO constante2:
Sentencias
ROMPER
CASO constanteN:
Sentencias
ROMPER
OTROS CASOS:
Sentencias
FIN-SELECCIN
La estructura de seleccin mltiple slo compara por igualdad el valor de la
variable con cada una de las constantes de cada caso. Al encontrar una coincidencia
comienza a ejecutar las sentencias en forma secuencial hasta encontrar el fin de la
estructura o una instruccin que rompa la misma.
Puede tener hasta 257 casos.
No puede haber 2 casos con el mismo valor en la constante.
Slo se pueden utilizar variables de tipo carcter o enteras.
Si la variable que se est seleccionando es de tipo carcter, las constantes de
tipo carcter se colocan entre comillas simples o apstrofes, para el caso de variables de
tipo enteras, las constantes numricas se colocan directamente.
Puede contener casos vacos.
11

Ejemplo
COMIENZO
I1
MIENTRAS ( I < 7 ) HACER
CON-SELECCIN ( I ) HACER
CASO 2:
CASO 4:
CASO 6:
MOSTRAR(I ES PAR)
ROMPER
CASO 1:
CASO 3:
CASO 5:
MOSTRAR(I ES IMPAR)
ROMPER
OTROS CASOS:
MOSTRAR(I VALE 0)
FIN-SELECCIN
II+1
FIN-MIENTRAS
FIN
3.3.4 Uso de estructuras selectivas
Razonemos a partir de un ejemplo. Realizar un algoritmo que permita ingresar un
nmero e informe Nmero mayor a cero o Nmero menor o igual a cero segn
corresponda.
Anlisis del problema. El algoritmo deber:
1. Leer el nmero que ingresa el usuario
2. Seleccionar mediante una condicin si ese numero es o no mayor a cero
3. Informar con una de las leyendas enunciadas
Desarrollo del algoritmo en pseudocdigo
COMIENZO
{ declaro las variables a utilizar}
NUMERO
{ Ingreso de datos}
MOSTRAR (Ingrese un nmero:)
LEER (NUMERO)
{ Proceso de seleccin}
SI ( NUMERO > 0)
ENTONCES
MOSTRAR(Nmero mayor a cero)
FIN-ENTONCES
SINO
MOSTRAR(Nmero menor o igual a cero)
FIN-SI
FIN
Problemas Condicionales
Problemas Selectivos Simples
1) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su
promedio de tres calificaciones es mayor o igual a 7; reprueba en caso contrario.
Comienzo
Leer ( nota1 )
Leer ( nota2 )
12

Leer ( nota3 )
prom nota1 +nota2 + nota3 )/3
Si ( prom >= 7 )
entonces
Mostrar ( alumno aprobado )
Fin-entonces
si no
Mostrar ( alumno reprobado )
Fin-si
Fin
2) En un almacn se hace un 20% de descuento a los clientes cuya compra supere los
$1000 Cual ser la cantidad que pagara una persona por su compra?
Comienzo
Leer ( compra )
Si ( compra > 1000 )
entonces
desc compra * 0.20
fin-entonces
si no
desc 0
fin-si
tot_pag compra - desc
Mostrar ( tot_pag )
fin.
3) Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera:
Si trabaja 40 horas o menos se le paga $16 por hora
Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20
por cada hora extra.
Comienzo
Leer (horas-trab )
Si ( horas-trab > 40 )
entonces
horas-extras horas-trab - 40
salario-sem horas-extras * 20 + 40 * 16
fin-entonces
si no
salario-sem horas-trab * 16
Fin-si
Mostrar ( salario-sem )
Fin
4) Que lea dos nmeros y los imprima en forma ascendente
Comienzo
Leer ( num1 )
Leer ( num2 )
Si ( num1 < num2 )
entonces
Mostrar ( num1, num2 )
Fin-entonces
si no
Mostrar ( num2, num1 )
fin-si
fin

13

5) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si se


compran tres camisas o mas se aplica un descuento del 20% sobre el total de la compra
y si son menos de tres camisas un descuento del 10%
Comienzo
Leer ( num_camisas )
Leer ( prec )
tot_comp num_camisas * prec
Si ( num_camisas > = 3 )
entonces
tot_pag tot_comp - tot_comp * 0.20
fin-entonces
si no
tot_pag tot_comp - tot_comp * 0.10
fin-si
Mostrar ( tot_pag )
fin
Problemas Selectivos Compuestos
1) Leer 2 nmeros; si son iguales que los multiplique, si el primero es mayor que el
segundo que los reste y si no que los sume.
Comienzo
Leer ( num1 )
Leer ( num2 )
si ( num1 = num2 )
entonces
resul num1 * num2
fin-entonces
si no
si ( num1 > num2 )
entonces
resul num1 - num2
fin-entonces
si no
resul num1 + num2
fin-si
fin-si
fin
2) Leer tres nmeros diferentes e imprimir el numero mayor de los tres.
Comienzo
Leer ( num1 )
Leer ( num2 )
Leer ( num3 )
Si ( (num1 > num2) and (num1 > num3) )
entonces
mayor num1
fin-entonces
si no
Si ( (num2 > num1) and (num2 > num3) )
entonces
mayor num2
fin-entonces
si no
mayor num3
fin-si
fin-si
Mostrar ( mayor )
14

fin
3.4. Estructuras Cclicas o Repetitivas
Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin es
necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad
especifica de veces. Esta cantidad puede ser fija (previamente determinada por el
programador) o puede ser variable (estar en funcin de algn dato dentro del
programa).Los ciclos se clasifican en:
3.4.1 Ciclos con un Numero Indeterminado de Iteraciones (Mientras, HacerMientras)
Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya
que esta dado en funcin de un dato dentro del programa.

Mientras: Esta es una estructura que repetir un proceso durante N veces, donde
N puede ser fijo o variable. Para esto, la instruccin se vale de una condicin que es la
que debe cumplirse para que se siga ejecutando. Cuando la condicin ya no se cumple,
entonces ya no se ejecuta el proceso. La forma de esta estructura es la siguiente:
Mientras <condicin> Hacer
Accion1
Accion2
.
.
AccionN
Fin-mientras
3.4.2 Uso de estructuras repetitivas
Realizar un algoritmo que permita realizar 3 veces lo siguiente: ingresar 2 nmeros
calcular su suma e informar el resultado.
El algoritmo deber:
1. Leer el nmero que ingresa el usuario
2. Efectuar la suma y almacenarla
3. Mostrar el resultado almacenado
Para efectuar esto una sola vez bastara con el siguiente algoritmo:
COMIENZO
{ Ingreso de datos}
MOSTRAR (Ingrese primer nmero:)
LEER (NUMERO1)
MOSTRAR (Ingrese segundo nmero:)
LEER (NUMERO2)
{ Proceso de suma}
RESULTADO NUMERO1 + NUMERO2
{ Informe por pantalla}
MOSTRAR (El resultado de la suma es:)
MOSTRAR (RESULTADO)
FIN
Pero el algoritmo anterior slo efecta una vez la suma de dos nmeros, para que pueda
hacerlo ms veces deberamos repetir las sentencias de entrada, proceso y salida de
datos tantas veces como se solicite.
{ Ingreso de datos}
MOSTRAR (Ingrese primer nmero:)
LEER (NUMERO1)
MOSTRAR (Ingrese segundo nmero:)
LEER (NUMERO2)
{ Proceso de suma}
15

RESULTADO NUMERO1 + NUMERO2


{ Informe por pantalla}
MOSTRAR (El resultado de la suma es:)
MOSTRAR (RESULTADO)
Para realizar esto utilizamos una estructura repetitiva que ejecute 3 iteraciones
COMIENZO
{ Inicializacin de variables }
CONTADOR 0
{ la variable contador debe tener valor inicial para que sepa a partir de que valor
comienza a contar}
MIENTRAS ( CONTADOR < 4 ) HACER
{ Ingreso de datos}
MOSTRAR (Ingrese primer nmero:)
LEER (NUMERO1)
MOSTRAR (Ingrese segundo nmero:)
LEER (NUMERO2)
{ Proceso de suma}
RESULTADO NUMERO1 + NUMERO2
{ Informe por pantalla}
MOSTRAR (El resultado de la suma es:)
MOSTRAR (RESULTADO)
{ cuento la realizacin de las operaciones 1 vez ms }
CONTADOR CONTADOR + 1
FINMIENTRAS
FIN
Combinacin de estructuras selectivas y repetitivas
Realizar un algoritmo que permita ingresar 5 nmeros e informe cuantos nmero
ingresados son mayores a cero y cuantos menores a cero.
El algoritmo deber:
1. Leer el nmero que ingresa el usuario
2. Comparar el valor del nmero ingresado con cero, en caso de ser mayor deber
contar uno ms de la cantidad que tena
3. Comparar el valor del nmero ingresado con cero, en caso de ser menor deber
contar uno ms de la cantidad que tena
4. Informar con una de las leyendas enunciadas
Para realizar los pasos 2 y 3 se debe usar estructuras SELECTIVAS. La lectura de
nmeros como las distintas comparaciones se debern ejecutar 5 veces, por lo tanto es
necesaria una estructura REPETITIVA que abarque esas sentencias. Slo el informe se
realiza una vez.
COMIENZO
{ Inicializacin de variables }
CONTAR 0 { variable que contar hasta 5 para controlar la cantidad de
nmeros ingresados }
MAYOR 0 { variable que contar la cantidad de nmeros mayores a cero}
MENOR 0 { variable que contar la cantidad de nmeros menores a cero}
{ Ingreso de datos y proceso de seleccin}
MIENTRAS ( CONTAR < 5 ) HACER
MOSTRAR (Ingrese un nmero:)
LEER (NUMERO)
{ Proceso de seleccin}

16

{ utilizamos 2 SI pues en caso de ingresarse un CERO no debemos


contarlo}
SI ( NUMERO > 0)
ENTONCES
MAYOR MAYOR +1 { cuenta un nmero ms mayor a
cero }
FINSI
SI ( NUMERO < 0)
ENTONCES
MENOR MENOR +1 { cuenta un nmero ms menor
a cero }
FINSI
CONTAR CONTAR +1 { cuenta un nmero ms ingresado }
FINMIENTRAS
{ informe final del proceso }
MOSTRAR(Los nmeros mayores a cero fueron: )
MOSTRAR( MAYOR)
MOSTRAR(Los nmeros menores a cero fueron:)
MOSTRAR( MENOR)
FIN
3.4.3 Hacer - mientras
Esta es una estructura similar en algunas caractersticas, a la anterior. Repite un
proceso una cantidad de veces, pero a diferencia del Mientras, el Hacer - mientras
permite realizar el proceso cuando menos una vez, ya que la condicin se evala al final
del proceso, mientras que en el Mientras puede ser que nunca llegue a entrar si la
condicin no se cumple desde un principio. La forma de esta estructura es la siguiente:
HACER
Accion1
Accion2
.
.
AccionN
MIENTRAS <condicin>
3.4.4 Ciclos con un Numero Determinado de Iteraciones (Para)
Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el
ciclo. La forma de esta estructura es la siguiente:
Para (variable desde a hasta incremento) Hacer
Accion1
Accion2
.
AccionN
Fin-para
Donde:
Variable: Variable de control del ciclo ( un contador )
Desde: Limite inferir
Hasta: Limite superior
Incremento: indica de que modo se incrementa la variable de control (de 1 en 1, de 2 en
2, etc.)
En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite
hasta que la variable de control llegue al limite superior. La cantidad de repeticiones que
tenga depende del lmite superior y del incremento de la variable

17

Ejemplo Para - Hacer

1) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseo


Estructurado de Algoritmos
Comienzo
Sum0
Leer (Nom)
Para (c 1 a 7 ) Hacer
Leer calif
Sum sum + calif
Fin-para
prom sum /7
Mostrar (prom)
Fin.
2) Leer 10 nmeros y obtener su cubo y su cuarta.
Comienzo
Para ( n 1 a 10 ) hacer
Leer ( num )
cubo num * num * num
cuarta cubo * num
Mostrar ( cubo )
Mostrar ( cuarta )
Fin-para
Fin.
3) Leer 10 nmeros e imprimir solamente los nmeros positivos
Comienzo
Para ( n 1 a 10 ) Hacer
Leer ( num )
Si ( num > 0 ) entonces
Mostrar ( num )
fin-si
Fin-para
Fin.
4) Leer 15 nmeros negativos y convertirlos a positivos e imprimir dichos nmeros.
Comienzo
Para ( x 1 a 15 ) Hacer
Leer ( num )
pos num * -1
Mostrar ( num, pos )
Fin-para
Fin.
5) Suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos.
Realizar un algoritmo para calcular la calificacin media y la calificacin mas baja de
todo el grupo.
Comienzo
sum 0
baja 9999
Para ( a 1 a 40 ) Hacer
Leer ( calif )
sum sum + calif
Si ( calif < baja ) entonces
baja calif
fin-si
Fin-para
18

media sum / 2
Mostrar ( media, baja )
fin
6) Calcular e imprimir la tabla de multiplicar de un numero cualquiera. Imprimir el
multiplicando, el multiplicador y el producto.
Comienzo
Leer ( num )
Para ( X 1 a 10 ) Hacer
resul num * x
Mostrar ( num, * , X, = , resul )
Fin-para
fin.
CAPITULO iV. ALGORITMOS DE EJEMPLO
4.1 Ejemplo de uso de contadores y acumuladores
Ingresar 10 nmeros distintos de cero e informar el resultado de la suma de los
positivos y el producto de los negativos
COMIENZO
CONTADOR 0
SUMA 0
PRODUCTO 1
BORRAR PANTALLA
MIENTRAS(CONTADOR<10) HACER
MOSTRAR("Ingrese nmero:")
LEER(NUM)
{ bucle mientras que valida que el numero no sea cero}
MIENTRAS( NUM = 0) HACER
MOSTRAR("ERROR. Vuelva a ingresar")
LEER(NUM)
FINMIENTRAS
SI(NUM>0)
ENTONCES
SUMA SUMA+NUM
FIN-ENTONCES
SINO
PRODUCTOPRODUCTO*NUM
FINSI
CONTARCONTAR+1
FINMIENTRAS
MOSTRAR("Suma de positivos:", SUMA)
MOSTRAR("Producto de negativos:", PRODUCTO)
FIN
4.2 Uso de distintas estructuras repetitivas
Ingresar 10 nmeros distintos de cero. Sumar los positivos y obtener el producto de los
negativos
1. Uso de la estructura MIENTRAS
COMIENZO
canti0
suma0

19

prod1
MIENTRAS( canti<10) HACER
MOSTRAR("Ingrese un nmero")
LEER(num)
MIENTRAS(num=0) HACER
MOSTRAR("Error. Vuelva a ingresar:")
LEER(num)
FINMIENTRAS
SI(num>0)
ENTONCES
Suma suma+num
FIN-ENTONCES
SINO
Prod prod*num
FINSI
canticanti+1
FINMIENTRAS
MOSTRAR("La suma de los positivos es:",suma)
MOSTRAR("El producto de los negativos es:",prod)
FIN
2. Uso de la estructura HACER...MIENTRAS
COMIENZO
canti0
suma0
prod1
HACER
MOSTRAR("Ingrese un nmero")
LEER(num)
MIENTRAS(num=0) HACER
MOSTRAR("Error. Vuelva a ingresar:")
LEER(num)
FINMIENTRAS
SI(num>0)
ENTONCES
Suma suma+num
FIN-ENTONCES
SINO
Prod prod*num
FINSI
canticanti+1
MIENTRAS( canti<10)
MOSTRAR("La suma de los positivos es:",suma)
MOSTRAR("El producto de los negativos es:",prod)
FIN
3. Uso de la estructura PARA
COMIENZO
suma0

20

prod1
PARA(canti 0; canti<10;canti canti+1) HACER
MOSTRAR("Ingrese un nmero")
LEER(num)
MIENTRAS(num=0) HACER
MOSTRAR("Error. Vuelva a ingresar:")
LEER(num)
FINMIENTRAS
SI(num>0)
ENTONCES
Suma suma+num
FIN-ENTONCES
SINO
Prod prod*num
FINSI
FINPARA
MOSTRAR("La suma de los positivos es:",suma)
MOSTRAR("El producto de los negativos es:",prod)
FIN
4. Ingresar nmeros distintos de 0 (no se sabe cuntos). Sumar los positivos y
multiplicar los negativos.
COMIENZO
seguir 'S'
suma0
prod1
MIENTRAS( seguir = 'S' ) HACER
MOSTRAR("Ingrese un nmero")
LEER(num)
MIENTRAS(num=0) HACER
MOSTRAR("Error. Vuelva a ingresar:")
LEER(num)
FINMIENTRAS
SI(num>0)
ENTONCES
Suma suma+num
FIN-ENTONCES
SINO
Prod prod*num
FINSI
{sentencias de validacin de seguir}
HACER
MOSTRAR("Desea continuar(S/N):")
LEER(seguir)
MIENTRAS(seguir<>'S' AND seguir <> 'N')
FINMIENTRAS
MOSTRAR("La suma de los positivos es:",suma)
MOSTRAR("El producto de los negativos es:",prod)
FIN

21

4.3 Obtencin de mximos y mnimos


Se ingresa de 30 alumnos su nombre y promedio. Se pide informar el nombre del
mejor alumno y su promedio
COMIENZO
MEJOR-PROM 0 { variable que guarda el promedio mayor. Como se usa
para comparar debe
tener un valor inicial}
MEJOR-NOMBRE { variable que guarda el nombre del alumno de mejor
promedio}
CUENTA
{ contador usado como variable de control del para}
{ la carga se realiza dentro de una estructura para pues conozco el nmero de
iteraciones que tendr el bucle}
PARA (CUENTA 0; CUENTA < 30; CUENTA CUENTA +1) HACER
MOSTRAR("INGRESE NOMBRE DEL ALUMNO:")
LEER(NOMBRE)
MOSTRAR("INGRESE PORMEDIO:")
LEER(PROM)
{ sentencias para validar que el promedio sea un valor correcto}
MIENTRAS(PROM <1 O PROM>10) HACER
MOSTRAR("ERROR. VUELVA A INGRESAR")
LEER(PROM)
FINMIENTRAS
{ compara el promedio ingresado con el mejor promedio almacenado hasta el
momento}
SI (PROM > MEJOR-PROM)
ENTONCES
MEJOR-PROM PROM
MEJOR-NOMBRE NOMBRE
FINSI
FINPARA
{ escribe el informe de datos requeridos por el ejercicio}
MOSTRAR ("EL ALUMNO DE MEJOR PROMEDIO ES:")
MOSTRAR (MEJOR-NOMBRE)
MOSTRAR ("SU PORMEDIO ES :"))
MOSTRAR (MEJOR-PROM)
FIN

22

ANEXO - Convenciones de Pseudocdigo a utilizar


SENTENCIAS/
ESTRUCTURAS
ASIGNACIN
OPERADORES
ARITMTICOS

PSEUDOCDIGO

- (resta)
(suma)
(divisin)
(multiplicacin)
Mod (resto de divisin entre enteros)
OPERADORES
(menor)
(menor o igual)
RELACIONALES
(mayor)
(mayor o igual)
(igual)
(distinto)
OPERADORES
Y (and)
LGICOS
O (or)
NO (not)
ENTRADA / SALIDA
MOSTRAR (nombre de variable o constante)
LEER (nombre de variable)
ESTRUCTURA
SI ( condicin )
SELECTIVA SIMPLE
ENTONCES
Sentencias
FINSI
ESTRUCTURA
SI ( condicin )
SELECTIVA COMPUESTA
ENTONCES
Sentencias
SINO
Sentencias
FINSI
ESTRUCTURAS
MIENTRAS ( condicin ) HACER
REPETITIVAS
Sentencias
FIN MIENTRAS
HACER
ESTRUCTURA DE
SELECCIN MLTIPLE

MANEJO DE PANTALLA
OTRAS NOTAS

Sentencias
MIENTRAS ( condicin )
CON-SELECCIN ( variable ) HACER
CASO constante1:
Sentencias
ROMPER
CASO constante2:
Sentencias
ROMPER
CASO constante3:
Sentencias
ROMPER
OTROS-CASOS:
Sentencias
FIN-SELECCIN
BORRAR PANTALLA
Las constantes de tipo carcter se colocan entre apstrofes (comillas
simples) y las constantes de cadena entre comillas. Es para diferenciar las
constantes de las variables
Para salir de una estructura repetitiva antes de que finalice (por su
condicin) o alcance el nmero de iteraciones indicados (en el para)
utilizamos la sentencia ROMPER.
Los comentarios los consignamos entre llaves { .... }

23