Logo Studenta

[Prado - XX] Algoritmos y Solución de Problemas

¡Este material tiene más páginas!

Vista previa del material en texto

1
Algoritmos y Solución de Problemas 
Autor: Ing. Nelson Prado. 
 
Índice 
UNIDAD 1: .......................................................... 1 
1.1. INTRODUCCIÓN. ................................ 1 
1.2. ALGORITMOS Y SOLUCIÓN DE 
PROBLEMAS................................................... 2 
1.3. METODOLOGÍA PARA RESOLVER 
PROBLEMAS................................................... 2 
1.4. ETAPAS DEL CICLO DE 
PROGRAMACIÓN DE COMPUTADORES .... 3 
1.5. ALGORITMOS ..................................... 4 
1.6. REPRESENTAR ALGORITMOS ......... 5 
UNIDAD 2: .......................................................... 6 
2.1. VARIABLES, CONSTANTES E 
IDENTIFICADORES. ...................................... 6 
2.2. DATOS Y TIPOS DE DATOS .............. 6 
2.3. VARIABLES ........................................ 7 
2.4. OPERACIONES .................................... 7 
2.5. ASIGNAR VALORES A LAS 
VARIABLES .................................................... 9 
2.6. TIPOS DE VARIABLES MÁS 
UTILIZADOS ................................................... 9 
UNIDAD 3: ........................................................ 11 
3.1. DIAGRAMAS DE FLUJO PARA 
REPRESENTAR ALGORITMOS .................. 11 
3.2. PSEUDOCÓDIGO PARA 
REPRESENTAR ALGORITMOS .................. 12 
UNIDAD 4: ........................................................ 13 
4.1. PROCESOS ......................................... 13 
4.2. ESTRUCTURA SECUENCIAL .......... 13 
4.3. ESTRUCTURA CONDICIONAL ....... 14 
4.4. ESTRUCTURA ITERATIVA 
(REPETICIÓN) ............................................... 17 
Estructura Para (Desde - Hasta) ................... 19 
Ejercicios .................................................... 20 
Estructura Mientras ..................................... 20 
Estructura Repetir ........................................ 21 
UNIDAD 5: ........................................................ 22 
5.1. ARREGLOS. ....................................... 22 
5.2. CARGAR UN ARREGLO .................. 22 
5.3. IMPRIMIR UN ARREGLO ................ 23 
5.4. PROCESANDO UN ARREGLO ......... 23 
5.5. ARREGLOS BIDIMENSIONALES .... 24 
UNIDAD 6: ........................................................ 27 
6.1. FUNCIONES Y PROCEDIMIENTOS. 27 
6.2. FUNCIONES ...................................... 27 
6.3. ÁMBITO DE LAS VARIABLES ........ 30 
6.4. PROCEDIMIENTOS........................... 30 
 
UNIDAD 1: 
1.1. INTRODUCCIÓN. 
Los matemáticos hindúes, árabes y europeos fueron los 
primeros que desarrollaron técnicas de cálculo escrito. 
El matemático árabe Al'Khwarizmi , alrededor del año 
830 DC, escribe un libro de Aritmética, traducido al latín 
como Algoritmi de numero Indorum, donde introduce el 
sistema numérico indio (sólo conocido por los árabes 
unos 50 años antes) y los métodos para calcular con él. 
De esta versión latina proviene la palabra Algoritmo. 
 
Por algoritmo se entiende "una lista de instrucciones 
donde se especifica una sucesión de operaciones 
necesarias para resolver cualquier problema de un tipo 
dado". Los algoritmos son modos de resolución de 
problemas, cabe aclarar que no sólo son aplicables a la 
actividad intelectual, sino también a todo tipo de 
problemas relacionados con actividades cotidianas. El 
algoritmo es de carácter general y puede aplicarse a 
cualquier operación matemática o a cualquier problema. 
La formulación de algoritmos fue uno de los más 
grandes adelantos dentro de la ciencia matemática ya 
que a partir de ello se pudieron resolver infinidad de 
problemas. 
 
Landa, matemático ruso, quien ha investigado mucho al 
respecto nos dice que "la ciencia matemática, en el 
proceso de su desarrollo, ha tratado de encontrar los 
algoritmos óptimos más generales para resolver los 
problemas que permitan la solución uniforme de clases 
más amplias de problemas de una manera, es decir, 
empleando siempre el mismo sistema de operación. Los 
algoritmos, para llegar a ser tales deben reunir ciertas 
características. Una de ellas es que los pasos que deben 
seguirse deben estar estrictamente descritos, cada acción 
debe ser precisa, y debe ser general, es decir, que pueda 
ser aplicable a todos los elementos de una misma clase. 
Por ejemplo en el caso del algoritmo de una 
multiplicación, no sólo se realizará el procedimiento de 
resolución parte para la multiplicación de 4 x 4, sino que 
el mismo algoritmo podrá aplicarse a cualquier 
multiplicación. La última de estas características será la 
resolución, en otras palabras, esto quiere decir que el 
algoritmo deberá llegar a un resultado específico. 
 
Es de gran importancia aclarar que los algoritmos en si 
mismos no resuelven problemas, se resuelven gracias al 
producto de ejercer las operaciones dictadas por el 
algoritmo, se puede decir que es por el planteamiento 
mismo. La realización de algoritmos es natural e innata 
 2
en el hombre y en la mayoría de los casos es de tipo 
inconsciente, en otras palabras, las personas suelen 
resolver problemas sin tener que recurrir a la aplicación 
de cierto algoritmo. No obstante al encontrarse con 
problemas de un grado de dificultad mayor es necesario 
detenerse a analizar y pensar en la solución de éste. 
1.2. ALGORITMOS Y SOLUCIÓN DE 
PROBLEMAS 
La razón principal por las que personas aprenden 
lenguajes y técnicas de programación es para utilizar la 
computadora como una herramienta para resolver 
problemas. 
 
La resolución de problemas exige al menos los 
siguientes pasos: 
 
• Definición y análisis del problema. 
• Diseño del algoritmo. 
• Transformación del algoritmo en un programa. 
• Ejecución y validación del programa. 
 
Los primeros dos pasos definen lo que es un sistema de 
procesamiento de información. 
 
Un sistema que transforma datos brutos en información 
organizada, significativa y útil. 
 
Para poder entender lo que es un sistema de 
procesamiento debemos diferenciar las palabras datos e 
información: 
 
• Datos se refiere a la representación de algún hecho, 
concepto o entidad real (por ejemplo palabras 
escritas, habladas, números y dibujos). 
• Información implícita datos procesados y 
organizados. 
 
Figura. 1.1 Sistema de Procesamiento de Información. 
 
Los componentes de un sistema de proceso de 
información son: entrada, salida y procesador. 
 
Ejemplo de sistemas: Un termostato que controla la 
temperatura. La entrada es la temperatura media. La 
salida es una señal que controla la caldera del aire 
acondicionado. 
 
 
1.3. METODOLOGÍA PARA RESOLVER 
PROBLEMAS 
 
Figura 1.2: Pasos para resolver problemas 
matemáticos. 
 
Todos los días nos enfrentamos a problemas. Desde 
nuestro punto de vista un problema es una oportunidad. 
 
En la mayoría de los textos se recomiendan los 
siguientes procedimientos para solucionar problemas: 
 
1. COMPRENDER EL PROBLEMA. 
• Leer el problema varias veces. 
• ¿Qué datos me dan en el enunciado del problema? 
• ¿Cuál es la pregunta que me da el problema? 
• ¿Qué debo lograr? 
• ¿Cuál es la incógnita del problema? 
• Organizar la información. 
• Agrupar los datos en categorías. 
• Trazar una figura o diagrama. 
 
2. HACER EL PLAN. 
• Escoger y decidir las operaciones a efectuar. 
• Eliminar los datos inútiles. 
• Descomponer el problema en otros más pequeños. 
 
3. EJECUTAR EL PLAN (Resolver). 
• Ejecutar en detalle cada operación. 
• Simplificar antes de calcular. 
• Realizar un dibujo o diagrama. 
 
4. ANALIZAR LA SOLUCIÓN (Revisar). 
• Dar una respuesta completa. 
• Hallar el mismo resultado de otra manera. 
• Verificar por apreciación que la respuesta es 
adecuada. 
 
 3
Ejemplo 1.1 
 
En un juego, el ganador obtiene una ficha roja; el 
segundo, una ficha azul; y el tercero, una amarilla. Al 
final de varias rondas, el puntaje se calcula de la 
siguiente manera: Al triple de la cantidad de fichas rojas 
se adicionan las fichas azules y se descuenta el doble de 
las fichas amarillas. Si Andrés llegó 3 veces en primer 
lugar, 4 veces de último y 6 veces de intermedio, ¿Qué 
puntaje obtuvo?Solución: 
 
COMPRENDE 
• Leer detenidamente el problema. 
• ¿Cuántos colores de fichas se reparten? 
• ¿Cuántas fichas rojas, azules y amarillas obtuvo 
Andrés? 
• ¿Qué pregunta el problema? 
 
PLANEA 
• Para hallar el puntaje que obtiene Andrés por sus 
llegadas de primero, calcular el triple de la 
cantidad de fichas rojas. 
• Para hallar el puntaje por sus llegadas en segundo 
lugar, contar la cantidad de fichas azules. 
• Para hallar el puntaje que pierde por sus llegadas 
en último lugar, calcular el doble de la cantidad de 
fichas amarillas. 
• Para hallar el puntaje total, calcular la suma de los 
puntajes por las fichas rojas y azules, restarle los 
puntos de las fichas amarillas. 
 
RESUELVE 
• Por tres fichas rojas: 3 x 3 = 9 puntos. 
• Por seis fichas azules: 6 = 6 puntos. 
• Por cuatro fichas amarillas: 4 x 2 = 8 puntos. 
• Para obtener el puntaje final de Andrés, sumar los 
puntos obtenidos con las fichas rojas y azules (9 + 
6 = 15 puntos) y de este resultado restar los puntos 
representados por las fichas amarillas (15 – 8 = 7 
puntos). 
 
REVISA 
• El puntaje que obtuvo Andrés es 7 puntos. 
• Verificar las operaciones y comparar los cálculos 
con la solución estimada. 
 
Ejercicios 
 
Debes tener en cuenta (y anotar) las actividades que 
realizas para resolver estos problemas y clasificarlas en 
cada una de las cuatro etapas vistas: comprender, 
planear, resolver y revisar. 
 
