Está en la página 1de 51

UNIVERSIDAD NACIONAL DEL SUR

ESCUELA SUPERIOR DE COMERCIO

NIVEL TERCIARIO

INTRODUCCIÓN A LA PROGRAMACIÓN
1”A”

ALGORITMOS

Mg (Lic.) Carlos Alberto Vidal

BAHÍA BLANCA ARGENTINA

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

Mg (Lic) Carlos Vidal Página 1 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

INTRODUCCIÓN

¿Por qué enseñar programació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.

Además, al aprender a programar desarrollamos habilidades de pensamiento que sirven para


cualquier tipo de actividad tales como: la capacidad de abstracción y de planificación, la
descomposición de problemas y el trabajo en equipo, entre otras.

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).

Mg (Lic) Carlos Vidal Página 2 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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.

Dentro de las incumbencias más abstractas de la computación encontramos:


• Las limitaciones y capacidades fundamentales de lo que formalmente se define como
computadora, que conceptualmente es una máquina con ciertas características que
puede realizar cómputos.
• La forma en que se construyen descripciones ejecutadas por computadoras, que
comúnmente se conoce como programación. Esto es la base para aprender a desarrollar
soluciones a problemas y permite entender cómo los programas organizan y
transforman la información que manipulan.
• Las características de aquellos problemas que pueden ser resueltos por una
computadora, como pueden ser los costos o la complejidad computacional que conlleva
una implementación particular de una solución.
• Las formas en que se almacenan, procesan e intercambian datos a través de
computadoras, incluyendo la estructura conceptual básica de las computadoras
modernas y las redes de computadoras.

Entre sus contenidos específicos podemos mencionar los siguientes.


• Programación y algoritmos, que permiten conocer cómo se desarrollan y deben
concebirse los programas para que puedan ser ejecutados por computadoras.
• Estructuras de datos y bases de datos, que permiten razonar acerca de la manera en la
que se elige organizar la información en los programas.
• Arquitectura de computadoras y sistemas operativos, que permite entender el diseño
conceptual y operacional fundamental a partir del cual se elige representar e
implementar una computadora.
• Redes de computadoras, que ofrecen formas de conectar y comunicar conjuntos de
computadoras entre sí para el intercambio de información.

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

Mg (Lic) Carlos Vidal Página 3 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Estas habilidades se apoyan y acrecientan mediante una serie de actitudes que son dimensiones
esenciales del Pensamiento Computacional. Estas actitudes incluyen:

• Confianza en el manejo de la complejidad


• Persistencia al trabajar con problemas difíciles
• Tolerancia a la ambigüedad
• Habilidad para lidiar con problemas no estructurados
• Habilidad para comunicarse y trabajar en equipo

Mg (Lic) Carlos Vidal Página 4 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

1) RESOLUCIÓN DE PROBLEMAS CON UNA COMPUTADORA

La resolución de problemas es la fase que supone la conclusión de un proceso más amplio


que tiene como pasos previos la identificación del problema y su modelado.
El proceso de resolución de un problema con una computadora conduce a la escritura de
un programa y a su ejecución en la misma. Aunque el proceso de diseñar programas es
esencialmente un proceso creativo, las fases o pasos, que generalmente para la
resolución de problemas con una computadora son:

Análisis del problema


El propósito del análisis de un problema es ayudar al programador a llegar a una cierta
comprensión de la naturaleza del problema. El problema debe estar bien definido si se desea
llegar a una solución satisfactoria.
Para poder definir con precisión el problema se requiere que las especificaciones de entrada y
salida sean descritas con detalle. Una buena definición del problema, junto con una descripción
detallada de las especificaciones de entrada y salida, son los requisitos más importantes para
llegar a una solución eficaz.
El análisis del problema exige una lectura previa del problema a fin de obtener una idea
general de lo que se solicita. La segunda lectura deberá responder a las preguntas:
a) ¿Qué información debe proporcionar la resolución del problema?
b) ¿Qué datos se necesitan para resolver el problema?
La respuesta a la primera pregunta indicará los resultados deseados o las salidas del problema.
La respuesta a la segunda pregunta indicará qué datos se proporcionan o las entradas del
problema.

Mg (Lic) Carlos Vidal Página 5 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Diseño del algoritmo


