Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NIVEL TERCIARIO
INTRODUCCIÓN A LA PROGRAMACIÓN
1”A”
ALGORITMOS
2024
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024
INDICE
Introducción 3
Resolución de Problemas con una Computadora 6
Análisis del problema 6
Diseño del algoritmo 7
Codificación 8
Compilación y ejecución 8
Verificación y depuración 9
Mantenimiento 9
Documentación 9
Lenguaje de Diseño de Algoritmos 10
Estructura de un Algoritmo 10
Descripción de los Datos 12
Descripción de las Acciones 14
Operaciones aritméticas 14
Operaciones relacionales 15
Operaciones lógicas 15
Asignación 17
Entrada de datos 18
Salida de datos 18
Estructuras de Control 20
Estructura de Control: SECUENCIA 20
Estructura de Control: SELECCIÓN 24
SELECCIÓN de acuerdo a una condición: SI – ENTONCES 24
SELECCIÓN de acuerdo a una condición: SI – ENTONCES – SINO 25
SELECCIÓN de acuerdo al valor de una variable: EN CASO DE 26
Estructura de Control: REPETICIÓN 36
REPETICIÓN controlada por una condición: MIENTRAS – FINMIENTRAS 36
REPETICIÓN controlada por una condición: REPETIR – HASTA 42
REPETICIÓN con cantidad conocida de repeticiones: PARA-FINPARA 48
INTRODUCCIÓN
Actualmente vivimos en un mundo que depende cada vez más del uso de la tecnología.
Nuestras actividades escolares y profesionales, nuestros vínculos afectivos y el tiempo de
esparcimiento están permeados por el uso de dispositivos tecnológicos. Sin embargo, ¿qué
sabemos sobre el mundo de la Computación, su funcionamiento y del trabajo que realizan las
personas que se desarrollan en ese campo?
La programación es una parte fundamental de la una disciplina más amplia llamada Ciencias de
la Computación, que también estudia el funcionamiento de las computadoras, las
telecomunicaciones, las bases de datos, la inteligencia artificial, etc. Necesitamos contar con
los conocimientos que aporta esa disciplina para comprender y opinar sobre el mundo que nos
rodea.
Ciencias de la Computación
Actualmente podemos encontrar sistemas de computación en muchos de los dispositivos que
manipulamos a diario (celulares, computadoras personales, consolas de videojuegos, etc.), pero
lo cierto es que la "verdadera" computación, sinónimo de Ciencias de la Computación (CC).
La computación es el estudio de cómo trabajan las computadoras y los sistemas
computacionales, y cómo son construidos y programados.
En este sentido, las ciencias de la computación proveen herramientas conceptuales básicas para
el correcto razonamiento acerca de los sistemas computacionales. Exploran principios e ideas
(como conocimientos sobre programación de computadoras), y no la utilización de algunas
herramientas o dispositivos particulares que son resultado de las TIC (como pueden software
específico, como procesadores texto y planillas de cálculo, o los componentes electrónicos que
forman el hardware de las computadoras).
Esta ciencia es de gran importancia en la actualidad, y es una de las áreas de conocimiento más
apasionantes, no sólo desde el punto de vista científico, sino también para el desarrollo de las
actividades donde se manipulan a diario estas tecnologías.
Pensamiento Computacional
Es un proceso por el cual un individuo, a través de habilidades propias de la computación y
pensamiento crítico logra la resolución de problemas de distinta índole que incluye:
• Organizar datos de manera lógica y analizarlos
• Representar datos mediante abstracciones, como modelos y simulaciones
• Automatizar soluciones mediante pensamiento algorítmico
• Identificar, analizar e implementar posibles soluciones con el objeto de encontrar la
combinación de pasos y recursos más eficiente y efectiva
• Generalizar y transferir ese proceso de solución de problemas a una gran diversidad de
estos
Estas habilidades se apoyan y acrecientan mediante una serie de actitudes que son dimensiones
esenciales del Pensamiento Computacional. Estas actitudes incluyen:
Características de un algoritmo:
• Preciso porque indica el orden de realización en cada paso sin ambigüedades.
• Definido porque si se sigue dos veces se obtiene igual resultado cada vez.
• Finito porque tiene un número determinado de pasos, tiene fin (uno solo).
Codificación
Durante esta fase se implementa el algoritmo en un código escrito en un lenguaje de
programación, reflejando las ideas desarrolladas en las fases de análisis y diseño.
Compilación y ejecución
En la fase de compilación, un programa escrito en un lenguaje de programación se
traduce en un programa equivalente que la máquina será capaz de interpretar.
Usualmente este último lenguaje, es lenguaje de máquina, pero también puede ser un
código intermedio, o simplemente texto.
La ejecución es la acción de cargar un programa en memoria principal por el sistema
operativo darle el control al procesador para que ejecute cada una de las instrucciones del
mismo.
Verificación y depuración
En las fases de verificación y depuración, cuanto más exhaustivas sean las pruebas de un
programa, mayor seguridad se tendrá que éste funcione correctamente y, por lo tanto, menor
posibilidad de errores. El programa se considera terminado cuando se han realizado pruebas y
ensayo de su fiabilidad con el conjunto de datos seleccionados y otros nuevos, hasta incluso
con datos reales, y no se encuentren errores de ningún tipo.
Mantenimiento
Esta fase involucra la modificación de un producto de software después de la entrega, para
corregir errores, mejorar el rendimiento, u otros atributos. El mantenimiento del software es
una de las actividades más comunes en la ingeniería de software.
El mantenimiento de software es también una de las fases en el ciclo de vida de desarrollo de
sistemas (SDLC, sigla en inglés de system development life cycle), que se aplica al desarrollo
de software.
Documentación
Por último, se debe realizar la documentación externa del programa, la cual incluye
análisis, diagramas de flujo de datos y/o pseudocódigos, manuales de usuario con
instrucciones para ejecutar el programa y para interpretar los resultados.
El objetivo fundamental de un lenguaje de diseño es que sea comprensible para las personas
que van a interpretar algoritmos escritos con él. El fin último del lenguaje de programación
en cambio, es ser comprensible para la computadora que va a interpretar y ejecutar el
programa.
ESTRUCTURA DE UN ALGORITMO
Algoritmo Nombre
Datos Constantes
Definición del dato y del tipo de dato
….
….
Datos Variables Definición: descripción de los datos que se usan.
Definición del dato y del tipo de dato
….
.…
Comienzo
Acción1
Acción2
…. Proceso: acciones de sobre los datos que estructuran el control.
.…
AcciónN
FinAlgoritmo
Todo problema hace referencia a una serie de objetos que denominamos datos del problema,
algunos de estos datos son conocidos y otros constituyen una incógnita.
Los datos deben estar asociados a un identificador. Además, los datos pueden ser:
• Constantes: permite almacenar en el dato un valor (numérico o alfanumérico) que no
cambia durante la ejecución del proceso.
• Variables: permite almacenar temporalmente en el dato un valor (numérico o
alfanumérico) durante la ejecución de un proceso, y su contenido puede cambiar durante
la ejecución.
Recordar que la cantidad de datos pueden ser cero, uno o varios. La cantidad de ellos viene
dada por el problema que se desee resolver.
Para cada dato se debe indicar el dominio al cual pertenece ese dato, o sea el conjunto de
valores que puede llegar a tomar (tipo de dato). Es decir:
• Numéricos:
o almacenan números enteros, ejemplo: 12, 1, -5
o almacenan números reales, ejemplo: 1.3, 5.4, -1.33
• Alfanuméricos:
• Lógicos:
o almacenan sólo el valor: Verdadero o Falso.
FinAlgoritmo
FinAlgoritmo
FinAlgoritmo
FinAlgoritmo
Observación: NO es lo mismo hablar de los valores de los datos, que de los datos o
identificador de los datos. Es importante comprender esta diferencia. Cuando mencionamos
valores, estamos usando ejemplos particulares. Cuando hablamos de identificador de datos
estamos haciendo referencia al dato en general, sin especificar ningún valor en especial,
estamos generalizando.
Las operaciones usadas son binarias, trabajan sobre dos operandos del mismo tipo de dato
(números, caracteres, valores lógicos) y devuelven un resultado lógico.
Las operaciones lógicas son: conjunción (Y), disyunción (O) y negación (NO).
Las operaciones usadas son binarias, trabajan sobre dos operandos lógicos y devuelven un
resultado lógico.
Para determinar los resultados de las distintas operaciones lógicas se utilizan las siguientes
tablas de verdad.
A B AyB A B AoB A No A
V V V V V V V F
V F F V F V F V
F V F F V V
F F F F F F
Normalmente las operaciones lógicas se usan con operadores de relación y matemáticos para
formar condiciones más complejas. Se usa mucho en la escritura de condiciones como forma de
expresar afirmaciones del lenguaje o restricciones.
Nota (Nota < 0) (Nota > 10) (Nota < 0) O (Nota > 10)
-2 V F Verdadero
1 F F Falso
9 F F Falso
14 F V Verdadero
Uno de los errores más comunes es: confundirse de operador y utilizar el incorrecto. Por
ejemplo, ¿cómo nos damos cuenta si utilizamos la notación (Nota < 0) Y (Nota > 10) en el
caso anterior?
Hacemos una tabla como la anterior y comprobamos los resultados obtenidos.
Nota (Nota < 0) (Nota > 10) (Nota < 0) Y (Nota > 10)
-2 V F Falso
1 F F Falso
9 F F Falso
14 F V Falso
Entonces hay un problema en la expresión lógica, ya que “1” y “9” NO son notas incorrectas.
Con este ejemplo se comprueba que con la construcción de este tipo de tablas ayuda a
comprobar los resultados e identificar errores.
4.1.4) ASIGNACIÓN
Sintaxis:
Donde dato (variable) es un identificador asociado a un área de memoria. Los datos pueden ser
1 o más dependiendo de lo que se desee ingresar, pero debe existir al menos uno.
Si el dato (variable) existe, entonces se pierde su valor anterior ya que tomará el valor nuevo,
razón por la cual se dice que la lectura es "destructiva" (destruye el valor que tenía previamente
la variable).
Ejemplos:
Sintaxis:
Dado que puede incluir una o más expresiones, mostrará uno o más valores. Si hay más de una
expresión, se escriben una a continuación de la otra sin separación, por lo que el algoritmo debe
explicitar los espacios necesarios para diferenciar dos resultados si así lo requiere.
Ejemplos:
TRAZAS
Una traza (verificación o prueba) consiste en realizar un seguimiento al algoritmo con distintos
valores para las variables para comprobar su funcionamiento. Para ello se construye una tabla
con tantas columnas como datos existan en el algoritmo, otra para las condiciones y otra para la
salida por pantalla. Las columnas con los datos de entrada se rellenan con los valores que se
deseen, pero el resto de los valores se obtienen siguiendo los pasos del algoritmo.
Para que realmente la traza sirva, uno debe cumplir al pie de la letra lo indicado en el algoritmo
y olvidar lo que realmente desea hacer. Si una traza da el valor esperado, esto no indica que el
algoritmo funciona bien. Para ello hay que asegurar un conjunto de valores de prueba que
abarquen a todos los casos problemáticos. Esto al principio no es fácil de determinar, pero con
la práctica se aprende. Lo que sí se puede asegurar con una traza es que si el resultado no es el
esperado, entonces el algoritmo no funciona.
Letra ( Letra >= ‘a’ ) ( Letra <= ‘z’) ( Letra >= ‘a’ ) Y ( Letra <= ‘z’)
‘e’ Verdadero Verdadero Verdadero
‘A’ Falso Verdadero Falso
‘Z’ Falso Verdadero Falso
‘z’ Verdadero Verdadero Verdadero
1326 10 425 10 7 10
6 132 5 42 7 0
Algoritmo ObtenerUnidad
Datos Variables
nro: Entero
unidad : Entero
Comienzo
ESCRIBIR ‘Ingresar un numero’
LEER nro
unidad nro MOD 10
ESCRIBIR ‘La unidad del numero ‘, nro, ‘ es ‘, unidad
Fin Algoritmo
1) 2) 3)
unidad Nro mod 10 decena Nro mod 10 centena Nro mod 10
Nro Nro div 10 Nro Nro div 10 Nro Nro div 10
Algoritmo SumarDigitos
Datos Variables
Nro,Suma: Entero
unidad, decena, centena: Entero
Comienzo
ESCRIBIR ‘Ingresar un numero’
LEER nro
unidad nro mod 10 {Obtener el digito de la unidad}
nro nro div 10
Ejemplo 4: Dada la hora actual, calcular cuántas horas, min y segundos restan para finalizar el día.
Algoritmo CalcularTiempoParaFinalDelDia
Datos Variables
Hora1, Min1, Seg1: Entero
Hora2, Min2, Seg2: Entero
SegRestantes, Resto : Entero
Comienzo
ESCRIBIR ‘Ingresar la hora actual: ‘
LEER hora1
ESCRIBIR ‘Ingresar los minutos actuales: ‘
LEER min1
ESCRIBIR ‘Ingresar los segundos actuales: ‘
LEER seg1
{Cálculo de la cantidad de segundos que restan para culminar el día}
{Segundos que tiene un día: 60 * 60 * 24 = 86400}
SegRestantes 86400 - (Hora1 * 3600 + Min1 * 60 + Seg1)
{Descomposición de SegRes en horas, minutos y segundos}
Hora2 SegRestantes div 3600
Resto SegRes mod 3600
Min2 Resto div 60
Seg2 Resto mod 60
ESCRIBIR ‘La hora es ‘, hora2, ‘ minutos es ‘, min2, ‘ y segundos es ‘, seg2
Fin Algoritmo
Verificación:
Algoritmo SumarDosHoras
Datos Entrada
Hora1, Min1, Seg1, Hora2, Min2, Seg2: Entero
Hora3, Min3, Seg3: Entero
TotSeg, Resto : Entero
Comienzo
ESCRIBIR ‘Ingresar la hora1: ‘
LEER hora1
ESCRIBIR ‘Ingresar los minutos1: ‘
LEER min1
ESCRIBIR ‘Ingresar los segundos1: ‘
LEER seg1
ESCRIBIR ‘Ingresar la hora2: ‘
LEER hora2
ESCRIBIR ‘Ingresar los minutos2: ‘
LEER min2
ESCRIBIR ‘Ingresar los segundos2: ‘
LEER seg2
{Determinar la cantidad total de segundos entre las dos horas}
TotSeg (Hora1 + Hora2) * 3600 + (Min1 + Min2) * 60 + (Seg1 + Seg2)
{Pasar el total de segundos en horas, minutos y segundos}
Hora3 TotSeg div 3600
Resto TotSeg mod 3600
Min3 Resto div 60
Seg3 Resto mod 60
ESCRIBIR ‘La hora es ‘, hora3, ‘ minutos es ‘, min3, ‘ y segundos es ‘, seg3
Fin Algoritmo
Verificación:
Hora1 Min1 Seg1 Hora2 Min2 Seg2 Hora3 Min3 Seg3 Resto TotSeg
14 50 40
2 20 5
17 10 45 645 61845
Funcionamiento: SI-ENTONCES
1) Se evalúa la condición
2) Se determina si se entra al bloque del ENTONCES o se continúa con la orden siguiente al SI-
ENTONCES. Para esto se utiliza el resultado lógico devuelto en el primer paso:
a) Si la condición es verdadera entonces se entra a ejecutar el bloque (Acción1 hasta AcciónN)
contenido dentro del ENTONCES. Luego continúa con la orden siguiente al SI-ENTONCES.
b) Si la condición es falsa, no se entra al ENTONCES y se continúa con la orden siguiente al SI-
ENTONCES.
b) Si la condición es falsa, no se entra al ENTONCES y entra a ejecutar el bloque contenido dentro del
SINO. Luego continúa con la ejecución de la siguiente orden al condicional
Funcionamiento de SI-ENTONCES-SINO
1) Se evalúa la condición
2) Se determina si se entra al bloque del ENTONCES o al bloque del SINO. Para esto se utiliza el
resultado lógico devuelto en el primer paso:
a) Si la condición es verdadera entonces se entra a ejecutar el bloque (Acción1 hasta AcciónN)
contenido dentro del ENTONCES. Luego continúa con la ejecución de la siguiente orden al
condicional. (Ignora el bloque contenido en el SINO).
b) Si la condición es falsa, no se entra al ENTONCES y entra a ejecutar el bloque (Acción1 hasta
AcciónN) contenido dentro del SINO. Luego continúa con la ejecución de la siguiente orden al
condicional.
Funcionamiento de EN CASO DE
1) Se evalúa si existe coincidencia de igualdad entre el “dato” y la primera lista de valores.
2) Se determina si se entra al bloque del primer renglón (bloque1: Acción1 hasta AcciónN) o se cheque
la siguiente lista de valores:
a) Si la variable es igual a alguna de las constantes de la primera lista de valores (valor11, valor12, etc.),
se entra a ejecutar el bloque (Acción1 hasta AcciónN) de la derecha de esa lista. Luego continúa con la
ejecución de la siguiente sentencia al EN CASO DE. (Ignora los bloques contenidos en las siguientes
listas de constantes).
b) Si la variable no es igual a ninguno de los valores de la primera lista de valores, se ejecutan los pasos
anteriores, pero sobre la siguiente lista de valores (valor21, valor22, etc.).
c) Si no se obtuvo ninguna coincidencia sobre las listas de valores y existe un SINO, entra a ejecutar el
bloque que aparece dentro del SINO. Luego continua con la ejecución de la siguiente orden al EN
CASO DE.
Ejemplo 1: Una playa de estacionamiento cobra $ 80 por hora o fracción. Diseñar un algoritmo que
determine cuanto debe pagar un cliente por el estacionamiento de su auto, conociendo el tiempo en
horas y minutos. (PSeInt)
Proceso CalcularGastoEstacionamiento
Definir valorhora, horas, min, seg Como Entero
Definir pagado Como Real
ValorHora <- 80
ESCRIBIR SIN SALTAR "Ingresar las horas que estuvo estacionodo "
LEER horas
ESCRIBIR SIN SALTAR "Ingresar los minutos que estuvo estacionado "
LEER min
SI ( min > 0 )
ENTONCES
Horas <- Horas + 1
FINSI
pagado <- Horas * ValorHora
ESCRIBIR "El importe a pagar es $ ", pagado
FinProceso
Verificación:
Verificación: en la siguiente traza se realizan pruebas con los 4 casos posibles: par positivo, impar
positivo, para negativo, impar negativo.
Ejemplo 3: Diseñar un algoritmo que a partir de tres números distintos determine cuál es el mayor.
(PSeInt)
Proceso ObtenerNroMayor
Definir A, B, C, mayor Como Entero
ESCRIBIR "Ingresar un numero: "
LEER A
ESCRIBIR "Ingresar un numero: "
LEER B
ESCRIBIR "Ingresar un numero: "
LEER C
SI (A > B) Y (A > C)
ENTONCES
Mayor <- A
SINO
SI (B > A) Y (B > C)
ENTONCES
Mayor <- B
SINO
Mayor <- C
FINSI
FINSI
ESCRIBIR "El numero mayor es : ", mayor
FinProceso
Proceso ObtenerNroMayor_Version2
Definir A, B, C, mayor Como Entero
ESCRIBIR "Ingresar un numero: "
LEER A
ESCRIBIR "Ingresar un numero: "
LEER B
ESCRIBIR "Ingresar un numero: "
LEER C
Mayor <- A
SI ( B > Mayor)
ENTONCES
Mayor <- B
FINSI
SI ( C > Mayor)
ENTONCES
Mayor <- C
FINSI
ESCRIBIR "El numero mayor es : ", mayor
FinProceso
EJERCICIO: Analice ambas versiones de los algoritmos anteriores. ¿Funcionan ambos? ¿Cuál es la
diferencia entre ellas? Realizar las verificaciones.
Observación: como el número tiene 3 dígitos, para ser capicúa basta compara el dígito de las
unidades con el dígito de las centenas y ver si son iguales. Por ejemplo: 353, 878, etc.
Proceso EsCapicua
FinProceso
Ejercicio: hacer una traza con un número capicúa y otra con uno que no lo sea.
Ejemplo 5: Diseñar un algoritmo que recibe como entrada tres números y los muestre por pantalla de
mayor a menor y de menor a mayor. (PSeInt)
Proceso MostrarNumeros
ESCRIBIR "Los numeros de mayor a menor son : ", mayor, ", ", medio, " y ", menor
ESCRIBIR "Los numeros de menor a mayor son : ", menor, ", ", medio, " y ", mayor
FinProceso
Ejemplo 6: Diseñar un algoritmo que reciba un número de mes y devuelva el nombre del mismo.
(PSeInt)
Proceso NombreDelMes
Proceso NombreDelMes_Version2
DEFINIR mes como Entero
DEFINIR NomMes como Cadena
ESCRIBIR SIN SALTAR "Ingresar el numero de mes: "
LEER mes
SI (Mes = 1) ENTONCES
NomMes <- "Enero"
SINO
SI (Mes = 2) ENTONCES
NomMes <- "Febrero"
SINO
SI (Mes = 3) ENTONCES
NomMes <- "Marzo"
SINO
SI (Mes = 4) ENTONCES
NomMes <- "Abril"
SINO
SI (Mes = 5) ENTONCES
NomMes <- "Mayo"
SINO
SI (Mes = 6) ENTONCES
NomMes <- "Junio"
SINO
SI (Mes = 7) ENTONCES
NomMes <- "Julio"
SINO
SI (Mes = 8) ENTONCES
NomMes <- "Agosto"
SINO
SI (Mes = 9) ENTONCES
NomMes <- "Septiembre"
SINO
SI (Mes = 10) ENTONCES
NomMes <- "Octubre"
SINO
SI (Mes = 11) ENTONCES
NomMes <- "Noviembre"
SINO
SI (Mes = 11) ENTONCES
NomMes <- "Diciembre"
FINSI
FINSI
FINSI
FINSI
FINSI
FINSI
FINSI
FINSI
FINSI
FINSI
FINSI
FINSI
Escribir "El mes es ", nommes
FinProceso
Mg (Lic) Carlos Vidal Página 33 de 50
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024
Proceso NombreDelMes_Version3
FinSegun
FinProceso
La repetición permite que un conjunto de acciones se ejecute más de una vez. Puede ser que el
número de repeticiones dependa de una condición (MIENTRAS-FINMIENTRAS y
REPETIR-HASTA) o sea fijo (PARA-FINPARA).
Funcionamiento
1) Se evalúa la condición
2) Se determina si se entra a repetir o se continúa con la orden siguiente al mientras. Para esto se
utiliza el resultado lógico devuelto en el primer paso (condición):
a) Si la condición es verdadera entonces se entra a ejecutar el bloque (Acción1 hasta la
AcciónN). Al finalizar la ejecución del bloque, el control retoma automáticamente al 1er punto (a
evaluar la condición nuevamente)
b) Si la condición es falsa, no se entra a repetir y se continúa con la orden siguiente al FIN-
MIENTRAS.
Observaciones:
a) La cantidad de veces que se repite el bloque depende de la condición indicada. Como antes de
entrar a repetir se evalúa primero la condición, el bloque puede repetirse cero o más veces.
b) Hay que asegurarse que la condición sea modificada dentro del bloque a repetir para
garantizar que en algún momento tome el valor FALSO y finalicen las repeticiones. Caso
contrario, se entraría en un bucle infinito.
Ejemplo 1: escribir un algoritmo que muestre todos los números pares menores que un número dado.
(PSeInt)
Proceso MostrarPares
DEFINIR nroTope, par como Entero
ESCRIBIR SIN SALTAR "Ingresar el numero: "
LEER nroTope
par <- 2
MIENTRAS ( par < NroTope ) HACER
ESCRIBIR "El numero par generado es ", par
par <- par + 2
FINMIENTRAS
FinProceso
En la siguiente verificación se elige al número 7 como NroTope y se observa como salida los valores:
2, 4, 6.
Ejemplo 2: escribir un algoritmo que muestre por pantalla la tabla de multiplicar de un número dado.
(PSeInt)
Proceso TablaMultiplicar
ESCRIBIR SIN SALTAR "Numero del que desea conocer su tabla de multiplicar: "
LEER nro
factor <- 1
FinProceso
Ejemplo 3: escribir un algoritmo que permita ingresar números positivos, calcule su suma y la muestre
por pantalla. El proceso finaliza cuando se ingrese el primer valor negativo. (PSeInt)
Proceso MostrarSumaPositivos
DEFINIR nro, suma como Entero
suma <- 0
MIENTRAS ( nro > 0 ) HACER
suma <- suma + nro
FINMIENTRAS
ESCRIBIR "La suma obtenida es ", suma
FinProceso
Proceso CalcularSumatoria
DEFINIR nro, suma, nroTope como Entero
suma <- 0
nro <- 1
MIENTRAS ( nro <= nroTope ) HACER
suma <- suma + nro // Acumular la suma de los números
nro <- nro + 1 // Generer el siguiente numero
FINMIENTRAS
ESCRIBIR "La suma obtenida es ", suma
FinProceso
Ejemplo 5: leer las edades de un grupo de personas hasta que se introduzca un valor negativo y luego se
obtenga determinar la mayor edad. (PSeInt)
Proceso DeterminarEdadMaxima
DEFINIR edad, mayor Como Entero
mayor <- 0
edad <- 0
MIENTRAS ( Edad >= 0 ) HACER
ESCRIBIR SIN SALTAR "Ingrese la edad: "
LEER Edad
SI ( Edad > Mayor )
ENTONCES
Mayor <- Edad
FINSI
FINMIENTRAS
ESCRIBIR "La mayor edad es ", mayor
FinProceso
Verificación:
En la traza anterior se ingresan las edades 10, 22, 13, 42, 35 y -5 (para finalizar) y se devuelve como
edad mayor al valor 42, que es realmente la mayor edad ingresada.
Ejemplo 6: dado un número y una posición dentro del número, devolver el dígito que está ubicado en
dicha posición. Suponer que en la posición 1 encuentran las unidades. (PSeInt)
Ejemplos:
Dado 3752 y la posición 3 debe devolver 7.
Dado 456778 y la posición 1 debe devolver 8.
Proceso DevolverDigitoenPosicionDada
DEFINIR nro, pos, digito, posdigito como Entero
PosDigito <- 1
MIENTRAS ( PosDigito <= Pos ) HACER
Digito <- Nro mod 10
Nro <- TRUNC (Nro / 10)
PosDigito <- PosDigito + 1
FINMIENTRAS
ESCRIBIR "El digito es: ", digito
FinProceso
Verificación:
2 <= 3 ? Sí
37 3 5
3 <= 3 ? Sí
3 4 7
4 <= 3 ? No
En la traza anterior se puede ver que dado el número 3752 y la posición 3, se devuelve el dígito 7 que es
el que se encuentra en dicha posición.
Funcionamiento
1) Se ejecuta el bloque que está dentro del REPETIR.
2) Se evalúa la condición.
3) Se determina si se vuelve a ejecutar el bloque (Acción 1 hasta Acción N), o se continúa
con la orden siguiente al repetir (se finaliza). Para esto se utiliza el resultado lógico
devuelto en el segundo paso:
a) Si la condición es falsa entonces el control retoma automáticamente al 1er punto
(a ejecutar el bloque nuevamente)
b) Si la condición es verdadera, se continúa con la orden siguiente al HASTA (fin
de las repeticiones).
Observaciones:
a) Siempre el bloque se repite por lo menos una vez, porque primero se entra al
bloque y luego se evalúa la condición.
b) Hay que asegurarse que la condición sea modificada dentro del bloque a repetir
para garantizar que en algún momento tome el valor VERDADERO y finalicen
las repeticiones. Caso contrario, se entraría en un bucle infinito.
REPETIR
ESCRIBIR ‘Ingrese el dato: ‘
LEER dato
HASTA que dato sea correcto
REPETIR
ESCRIBIR ‘Ingrese un número de mes’
LEER Mes
HASTA ( Mes >= 1 ) Y ( Mes <= 12 )
REPETIR
ESCRIBIR ‘Ingrese una nota entre 0 y 100’
LEER Nota
HASTA (Nota >= 0 ) Y ( Nota <= 100)
Ejemplo 1: mostrar todos los números pares menores que un número dado. (PSeInt)
Proceso MostrarPares
DEFINIR nroTope, par como Entero
ESCRIBIR SIN SALTAR "Ingresar el numero: "
LEER nroTope
par <- 2
Repetir
ESCRIBIR "El numero par generado es ", par
par <- par + 2
Hasta Que par >= NroTope
FinProceso
La traza anterior elige al número 7 como NroTope y se muestra como salida los valores: 2, 4, 6.
Proceso TablaMultiplicar
ESCRIBIR SIN SALTAR "Numero del que desea conocer su tabla de multiplicar: "
LEER nro
factor <- 1
REPETIR
ESCRIBIR Nro, " * " , factor, " = ", Nro * factor
factor <- factor + 1 //Generar el próximo factor
Hasta Que factor > 10
FinProceso
Ejemplo 3: escribir un algoritmo que permita ingresar números positivos, calcule su suma y la muestre
por pantalla. El proceso finaliza cuando se ingrese el primer valor negativo. (PSeInt)
Proceso MostrarSumaPositivos
DEFINIR nro, suma como Entero
suma <- 0
REPETIR
suma <- suma + nro
FinProceso
¿Por qué se controla que el número ingresado sea positivo en el algoritmo anterior?
Proceso CalcularSumatoria
DEFINIR nro, suma, nroTope como Entero
suma <- 0
nro <- 1
REPETIR
suma <- suma + nro // Acumular la suma de los números
nro <- nro + 1 // Generar el siguiente numero
HASTA QUE nro > NroTope
FINMIENTRAS
ESCRIBIR "La suma obtenida es ", suma
FinProceso
Ejemplo 5: leer las edades de un grupo de personas hasta que se introduzca un valor negativo y
determinar la máxima edad. (PSeInt)
Proceso DeterminarEdadMaxima
DEFINIR edad, mayor Como Entero
mayor <- 0
edad <- 0
REPETIR
ESCRIBIR SIN SALTAR "Ingrese la edad: "
LEER Edad
SI ( Edad > Mayor )
ENTONCES
Mayor <- Edad
FINSI
HASTA QUE edad < 0
ESCRIBIR "La mayor edad es ", mayor
FinProceso
Ejemplo 6: dado un número y una posición dentro de este número, devolver la cifra que esté ubicada en
dicha posición. Suponer que en la posición 1 encuentran las unidades. (PSeInt)
Ejemplos:
Dado 3752 y la posición 3 debe devolver 7.
Dado 456778 y la posición 1 debe devolver 8.
Proceso DevolverDigitoenPosicionDada
DEFINIR nro, pos, digito, posdigito como Entero
PosDigito <- 1
REPETIR
Digito <- Nro mod 10
Nro <- TRUNC (Nro / 10)
PosDigito <- PosDigito + 1
HASTA QUE ( PosDigito > Pos )
ESCRIBIR "El digito es: ", digito
FinProceso
Verificación:
En la traza anterior se puede ver que dado el número 3752 y la posición 3, se devuelve el dígito 7 que es
el que se encuentra en dicha posición.
Variable: es una variable de tipo ordinal que es utilizada por la estructura para controlar la cantidad de
repeticiones.
ValorInicial: es el valor inicial que toma la variable contadora.
ValorFinal: es el valor al que debe llegar la variable contadora a través de las sucesivas repeticiones.
Tanto el valor inicial como el final pueden ser constantes, variables o expresiones.
Funcionamiento
1) Se inicializa a variable con el valor inicial.
2) Se determina si variable es menor o igual al valor final.
3) Se determina si se vuelve a ejecutar el bloque o se continúa con la orden siguiente al repetir. Para esto
se utiliza el resultado lógico devuelto en el segundo paso:
a) Si variable es menor o igual al valor final entonces se entra al repetir a ejecutar el bloque
(Acción1 hasta AcciónN) de órdenes. Luego se incrementa en uno a variable y el control retorna
automáticamente al 2° punto (chequear si se repite nuevamente)
b) Si variable es no es menor o igual al valor final (es mayor), se continúa con la orden siguiente al
Fin Para (fin de las repeticiones).
Ejemplo 1: escribir un algoritmo que muestre todos los números pares menores que un número dado.
(PSeInt)
Proceso MostrarPares
DEFINIR nroTope, nro como Entero
ESCRIBIR SIN SALTAR "Ingresar el numero: "
LEER nroTope
PARA nro <- 1 HASTA (NroTope - 1 ) HACER
SI (Nro MOD 2 = 0)
ENTONCES
ESCRIBIR "El numero par generado es ", nro
FINSI
FINPARA
FinProceso
Verificación:
Proceso TablaMultiplicar
ESCRIBIR SIN SALTAR "Numero del que desea conocer su tabla de multiplicar: "
LEER nro
Ejemplo 3: escribir un algoritmo que permita ingresar números positivos, calcule su suma y la muestre
en pantalla. El proceso finaliza cuando se ingrese el primer valor negativo.
Este problema no puede resolverse utilizando la estructura PARA-FINPARA ya que no se conoce de
antemano la cantidad de números que se van a ingresar por teclado.
Proceso CalcularSumatoria
DEFINIR i, suma, nroTope como Entero
suma <- 0
PARA i <- 1 HASTA NroTope HACER
Suma <- Suma + i //Acumular la suma de los números “i”
FINPARA
Ejemplo 5: leer las edades de un grupo de personas hasta que se introduzca un valor negativo y
determinar la máxima edad. (PSeInt)
Ejemplo 6: dado un número y una posición dentro de este número, devolver la cifra que esté ubicada en
dicha posición. Suponer que en la posición 1 encuentran las unidades. (PSeInt)
Ejemplos:
Dado 3752 y la posición 3 debe devolver 7.
Dado 456778 y la posición 1 debe devolver 8.
Proceso DevolverDigitoenPosicionDada
DEFINIR nro, pos, digito, posdigito como Entero