1.1. Se tienen dos cubetas de 5 y 4 litros 
respectivamente. Las mismas no están graduadas 
con medidas. Sí se tiene disponible toda el agua 
necesaria. ¿Cómo lograría poner dos litros de agua 
en una de las dos? 
1.2. En un curso de un colegio, la materia de educación 
física se divide en dos grupos de estudiantes: 
Natación, con 136 y Fútbol, con 204. Si hay 25 
estudiantes que estudian Natación y Fútbol, ¿cuántos 
estudiantes tiene el curso? Para resolver este 
problema, debes tener conocimientos sobre 
conjuntos (representación, clasificación e 
intersección). Es buena idea que construyas una 
tabla para organizar la información y un diagrama 
para representar los datos. 
1.3. Orlando compró 15 metros de tela para mandar a 
fabricar una cortina, a $26 el metro. Para colgarla 
necesita 28 aros de madera cuyo valor es de $1 cada 
uno. El riel y demás accesorios cuestan $30. Si la 
modista cobra $5 por cada metro de tela 
confeccionado y la instalación vale $15 ¿Cuánto es 
el costo total de la cortina instalada? Debes tener 
conocimientos sobre sumas y multiplicaciones. 
1.4. El “peso neto” indicado en la envoltura de un jabón 
de baño es de 140 gramos y el “peso neto” indicado 
en otro jabón es de 80 gramos. El primero vale $0.90 
y el segundo $0.65. ¿Cuál de los dos es más 
costoso? Debes tener conocimientos sobre sistemas 
de medidas (peso) y divisiones. 
1.4. ETAPAS DEL CICLO DE 
PROGRAMACIÓN DE COMPUTADORES 
Muchos expertos en programación afirman que para 
elaborar en un computador procedimientos que realicen 
determinadas tareas, se deben seguir cuatro fases o 
etapas. 
 
Estas fases concuerdan con los procedimientos para 
solucionar problemas, vistos anteriormente: 
 
1. Analizar el problema (Entender el problema) 
2. Diseñar un algoritmo (Trazar un plan) 
3. Traducir el algoritmo a un lenguaje de programación 
(Ejecutar el plan) 
4. Depurar el programa (Revisar) 
 
Como puedes apreciar, hay una semejanza entre los 
métodos utilizados para solucionar problemas y las 
cuatro fases para solucionar problemas con ayuda del 
computador en otras áreas del conocimiento. 
 
 4
1.5. ALGORITMOS 
En la naturaleza hay muchos procesos que puedes 
considerar como Algoritmos ya que tienen 
procedimientos y reglas. Incluso, muchas veces no 
somos conscientes de ellos. 
 
Por ejemplo, el proceso digestivo es un concepto de 
algoritmo con el que convivimos a diario sin que haga 
falta una definición precisa de este proceso. El hecho de 
que conozcas cómo funciona el sistema digestivo, no 
implica que los alimentos que consumas te alimenten 
más o menos. 
 
La familiaridad de lo que sucede día a día nos impide 
ver muchos algoritmos que pasan a nuestro alrededor. 
 
Procesos, rutinas o biorritmos naturales como la 
gestación, las estaciones, la circulación sanguínea, los 
ciclos cósmicos, etc., son algoritmos naturales que 
generalmente pasan desapercibidos. 
 
Ejemplo 1.2 
 
Un procedimiento que realizamos varias veces al día 
consiste en lavarnos los dientes. Veamos la forma de 
expresar este procedimiento como un Algoritmo: 
 
1. Tomar la crema dental. 
2. Destapar la crema dental. 
3. Tomar el cepillo de dientes. 
4. Aplicar crema dental al cepillo. 
5. Tapar la crema dental. 
6. Abrir la llave del lavamanos. 
7. Remojar el cepillo con la crema dental. 
8. Cerrar la llave del lavamanos. 
9. Frotar los dientes con el cepillo. 
10. Abrir la llave del lavamanos. 
11. Enjuagarse la boca. 
12. Enjuagar el cepillo. 
13. Cerrar la llave del lavamanos. 
14. Secarse la cara y las manos con una toalla. 
 
Ejemplo 1.3 
 
Veamos que algo tan común como los pasos para 
cambiar una bombilla (foco) se pueden expresar en 
forma de Algoritmo: 
 
1. Ubicar una escalera o un banco debajo de la 
bombilla fundida. 
2. Tomar una bombilla nueva. 
3. Subir por la escalera o al banco. 
4. Girar la bombilla fundida hacia la izquierda hasta 
soltarla. 
5. Enroscar la bombilla nueva hacia la derecha en el 
plafón hasta apretarla. 
6. Bajar de la escalera o del banco. 
7. Fin. 
 
Ejercicio 
 
1. Discutir en parejas el ejemplo de la bombilla y 
proponer algunas mejoras. Luego, un voluntario 
debe pasar al tablero y escribir un Algoritmo con 
participación de toda la clase. 
 
Los Algoritmos permiten describir claramente una serie 
de instrucciones que debe realizar el computador para 
lograr un resultado previsible. Vale la pena recordar que 
un procedimiento de computador consiste de una serie 
de instrucciones muy precisas y escritas en un lenguaje 
de programación que el computador entienda. 
 
En resumen, un Algoritmo es una serie ordenada de 
instrucciones, pasos o procesos que llevan a la solución 
de un determinado problema. Los hay tan sencillos y 
cotidianos como seguir la receta del médico, abrir una 
puerta, lavarse las manos, etc.; hasta los que conducen a 
la solución de problemas muy complejos. 
 
El concepto de algoritmo, aunque similar y obviamente 
relacionado, no debe confundirse con el concepto de 
programa. Mientras el primero es la especificación de un 
conjunto de pasos (operaciones, instrucciones, 
órdenes,...) orientados a la resolución de un problema, el 
segundo es ese conjunto de operaciones especificadas en 
un determinado lenguaje de programación y para un 
computador concreto, susceptible de ser ejecutado (o 
compilado o interpretado). Un algoritmo, estrictamente 
hablando, no puede ejecutarse hasta que se implementa, 
ya sea en un lenguaje de programación, en un circuito 
eléctrico, en un aparato mecánico, usando papel y lápiz, 
o en algún otro modelo de computación. 
 
Las características fundamentales de un algoritmo son: 
 
• Debe ser preciso e indicar el orden de realización 
de cada paso. 
• Debe estar definido. Si se sigue el algoritmo dos 
veces, se debe obtener el mismo resultado cada vez. 
• Debe ser finito. Si se sigue un algoritmo, se debe 
terminar en algún momento. 
 
Cuando el procesador es una computadora, el algoritmo 
se expresa por medio de un programa. Cada paso esta 
expresado por medio de una instrucción. 
 
 
 
 5
Ejemplo 1.4 
 
Consideremos algo más complejo como el algoritmo de 
Euclides para hallar el Máximo Común Divisor (MCD) 
de dos números enteros positivos dados. Obsérvese que 
no se especifica cuáles son los dos números, pero si se 
establece claramente una restricción: deben ser enteros y 
positivos. 
 
ALGORITMO 
1. Paso 1: Inicio. 
2. Paso 2: Leer los dos números (“a” y “b”). Avanzar 
al paso 3. 
3. Paso 3: Comparar “a” y “b” para determinar cuál es 
mayor. Avanzar al paso 4. 
4. Paso 4: Si “a” y “b” son iguales, entonces ambosson 
el resultado esperado y termina el algoritmo. En 
caso contrario, avanzar al paso 5. 
5. Paso 5: Si “a” es menor que “b”, se deben 
intercambiar sus valores. Avanzar al paso 6; si “a” 
no es menor que “b”, avanzar al paso 6. 
6. Paso 6: realizar la operación “a” menos “b”, asignar 
el valor de “b” a “a” y asignar el valor de la resta a 
“b”. Ir al paso 3. 
 
Ejercicio 
 
A diferencia de los seres humanos que realizan 
actividades sin detenerse a pensar en los pasos que 
deben seguir, los computadores son muy ordenados y 
necesitan que quien los programa les especifique cada 
uno de los pasos que debe realizar y el orden lógico de 
ejecución. 
 
Numerar en orden lógico los pasos siguientes (para 
pescar): 
 
___ El pez se traga el anzuelo. 
___ Enrollar el sedal. 
___ Tirar el sedal al agua. 
___ Llevar el pescado a casa. 
___ Quitar el Anzuelo de la boca del pescado. 
___ Poner carnada al anzuelo. 
___ Sacar el pescado del agua. 
 
1.6. REPRESENTAR ALGORITMOS 
Los Algoritmos se puede expresar de muchas maneras, 
pero en este curso se tratarán solo dos formas: 
 
Pseudocódigo y Diagrama de Flujo. 
 
En Pseudocódigo la secuencia de instrucciones se 
representa por medio de palabras en forma de frases o 
proposiciones, mientras que en un Diagrama de Flujo 
se representa por medio de gráficos. 
 
Ejemplo 1.5 
Diseñar un algoritmo (pseudocódigo) para hallar el área 
de un triángulo rectángulo cuya Base mide 3 cm, la 
Altura 4 cm y la Hipotenusa 5 cm. 
 
Solución: 
 
ANÁLISIS DEL PROBLEMA 
Formular el problema: Ya se encuentra claramente 
planteado. 
Resultados esperados: El área de un triángulo 
rectángulo. 
Datos disponibles: Base, Altura, Hipotenusa, tipo de 
triángulo. La incógnita es el área y todos los valores son 
constantes. El valor de la hipotenusa se puede omitir. 
Debes preguntarte si tus conocimientos actuales de 
matemáticas te permiten resolver este problema; de no 
ser así, debes plantear una estrategia para obtener los 
conocimientos requeridos. 
Determinar las restricciones: Utilizar las medidas 
dadas. 
Procesos necesarios: Guardar en dos variables (BASE y 
ALTURA) los valores de Base y Altura; Guardar en una 
constante (DIV) el divisor 2; aplicar la fórmula 
BASE*ALTURA/DIV y guardar el resultado en la 
variable AREA; comunicar el resultado (AREA). 
 
ALGORITMO EN PSEUDOCÓDIGO 
Paso 1: Inicio 
Paso 2: Asignar el número 2 a la constante "div" 
Paso 3: Asignar el número 3 a la constante “base” 
Paso 4: Asignar el número 4 a la constante “altura” 
Paso 5: Guardar en la variable "área" el resultado de 
base*altura/div 
Paso 6: Imprimir el valor de la variable "área" 
Paso 7: Final 
 
Ejercicios 
 
Elabora un algoritmo para cada uno de los siguientes 
problemas: 
 
1.5. Escribir un algoritmo para la preparación de un 
ceviche de camaron que conste de 5 a 10 acciones 
principales. 
1.6. ¿Qué requisitos debe cumplir un algoritmo bien 
elaborado? 
1.7. Los ingredientes para 4 personas del “pastel de 
manzana danés” son los indicados en el cuadro 
adjunto. Realizar un algoritmo que calcule los 
ingredientes para un número variable de personas 
que se lee por teclado. 
 6
 
1.8. Desarrollar un algoritmo para cambiar un neumático 
desinflado. Supóngase que se dispone de una rueda 
de repuesto y de gato. 
1.9. Hallar el perímetro de un cuadrado cuyo lado mide 5 
cm. 
1.10. Hallar el perímetro de un círculo cuyo radio 
mide 2 cm. 
1.11. Hallar el área de un cuadrado cuyo lado mide 5 
cm. 
1.12. Hallar uno de los lados de un rectángulo cuya 
área es de 15 cm2 y uno de sus lados mide 3 cm. 
1.13. Hallar el área y el perímetro de un círculo cuyo 
radio mide 2 cm. 
1.14. Hallar el área de un pentágono regular de 6 cm 
de lado y con 4 cm de apotema. 
UNIDAD 2: 
2.1. VARIABLES, CONSTANTES E 
IDENTIFICADORES. 
En programación, las Variables son espacios de trabajo 
reservados para guardar datos (valores). El valor de una 
Variable puede cambiar en algún paso del Algoritmo o 
permanecer invariable; por lo tanto, el valor que 
contiene una variable es el del último dato asignado a 
esta. 
 