Definimos algoritmo como una secuencia de pasos u operaciones, que cuando se
ejecuta producirá resultados y terminará luego de una cantidad finita de tiempo.
Un algoritmo es un método para resolver un problema mediante una serie de pasos
realizables sin ambigüedades, precisos, definidos y finitos, que constituyen la solución
de un determinado problema y es independiente del lenguaje de programación a utilizar.

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).

• Lógico; la sucesión de hechos debe desarrollarse de forma coherente.

Mg (Lic) Carlos Vidal Página 6 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Un algoritmo está constituido por dos partes esenciales:


1) Una descripción de los datos que serán manipulados y de los resultados a los cuales
se quiere arribar junto con una descripción del dominio de esos datos (conjunto
posible de valores que puede llegar a tomar en la realidad). También pueden
especificarse datos auxiliares.
2) Una descripción de las acciones a ejecutar.

El lenguaje algorítmico debe ser independiente de cualquier lenguaje de programación


particular, pero fácilmente traducible a cada uno de ellos. Alcanzar estos objetivos conducirá al
empleo de métodos normalizados para la representación de algoritmos, tales como los
diagramas de flujo o pseudocódigo.

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.

El propósito de la programación es crear programas que exhiban un comportamiento


deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias
áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y
lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis
y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas
en el desarrollo de pequeñas aplicaciones.

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.

Mg (Lic) Carlos Vidal Página 7 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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.

Mg (Lic) Carlos Vidal Página 8 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

2) LENGUAJE DE DISEÑO DE ALGORITMOS

Recordemos a un algoritmo como una secuencia pasos, que se ejecuta en un orden


preciso, producirá resultados y terminará luego de una cantidad finita de pasos. Es decir:
• Preciso porque indica el orden de realización en cada paso sin ambigüedades.
• Definido porque si se sigue dos veces se obtiene el mismo resultado.
• Finito porque tiene un número determinado de pasos, y tiene final.
• Lógico; la sucesión de hechos debe desarrollarse de forma coherente.
Para que un algoritmo pueda ser transformado en un programa, es necesario definirlo en
término de los datos y operaciones (acciones primitivas) que la computadora sepa hacer.
Cuando se mencionan acciones primitivas se hace referencia a las instrucciones que son
directamente traducidas en un lenguaje de programación.

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

Mg (Lic) Carlos Vidal Página 9 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

GRÁFICO SIMPLE DE UN ALGORITMO

Todo algoritmo está constituido por dos componentes claramente identificables:


1) Datos: es la expresión general que describe las características de las entidades sobre las
cuales opera un algoritmo. Un dato por sí mismo no constituye información, es el
procesamiento de los datos lo que nos proporciona información.

2) Proceso: son acciones que manipulan datos, y generan los resultados.

Mg (Lic) Carlos Vidal Página 10 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

3) DESCRIPCIÓN DE LOS DATOS

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:

o almacenan un sólo carácter, ejemplo: 'a', '@', '$', '3'


o almacenan cadenas de caracteres, ejemplo: 'Hola Mundo', 'computadora’

• Lógicos:
o almacenan sólo el valor: Verdadero o Falso.

A continuación, se mostrarán ejemplos de definición de datos para una serie de problemas


enunciados.

Ejemplo 1: Obtener el máximo común divisor entre dos números enteros.


Algoritmo CalcularMCD
Datos Variables
NroA, NroB : Entero
MáximoComúnDivisor : Entero

FinAlgoritmo

Mg (Lic) Carlos Vidal Página 11 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 2: Determinar la cantidad de días entre dos fechas dadas.


Algoritmo Días_Entre_Fechas
Datos Variables
día1, mes1, año1, día2, mes2, año2: Entero
DiferenciaEntreFechas : Entero

FinAlgoritmo

Ejemplo 3: Determinar si un número es primo.


Algoritmo Es_Nro_Primo
Datos Variables
Nro : Entero
EsPrimo : Lógico

FinAlgoritmo

Ejemplo 4: Determinar si un año es bisiesto.


Algoritmo Año_Bisiesto
Datos Variables
Año : Entero
EsBisiesto : Lógico

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.

Mg (Lic) Carlos Vidal Página 12 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