Ejemplo 2.1 
 
En el siguiente diagrama de flujo, "AREA" es un 
ejemplo de Variable; en el paso 5 se guardó en ella el 
resultado de multiplicar "BASE" por "ALTURA" y en el 
paso 6 se utilizó nuevamente para guardar el valor de 
dividir su propio contenido ("AREA") entre la Constante 
"DIV". 
 
 
Figura 2.1: Algoritmo para calcular el área de 
cualquier triángulo rectángulo. 
 
- Constantes: Tienen un valor fijo que se le da cuando 
se define la constante y que ya no puede ser 
modificado durante la ejecución. 
- Variables: El valor puede cambiar durante la 
ejecución del algoritmo, pero nunca varia su nombre 
y su tipo. 
2.2. DATOS Y TIPOS DE DATOS 
Las cosas se definen en la computadora mediante datos, 
los algoritmos que vamos a diseñar van operar sobre 
esos datos. A nivel de la máquina los datos se 
representan como una serie de bits (dígito 1 ó 0). Los 
tipos de datos que vamos a manejar a lo largo del curso 
son: numéricos y carácter (también llamados 
alfanuméricos), existen además, los datos de tipo lógicos 
que solo pueden tener uno de dos valores: verdadero o 
falso. 
 
Los datos numéricos pueden ser de varias clases: 
enteros, enteros largos, de doble precisión, de simple 
precisión, de coma flotante, reales; cuya definición 
depende del lenguaje de programación utilizado. 
 
Los datos de tipo carácter o alfanuméricos están 
compuestos por el conjunto finito y ordenado de 
caracteres que la computadora reconoce: 
 
• Caracteres alfabéticos : A,B,C,.......Z ; a,b,c,.......z 
• Caracteres numéricos : 0,1,2, ......9 (que no son 
números) 
• Caracteres especiales : +, /, *, ?,%,$, #, !, 
,ä,¦,{},~,etc. 
 
 7
Una cadena o string es una sucesión de caracteres que se 
encuentran delimitados por comillas (" "). La longitud de 
la cadena es la cantidad de caracteres que la forma, 
incluyendo los espacios que son un carácter más. Así: 
 
• "Quito, Pichincha" es una cadena de longitud 18. 
• "Miércoles 7 de Marzo de 2008" es una cadena de 
longitud 28 (el 7 y el 2001 no son números) 
• "123456" es una cadena de longitud 6, no es el 
número 123.456 sobre "123456" no se puede 
realizar ninguna operación aritmética como sumar, 
restar, etc., ya que se trata de una cadena 
alfanumérica. Ejemplo de este tipo son: cedula, 
pasaporte, teléfonos. 
2.3. VARIABLES 
Cuando representamos datos, numéricos o 
alfanuméricos, debemos darles un nombre. 
 
Una variable es un nombre que representa el valor de un 
dato. 
 
En esencia, una variable es una zona o posición de 
memoria en la computadora donde se almacena 
información. En un algoritmo y también en un programa 
se pueden crear tantas variables como queramos. Así 
tenemos: 
 
• A = 50: Variable tipo numérica A cuyo valor es 50. 
• Ciudad = "Guayaquil": Variable alfanumérica o de 
tipo carácter Ciudad, cuyo valor es "Guayaquil" 
• X = C + B: Variable numérica X cuyo valor es la 
suma de los valores de las variables numéricas C y 
B. Es una variable calculada. 
 
Ten en cuenta que las operaciones que se pueden realizar 
con dos o más variables exigen que éstas sean del mismo 
tipo. No podemos "sumar", por ejemplo una variable 
alfanumérica a otra numérica y viceversa como por 
ejemplo: 
 
• FechaNueva="1 de Junio de 1.971" + 5 Esto no 
se puede hacer !! 
 
Nombres de las variables constantes 
 
A continuación encontrarás una serie de reglas para 
asignar nombres (identificadores) a variables, constantes 
y procedimientos: 
 
• Los nombres pueden estar formados por una 
combinación de letras y números (saldoMes, salario, 
fecha2, baseTriángulo, etc). 
• El primer carácter de un nombre debe ser una letra. 
• La mayoría de los lenguajes de programación 
diferencian las letras mayúsculas de las minúsculas. 
• Con solo leer los nombres se puede entender lo que 
contienen. Deben ser muy descriptivos; no utilizar 
abreviaturas, a menos que se justifique plenamente. 
• Es conveniente utilizar una sola palabra para 
nombrarpáginas, controles, variables, etc. 
• No utilizar caracteres reservados (%, +, /, >, etc). 
• Se debe tener en cuenta que algunos lenguajes de 
programación no admiten las tildes. 
• No utilizar palabras reservadas por los lenguajes de 
programación. 
• Los nombres de procedimientos, variables y 
constantes deben empezar con minúscula. Ejemplo, 
fecha, suma, etc. Si es un nombre compuesto por 
varias palabras, cada una de las palabras (con 
excepción de la primera) deben empezar con 
mayúscula. Ejemplo: fechaInicial, baseTriángulo, 
etc. 
 
El tipo de nombre que se asigne a variables, constantes y 
procedimientos es muy importante. Cuando dejas de 
trabajar en un proyecto por varios días, es más fácil para 
ti retomar la actividad si los nombres describen muy 
bien el contenido de variables, constantes y 
procedimientos. 
 
Ejemplos de nombres válidos de variables 
 
• fechaNueva. 
• c1. 
• totalPersonas. 
• contador_Maletas. 
• cantidad_de_Alumnos. 
• pedido_Almacen. 
 
Algunos lenguajes de programación exigen la 
declaración de las variables que se van a utilizar en todo 
el programa; es decir, que al comenzar el programa se 
debe decir que nombre tiene, de que tipo es (numérica o 
alfanumérica) y un valor inicial. Como aquí no estamos 
tratando con ningún lenguaje, la declaración de las 
variables puede omitirse. 
 
Las variables también pueden inicializarse; darles un 
valor inicial. Por defecto, todas las variables para las que 
no especifiquemos un valor inicial, valen cero si son de 
tipo numérica y nulo (nulo no es cero ni espacio en 
blanco; es nulo) si son de tipo carácter. 
2.4. OPERACIONES 
 8
Las variables se pueden procesar utilizando operaciones 
apropiadas para su tipo. Los operadores son de 4 clases: 
 
• Relacionales. 
• Aritméticos. 
• Alfanuméricos. 
• Lógicos. 
 
Los operadores relacionales se utilizan para formar 
expresiones que al ser evaluadas producen un valor de 
tipo lógico: verdadero o falso. Ellos son: 
 
Signo Operador 
> Mayor que 
< Menor que 
= Igual a 
<= Menor o igual 
que 
>= Mayor o igual 
que 
<> Distinto 
 
Ejemplos: 
Ejemplo Resultado 
25 <= 25 Verdadero 
25 <> 25 Falso 
25 <> 4 Verdadero 
50 <= 100 Verdadero 
500 >= 1 Verdadero 
1 = 6 Falso 
Cuando se comparan caracteres alfanuméricos se hace 
uno a uno, comenzando por la izquierda hacia la 
derecha. 
 
Si las variables son de diferente longitud, pero 
exactamente iguales, se considera que la de menor 
longitud es menor. 
 
Los datos alfanuméricos son iguales si y solo si tienen la 
misma longitud y los mismos componentes. 
 
Las letras minúsculas son mayores que las mayúsculas y 
cualquier carácter numérico es menor que cualquier letra 
mayúscula o minúscula; Así: 
 
carácter numérico < mayúsculas < minúsculas. 
 
Ejemplos: 
 
Comparación Resultado 
"A" < "B" Verdadero 
"AAAA" > 
"AAA" 
Verdadero 
"B" > "AAAA" Verdadero 
"C" < "c" Verdadero 
"2" < "12" Falso 
 
Estas comparaciones se realizan utilizando el valor 
ASCII de cada carácter. 
 
Para tratar los números se utilizan los operadores 
aritméticos: 
 
Signo Significado 
+ Suma 
- Resta 
* Multiplicación 
/ División 
^ Potenciación 
MOD Resto de la división entera 
 
El único operador alfanumérico se utiliza para unir o 
concatenar datos de este tipo: 
 
Signo Significado 
+ Concatenación 
 
Ejemplos: 
 
Expresión Resultado 
"Pseudo" + "código" "Pseudocódigo" 
"3" + "4567" "34567" 
"Hola " + "que tal ?" "Hola que tal ?" 
 
Los operadores lógicos combinan sus operandos de 
acuerdo con las reglas del álgebra de Boole para 
producir un nuevo valor que se convierte en el valor de 
la expresión, puede ser verdadero o falso. 
 
Signo Significado 
OR Suma lógica (O) 
AND Producto lógico (Y) 
NOT Negación (NO) 
 
Ejemplos: 
 
Expresión Resultado 
Verdad AND Falso Falso 
NOT Falso Verdad 
Verdad OR Falso Verdad 
 
Por ejemplo, la expresión: (12 + 5) OR (7 + 3) = 10 es 
verdadera (se cumple una y Verdad OR Falso es 
Verdad). 
 
La expresión (12 * 5) AND (3 + 2) = 60 es falsa 
(verdad AND falso = Falso). 
 9
 
¿Cómo se evalúan los operadores? La prioridad de los 
operadores es: 
 
• Paréntesis 
• Potencias 
• Productos y Divisiones 
• Sumas y restas 
• Concatenación 
• Relacionales 
• Lógicos 
2.5. ASIGNAR VALORES A LAS VARIABLES 
La operación de dar valor a una variable se llama 
asignación. La asignación vamos a representarla con el 
símbolo�; una flecha apuntando a la izquierda. No 
utilizaremos en signo = ya que el operador de asignación 
varía de acuerdo con el lenguaje de programación 
utilizado. El formato general de una asignación es: 
 
nombre de la variable � expresión. 
 
La flecha se sustituye en los lenguajes de programación 
por = (basic); : = (pascal). Pero para evitar 
ambigüedades en el algoritmo utilizaremos la flecha para 
la asignación y el símbolo = para indicar igualdad. He 
aquí algunos ejemplos: 
 
• a �100: significa que a la variable a se le ha 
asignado el valor 100, ahora A vale 100. 
• suma � 5+10: asigna el valor 15 a la variable suma 
a través de una asignación aritmética. 
• x �z + v: asigna el valor de la suma de las 
variables z y v a la variable x. El resultado depende 
de los valores que se asignen a x y a z. 
 
Toda asignación es destructiva. Esto quiere decir que el 
valor que tuviera antes la variable se pierde y se 
reemplaza por el nuevo valor que asignamos, así cuando 
se ejecuta esta secuencia: 
 
• edad � 25. 
• edad � 100. 
• edad � 77. 
 
El valor final que toma edad será 77 pues los valores 25 
y 100 han sido destruidos. 
2.6. TIPOS DE VARIABLES MÁS UTILIZADOS 
Contador 
 