4) DESCRIPCIÓN DE LAS ACCIONES

Existen dos tipos de acciones que es necesario describir:

1. Acciones para manipular los datos


2. Acciones para estructurar el control

4.1) ACCIONES PARA MANIPULAR LOS DATOS


Las acciones primitivas que manipulan datos pueden ser agrupadas en:
• Operaciones aritméticas
• Operaciones relacionales
• Operaciones lógicas
• Asignación
• Entrada de datos
• Salida de datos

4.1.1) OPERACIONES ARITMETICAS


Se aceptan como operadores a los de suma, resta, multiplicación, cociente y resto (para la
división entera). Las operaciones usadas son binarias, trabajan sobre dos operandos numéricos
y devuelven un resultado numérico.

Operación Operador Ejemplo Resultado


Suma + 8+2 10
Resta - 8-2 6
Producto * 8*2 16
División real / 7/2 3.5
División entera div 7 div 2 3
Resto de división entera mod 7 mod 2 1

Mg (Lic) Carlos Vidal Página 13 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

4.1.2) OPERACIONES RELACIONALES

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.

Operación Operador Ejemplo Resultado


Menor < 8<8 Falso
Menor o igual <= 8 <= 8 Verdadero
Distinto <> A' <> 'a' Verdadero
Mayor > Verdadero > Falso Verdadero
Mayor o igual >= 'papel' >= 'papelería' Falso
Igual = 5=5 Verdadero

4.1.3) OPERACIONES LÓGICAS

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.

Ejemplo 1: Mes es un número de mes correcto.

Verificación de la solución hallada, ( Mes >= 1 ) Y ( Mes <= 12)

Mes ( Mes >= 1 ) ( Mes < = 12 ) ( Mes >= 1 ) Y ( Mes < = 12 )


-2 F V Falso
1 V V Verdadero
9 V V Verdadero
14 V F Falso

Mg (Lic) Carlos Vidal Página 14 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 2: Nota es una nota incorrecta.

Verificación de la solución hallada, (Nota < 0) O (Nota > 10)

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

Observamos que a la pregunta:


¿1 es una nota incorrecta? Se contesta Falso
¿9 es una nota incorrecta? 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.

Ejemplo 3: N es un número impar.


Ayuda: al dividir “N” por 2, el resto es distinto de 0, es decir N mod 2 <> 0.

Verificación de la solución hallada, N mod 2 <> 0

N N mod 2 N mod 2 <> 0


5 1 Verdadero
2 0 Falso
9 1 Verdadero
14 0 Falso

Mg (Lic) Carlos Vidal Página 15 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 4: A, B y C son tres números distintos: (A <> B) Y (B <> C) Y (A <> C)

¿Por qué no se consideró solamente la condición (A <> B) Y (B <> C) y por transitividad se


deduce la tercera condición?

4.1.4) ASIGNACIÓN

La instrucción de asignación permite almacenar un valor o una expresión en una variable.


Sintaxis:
Variable  Expresión

Al ejecutarse la asignación, primero se evalúa la expresión de la derecha y luego se asigna el


resultado a la variable de la izquierda. El tipo de la variable y el de la expresión deben
coincidir.
Si la variable de la izquierda existía, entonces se pierde su valor anterior y toma el valor nuevo,
razón por la cual se dice que la asignación es "destructiva" (destruye el valor que tenía la
variable de la izquierda). Los contenidos de las variables que intervienen en la expresión de la
derecha no se modifican. Algunos ejemplos de asignaciones son:

Sentencias de asignación Tipo de datos


Materia  'Programación' Materia es Cadena
Nro  7 Nro es Entero
Siguiente  Nro Siguiente es Entero
Siguiente  Siguiente + 1 Siguiente es Entero
EsPar  (N mod 2) = 0 EsPar es Lógico
Cociente  Nro / 2 Cociente es Real

Ejemplo 1: Determinar el área de un círculo conociendo su radio.


Algoritmo AreaCirculo
Datos Constantes
Pi = 3.1415
Datos Variables
radio: Real
area: Real
Comienzo
area  pi * radio * radio
Fin-Algoritmo

Mg (Lic) Carlos Vidal Página 16 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

4.1.5) ENTRADA DE DATOS


Es una acción que permite suministrar un valor ingresado por teclado y asociarlo al dato
(variable) que figura en la acción, para que pueda ser usado más adelante.

Sintaxis:

LEER dato1, dato2,… , datoN

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:

Sentencias de entrada de datos Comentarios

LEER Nro El número ingresado es almacenado en Nro.

LEER Apellido La cadena es almacenada en Apellido.


El primer valor se almacena en base y el segundo en
LEER base, altura
altura.
LEER respuesta El carácter ingresado se almacena en respuesta

4.1.6) SALIDA DE DATOS


Es una acción que permite mostrar por pantalla valores literales (constantes), valores de datos o
resultados de expresiones indicadas en la acción.

Sintaxis:

ESCRIBIR Constante | Dato | Expresión [, Constante | Dato | Expresión ]…

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.

Mg (Lic) Carlos Vidal Página 17 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplos:

Sentencias de entrada de datos Salida


ESCRIBIR 'La edad es:', Edad La edad es 65
ESCRIBIR 'Hoy es ', Día, ' de ', Mes Hoy es 1 de enero
ESCRIBIR 'El área es = ', base * altura / 2 El área es = 15
ESCRIBIR 'LISTADO DE CLIENTES' LISTADO DE CLIENTES

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.

Ejemplo: Comprobar si es una letra minúscula.

Verificación de la solución hallada, ( Letra >= ‘a’ ) Y ( Letra <= ‘z’)

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

Mg (Lic) Carlos Vidal Página 18 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

4.2) ACCIONES PARA ESTRUCTURAR EL CONTROL

Se admiten como estructuras primitivas de control a:


• Secuencia
• Condicional
• Repetición

En lo que sigue, “bloque” puede representar una o más acciones primitivas.

4.2.1) Estructura de Control: SECUENCIA

Las acciones se ejecutan en el orden en que se encuentran en el algoritmo.


Una estructura secuencial es aquella en la que las acciones están una a continuación de la otra
siguiendo un orden único, sin cambios de control. La estructura secuencial tiene un inicio dado
por la primera sentencia y un fin dado por la última sentencia.
Funcionamiento:
Se ejecuta la Acción1, luego se ejecuta la Acción2, así sucesivamente hasta que
en el paso enésimo se ejecuta la AcciónN.

Ejemplo 1: Determinar el área de un triángulo cualquiera, conociendo la base y altura.


Algoritmo AreaDelTriangulo
Datos Variables
base, altura: Real
area: Real
Comienzo
ESCRIBIR ‘Ingresar la base del triangulo’
LEER base
ESCRIBIR ‘Ingresar la altura del triangulo’
LEER altura
area  base * altura / 2
ESRIBIR ‘El área del triangulo es ‘, area
Fin Algoritmo

Mg (Lic) Carlos Vidal Página 19 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 2: Obtener el dígito de las unidades de un número entero positivo.


Puede comprobarse que el dígito de las unidades de un número es igual al resto de la división
del número entre 10. Observar los siguientes ejemplos:

1326 10 425 10 7 10
6 132 5 42 7 0

Podemos concluir entonces que: unidad  nro MOD 10

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

Ejemplo 3: Calcular la suma de los dígitos de un número entero positivo de 3 cifras.


Las cifras pueden ser obtenidas mediante divisiones sucesivas por 10. Considere el caso de un número
Nro igual a 256:

Nro Nro Nro


256 10 25 10 2 10
6 25 5 2 2 0
unidad decena centena

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

Mg (Lic) Carlos Vidal Página 20 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

decena  nro mod 10 {Obtener el digito de la decena}


nro  nro div 10
centena  nro mod 10 {Obtener el digito de la centena}
Suma  unidad + decena + centena
ESCRIBIR ‘La suma de los digitos de ‘, nro, ‘ es ‘, suma
Fin Algoritmo

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:

Hora1 Min1 Seg1 Hora2 Min2 Seg2 SegRestantes


14 0 0
10 0 0 36000

Mg (Lic) Carlos Vidal Página 21 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 5: Sumar dos valores de tiempo dados en horas, minutos y segundos.

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

Mg (Lic) Carlos Vidal Página 22 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