Un contador es una variable destinada a contener valores 
que se van incrementando o decrementando cada vez 
que se ejecuta la acción que lo contiene. El incremento o 
decremento es llamado paso de contador y es siempre 
constante. 
 
Por ejemplo; el marcador de un partido de fútbol, cada 
vez que un equipo anota un gol, aumenta su marcador en 
una unidad. 
 
En las carrera de automóviles, cada vez que un vehículo 
pasa por la línea de meta, se incrementa en una unidad el 
número de vueltas dadas al circuito, o bien se 
decrementa en una unidad el número de vueltas que 
quedan por realizar. 
 
Aunque el incremento es siempre constante, el paso de 
contador no necesariamente puede ser la unidad como en 
los ejemplos que se han dado más arriba; también puede 
incrementarse o decrementarse a de dos, tres, cuatro,.... 
n; es decir, puede ser cualquier número que conserva el 
mismo valor durante todo el programa. 
 
La sintaxis de una variable contador es: 
 
variable � variable + constante (al incrementar) 
variable � variable - constante (al decrementar) 
 
Ejemplos: 
 
• gol_local � gol_local + 1. 
• vueltas � vueltas + 1. 
• faltan � faltan – 1. 
• de_cinco � de_cinco + 5. 
• c � c + 1. 
• x � x – 3. 
 
Observación: Cuando una variable aparece a ambos 
lados del símbolo de asignación, conviene inicializarlas 
a cero. 
 
Acumulador o Sumador 
 
Es una variable que nos permite guardar un valor que se 
incrementa o decrementa en forma NO constante durante 
el proceso. En un momento determinado tendrá un valor 
y al siguiente tendrá otro valor igual o distinto. Por 
ejemplo; cuando realizamos un depósito en el banco, la 
cantidad depositada cada vez no es siempre la misma; 
unas veces será una cantidad y otras veces distinta. Lo 
mismo ocurre cuando realizamos algún retiro, pero 
decrementando la cantidad total. 
 
La sintaxis es: 
 10
 
acumulador � acumulador + variable (al incrementar) 
acumulador � acumulador - variable (al decrementar) 
 
acumulador es la variable en la que se almacena el 
resultado. 
 
variable contiene el número que estamos incrementando 
o decrementando 
 
Ejemplos: 
 
• saldo � saldo + entrega. 
• saldo � saldo – retiro. 
• suma � suma + numero. 
• sumaEdades � sumaEdades + edad. 
 
Halle el valor de A: 
A � (3*2^5 mod 1 + 8*(3-5) < (2+8-1 mod 1) 
A � (3*32 mod 1 + (-16)) < 10 
A � -16 < 10 
A � Verdadero 
 
Ejemplo 
 
Escribir un algoritmoque intercambie el valor de dos 
variables. 
 
Si se tienen, por ejemplo a = 5 y b = 10, se quiere 
intercambiar el valor de las variables, así: 
 
a = 10; b = 5. 
 
No podemos asignar directamente el valor de una a la 
otra porque uno de los valores se destruiría; de modo 
que esto no se puede hacer: 
 
a � b (el valor de a se pierde y quedaría a = 10 ; b = 
10) . 
 
La solución consiste en asignar el valor de una de las 
variables a otra variable auxiliar. 
 
inicio 
leer A,B 
Auxiliar � A 
A � B 
B � Auxiliar 
imprimir A,B 
fin 
 
Ejercicios 
 
2.1. ¿Cuáles de los siguientes nombres de Variables 
NO son validos y por qué? 
a) números. 
b) Numero X. 
c) 7 
d) A(45+ 
e) VII 
f) 7mesas. 
g) sieteMesas 
 
2.2. Halle el valor de A: 
A � A o (3+5*8) < 3 y ((-6/3 div 4)*2 < 2) 
 
2.3. Halle el valor de B: 
B � 3 mod 2 div 3 
 
2.4. Halle el valor de C: 
C � (-B*2 <> 8*3 mod 4) y (‘A’>’B’) 
 
2.5. Dadas las siguientes declaraciones de variables 
siguientes y los valores iniciales indicados: 
VAR 
Z color, lima, marron, amarillo, rojo, naranja 
R negro, blanco, verde, azul, morado, crayon 
 
Evaluar el valor final de las variables después de 
ejecutar de forma independiente las sentencias de 
asignación siguientes. Nota: suponer que las 
incompatibilidades de tipos se resuelven implícitamente 
e indicar dónde se producen. 
a) blanco = color * 2.5 / morado 
b) verde = color / morado 
c) naranja = color*(-12) DIV rojo 
d) azul = (color + marron) / (crayon + 0.3) 
e) lima = rojo DIV color + rojo MOD color - 356 
f) morado = marron / rojo * color 
 
2.6. Indicar el tipo de cada una de las siguientes 
constantes: 
a) 534 b) 534.0 c) -534 d) ’534’ 
e) -45.3x10
4 
f) 17x10
7 
g) -45.6x10
-3 
h) ’fin del 
ejercicio’ 
 
2.7. Indicar el resultado y el tipo de las siguientes 
expresiones: 
a) 5^2+3 b) 6+19-0.3 c) 3.0^3+1 
d) 1/4+2 e) 29.0/2+4 f) 3/6.0 - 7 
 
2.8. Calcular el valor de cada una de las siguientes 
expresiones enteras: 
a) 5*6-3*2 b) -2^3 c) (26+3*4)/4 
d) 3+2*(18-4^2) e) 2^2*3 f) 8-30/6 
 
 11
2.9. Escribir las siguientes expresiones matemáticas en 
forma de expresiones de computación: 
 
2.10. Evaluar las siguientes expresiones booleanas 
escribiendo el árbol de precedencia. Los valores 
de las variables son A=TRUE, B=TRUE, 
C=FALSE, D=FALSE. 
 
a) C OR NOT A AND B 
 
b) NOT (A OR C) OR B AND NOT C 
 
c) NOT(NOT(NOT(A AND C OR D))) 
 
d) NOT (5<3) AND A OR NOT (D OR C) 
 
e) A AND NOT (D OR NOT C AND A) OR 
NOT (NOT C OR B) 
 
2.11. Encuéntrese el valor de la variable RESULT 
después de la ejecución de las siguientes 
secuencias de operaciones (suponer que todas las 
variables son reales): 
a) RESULT ← 3.0*5 
b) X ← 2.0 
 Y ← 3.0 
 RESULT ← X^Y-X 
c) RESULT ← 4 
 X ← 2 
 RESULT ← RESULT*X 
 
2.12. ¿Qué valor se obtiene en las variables A, B y C 
después de la ejecución de las siguientes 
instrucciones? 
A ← 3 
B ← 20 
C ← A+B 
B ← A+B 
A ← B 
2.13. Supóngase que I y J son variables enteras cuyos 
valores son 6 y 12 respectivamente. ¿Cuáles de las 
siguientes condiciones son verdaderas? 
a) (2*I) ≤ J 
b) (2*I-1) < J 
c) (I > 0) y (I ≤ 10) 
d) (I > 25) o ((I < 50) y (J < 50)) 
e) (I < 4) o (J > 5) 
f) no (I > 6) 
UNIDAD 3: 
3.1. DIAGRAMAS DE FLUJO PARA 
REPRESENTAR ALGORITMOS 
Diagrama de Flujo 
 
Conjunto de símbolos estándar en los cuales se 
encuentran escritos los pasos del algoritmo, dichos 
símbolos se encuentran unidos por medio de flechas, 
denominadas líneas de flujo, que indican la secuencia en 
que se deben de ejecutar. 
 
Los siguientes son los principales símbolos para elaborar 
Diagramas de Flujo: 
 
 
 12
 
Reglas básicas para elaborar Diagramas de Flujo: 
 
• Poner un encabezado que incluya un título que 
identifique la función del algoritmo; el nombre del 
autor; y la fecha de elaboración. 
• Sólo se pueden utilizar los símbolos anteriores. 
• Los diagramas se deben dibujar de arriba hacía abajo 
y de izquierda a derecha. 
• La ejecución del programa siempre empieza en la 
parte superior del diagrama. 
• Los símbolos de “Inicio” y “Final” deben aparecer 
solo una vez. 
• La dirección del flujo se debe representar por medio 
de flechas (líneas de flujo). 
• Todas las líneas de flujo deben llegar a un símbolo o 
a otra línea. 
• Una línea de flujo recta nunca debe cruzar a otra. 
• Cuando dos líneas de flujo se crucen, una de ellas 
debe incluir una línea arqueada en el sitio donde 
cruza a la otra. 
• Las bifurcaciones y ciclos se deben dibujar 
procurando una cierta simetría. 
• Cada rombo de decisión debe tener al menos dos 
líneas de salida (una para SI y otra para NO). 
• Las acciones y decisiones se deben describir 
utilizando el menor numero de palabras posible; sin 
que resulten confusas. 
• Todo el Diagrama debe ser claro, ordenado y fácil 
de recorrer. 
 
Actividad 1.6 
1. Hallar el perímetro de un cuadrado cuyo lado mide 5 
cm. 
2. Hallar el perímetro de un círculo cuyo radio mide 2 
cm. 
3. Hallar el área de un cuadrado cuyo lado mide 5 cm. 
4. Hallar uno de los lados de un rectángulo cuya área 
es de 15 cm2 y uno de sus lados mide 3 cm. 
5. Hallar el área y el perímetro de un círculo cuyo radio 
mide 2 cm. 
6. Hallar el área de un pentágono regular de 6 cm de 
lado y con 4 cm de apotema. 
 
3.2. PSEUDOCÓDIGO PARA REPRESENTAR 
ALGORITMOS 
Pseudocódigo: lenguaje de especificación de algoritmo 
que utiliza para representar las acciones palabras 
reservadas en ingles, las cuales son similares a las de los 
lenguajes de programación, tales como start, end, if-
then-else, while-wend, repeat-until, etc. (o su 
equivalente en español) 
 
Este nació como un lenguaje similar al inglés y era un 
medio de representar básicamente las estructuras de 
control de programación estructurada. 
 
El pseudocódigo no puede ser ejecutado por una 
computadora. Una ventaja del pseudocódigo es que 
puede ser traducido fácilmente a lenguajes de 
programación. 
 
La escritura del pseudocódigo exige normalmente la 
indentación (sangría en el margen izquierdo) o en su 
defecto, numeración jerárquica. 
 
Ejercicios: 
Realice los ejercicios, utilizando Diagramas de Flujo 
y Pseudocdigo. 
 
3.1. Escribir un algoritmo que calcule y saque por 
pantalla, las horas, minutos y segundos de un tiempo 
expresado sólo en segundos introducido por teclado. 
3.2. Escribe un algoritmo que calcule la altura desde la 
que cae un objeto que tarda t segundos en llegar al 
suelo. El tiempo lo introduce el usuario por teclado. 
Use la fórmula: 
 
 13
3.3. Escribe un algoritmo que lea por teclado una 
temperatura en grados Fahrenheit y la convierta a 
grados centígrados según la fórmula: 
 
3.4. Realizar un algoritmo para intercambiar los valores 
de dos variables. 
3.5. Escribir un algoritmo para leer un valor entero, 
doblarlo, multiplicarlo por 25 y visualizar el 
resultado. 
3.6. Diseñar un algoritmo que lea los dos catetos de un 
triángulo rectángulo y calcule la hipotenusa. 
3.7. Diseñar un algoritmo que lea cuatro calificaciones 
de un alumno y calcule la calificación promedio. 
UNIDAD 4: 
4.1. PROCESOS 
Se llama procesos a todas las instrucciones contenidas 
en un algoritmo para: 
 
• Declarar variables y constantes. 
• Asignar valores iniciales a variables y constantes. 
• Leer datos que suministra el usuario por medio del 
teclado o del ratón (mouse). 
• Realizar operaciones matemáticas (aplicar 
fórmulas). 
• Reportar o mostrar contenidos de variables y 
constantes. 
• Mostrar en pantalla resultados de procedimientos 
activados por el programa. 
4.2.ESTRUCTURA SECUENCIAL 
Un Algoritmo está compuesto por instrucciones de 
diferentes tipos, organizadas secuencialmente, en forma 
de estructuras de control. De estas estructuras de control, 
las más comunes son las siguientes: 
 
• Secuencial. 
• Iterativa (repetición). 
• Condicional (decisión, selección). 
 
Una estructura de control se define como un esquema 
que permite representar ideas de manera simplificada y 
quebajo condiciones normales, es constante. 
 
 
Figura 4.1: Modelo de estructura secuencial. 
 
La estructura de control secuencial es la más sencilla. 
También se la conoce como estructura lineal. Se 
compone de instrucciones que deben ejecutarse en forma 
consecutiva, una tras otra, siguiendo una línea de flujo. 
 
Solamente los problemas muy sencillos pueden 
resolverse haciendo uso únicamente de esta estructura. 
 
Una estructura de control secuencial puede contener 
cualquiera de las siguientes instrucciones: 
 
• Declaración variables 
• Asignación de valores 
• Entrada de datos 
• Procesamiento de datos (operaciones) 
• Reporte de resultados 
 
Ejercicios 
 
4.1. Diseñar un algoritmo que lea la cantidad de lluvia en 
pulgadas e imprima su equivalente en milímetros 
sabiendo que 25.5 mm = 1 pulgada. 
4.2. Diseñar un algoritmo que lea el nombre y el apellido 
de una persona en ese orden e imprima el apellido 
seguido del nombre. 
4.3. El costo de un automóvil para el comprador es la 
suma total del costo del vehículo, del porcentaje de 
ganancia del vendedor (12%) y de los impuestos 
estatales y locales aplicables (6%). Diseñar un 
algoritmo que lea el costo del automóvil e imprima 
el costo para el comprador. 
4.4. La calificación final de un estudiante viene dada por 
tres aspectos del trabajo anual: nota de laboratorio 
que cuenta un 30% del total, nota de examen parcial 
que cuenta un 20% del total y nota de examen final 
que cuenta el 50% restante. Diseñar un algoritmo 
 14
que lea el nombre del estudiante, la nota de 
laboratorio, la nota del examen parcial y la nota del 
examen final e imprima el tanto por ciento 
correspondiente a cada una de las notas así como la 
calificación final. 
4.5. Realizar un algoritmo para calcular la longitud de 
una circunferencia y el área del círculo con un radio 
leído desde teclado. El algoritmo debe detectar 
entradas no válidas. 
4.6. Leer dos números y mostrar el producto de ellos. 
4.7. Leer las longitudes de un rectángulo y calcular la 
superficie y el perímetro. 
4.8. Convierta de doláres a euros. 
4.9. Un negocio de deportes hace un 25 % de descuento 
en pelotas de fútbol y de béisbol. Se requiere escribir 
un programa que le permita a un empleado ingresar 
los precios originales de las pelotas. El programa 
deberá usar esta entrada de datos para calcular el 
precio rebajado. La salida del programa deberá 
mostrar, en líneas separadas, el precio original y el 
precio con descuento. 
4.10. Efectuar un programa que lea los valores de 3 
resistencias electrónicas (en Ohmios, W) conectadas 
en paralelo y muestre en pantalla el valor global de 
las 3. El valor global es calculado por la siguiente 
ecuación: 1 / (1/R1 + 1/R2 + 1/R3). 
4.11. ¿Dada la duracion en minutos de una llamada 
calcular el costo,considerando? 
 -Hasta tres minutos el costo es 0.50 
-Por encima de tres minutos es 0.50 más 
0.1*cada minuto adicional a los tres primeros 
 
4.12. Realizar un algoritmo que permita ingresar una 
frase y la descomponga esta en sus palabras 
imprimiéndolas al revés. Ejem. 
 CIUDAD CHICLAYO 
 DADUIC OYALCIHC 
4.3.ESTRUCTURA CONDICIONAL 
La estructura condicional se utiliza para indicarle al 
computador que debe evaluar una condición y, a partir 
del resultado, ejecutar el bloque de instrucciones 
correspondiente. La forma más común está compuesta 
por una proposición que se evalúa y dos bloques de 
instrucciones que se ejecutan, uno cuando la condición 
es verdadera (selección simple y doble) y otro cuando 
ésta es falsa (únicamente en la selección doble). 
 
Por su parte, un bloque de instrucciones puede contener 
una o varias instrucciones que se ejecutan una detrás de 
otra. La estructura condicional tiene dos variantes: 
 
• Selección simple. 
• Selección Múltiple. 
 
Las estructuras condicionales simple y múltiple evalúan 
una proposición (condición) que devuelve como 
resultado únicamente dos valores posibles y excluyentes: 
verdadero o falso. 
 
Selección simple 
 
La estructura condicional de selección simple ejecuta un 
bloque de instrucciones cuando la proposición 
(condición) es verdadera; si esta es falsa, no hace nada. 
 
 
El formato de la estructura de selección es: 
 
si <condición> entonces 
 instrucción 1 
 instrucción 2 
 ................... 
 instrucción n 
 si-no 
 instrucción a 
 instrucción b 
 ................... 
 instrucción z 
fin-si 
 
Por ejemplo, Cuando realizamos una llamada telefónica: 
 
Si {señal de ocupado} entonces 
Colgar el teléfono 
si - no 
Iniciar la conversación 
fin – si 
 
En este caso, la condición es {señal de ocupado}, que 
puede ser verdadera o falsa. Si es verdadera, entonces 
debemos colgar el teléfono y si no, podemos realizar la 
conversación. 
 
 15
Ejemplo: 
 
Si a = 5 entonces 
imprimir"A es 5" 
si - no 
 imprimir "A no es igual a 5" 
fin - si 
 
También puede obviarse el si - no cuando no nos 
interesa ejecutar un bloque de instrucciones en caso de 
que la condición no se cumpla. 
 
Si {condición} entonces 
instrucción 1 
instrucción 2 
......... 
instrucción n 
fin – si 
 
Por ejemplo: 
 
Si {hoy es Miércoles} entonces 
Comprar entradas para el cine 
fin - si 
 
Ejemplo: 
 
Introducir un número por teclado y determinar si es 
positivo o negativo. 
 
Para saber si un número es positivo o negativo, debemos 
saber si es menor o mayor a cero. Si es mayor, el 
número es positivo y si es menor resulta negativo. 
Utilizamos Si... para evaluar como es el número con 
respecto a cero y mostramos los mensajes 
correspondientes en cada caso. Así: 
 
inicio 
leer numero 
Si numero < 0 entonces 
imprimir "El número es negativo" 
si-no 
imprimir "El número es positivo" 
fin-si 
fin 
 
Ejemplo. Dados dos números, establecer cuál es mayor. 
 
Comenzamos leyendo ambos números, que en el 
ejemplo se llamarán NumeroA y NumeroB. Luego 
debemos comparar como es uno contra el otro (puede ser 
NumeroA contra NumeroB o bien comparar NumeroB 
contra NumeroA): 
 
inicio 
leer numeroA, numeroB 
Si numeroA < numeroB entonces 
imprimir "El mayor es:", numeroB 
si-no 
imprimir "El mayor es:", numeroA 
fin-si 
fin 
 
En este ejemplo, ¿qué pasaría si los números fueran 
iguales? Hagamos la prueba. 
 
Luego de leer los números, por ejemplo: numeroA=100 
y numeroB=100 se ejecutan las instrucciones: 
 
Si numeroA < numeroB entonces 
imprimir "El mayor es:", numeroB 
 
El resultado de la condición 
 
Por lo tanto, al ser falsa la condición, se ejecuta la 
instrucción imprimir "El mayor es:", numeroA. 
 
Por tanto, el algoritmo ofrecerá una solución incorrecta 
cuando los números son iguales. Para solucionar esto, 
tenemos que prever el caso de que los números sean 
iguales, utilizando condiciones anidadas. 
 
inicio 
leer numeroA, numeroB 
Si numeroA < numeroB entonces 
imprimir "El mayor es:", numeroB 
si-no 
 Si numeroA > numeroB entonces 
 imprimir "El mayor es:", numeroA 
 si-no 
 imprimir "Los números son iguales" 
 fin-si 
fin-si 
fin 
 
Esta solución contiene dos estructuras de repetición, una 
dentro de la otra (anidada). En caso de ser necesario 
podemos anidar tantas estructuras de selección como sea 
necesario. El algoritmo averigua si A es menor a B, si no 
lo es, tenemos otras dos posibilidades: que sea menor o 
igual, esto es lo que determina la estructura anidada. 
 
Otro ejemplo de estructuras de repetición anidadas, 
consiste en dado un número del 1 al 7, establecer al día 
de la semana. 
 
inicio 
 leer numero 
 Si numero=1 entonces 
 imprimir "Domingo" 
 16
 si-no 
 Si numero=2 entonces 
 imprimir="Lunes" 
 si-no 
 Si numero=3 
 imprimir "Martes" 
 si-no 
 Si numero=4 entonces 
 imprimir "Miercoles"si-no 
 Si Numero=5 entonces 
 imprimir "Jueves" 
 si-no 
 Si numero=6 entonces 
 imprimir "Viernes" 
 si-no 
 Si numero=7 entonces 
 imprimir "Sábado" 
 si-no 
 imprimir "El número 
debe estar entre 1 y 7" 
 fin-si 
 fin-si 
 fin-si 
 fin-si 
 fin-si 
 fin-si 
 fin-si 
 fin 
 
Notarás que tenemos varios Si...entonces anidados, ya 
que si el número ingreso no es 1, tenemos que preguntar 
si es 2 ó 3 ó 4...etc. El último Si...entonces es para 
verificar que el número ingresado no es 1, 2, 3, 4, 5, 6 ó 
7; sino cualquier otro que no nos interesa. 
 
Repasa los algoritmos anteriores. 
 
Resulta bastante tedioso anidar un montón de Si ... 
entonces, como en el ejemplo del día de la semana. 
Cuando queramos o necesitemos hacer numerosas 
comparaciones podemos usar otra estructura de 
selección llamada Según Sea. El formato de estructura 
de selección Según sea es: 
 