4.2.2) Estructura de Control: SELECCIÓN


Hay situaciones en las que hay que considerar alternativas, ya que algunas acciones deben
llevarse a cabo sólo para algunas instancias. La selección permite que una acción o un conjunto
de acciones (bloque) se ejecute sólo si cumple cierta condición.
Por lo tanto, las estructuras de control permiten modificar el flujo de ejecución de las
acciones en un algoritmo o las instrucciones en un programa.
Con las estructuras de control se puede:
• De acuerdo a una condición, ejecutar un grupo u otro de sentencias.
• De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias.
• Ejecutar un grupo de sentencias hasta que se cumpla una condición.
• Ejecutar un grupo de sentencias mientras se cumpla una condición.
• Ejecutar un grupo de sentencias un número determinado de veces.
Todas las estructuras de control tienen un único punto de entrada. Las estructuras de control se
pueden clasificar en: secuenciales, iterativas y de control avanzadas.

a) Selección de acuerdo a una condición: SI - ENTONCES

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.

Mg (Lic) Carlos Vidal Página 23 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

b) Selección de acuerdo a una condición: SI – ENTONCES - SINO

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.

Mg (Lic) Carlos Vidal Página 24 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

c) Selección de acuerdo al valor de una variable: EN CASO DE

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.

Mg (Lic) Carlos Vidal Página 25 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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:

Horas Minutos Minutos > 0 Pagado


1 45
45 > 0 ? Sí
2 160

Mg (Lic) Carlos Vidal Página 26 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 2: Diseñar un algoritmo que determine si un número positivo es o no par. (PSeInt)


Proceso NroEsPositivoPar
Definir nro Como Entero
Definir EsPositivoPar Como Logico
ESCRIBIR "Ingresar un numero: "
LEER nro
SI (nro mod 2 = 0) Y (nro > 0)
ENTONCES
EsPositivoPar <- Verdadero
SINO
EsPositivoPar <- Falso
FINSI
SI EsPositivoPar
ENTONCES
ESCRIBIR "El numero ", nro , " es positivo es par"
SINO
ESCRIBIR "El numero ", nro , " es positivo es impar"
FINSI
FinProceso

Verificación: en la siguiente traza se realizan pruebas con los 4 casos posibles: par positivo, impar
positivo, para negativo, impar negativo.

Nro (Nro MOD 2 = 0) Y (Nro > 0) EsPositivoPar


4 4 MOD 2 = 0 Y 4 > 0 ? Sí VERDADERO
3 3 MOD 2 = 0 Y 3 > 0 ? No FALSO
6 -6 MOD 2 = 0 Y -6 > 0 ? Sí VERDADERO
5 -5 MOD 2 = 0 Y -5 > 0 ? No FALSO

Mg (Lic) Carlos Vidal Página 27 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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

Mg (Lic) Carlos Vidal Página 28 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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.

Mg (Lic) Carlos Vidal Página 29 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 4: Diseñar un algoritmo a partir de un número de tres dígitos, determine si es o no capicúa. Un


número es capicúa si es igual al revés del número. (PSeInt)

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

Definir numero Como Entero


Definir unidad, centena Como Entero

ESCRIBIR "Ingresar un numero: "


LEER numero

unidad <- Numero MOD 10


centena <- TRUNC (Numero / 100 )
SI (unidad = centena)
ENTONCES
ESCRIBIR "El numero ", numero, " es capicua"
SINO
ESCRIBIR "El numero ", numero, " NO es capicua"
FINSI

FinProceso

Ejercicio: hacer una traza con un número capicúa y otra con uno que no lo sea.

Numero Unidad Centena ¿Unidad = Centena? EsCapicua

Mg (Lic) Carlos Vidal Página 30 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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

Definir A, B, C Como Entero


Definir mayor, menor, medio Como Entero

ESCRIBIR "Ingresar un numero: "


LEER A
ESCRIBIR "Ingresar un numero: "
LEER B
ESCRIBIR "Ingresar un numero: "
LEER C

// Calcular el mayor de los 3 numeros


Mayor <- A
SI ( B > Mayor)
ENTONCES
Mayor <- B
FINSI
SI ( C > Mayor)
ENTONCES
Mayor <- C
FINSI