Según sea <variable> 
 Caso = <condición> 
 Caso = <condición> 
 instrucción o instrucciones 
 Otro caso 
 instrucción o instrucciones 
fin-según 
 
Así, utilizando esta estructura, el problema del día de la 
semana será así: 
 inicio 
 Leer numero 
 Según sea numero 
 Caso = 1 
 imprimir "Domingo" 
 Caso = 2 
 imprimir="Lunes" 
 Caso = 3 
 imprimir="Martes" 
 Caso = 4 
 imprimir "Miercoles" 
 Caso = 5 
 imprimir "Jueves" 
 Caso = 6 
 imprimir "Viernes" 
 Caso = 7 
 imprimir "Sábado" 
 Otro Caso 
 imprimir "El número debe estar entre 1 y 7" 
 fin-según 
fin 
 
Lo cual resulta menos engorroso que varios Si... 
entonces anidados. Es posible anidar Si... entonces 
dentro de estructuras Según sea y viceversa. 
 
Observa que la instrucción Otro Caso ejecuta una o 
varias instrucciones cuando no se cumple ningún caso de 
los contemplados más arriba. Otro Caso debe estar 
siempre al final (cuando sea necesario, si no o es se 
puede omitir Otro Caso) 
 
El uso de una u otra estructura depende de cada persona, 
pero en general cuando las condiciones a evaluar son 
muchas, se utiliza Según Sea. 
 
La estructura según sea admite varias condiciones por 
ejemplo: 
 
Según sea MES 
 caso= 1,3,5,7,8,10,12 
 TDias = 31 
 caso = 2,4,6,11 
 TDias =30 
 caso = 2 
 TDias=28 
fin-según 
 
Este pequeño ejemplo establece el número de días de un 
mes determinado almacenado en la variable MES (para 
años no bisiestos). En lugar de escribir varios Caso= 1, 
Caso =2, etc, se puede especificar acción o acciones (en 
este caso la asignación de días a TDias) cuando la 
variable tome uno de los valores separados por comas. 
 17
Es decir si TDias es 1 ó 3 ó 5 ó 7 ó 8 ó 10 ó 12; se 
ejecuta TDias=31. 
 
Ejercicios 
 
4.13. Los n trabajadores de la empresa “PagaPoco" 
lograron obtener un aumento de sueldo en el último 
mes. Este aumento de sueldo se determinó por 
tramos, de acuerdo a la siguiente tabla: 
 
Construya un algoritmo que reciba como entrada el 
sueldo actual de cada uno de los trabajadores y calcule el 
nuevo sueldo. Además, el algoritmo debería indicar 
cuánto más gasta la empresa por concepto de sueldos, 
después del aumento. 
4.14. Escribir un algoritmo para calcular las 
soluciones de una ecuación cuadrática de la forma 
 
4.15. Un sistema de ecuaciones lineales de la forma: 
 
 
Puede resolverse utilizando las siguientes fórmulas: 
 
 
 
 
Diseñar un algoritmo para leer los coeficientes a, b, c, d, 
e, f, y calcule los valores de x e y. ¿Existen algunos 
casos en los que este algoritmo no funcione? 
4.16. Diseñar un algoritmo que lea tres puntuaciones 
de un alumno y calcule la media. Si la media del 
alumno no supera los 60 puntos el alumno está 
suspenso y el algoritmo deberá imprimir un mensaje 
indicándolo. En caso de que el alumno tenga una 
media superior o igual a 60 puntos pero inferior a 
70, el alumno estará ‘aprobado pero dudoso’. Si el 
alumno supera los 70 puntos el mensaje a imprimir 
será ‘Aprobado’. 
4.17. Escribir un algoritmo que lea dos números y 
determine cuál de ellos es el mayor. 
4.18. Escribir un algoritmo que lea tres números y 
determine cuál de ellos es el mayor. 
4.19. Dados por el teclado la base y altura de un 
triángulo, hacer un algoritmo para calcular el área 
del triángulo. Tener en cuenta los casos no válidos 
(la base o la altura negativas). 
4.20. Introducir un número por teclado y determinar si 
es positivo o negativo.- 
Para saber si un número es positivo o negativo, 
debemos saber si es menor o mayor a cero. Si es 
mayor, el número es positivo y si es menor resulta 
negativo. 
4.21. Dado un número del 1 al 7, establecer al día de 
la semana. 
4.22. Leer un número y mostrar por la salida estándar 
si dicho numero es o no es par. 
4.23. Definir una función que dados tres números X, 
Y y Z, devuelva una lista con los números ordenados 
por orden creciente. 
4.24. Diseñar una función para leer un año y 
determinar si es bisiesto. NOTA: un año es bisiesto 
si es múltiplo de 4. Los múltiplos de 100 no son 
bisiestos, salvo si son también múltiplos de 400. 
 
4.4.ESTRUCTURA ITERATIVA 
(REPETICIÓN) 
La estructura iterativa o de repetición permite ejecutar 
una o varias instrucciones, un número determinado de 
veces o, indefinidamente, mientras se cumpla una 
condición. Esta estructura ayuda a simplificar los 
algoritmos, ahorrando tiempo valioso a quien resuelve 
problemas con ayuda del computador. 
 
 
Figura 2.2: Modelo de estructura iterativa. 
 
Historia Curiosa 
 
Un día, en la India, un joven bracmán llamado Lahur 
Sessa pidió una audiencia con el Rey para obsequiarle 
 18
el juego que había inventado. La curiosidad del rey lo 
llevó a conceder la cita que pedía el joven Sessa. El rey 
quedó maravillado y aprendió rápidamente las reglas de 
aquel juego que consistía de un tablero cuadrado 
dividido en sesenta y cuatro cuadritos iguales (32 
blancos y 32 negros); sobre este tablero se ubicaban dos 
colecciones de piezas, que se distinguían unas de otras 
por el color, blancas y negras, repitiendo 
simétricamente los motivos y subordinadas a reglas que 
permitían de varios modos su movimiento. 
 
Algún tiempo después, el rey mandó llamar a su 
presencia al joven bracmán y dirigiéndose a él le dijo: 
- Quiero recompensarte, amigo mío, por este 
maravilloso obsequio, que de tanto me sirvió para 
aliviar viejas angustias. Pide, pues, lo que desees, para 
que yo pueda demostrar, una vez más, como soy de 
agradecido con aquellos que son dignos de una 
recompensa. 
Ante tal ofrecimiento, el joven respondió: 
- Voy, pues, a aceptar por el juego que inventé, una 
recompensa que corresponda a vuestra generosidad; no 
deseo, sin embargo, ni oro, ni tierras, ni palacios. Deseo 
mi recompensa en granos de trigo. 
-¿Granos de trigo? –Exclamó el rey, sin ocultar la 
sorpresa que le causara semejante propuesta-. ¿Cómo 
podré pagarte con tan insignificante moneda? 
-Nada más simple -aclaró Sessa-. Dadme un grano de 
trigo por la primera casilla del tablero, dos por la 
segunda, cuatro por la tercera, ocho por la cuarta, y así 
sucesivamente hasta la sexagésima cuarta y última 
casilla del tablero. 
No sólo el rey, sino también los visires y venerables 
bracmanes, se rieron estrepitosamente al oír la extrañasolicitud del joven. 
Insensato -exclamó el rey-. ¿Dónde aprendiste tan 
grande indiferencia por la fortuna? La recompensa que 
me pides es ridícula. 
Mando llamar el rey a los algebristas más hábiles de la 
Corte y les ordenó calculasen la porción de trigo que 
Sessa pretendía. 
Los sabios matemáticos, al cabo de algunas horas de 
realizar cálculos dispendiosos, volvieron al salón para 
hacer conocer al rey el resultado completo de sus 
cálculos. 
Preguntándoles el rey, interrumpiendo el juego: 
-¿Con cuantos granos de trigo podré cumplir, 
finalmente, con la promesa hecha al joven Sessa? 
-Rey magnánimo -declaró el más sabio de los 
geómetras-: calculamos el número de granos de trigo 
que constituirá la recompensa elegida por Sessa, 
y obtuvimos un número cuya magnitud es inconcebible 
para la imaginación humana (el número en cuestión 
contiene 20 guarismos y es el siguiente: 
18.446.744.073.709. 551. 615. Se obtiene restando 1 a 
la potencia 64 de 2). 
-La cantidad de trigo que debe entregarse a Lahur Sessa 
-continúo el geómetra- equivale a una montaña que 
teniendo por base la ciudad de Taligana, fuese 100 
veces más alta que el Himalaya. La India entera, 
sembrados todos sus campos, y destruidas todas sus 
ciudades, no produciría en un siglo la cantidad de trigo 
que, por vuestra promesa, debe entregarse al joven 
Sessa. 
¿Cómo describir aquí la sorpresa y el asombro que esas 
palabras causaron al Rey Ladava y a sus dignos visires? 
El soberano hindú se veía, por primera vez, en la 
imposibilidad de cumplir una promesa. 
Lahur Sessa -refiere la leyenda de la época-, como buen 
súbdito, no quiso dejar afligido a su soberano. Después 
de declarar públicamente que se desdecía del pedido 
que formulara, se dirigió respetuosamente al monarca y 
le dijo: los hombres más precavidos, eluden no sólo la 
apariencia engañosa de los números, sino también la 
falsa modestia de los ambiciosos. 
El rey, olvidando la montaña de trigo que prometiera al 
joven bracmán, lo nombró su primer ministro. 
(Tomado del libro “El hombre que calculaba” escrito 
por Malba Tahan) 
 
Ejemplo 
 
Elabora un algoritmo para ayudar a los hábiles 
algebristas de la corte del Rey Ladava con el cálculo del 
número de granos de trigo que deben entregar a Lahur 
Sessa como pago por haber inventado el juego de 
ajedrez. 
 
 19
 
La estructura repetitiva se utiliza cuando se quiere que 
un conjunto de instrucciones se ejecuten un cierto 
número finito de veces. Llamamos bucle o ciclo a todo 
proceso que se repite un cierto número de veces dentro 
de un algoritmo o un programa. 
 
Existen dos tipos de estructuras repetitivas; la primera es 
aquella en donde se tiene perfectamente establecido el 
número de veces que un grupo de acciones se van a 
ejecutar (20, 5, 2 veces), y la segunda en la que el 
número de repeticiones es desconocido y se hará hasta 
que se cumpla o no cierta condición. 
 
Un ejemplo de la primera sería imprimir los datos de los 
alumnos de una clase (se conoce cuantos alumnos hay) y 
un ejemplo de la segunda puede ser el mostrar un 
mensaje de error cada vez que el usuario pulse una 
determinada tecla (no sabemos cuantas veces pulsará esa 
tecla). 
 
Las acciones que forman parte del cuerpo del bucle son 
ejecutadas de forma repetitiva mediante la ocurrencia o 
no de una condición. 
Estructura Para (Desde - Hasta) 
 
Cuando conocemos de antemano el número de veces en 
que se desea ejecutar una acción o grupo de acciones, se 
utiliza la estructura repetitiva Desde o Para. 
Esta estructura ejecuta las acciones del cuerpo del bucle 
un número especificado de veces, y de modo automático 
controla el número de iteraciones o pasos. 
 