// Calcular el menor de los 3 numeros


Menor <- A
SI ( B < Menor)
ENTONCES
Menor <- B
FINSI
SI ( C < Menor)
ENTONCES
Menor <- C
FINSI

// Calcular el del medio de los 3 numeros


Medio <- A + B + C - Mayor - Menor

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

Mg (Lic) Carlos Vidal Página 31 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 6: Diseñar un algoritmo que reciba un número de mes y devuelva el nombre del mismo.
(PSeInt)

Proceso NombreDelMes

DEFINIR mes como Entero


DEFINIR NomMes como Cadena

ESCRIBIR SIN SALTAR "Ingresar el numero de mes: "


LEER mes
SI (Mes = 1) ENTONCES
NomMes <- "Enero"
FINSI
SI (Mes = 2) ENTONCES
NomMes <- "Febrero"
FINSI
SI (Mes = 3) ENTONCES
NomMes <- "Marzo"
FINSI
SI (Mes = 4) ENTONCES
NomMes <- "Abril"
FINSI
SI (Mes = 5) ENTONCES
NomMes <- "Mayo"
FINSI
SI (Mes = 6) ENTONCES
NomMes <- "Junio"
FINSI
SI (Mes = 7) ENTONCES
NomMes <- "Julio"
FINSI
SI (Mes = 8) ENTONCES
NomMes <- "Agosto"
FINSI
SI (Mes = 9) ENTONCES
NomMes <- "Septiembre"
FINSI
SI (Mes = 10) ENTONCES
NomMes <- "Octubre"
FINSI
SI (Mes = 11) ENTONCES
NomMes <- "Noviembre"
FINSI
SI (Mes = 12) ENTONCES
NomMes <- "Diciembre"
FINSI
Escribir "El mes es ", nommes
FinProceso

Mg (Lic) Carlos Vidal Página 32 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_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

DEFINIR mes como Entero


DEFINIR NomMes como Cadena

ESCRIBIR SIN SALTAR "Ingresar el numero de mes: "


LEER mes

Segun mes Hacer

1: NomMes <- "Enero"

2: NomMes <- "Febrero"

3: NomMes <- "Marzo"

4: NomMes <- "Abril"

5: NomMes <- "Mayo"

6: NomMes <- "Junio"

7: NomMes <- "Julio"

8: NomMes <- "Agosto"

9: NomMes <- "Septiembre"

10: NomMes <- "Octubre"

11: NomMes <- "Noviembre"

12: NomMes <- "Diciembre"

FinSegun

Si (mes >= 1) Y (mes<= 12) ENTONCES


Escribir "El mes es ", nommes
SiNo
Escribir "El valor ingresado no corresponde para un numero de mes!!!"
FinSi

FinProceso

Mg (Lic) Carlos Vidal Página 34 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

4.2.3) Estructura de Control: REPETICIÓN

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).

Notemos que, en general, la definición de una estructura repetitiva consta de:


1) El bloque a repetir, es decir de las acciones que van a ser ejecutadas hasta que la condición
se satisfaga.
2) La condición, es decir la expresión que va a servir de finalización de la repetición.
3) La inicialización de los datos. Antes de ingresar a repetir, considerar cuidadosamente qué
valores recibirán los datos.

a) REPETICIÓN controlada por una condición (MIENTRAS-FINMIENTRAS)

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.

Mg (Lic) Carlos Vidal Página 35 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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.

Par NroTope Par < NroTope Pantalla


7
2 2 < 7 ? Sí 2
4 4 < 7 ? Sí 4
6 6 < 7 ? Sí 6
8 8 < 7 ? No

Mg (Lic) Carlos Vidal Página 36 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 2: escribir un algoritmo que muestre por pantalla la tabla de multiplicar de un número dado.
(PSeInt)

Proceso TablaMultiplicar

DEFINIR nro, factor como Entero

ESCRIBIR SIN SALTAR "Numero del que desea conocer su tabla de multiplicar: "
LEER nro

factor <- 1

MIENTRAS ( factor <= 10 ) HACER


ESCRIBIR Nro, " * " , factor, " = ", Nro * factor
factor <- factor + 1 //Generar el próximo factor
FINMIENTRAS

FinProceso

A continuación, se muestra la traza para el valor de Tabla = 4.

Factor Nro factor < 10 Pantalla


4
1 1 <= 10 ? Sí 1*4=4
2 2 <= 10 ? Sí 2*4=8
3 3 <= 10 ? Sí 3 * 4 = 12
4 4 <= 10 ? Sí 4 * 4 = 16
5 5 <= 10 ? Sí 5 * 4 = 20
6 6 <= 10 ? Sí 6 * 4 = 24
7 7 <= 10 ? Sí 7 * 4 = 28
8 8 <= 10 ? Sí 8 * 4 = 32
9 9 <= 10 ? Sí 9 * 4 = 36
10 10 <= 10 ? Sí 10 * 4 = 40
11 11 <= 10 ? No

Mg (Lic) Carlos Vidal Página 37 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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

ESCRIBIR SIN SALTAR "Ingresar el numero: "


LEER nro

suma <- 0
MIENTRAS ( nro > 0 ) HACER
suma <- suma + nro

ESCRIBIR SIN SALTAR "Ingresar el numero: "


LEER nro

FINMIENTRAS
ESCRIBIR "La suma obtenida es ", suma

FinProceso

Ejemplo 4: Calcular la sumatoria de 1 + 2 + 3 + … + NroTope. (PSeInt)

Proceso CalcularSumatoria
DEFINIR nro, suma, nroTope como Entero

ESCRIBIR SIN SALTAR "Ingresar el numero Tope: "


LEER nroTope

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

Mg (Lic) Carlos Vidal Página 38 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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:

Edad Mayor Edad >= 0 Edad > Mayor


0 0 >= 0 ? Sí
10 10 > 0 ? Sí
10
10 >= 0 ? Sí
22 22 > 10 ? Sí
22
22 >= 0 ? Sí
13 13 > 22 ? No
13 >= 0 ? Sí
42 42 > 22 ? Sí
42
42 >= 0 ? Sí
35 35 > 42 ? No
35 >= 0 ? Sí
-5 -5 > 42 ? No
-5 >= 0 ? No

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.

Mg (Lic) Carlos Vidal Página 39 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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

ESCRIBIR SIN SALTAR "Ingrese el número: "


LEER nro
ESCRIBIR "Ingrese la posicion: "
LEER pos

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:

Nro Pos PosDig Dig PosDig <= Pos


3752 3
1 1 <= 3 ? Sí
375 2 2

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.

Mg (Lic) Carlos Vidal Página 40 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

b) REPETICIÓN controlada por una condición (REPETIR-HASTA)

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.

Uno de los usos de esta estructura es para controlar datos de entrada.

REPETIR
ESCRIBIR ‘Ingrese el dato: ‘
LEER dato
HASTA que dato sea correcto

Mg (Lic) Carlos Vidal Página 41 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Controlar que el ingreso de un número de mes sea correcto

REPETIR
ESCRIBIR ‘Ingrese un número de mes’
LEER Mes
HASTA ( Mes >= 1 ) Y ( Mes <= 12 )

Controlar que el ingreso de una nota sea correcta.

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

NroPar NroTope NroPar >= NroTope Pantalla


7
2 2
4 4 >= 7? No
4
6 6 >= 7? No
6
8 8 >= 7? Sí

La traza anterior elige al número 7 como NroTope y se muestra como salida los valores: 2, 4, 6.

¿Qué ocurre con este algoritmo si se ingresa como NroTope al valor 2?

Mg (Lic) Carlos Vidal Página 42 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 2: mostrar la tabla de multiplicar de un número dado. (PSeInt)

Proceso TablaMultiplicar

DEFINIR nro, factor como Entero

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

A continuación, se muestra la traza para el valor de Tabla = 4.

Nro Tabla Nro > 10 ? Pantalla


4
1 1*4=4
2 2 > 10? No
3 2*4=8
3 > 10? No
4 3 * 4 = 12
4 > 10? No
5 4 * 4 = 16
5 > 10? No
6 5 * 4 = 20
6 > 10? No
7 6 * 4 = 24
7 > 10? No
8 7 * 4 = 28
8 > 10? No
9 8 * 4 = 32
9 > 10? No
10 9 * 4 = 36
10 > 10? No
11 10 * 4 = 40
11 > 10? Sí