La sintaxis es: 
 
desde variable= vi hasta vf [incremento] 
acción o acciones 
fin-desde 
 
Donde: 
 
variable: variable índice 
vi: valor inicial de la variable índice 
vf: valor final de la variable índice 
[incremento]: el número que se incrementa (o 
decrementa) a la variable índice en cada iteración del 
bucle. 
 
Ejemplo: 
Imprimir todos los números del 1 al 100. 
 
Inicio 
 desde i = 1 hasta 100 
 imprimir i 
 fin-desde 
fin 
 
I es la variable índice con un valor inicial de 1, se 
incrementa uno en cada paso hasta 100. 
 
Podemos notar que la estructura desde comienza con un 
valor inicial de la variable índice y las acciones se 
ejecutan hasta que el valor inicial sea MAYOR que el 
que el Valor final. 
 
La variable índice se incremente en uno (en el ejemplo) 
y si este nuevo valor del índice no es mayor que el valor 
final, se ejecuta de nuevo la acción imprimir. 
 
En este caso se visualizará los números 1, 2, 3, 4, 5, 6, 7, 
8, 9, 10 ....97, 98, 99, 100. 
 
Otro Ejemplo: 
 
Imprimir todos los números pares desde 2 hasta el 300 
 20
 
desde i= 2 hasta 300 incremento 2 
imprimir i 
fin-desde 
 
Donde: 
 
La variable índice comienza en 2, se imprime 2 y en el 
siguiente paso se incrementa (suma) 2 a la variable 
índice que pasa a valer 4; se imprime el 4 y como 4 es 
menor que 300 (valor final) , se pasa a una nueva 
iteración incrementando nuevamente en 2 el índice, que 
ahora vale 6; y así sucesivamente... 
 
Aquí se visualizan: 2, 4, 6, 8, 10, 12, 14, 16, 18, ..... 296, 
298, 300 
 
Si deseamos mostrar los impares el algoritmo es el 
siguiente: 
 
desde i= 1 hasta 300 incremento 2 
imprimir i 
fin-desde 
 
El ciclo termina mostrando 299 puesto que en el 
siguiente paso, La variable i valdría 301 y es mayor al 
límite establecido de 300. i pasa a valer realmente 301 
en el último paso, solo que la instrucción de imprimir no 
se ejecuta porque el límite de 300 se supera. 
 
Si diéramos la instrucción de imprimir el valor de i, 
inmediatamente después del fin-desde, veíamos 301. 
 
Ejemplo 3: Imprimir los valores comprendidos entre el 
460 y 500 en orden inverso. 
 
Debemos mostrar: 500, 499, 498, 497,..... 462, 461, 460. 
En este caso haremos un decremento a la variable índice 
(no un incremento como en los ejemplos anteriores). 
 
Tenemos que comenzar nuestra variable índice en 500 y 
decrementar una unidad hasta alcanzar el 460, así: 
 
desde i= 500 hasta 460 incremento -1 
imprimir i 
fin-desde 
 
Como salida tenemos, entonces: 500, 499, 498, 497, 
496, 495, 494,.... 464, 463, 462, 461, 460. 
 
El segundo tipo de estructura repetitiva se diferencia de 
la primera en que no se conoce el número de 
repeticiones o iteraciones en que se va a ejecutar una 
instrucción o un bloque de instrucciones. 
 
Estas estructuras son básicamente dos: Estructura 
mientras....fin-mientras y la estructura repetir.... hasta. 
Estas dos se diferencian en que la verificación de la 
condición para repetir el ciclo se hace al inicio con 
mientras y al final con repetir. 
 
También existen estructuras repetitivas que son 
combinaciones de estas dos que mencionamos, pero 
no las estudiaremos. 
Ejercicios 
4.25. Construya un algoritmo que reciba como entrada 
un cierto valor n, y genere como salida n veces la 
palabra “hola". 
4.26. Construya un algoritmo que reciba como entrada 
un cierto valor n y genere como salida el valor de la 
serie: 1 + 2 + 3 + 4 + : : : + n. 
4.27. Escribir un algoritmo que calcule la desviación 
estándar de cinco números. 
 
4.28. Realizar un algoritmo para calcular los valores 
que toma la siguiente función 
 
4.29. Imprimir todos los números del 1 al 100. 
4.30. Imprimir los valores comprendidos entre el 460 
y 500 en orden inverso. 
4.31. Imprimir todos los números pares desde 2 hasta 
el 300 
4.32. Dada una secuencia de n números mostrar su 
producto por pantalla. 
4.33. Tabla de multiplicar del 5. 
4.34. Modificar el programa anterior para aplicar la 
fórmula a cualquier cantidad de resistencias. 
Primeramente, el programa pedirá el número de 
resistencias a conectar en paralelo. Después pedirá 
uno a uno los valores de todas las resistencias. Por 
último, escribirá el resultado global. 
Estructura Mientras 
Como su nombre lo indica, esta estructura repite el 
cuerpodel bucle mientras se cumpla una determinada 
condición. Su sintaxis es: 
 
mientras {condición} 
acción 1 
acción 2 
acción 3 
..... 
acción n 
fin mientras 
instrucción X 
 21
 
Lo primero que el computador hace es examinar la 
condición, lo que puede dar como resultado dos 
posibilidades: 
 
- La condición se cumple: Se ejecutan acción 1, acción 
2, acción 3, ..., acción n. 
 
Las estará repitiendo hasta que la condición no se 
cumpla, entonces se sale del ciclo y se siguen ejecutando 
la o las instrucciones que vienen a continuación y están 
fuera del bucle; instrucción X. 
 
- La condición no se cumple: No entrará en el ciclo. Se 
ejecutan las instrucciones que vienen después del bucle, 
instrucción X, por ejemplo. 
 
De esto se deduce que el cuerpo del bucle de una 
estructura mientras puede repetirse cero o más veces, 
veces que son determinadas por el cumplimiento o no de 
la condición. 
Ejemplo 
 
mientras contraseña < > "josua" 
imprimir "La contraseña es incorrecta !" 
fin-mientras 
imprimir "Ha ingresado la contraseña correcta" 
 
Veremos más ejemplos de esta estructura en la sección 
ejercicios. Al analizarlos comprenderemos mejor como 
funciona. 
Estructura Repetir 
 
La estructura repetir cumple la misma función que la 
estructura mientras. La diferencia está en que la 
estructura mientras comprueba la condición al inicio y 
repetir lo hace al final; por eso la estructura repetir se 
ejecuta por lo menos una vez. 
 
La sintaxis es: 
 
repetir 
intrucción 1 
instrucción 2 
instrucción 3 
...... 
hasta {condición} 
instrución X 
 
Repetir es opuesta a la estructura mientras. Repetir se 
ejecuta hasta que se cumpla una condición que se 
comprueba al final del bucle. Esto implica que las 
instrucciones que forman el cuerpo del bucle se ejecutan 
por lo menos una vez. Con la estructura mientras el 
bucle puede ejecutarse 0 o más veces. 
 
Lo que la computadora hace al ejecutar la estructura 
repetir es: 
 
- Se ejecutan: instrucción 1, instrucción 2, instrucción 3, 
...... 
- Se evalúa la condición. Si esta es FALSA se vuelve a 
repetir el ciclo y se ejecutan instrucción 1, instrucción 2, 
instrucción 3, ...... 
 
Si la condición es VERDADERA se sale del ciclo y se 
ejecuta instrucción X. 
 
Ejemplo 
 
repetir 
imprimir "La contraseña es incorrecta !" 
hasta contraseña = "josua" 
 
Más ejemplos en la sección Ejercicios. 
 