Mg (Lic) Carlos Vidal Página 43 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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

ESCRIBIR SIN SALTAR "Ingresar el numero: "


LEER nro

suma <- 0
REPETIR
suma <- suma + nro

ESCRIBIR SIN SALTAR "Ingresar el numero: "


LEER nro

HASTA QUE nro < 0


ESCRIBIR "La suma obtenida es ", suma

FinProceso

¿Por qué se controla que el número ingresado sea positivo en el algoritmo anterior?

Ejemplo 4: Calcular la sumatoria de 1 + 2 + 3 + … + NroTope. (PSeInt)

Proceso CalcularSumatoria
DEFINIR nro, suma, nroTope como Entero

ESCRIBIR SIN SALTAR "Ingresar el numero Tope: "


LEER nroTope

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

Mg (Lic) Carlos Vidal Página 44 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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

Mg (Lic) Carlos Vidal Página 45 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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

ESCRIBIR SIN SALTAR "Ingrese el número: "


LEER nro
ESCRIBIR "Ingrese la posicion: "
LEER pos

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:

Nro Pos PosDigito Digito PosDigito >Pos


3752 3
1
375 2 2 2 > 3 ? No
37 3 5 3 > 3 ? No
3 4 7 4 > 3 ? Sí

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.

Mg (Lic) Carlos Vidal Página 46 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

c) REPETICIÓN con cantidad conocida de repeticiones (PARA-FINPARA)

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).

Mg (Lic) Carlos Vidal Página 47 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

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:

Nro NroTope Nro <= (NroTope - 1) ? Nro MOD 2 = 0 ? Pantalla


7
1 1 <= 6? Sí 1 MOD 2 = 0? No
2 2 <= 6? Sí 2 MOD 2 = 0? Sí 2
3 3 <= 6? Sí 3 MOD 2 = 0? No
4 4 <= 6? Sí 4 MOD 2 = 0? Sí 4
5 5 <= 6? Sí 5 MOD 2 = 0? No
6 6 <= 6? Sí 6 MOD 2 = 0? Sí 6
7 7 <= 6? No 7 MOD 2 = 0? No

Mg (Lic) Carlos Vidal Página 48 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 2: mostrar por pantalla la tabla de multiplicar de un número dado. (PSeInt)

Proceso TablaMultiplicar

DEFINIR nro, i como Entero

ESCRIBIR SIN SALTAR "Numero del que desea conocer su tabla de multiplicar: "
LEER nro

PARA i <- 1 HASTA 10 HACER


ESCRIBIR Nro, " * ", i, " = ", Nro * i
FINPARA
FinProceso

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.

Ejemplo 4: Calcular la sumatoria de 1 + 2 + 3 + … + NroTope. (PSeInt)

Proceso CalcularSumatoria
DEFINIR i, suma, nroTope como Entero

ESCRIBIR SIN SALTAR "Ingresar el numero Tope: "


LEER nroTope

suma <- 0
PARA i <- 1 HASTA NroTope HACER
Suma <- Suma + i //Acumular la suma de los números “i”
FINPARA

ESCRIBIR "La suma obtenida es ", suma


FinProceso

Mg (Lic) Carlos Vidal Página 49 de 50


UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio – Nivel Terciario Año 2024

Ejemplo 5: leer las edades de un grupo de personas hasta que se introduzca un valor negativo y
determinar la máxima edad. (PSeInt)

Este problema no puede resolverse utilizando la estructura PARA-FINPARA ya que no se conoce de


antemano la cantidad de edades que se van a introducir.

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

ESCRIBIR SIN SALTAR "Ingrese el número: "


LEER Nro
ESCRIBIR SIN SALTAR "Ingrese la posicion: "
LEER Pos
PARA posdigito <- 1 HASTA Pos HACER
Digito <- Nro MOD 10 // Obtener el ult digito
Nro <- TRUNC (Nro / 10) // Eliminar el ult. digito
FINPARA
ESCRIBIR "El digito es: ", digito
FinProceso

¿Qué sucede si la posición que se ingresa es “1”? ¿Funciona el algoritmo?

Mg (Lic) Carlos Vidal Página 50 de 50

También podría gustarte