En resumen, hemos visto dos tipos de estructuras 
repetitivas, el primer tipo en la que conocemos el 
número de veces que se repetirá el bucle o ciclo (Desde 
....fin-desde; y el segundo tipo en el cual no conocemos 
el numero de veces en se repite el ciclo ya que está 
determinado por el cumplimiento o no de una condición 
(mientras ..... fin-mientras y repetir....hasta). 
 
Toda estructura Desde....fin-desde tiene una estructura 
mientras....fin-mientras o repetir.....hasta equivalente. 
 
Pero las estructuras mientras... o hacer ... no tienen 
NINGÚN desde.....fin-desde equivalente. 
 
Ejercicios 
4.35. Construya un algoritmo que reciba como entrada 
varios montos de depósito y despliegue la suma de 
ellos. Considere que un valor negativo significa que 
no hay más datos y no debe ser considerado como 
dato válido. 
4.36. Construya un algoritmo que reciba como entrada 
una secuencia de valores numéricos y genere como 
salida la suma de los valores pares y la 
multiplicación de los impares. Considere que un 
valor negativo significa que no hay más datos y no 
debe ser considerado como dato válido. 
4.37. Construya un algoritmo que reciba como entrada 
una secuencia de valores de temperaturas y genere 
como salida el total de veces que la temperatura fue 
0. Considere que un valor de temperatura negativo 
significa que no hay más datos y no debe ser 
considerado como válido. 
 22
4.38. Construya un algoritmo que reciba como entrada 
una secuencia de valores de temperaturas y genere 
como salida el total de veces que se registro una 
temperatura menor que 0, el total de veces que fue 0 
y el total de veces que fue mayor que 0. Considere 
que una temperatura con valor 99 es una temperatura 
no válida e indica el término de los datos. 
4.39. Construya un algoritmo que genere como salida 
los términos de la siguiente serie: 2; 5; 7; 10; 12; 15; 
17; : : : ; 1800. Hasta un valor dado por el usuario. 
4.40. Escribir un diagrama de flujo para un algoritmo 
que calcule la media de varios números, los que 
introduzca el usuario por teclado, y saque el 
resultado por pantalla. Nota: el primer carácter no 
numérico que introduzca el usuario indicará que no 
va a introducir más números. 
4.41. Leer secuencia de números y mostrar la suma de 
dichos números hasta que se introduce un número 
negativo. 
4.42. Pedir al usuario una contraseña hasta que este de 
la correcta o decida salir. 
4.43. El número mágico. 
 
UNIDAD 5: 
5.1. ARREGLOS. 
Hasta ahora hemos trabajado con datos simples que 
representaban un número, un carácter o una cadena. Sin 
embargo, en ocasiones se necesita procesar una 
colección de valores que están relacionados entre sí por 
algún método, por ejemplo, una lista de calificaciones, 
de los meses del año, temperaturas a lo largo de una 
semana, etc. 
 
El procesamiento de estos datos utilizando datos simples 
es muy difícil. Por eso, se han definido en la 
programación varias estructuras de datos, que son una 
colección caracterizada por alguna organización y por 
las operaciones que se definen en ella. 
 
Una de estas estructuras son los arreglos. 
 
Un arreglo es un conjunto de elementos del mismo tipo 
que comparten un nombre común; algo así como una 
variable que puede almacenar al mismo tiempo más de 
un valor. 
 
Los arreglos reciben también el nombre de tablas, listas 
o arrays. 
 
Un arreglo es un conjunto ordenado y homogéneo. 
Ordenado porque el primer elemento, segundo, tercero... 
n-ésimo puede ser identificado y homogéneo porque sus 
elementos son todos del mismo tipo (numéricos o 
alfanuméricos, pero no una combinación de ambos). 
 
Gráficamente, un arreglo se representa como una tabla: 
 
 
De igual forma que cualquier variable, un arreglo debe 
tener un nombre. 
 
Aquí hemos llamado A a nuestro arreglo ejemplo. 
 
Los elementos que están en el arreglo A ocupan todos 
una determinada posición dentro de él: 
 
Así, el número -5 se encuentra en la posición 3; el 99 en 
la posición 10 y el 12 en la posición 1. 
 
A(3) = - 5 
A(10) = 99 
A(1) = 12 
 
Vemos, entonces que un elemento se referencia por el 
nombre del arreglo y la posición que ocupa dentro de él. 
El número que se coloca entre paréntesis se llama índice 
y designa la posición del elemento en el arreglo. 
 
Cada elemento del arreglo se puede procesar como si 
fuera una variable simple. 
 
La dimensión de un arreglo está dada por la cantidad de 
elementos que contiene y debe ser definida al comenzar 
el programa. 
 
A los arreglos unidimensionales se les suele conocer 
como vectores. 
5.2. CARGAR UN ARREGLO 
La asignación de valores a los elementos de un vector se 
realiza de esta forma: 
A(4) � 0 
A(7) � 4 
 
Por supuesto que no vamos a cargar un vector de 100 
elementos, escribiendo 100 asignaciones. 
 23
 
La carga de un vector se hace por medio del ciclo 
desde....fin desde . Nuestro bucle va a comenzar en 1 
hasta un número N que es la longitud del vector. 
 
Pero antes, no demos olvidar que el vector debe ser 
dimensionado. Al dimensionar un vector le decimos a la 
máquina que reserve los espacios de memoria necesarios 
para los elementos del vector. 
 
Los problemas relacionados con vectores tendrán casi 
siempre esta forma 
 
inicio 
Leer dimensión del vector 
Dimensionar Vector 
Cargar Vector 
Procesamiento de los elementos del vector (según lo que 
se pida) 
Imprimir Vector 
fin 
 
Por lo tanto, vamos a tener tres desde...fin desde bien 
diferenciados: 
• Un bucle para la carga 
• Un bucle para el proceso 
• Un bucle para la impresión 
 
Aunque la carga y el proceso pueden hacersedentro de 
un solo bucle, particularmente no recomiendo esta 
práctica, ya que casi siempre crea dificultades 
innecesarias. 
 
Ejercicio: Cargar un vector de 30 componentes. 
 
No olvidemos que antes de cargar un vector debemos 
dimensionarlo. En este caso la dimensión del vector es 
30. 
 
Luego habilitaremos un bucle desde....fin desde 
comenzando en 1 hasta 30. Llamaremos V a nuestro 
vector. 
 
inicio 
dimensionar v(30) 
desde i= 1 hasta 30 
 leer v(i) 
fin desde 
fin 
 
De esta forma hemos cargado un arreglo v con 
componentes. Ahora bien, el usuario deberá siempre 
poder determinar la dimensión del arreglo sobre el que 
quiera trabajar. Por eso, vamos a leer la dimensión del 
vector en una variable: 
 
inicio 
Leer n 
dimensionar v(n) 
desde i = 1 hasta n 
Leer v(i) 
fin desde 
fin 
 
Así vamos a cargar un arreglo SIEMPRE 
5.3. IMPRIMIR UN ARREGLO 
El procedimiento para imprimir un arreglo es casi 
exactamente igual al proceso de carga, con la diferencia 
que en lugar de leer, vamos a imprimir. Para el caso de 
nuestro arreglo v de n componentes: 
 
desde i= 1 hasta n 
imprimir v(i) 
fin desde 
 
Es bueno volver a señalar que los elementos de un 
arreglo son todos del mismo tipo (todos numéricos o 
todos alfanuméricos). 
5.4. PROCESANDO UN ARREGLO 
Ejercicio: Leer un vector de N componentes. Hallar la 
suma y el promedio de los elementos del vector. 
 
Se pide la suma y el promedio de los elementos. 
Sabemos que el promedio lo hallaremos dividiendo la 
suma todos los elementos, sobre la cantidad. 
Nuestro arreglo (al que llamaremos h) va a tener una 
dimensión d, que será determinada por el usuario. 
 
Siguiendo el esquema que habíamos visto, vamos a tener 
primeramente un bucle para la carga del arreglo, otro 
para el proceso y otro para imprimir el arreglo. 
 
inicio 
suma � 0 
leer d 
dimensionar h (d) 
desde i = 1 hasta h 
leer h (i) 
fin desde 
desde i = 1 hasta d 
suma �suma + h(i) 
fin desde 
promedio �suma/d 
imprimir h (i) 
fin 
 24
 desde 
impimir ""La suma de los elementos del vector es:", 
suma 
imprimir "El promedio es:", promedio 
fin 
5.5. ARREGLOS BIDIMENSIONALES 
Matrices 
 
Un arreglo bidimensional o matriz es un conjunto de 
datos homogéneos (todos del mismo tipo), cada uno de 
los cuales debe referenciarse por dos índices. Los índices 
determinan la posición de una fila y una columna. 
 
 
En este ejemplo tenemos una matriz de dimensión M * 
N, en donde M es el número de columnas y N el número 
de filas. Aquí M=5 y N=6. 
 
El número total de elementos de la matriz será entonces 
5*6 = 30. 
 
De la misma forma que los vectores, una matriz debe 
tener un nombre. Llamaremos MAT a nuestra matriz 
ejemplo y determinaremos la posición de algunos de sus 
elementos. MAT será de tipo alfanumérico. 
 
La matriz MAT está definida con 5 filas y 6 columnas. 
La notación para el dimensionamiento de una matriz es 
NOMBRE (cantidad de filas, cantidad de columnas); 
luego: MAT(5, 6) 
 
Una vez que la matriz contenga datos (veremos más 
adelante como cargar una matriz) para referirnos a un 
elemento debemos conocer en que fila y que columna 
reside ese elemento, por ejemplo: 
 
 
MAT (1,1) = "A" 
MAT(3, 5) ="Ñ" 
MAT (4,3)= "OK" 
MAT (5,4)="L" 
 
Dimensionamiento y Carga de una matriz 
 
Así como un arreglo unidimensional (vector) tiene que 
ser nombrado y dimensionado antes de ser utilizado, una 
matriz también. La instrucción para dimensionar un 
matriz es: 
 
dimensionar M(5,6) 
 
La carga de datos se realiza de la misma forma que un 
vector, por medio de un bucle desde....fin desde; solo 
que en este caso, vamos a necesitar 2 bucles; uno que 
recorra las filas y otro las columnas: 
 
desde fila = 1 hasta 5 
 desde columna = 1 hasta 6 
 leer MAT(fila, columna) 
 fin-desde 
fin-desde 
 
En este ejemplo, la variable fila comienza en el valor 1, 
luego se da inicio al bucle columna que desde 1 hasta 6. 
El bucle de las columnas debe terminar todo su recorrido 
para que pueda comenzar el siguiente valor de fila. 
 
El recorrido de una matriz se hace, por tanto de esta 
manera: 
 
 25
 
Una matriz también puede recorrerse por columnas. Al 
programar, no siempre podremos predefinir el tamaño de 
un matriz, por eso, solicitaremos al usuario que ingrese 
la cantidad de filas y columnas con las que desea 
dimensionar una matriz: 
 
inicio 
 leer cantfila, cantcolumna 
 dimesionar MAT(cantfila, cantcolumna) 
 desde fila=1 hasta cantfila 
 desde columna=1 hasta cantcolumna 
 leer MAT(fila,columna) 
 fin-desde 
 fin-desde 
fin 
 
Este algoritmo solicita las dimensiones de la matriz, la 
dimensiona y luego procede a cargarla. 
 
Una matriz se imprime utilizando también dos índices: 
 
inicio 
 leer cantfila, cantcolumna 
 dimesionar MAT(cantfila, cantcolumna) -
----- se dimensiona 
 desde fila=1 hasta cantfila 
 desde columna=1 hasta cantcolumna 
 leer MAT(fila,columna) 
------- lectura 
 fin-desde 
 fin-desde 
 desde fila=1 hasta cantfila 
 desde columna=1 hasta cantcolumna 
 imprimir MAT(fila,columna) ---
----- impresión 
 fin-desde 
 fin-desde 
 fin 
 
Procesando una matriz. 
 
Proceso de una matriz se realiza también forma análoga 
a los ejemplos anteriores. Utilicemos un ejemplo que 
calcula el promedio de los elementos de una matriz. 
 
 
 inicio 
 leer cantfila, cantcolumna 
 dimensionar M (cantfila, cantcolumna) 
 desde I = 1 hasta cantfila 
 desde J=1 hasta cantcolumna 
 leer M(I, J) 
 fin-desde 
 fin-desde 
 desde I=1 hasta cantfila 
 desde J=1 hasta cantcolumna 
 suma � suma + M(I, J) 
 fin-desde 
 fin-desde 
 promedio f suma / (cantfila * cantcolumna) 
 desde I = 1 hasta cantfila 
 desde J=1 hasta cantcolumna 
 imprimir M(I, J) 
 fin-desde 
 fin-desde 
fin 
 
Una matriz que tiene la misma cantidad de filas y de 
columnas se llama matriz cuadrada. 
 
1 2 3 4 5 
2 
3 
4 
5 
Esta es una matriz cuadrada de orden 5. 
 
Las matrices cuadradas tienen ciertas características; por 
ejemplo, los elementos en donde el número de filas es 
igual al número de columnas se llama diagonal principal 
(señalados en amarillo): Los elementos de la diagonal 
principal tienen, entonces, la propiedad de que fila = 
columna 
 
 
 
 
 
 
La diagonal principal define así dos áreas bien notorias, 
una que está por encima y otra por debajo. La región 
determinada por los elementos situados sobre la diagonal 
 26
principal se llama matriz triangular superior que tiene la 
propiedad de que fila < columna. 
 
La matriz triangular inferior es la zona situada debajo de 
la diagonal principal, cuyos índices cumplen con la 
propiedad: fila > columna. 
 
 
 
 
 
 
 
 
Elementos de la Matriz 
triangular superior 
Elementos de la Matriz 
triangular inferior 
 
Operaciones con Matrices 
 
1- Suma de matrices: Si A y B son dos matrices de igual 
dimensión (MxN), entonces la suma de Ay B existe y es 
igual a una matriz C también de dimensión MxN en 
donde cada C (i, j) = A (i, j) + B (i, j): 
 
Matriz A 
 
10 8 3 0 
7 -3 33 45 
9 15 71 29 
Matriz B 
 
1 6 9 69 
14 22 56 7 
3 5 80 1 
 
A y B son de igual dimensión, por lo tanto existe una 
matriz C que es la suma de A y B 
 
11 14 13 69 
21 19 89 52 
12 20 151 30 
2- Producto Escalar por una matriz: Si A es una matriz 
de orden (dimensión) MxN y K es un escalar, el 
producto de K*A es igual a otra matriz D también de 
orden MxN en donde casa D (i, j) = K * A (i ,j):

Otros materiales