You are on page 1of 83

ÍNDICE

1 Informática y otros conceptos básicos. ..................................................... 1


1.1 Definición de Informática...................................................................................................... 1
1.2 Necesidad de información .................................................................................................... 1
1.3 Diferencia entre dato e información...................................................................................... 2
1.4 La computadora ................................................................................................................... 3
1.5 ¿Qué significa esto? ............................................................................................................ 3
1.6 Ejercicios ............................................................................................................................. 5

2 Resolución de problemas......................................................................... 6
2.1 Introducción ......................................................................................................................... 6
2.2 Tipos de problemas ............................................................................................................. 7
2.3 Problemas de computación .................................................................................................. 7
2.4 Etapas de resolución de problemas con computadoras ....................................................... 8
2.5 Ejercicios ........................................................................................................................... 10

3 Algoritmos. Propiedades. ...................................................................... 11


3.1 Introducción ....................................................................................................................... 11
3.2 Definición de algoritmo....................................................................................................... 11
3.3 Propiedades de los algoritmos ........................................................................................... 11
3.4 Ejemplos de algoritmos ...................................................................................................... 13

4 Algoritmos. Dominio y forma de expresarlos. ......................................... 16


4.1 Dominio de un algoritmo .................................................................................................... 16
4.2 Errores en la construcción de un algoritmo ........................................................................ 16
4.3 Formas de expresar un algoritmo....................................................................................... 17
4.4 Ejercicios ........................................................................................................................... 18

5 Constantes, variables, identificadores y tipos de datos. .......................... 20


5.1 Introducción ....................................................................................................................... 20
5.2 Constante .......................................................................................................................... 20
5.3 Variable ............................................................................................................................. 20
5.4 Identificador ....................................................................................................................... 21
5.5 Reglas para escribir un identificador .................................................................................. 21
5.6 Ejemplos de identificadores o nombres de variables. ......................................................... 21
5.7 Ingreso de valores a variables ........................................................................................... 22
5.8 Acciones o instrucciones que permiten guardar un valor en una variable ........................... 23
5.9 Tipos de datos ................................................................................................................... 23

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página i
5.10 Introducción al pseudocódigo utilizando PSeInt ............................................................. 25

6 Instrucción de asignación ...................................................................... 27


6.1 Reglas de la instrucción de asignación .............................................................................. 27
6.2 Ejemplos de asignación a variables ................................................................................... 28
6.3 Formas de expresar la instrucción de asignación ............................................................... 29

7 Instrucciones de Entrada/Salida ............................................................. 31


7.1 Introducción ....................................................................................................................... 31
7.2 Definición de la instrucción de Entrada .............................................................................. 31
7.3 Formas de expresar la instrucción de entrada .................................................................... 32
7.4 Definición de la instrucción de Salida ................................................................................. 32
7.5 Formas de expresar la instrucción de salida ...................................................................... 33
7.6 Ejemplo aplicando instrucciones de Entrada/Salida ........................................................... 33

8 Operadores ........................................................................................... 36
8.1 Definición ........................................................................................................................... 36
8.2 Tipos de operadores .......................................................................................................... 36
8.3. Operadores Aritméticos ..................................................................................................... 37
8.4. Expresiones aritméticas ..................................................................................................... 37
8.5 Jerarquía de operadores aritméticos .................................................................................. 38
8.6 Ejercicios ........................................................................................................................... 39

9 Estructura de Control Secuencial............................................................ 40


9.1Definición............................................................................................................................. 40
9.2. Diferencias entre estructuras de control e instrucciones..................................................... 40
9.3. Clasificación de estructuras de control ............................................................................... 41
9.4. Estructura de control secuencial ........................................................................................ 42
9.5. Formas de expresar la estructura de control secuencial..................................................... 43
9.6. Ejercicios ........................................................................................................................... 44

10. El Método Heurístico ............................................................................. 47


10.1. Definición ................................................................................................................... 47
10.2. Pasos del método heurístico ...................................................................................... 47
10.3. Definición del problema .............................................................................................. 48
10.4. Análisis del problema ................................................................................................. 49
10.5. Elaboración del Diagrama de Flujo ............................................................................. 50
10.6. Verificación................................................................................................................. 50
10.7. Ejercicios .................................................................................................................... 51

11. Operadores Relacionales ....................................................................... 53


11.1. Introducción................................................................................................................ 53

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página ii
11.2. Operadores relacionales o de relación ....................................................................... 53
11.3. Jerarquía de operadores aritméticos y de relación ..................................................... 54
11.4. Ejercicios .................................................................................................................... 54

12. Estructura de Selección ......................................................................... 55


12.1. Introducción................................................................................................................ 55
12.2. Estructura de selección .............................................................................................. 55
12.3. Estructura de selección simple ................................................................................... 56
12.4. Estructura de selección compuesta ............................................................................ 57
12.5. Ejercicios .................................................................................................................... 58

13. Operadores Lógicos ............................................................................... 64


13.1. Introducción................................................................................................................ 64
13.2. Operadores lógicos .................................................................................................... 64
13.3. Tablas de Verdad de la Lógica de Boole .................................................................... 65
13.4. Jerarquía de operadores lógicos ................................................................................ 66
13.5. Ejercicios .................................................................................................................... 67

14. Estructuras de control de iteración ........................................................ 68


14.1. Introducción................................................................................................................ 68
14.2. Estructura de control de iteración ............................................................................... 68
14.3. Estructura Mientras .................................................................................................... 70
14.4. Estructura Repetir-Hasta ............................................................................................ 71
14.5. Diferencias entre las estructuras iterativas Mientras y Repetir-Hasta ......................... 72
14.6. Ejercicios .................................................................................................................... 73

BIBLIOGRAFÍA ................................................................................................ 79

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página iii
UNIDAD 1

1 Informática y otros conceptos básicos.

1.1 Definición de Informática

La Informática es la ciencia que estudia el análisis y resolución de problemas utilizando


computadoras.

La palabra Informática es un vocablo de origen francés compuesto de dos palabras:

• Infor que significa Información, y

• matica que significa Automática.

La informática se ocupa del tratamiento automático de la información a través de dispositivos


electrónicos y sistemas computacionales.

Es una de las disciplinas más nuevas, surgida formalmente en la segunda mitad del siglo XX.

Para el tratamiento automatizado de la información utiliza sistemas computarizados y tiene como


propósito el almacenamiento y la recuperación de la información.

1.2 Necesidad de información

La Informática interviene hoy en día en prácticamente en todos los demás campos del saber de un
modo o de otro. Vivimos en una sociedad en donde la obtención y el uso de información es de vital
importancia.

Nuestro mundo está hiper tecnologizado e hiperconectado, en ese contexto la información se ha


convertido en uno de los elementos más valiosos para el desarrollo de cualquier actividad.

Los sistemas informáticos permiten administrar la información de una manera veloz y eficiente.

Según el matemático estadounidense Claude E. Shannon, la información es todo lo que reduce la


incertidumbre entre varias alternativas posibles. Es lo que necesitamos conocer para tomar
decisiones de manera más efectiva.

Todo aquello con lo que adquirimos conocimiento es información. De hecho, cuando


ejecutamos un programa en la computadora, estamos procesando información.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 1
La necesidad de información ha crecido de forma considerable, y la computadora es un generador
rápido y masivo de información. La representación de la información es fundamental en ciencias de
la computación y en la Informática. El propósito principal de la mayoría de los programas de
computadoras es almacenar y recuperar información, además de realizar cálculos.

1.3 Diferencia entre dato e información

A pesar de que, generalmente, los términos de datos e información se usan para describir lo mismo,
para la Informática estos términos significan diferentes cosas.

Dato e información son conceptos diferentes, entre ellos se produce un proceso de transformación,
de modo que, es necesario añadirle algo al dato para que llegue a ser información.

El dato es un símbolo que describe hechos o entidades. Es la entrada sin procesar a partir
de la cual se produce la información. Puede definirse como un hecho en bruto, simple y
discreto, un símbolo que no ha sido interpretado.

El dato, es la mínima unidad de significado, elemento primario de información que por sí solo es
irrelevante y que no dice nada sobre el “por qué” de las cosas y no es orientativo para la acción.

La información, en cambio, son datos procesados,


organizados, que poseen un significado, y son
necesarios para crear conocimiento. Se refiere a los
datos que han sido elaborados y comunicados de tal
manera que pueden ser entendidos e interpretados
por el receptor.

La información, entonces, se puede definir como


un conjunto de datos procesados e interrelacionados, que tienen un significado y por lo tanto
son de utilidad para tomar decisiones.

Por ejemplo, un número de teléfono, una fecha o un nombre son datos, y por sí mismos no tienen
ningún valor informativo, pero cuando los relacionamos entre sí generamos información.

Si utilizamos un conjunto de datos estadísticos referidos a la población de un lugar – como edad,


sexo, estudios, etc. – y los relacionamos, podemos generar información referente a las
características de dicha población.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 2
1.4 La computadora

Una computadora es un dispositivo informático que es capaz de recibir, almacenar y procesar


información de una forma útil. Está programada para realizar operaciones lógicas o aritméticas de
forma automática.

La palabra 'Computadora' procede del inglés computer y a su vez del latín computare que significa
calcular.

Una computadora es una máquina digital programable, de funcionamiento electrónico, capaz de


procesar grandes cantidades de datos a grandes velocidades. De este modo obtiene información
útil que luego presenta a un operador humano, o transmite a otros sistemas mediante redes
informáticas de distinto tipo.

La computadora es una máquina capaz de aceptar datos de entrada, realizar con ellos operaciones
lógicas y aritméticas con gran velocidad y precisión, y proporcionar los resultados (información) a
través de algún medio de salida.

Podemos definir a la computadora como una máquina digital y sincrónica, con capacidad de
cálculo numérico y lógico, controlada por un programa almacenado y con posibilidad de
comunicación con el mundo exterior.

1.5 ¿Qué significa esto?

• Es digital, porque dentro de la computadora las señales eléctricas que se manejan y la


información que se procesa se representa en forma discreta, por medio de dos valores (0 y 1).

• Además, se afirma que es sincrónica, es decir que realiza las operaciones coordinadas por un
reloj central que envía señales de sincronismo a todos los elementos que componen la
computadora. Esto significa que todas las operaciones internas se realizan en instantes de
tiempo predefinidos y coordinados con el reloj.

• Internamente posee una capacidad de cálculo numérico y lógico. Normalmente las operaciones
que pueden realizarse en ella son muy simples, por ejemplo, suma, disyunción, conjunción o
comparación.

• El hecho de que sea controlada por un programa es quizás el punto más importante que
diferencia a una computadora de una calculadora. Significa que internamente se tienen órdenes
o instrucciones almacenadas, que la computadora podrá obtener, interpretar y ejecutar.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 3
• Además, está comunicada con el mundo exterior. Esto significa que podrá realizar operaciones
de ingreso o egreso de valores desde y hacia el mundo real, utilizando dispositivos periféricos;
por ejemplo, el teclado o el mouse para entrada de información, y pantalla como salida.

La computadora es una máquina que cambia información de una forma a otra: recibe datos
(entrada), los transforma y proporciona información (salida). Esta información puede presentarse de
muchas formas, lo que convierte a la computadora en una máquina sumamente versátil, que es
capaz desde liquidar impuestos hasta guiar el recorrido de una nave espacial. En cada caso las
entradas y salidas son totalmente distintas, y en esto radica lo sorprendente de poder usar una
computadora para ambas actividades.

Para que la información sea entendida por la computadora debe de estar debidamente codificada.
La codificación se realiza en BITs (Binary digiT), en 0 y 1.

Procesar información es obtener resultados o conclusiones a partir de unos datos de entrada.


Procesar los datos consiste en someterlos a un conjunto de operaciones tales como ordenamiento,
selección, ejecución de cálculos, etc., de forma que permita extraer conclusiones de esos datos que
se manipulan.

Procesar es transformar datos primarios en información organizada, significativa y útil.

Para realizar un procesamiento de información, la computadora necesariamente deberá realizar las


siguientes tareas:

• Entrada de datos.

• Procesamiento

• Salida de resultados (información).

La computadora es la herramienta más versátil, potente y revolucionaria que el ser humano ha


creado en su historia reciente. Representa el punto cumbre de la Revolución industrial, científica y
tecnológica que presenció el siglo XX después de la Segunda Guerra Mundial.

Su presencia y popularización en nuestro tiempo no sólo cambió para siempre el modo de procesar
la información en el mundo, sino también muchas áreas de la vida cotidiana.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 4
1.6 Ejercicios

1.6.1. Identifique algunos ejemplos de cuáles deberían ser los Datos ingresados y la Información
obtenida para cada uno de los siguientes procesos:

Entrada Proceso Salida

Nombre del empleado

Categoría Liquidación de sueldos Sueldo del empleado

Sueldo básico

Etc.

Control de Stock

…. ….

Facturación de un

…. producto ….

1.6.2. Que datos solicitaría para generar la siguiente información:

Datos Información

Porcentaje de asistencia

Promedio de notas

Edad de una persona

Área de un triangulo

1.6.3. Coloque en el siguiente esquema, cada una de las preguntas a platear debe platear de
acuerdo con el siguiente esquema:

¿Para qué?

¿Con que? …………… …………… ……………

¿Como?

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 5
UNIDAD 2

2 Resolución de problemas

2.1 Introducción

La Informática es una ciencia y, como tal, se relaciona con una metodología fundamentada y
racional para el estudio y resolución de los problemas.

Si buscamos en el diccionario una definición de la palabra problema podremos hallar alguna de las
siguientes definiciones:

- Cuestión o proposición dudosa, que se trata de aclarar o resolver.

- Enunciado encaminado a averiguar el modo de obtener un resultado cuando se conocen


ciertos datos.

La resolución de problemas mediante una computadora consiste en establecer una adecuada


formulación de pasos precisos a seguir para resolver un determinado problema.

Normalmente, nos comunicamos con otras personas y, frente a la necesidad de resolver algún
problema que se presenta, usamos lenguaje común y corriente para describir una explicación con
indicaciones de cómo resolver dicho problema. Por ejemplo, cuando un amigo nos expresa que
necesita comprar algo y no sabe dónde y nos pide ayuda, podemos explicarle qué recorrido hacer
y cómo llegar al lugar donde encontrará lo que desea. Sin embargo, nuestras indicaciones podrían
ser malinterpretadas y nuestro amigo no lograr su objetivo debido a que “ejecutó incorrectamente”
la solución que le dimos.

Cuando se trata de darle indicaciones a una computadora para resolver un problema, no pueden
utilizarse indicaciones ambiguas ya que una máquina no posee la capacidad de decisión de un ser
humano para resolver situaciones imprevistas. Es fundamental que cada orden o indicación posea
una única interpretación de lo que hay que realizar.

Para poder indicar a una computadora las órdenes que debe realizar para resolver un
problema, es necesario que previamente entendamos exactamente lo que se quiere hacer.
Debemos conocer con qué datos se cuenta y qué tipo de transformación o procesamiento
aplicaremos sobre ellos.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 6
Es posible que se genere una situación no contemplada como consecuencia de la ejecución de una
orden por parte de la computadora, en ese caso será necesario abortar la tarea y recomenzar todo
el procedimiento nuevamente.

Una vez que entendimos lo que se desea realizar y comprendimos el problema, debemos identificar
de qué tipo de problema se trata.

2.2 Tipos de problemas

Los tipos de problemas más comunes son:

• Los problemas que buscan respuestas: si un ejercicio implica el cálculo del número de palabras
que hay en un libro o la bisección de una línea utilizando regla y compás, se trata de un trabajo
en el que se debe encontrar algo que se desconoce. La forma en que esto se haga no es de
particular importancia siempre y cuando se obtenga la respuesta correcta, aunque es deseable
que sea por un medio fácil.

• Los problemas que buscan pruebas: cuando se pide que se pruebe que hay 720 formas de
colocar seis libros en una fila, se está dando la respuesta. La tarea es distinta a la de encontrar
una respuesta porque ya se sabe lo que se desea. Todo lo que se tiene que hacer es determinar
la relación entre los datos y la respuesta.

Es importante observar que en un problema en el cual se buscan respuestas se tiene que elaborar
una solución, mientras que cuando se pide que se pruebe sólo es necesario demostrar que existe
(o no existe) una solución, sin crearla.

2.3 Problemas de computación

Los problemas de computación no pueden ser problemas en los que se busquen pruebas porque
el propósito del trabajo de las computadoras es encontrar respuestas que no se conocen de
antemano.

Pero tampoco se les puede considerar como problemas en los que se busquen respuestas porque
es la computadora misma la que determina la respuesta, no la persona que trabaja con ella.

Podemos concluir, entonces, que los problemas de computación pertenecen a una tercera clase:

• Los problemas que buscan métodos: se busca un método mediante el cual se pueda derivar
una respuesta.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página
7
El proceso de resolver problemas mediante computadoras implica encontrar un método por
medio del cual se pueda resolver un problema. Una vez que se identifica el método para
resolver el problema, la computadora aplica dicho método y suministra las respuestas a la
pregunta.

En la siguiente gráfica se muestra una representación simplificada de este proceso. Más adelante
observaremos que, una vez que se tiene un método, es necesario expresar este método en una
forma en que la computadora pueda operarlo: mediante un programa.

2.4 Etapas de resolución de problemas con computadoras

El proceso de resolver problemas mediante computadoras es el siguiente:

Etapa 1: Identificar el problema, dando respuesta a Qué resultado se debe obtener, Qué datos
están disponibles, y Qué condiciones o restricciones se deben tener en cuenta para la
resolución.

Etapa 2: Definir y representar el modo de resolver el problema.

Etapa 3: Explorar las posibles estrategias para solucionar el problema y seleccionar la más
conveniente.

Etapa 4: Probar la estrategia de solución seleccionada, evaluando los efectos y comprobar


si resuelve el problema.

Etapa 5: Implementar la solución.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página
8
El proceso de resolver problemas mediante computadoras consiste en encontrar un método por
medio del cual se pueda resolver un problema. Una vez encontrado (diseñado) el método, el
computador se encarga de ejecutarlo y suministrar la respuesta/ solución al problema planteado.

El proceso así presentado, está muy


simplificado, ya que una vez obtenido el
método (o resuelto como hacerlo) es
necesario expresarlo en una forma que
pueda ser operado/ejecutado por el
computador. Por tanto, el profesional
informático deberá realizar tres trabajos:

• Creación del algoritmo,

• Codificación del algoritmo creado, y

• Operación del algoritmo en el


computador.

En este momento surgen nuevos conceptos: ALGORITMOS, CODIFICACIÓN y OPERACIÓN.


Estos tres conceptos ordenados en secuencia constituyen precisamente el Método para resolver
problemas mediante computadoras.

Creación del algoritmo: significa crear un método de resolución de un problema determinado.


Como resultado de este paso se obtiene un Algoritmo.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página
9
Codificación del algoritmo creado: una vez obtenido el algoritmo, debe ser escrito en un lenguaje
de programación, de manera que pueda ser interpretado por la computadora. Como resultado de
este paso se obtiene un programa.

Operación del algoritmo en la computadora: implica la ejecución del programa en la computadora


para obtener el resultado o solución del problema.

Los datos se constituyen en la entrada necesaria para el algoritmo de resolución del


problema, el algoritmo se traduce luego en un programa de computadora y su ejecución o
proceso genera los resultados solicitados que se convierten en la información que el método
entrega como salida.

2.5 Ejercicios
Identifique marcando con una cruz, cuál de los siguientes problemas pertenecen a la clase:
problemas que buscan métodos:

Determinar los motivos por los cuales se produce el abandono de las escuelas de
nivel secundario

Dados tres edades determinar cuál es el mayor de ellas

No se producen síntomas en el cuerpo humano si existe un muy bajo nivel de la


vitamina D

Calcular la factorial de un determinado numero

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página
10
UNIDAD 3

3 Algoritmos. Propiedades.

3.1 Introducción

La etapa vital de la solución de un problema con una computadora es el diseño del algoritmo y de
la estructura fundamental de datos.

Un algoritmo es un procedimiento expresado precisamente para obtener la solución del


problema. La solución se presenta luego a una computadora utilizando un lenguaje de
programación seleccionado. Los algoritmos se expresan de una manera conveniente para
un lector humano, mientras que los programas sirven para ejecutar un algoritmo en una
computadora.

Es importante recordar mientras diseñamos un algoritmo que una computadora sólo sigue las
instrucciones y no puede actuar si no se le ha ordenado de manera explícita. Por lo tanto, el
solucionador de problemas debe prever cualquier aspecto del problema en el propio algoritmo.

La palabra algoritmo deriva del nombre de un matemático árabe del siglo IX, llamado Alkhuwarizmi,
quien estaba interesado en resolver ciertos problemas de aritmética y describió varios métodos para
resolverlos. Estos métodos fueron presentados como una lista de instrucciones específicas (como
una receta de cocina) y su nombre se utiliza para referirse a dichos métodos.

3.2 Definición de algoritmo

Un algoritmo es, en forma intuitiva, una receta, un conjunto de instrucciones o de especificaciones


sobre un proceso para hacer algo. Ese “algo” generalmente es la solución de un problema de algún
tipo. Formalmente un algoritmo se puede definir de la siguiente forma:

Un algoritmo puede definirse como una secuencia ordenada de pasos elementales, exenta
de ambigüedades, que lleva a la solución de un problema dado en un tiempo finito.

3.3 Propiedades de los algoritmos

Un algoritmo debe cumplir las siguientes propiedades:

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 11
Analicemos estos conceptos considerando ejemplos de cada uno:

Propiedad Ejemplo

Tiempo de respuesta: la ejecución de un Llene la zanja con ese montón de arena


algoritmo debe finalizar después de que se
Algoritmo: tome una pala y empiece a echar
haya llevado a cabo una cantidad finita de
arena en la zanja. Cuando se llene la zanja
pasos. De otra manera, no se puede exigir
deténgase. Se está seguro que en algún
que la ejecución produzca una solución.
momento parará, aunque no se sabe cuánto
tardará.

Generalidad: para que un algoritmo sea útil y Indique la forma de marcar un número de
eficiente es necesario que pueda ser aplicado teléfono.
a una diversidad de casos del problema que
Incorrecto: si la solución del algoritmo sirve
contempla. Si el algoritmo se define de un
para marcar solamente el número 4220234,
modo general, considerando toda una clase
solo tendrá valor para ese número.
de problemas específicos, entonces cumple
Correcto: si la solución es un método para
con la propiedad de generalidad. Dicha
marcar cualquier número, entonces es útil.
generalidad debe tener un límite.

Ausencia de Ambigüedad: si se trabaja Indique la forma de condimentar una salsa.


dentro de cierto marco o contexto, la
Incorrecto: ponerle algunas especies a la
representación de cada paso de un algoritmo
salsa.
debe tener una única interpretación. Los
Correcto: ponerle sal, pimienta y orégano a la
pasos del algoritmo no deben ser confusos,
salsa.
deben ser claros e indicar exactamente la
tarea que debe realizarse sin dejar lugar a
dudas.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 12
En nuestra vida cotidiana utilizamos algoritmos con frecuencia para completar actividades y
resolver los problemas que se nos presentan.

Por ejemplo, cuando debemos preparar un plato de comida necesitamos seguir pasos muy precisos,
en un orden determinado, y sin repetirlos indefinidamente. Cuando estudiamos y practicamos
matemáticas aplicamos algoritmos para resolver las operaciones, por ejemplo, para resolver una
multiplicación, calcular un producto, etc. Para obtener el máximo común divisor entre dos números
enteros positivos aprendimos el algoritmo de Euclides en la escuela primaria. Estos son algunos
ejemplos de cómo el uso de algoritmos es común en nuestra vida, muchas veces sin formalizarlos
ni percibir que lo estamos haciendo.

3.4 Ejemplos de algoritmos

En la definición de algoritmo se hace referencia a la ambigüedad y tiempo de respuesta,


debido a que todo algoritmo debe cumplir con ciertas propiedades para que se lo considere
como tal y proporcione el resultado deseado cuando un programa basado en él se presenta
a una computadora.

Para comprender la definición de algoritmo y sus propiedades de generalidad, tiempo de respuesta


finito y ausencia de ambigüedad, abordaremos dichos conceptos mediante el análisis de ejemplos.

Ejemplo 1:

Escriba un algoritmo que permita preparar una tortilla de papas de tres huevos.

Si la persona que resuelve el problema es un cocinero lo resuelve sin mayor nivel de detalle, pero
si no lo es, se deben describir los pasos necesarios para realizarlo:
Paso 1: Mezclar papas fritas, huevos y una pizca de sal en un recipiente.

Paso 2: Freír.

Esto podría resolver el problema, pero si la persona que lo ejecuta no sabe cocinar, se debe detallar,
cada uno de los pasos mencionados, pues estos no son lo bastante simples para un principiante.

De esta manera el Paso 1 se puede descomponer en los siguientes:

Paso 1.1: Pelar las papas.

Paso 1.2: Cortar las papas en cuadraditos.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 13
Paso 1.3: Freír las papas.

Paso 1.4: Batir los huevos en un recipiente.

Paso 1.5: Verter las papas en un recipiente y echar una pizca de sal.

El Paso 1.3 puede descomponerse en:

Paso 1.3.1: Calentar el aceite en la sartén.

Paso 1.3.2: Verter las papas en la sartén.

Paso 1.3.3: Sacar las papas ya doradas en un recipiente.

Nótese que, si la tortilla la va a preparar un niño, algunas tareas, por ejemplo, batir huevos, pueden
necesitar una mejor especificación.

En este ejemplo se puede observar que la lista de pasos elementales que componen nuestro
algoritmo depende de quién sea el encargado de ejecutarlo.

Si en particular, el problema va a ser resuelto utilizando una computadora, el conjunto de


pasos elementales conocidos es muy reducido, lo que implica un alto grado de detalle para
los algoritmos.

Se considera entonces como un paso elemental aquel que no puede volver a ser dividido en otros
más simples.

Otro aspecto importante de un algoritmo es su nivel de detalle, que no debe confundirse con el
concepto de paso elemental. En ocasiones, no se trata de descomponer una orden en acciones
más simples, sino que se busca analizar cuáles son las órdenes relevantes para el problema.

Para comprender lo expuesto se analiza con otro ejemplo:

Ejemplo 2:

Escriba un algoritmo que describa la manera en que una persona se levanta todas las mañanas
para ir al trabajo.

Paso 1: Salir de la cama.

Paso 2: Quitarse el pijama.

Paso 3: Ducharse.

Paso 4: Vestirse.

Paso 5: Desayunar.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 14
Paso 6: Arrancar el auto para ir al trabajo.

La solución del problema se expresó en seis pasos, descartando aspectos que se suponen o se
sobreentienden, como “colocarse los zapatos al vestirse” o “abrir la puerta del auto” pues a nadie
se le ocurriría ir a trabajar descalzo.

En cambio, existen aspectos que no pueden obviarse o suponerse porque el algoritmo perdería
lógica, por ejemplo, el paso “vestirse”, no puede ser omitido. Puede discutirse si se requiere un
mayor nivel de detalle o no, pero no puede ser eliminado del algoritmo.

Un buen desarrollador de algoritmos deberá reconocer esos aspectos importantes y tratar de


simplificar al mínimo su especificación de manera de seguir resolviendo el problema con la menor
cantidad de órdenes posibles.

Ejemplo 3:

Escriba un algoritmo que calcule el área y el perímetro de un círculo en función de su radio.

Para resolver este problema se necesita conocer el radio del círculo, éste será el dato o entrada del
algoritmo. El algoritmo deberá encargarse de calcular el área y la longitud de la circunferencia, y
generar como resultado o salida el valor del área y el perímetro del círculo. Los pasos necesarios
en el algoritmo serían los siguientes:

Paso 1: Leer o informarse sobre el valor del radio del círculo.

Paso 2: Calcular el área como pi * radio2.

Paso 3: Calcular el perímetro como 2 * pi * radio.

Paso 4: Informar, mostrar o escribir el valor del área.

Paso 5: Informar, mostrar o escribir el valor del perímetro.

Tengamos en cuenta que el algoritmo expresado en forma coloquial no puede ser entendido
por la computadora.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 15
UNIDAD 4

4 Algoritmos. Dominio y forma de expresarlos.

4.1 Dominio de un algoritmo

La clase o el conjunto de datos y las condiciones para las cuales un algoritmo trabaja
correctamente se llama dominio del algoritmo.

Cuando deseamos definir un algoritmo para resolver un problema, es preciso primeramente


identificar y definir el dominio del problema.

La definición clara del dominio del problema será de utilidad para verificar si el algoritmo trabaja
correctamente para todos los casos dentro de ese dominio.

En el dominio del algoritmo buscaremos incluir todas las situaciones similares y evitaremos
considerar casos poco probables. Esto constituirá una delimitación del dominio sobre el cual
aplicaremos nuestro algoritmo.

4.2 Errores en la construcción de un algoritmo

En la construcción de algoritmos se consideran dos tipos de errores:

• Errores de Dominio: se presentan cuando no se han especificado todas las situaciones que se
pueden presentar en la práctica o se ha descuidado la apreciación de su importancia. Las
pruebas más difíciles son aquellas que verifican que se ha seleccionado un dominio correcto
para el algoritmo. Cuando una situación no prevista se presenta, hay tres opciones:

o Ignorarla porque es improbable y quizás nunca ocurra.

o Restringir el dominio del algoritmo para excluirla.

o Corregir el algoritmo.

• Errores de Lógica: son aquellos errores que se detectan después de que se ha definido en forma
adecuada el dominio de un algoritmo, en la etapa de prueba o verificación. se deben
principalmente a las siguientes causas:

o Etapas incorrectas

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 16
o Secuencia incorrecta de etapas.

La elección de un algoritmo debe hacerse en base a criterios tales como:

• El algoritmo es simple, fácil de entender y de transmitir a otros.

• El algoritmo es eficiente.

Siempre debemos verificar que la solución propuesta en nuestro algoritmo es válida para
todos los casos que se encuentran dentro del dominio.

4.3 Formas de expresar un algoritmo

Un mismo algoritmo puede ser expresado de maneras diferentes:

Lenguaje común. Es el lenguaje normal que


hablamos y escribimos; es útil para comunicar
un algoritmo a otra persona. Se utiliza
generalmente en una fase de análisis previo de
un sistema computacional.

Diagramas de flujo. Es un lenguaje gráfico; es


útil para visualizar en forma rápida la secuencia
lógica de pasos a seguir para un algoritmo y es
de gran ayuda para la traducción del algoritmo
a un programa de computación.

Pseudocódigo. Es una técnica adecuada para


expresar la descripción de un algoritmo
utilizando expresiones en lenguaje natural, pero
aplicando la lógica de un programa, y de este
modo, expresando su flujo de control. El
seudocódigo no es un lenguaje de
programación.

Lenguajes de Programación. Es la forma


obligada de expresión de un algoritmo para que
pueda ser leído, ejecutado y almacenado en la
computadora.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 17
Ejercicios

4.4.1. Propiedades del algoritmo

4.4.2. Secuencia lógica

Problema: Un grupo de jóvenes quieren preparar una obra de teatro, para lo cual deben organizar
las tareas a realizar hasta poner en cartel la obra.
En la siguiente tabla se muestran todas las tareas que deben ser realizadas, deberá indicar el nro
de orden (secuencia lógica)

TAREAS SECUENCIA LÓGICA /


NRO DE ORDEN
Ensayo final con el vestuario terminado
Iniciación del programa de publicidad
Estreno de la obra en el teatro de la ciudad
Terminación de los ensayos sin vestuario
Selección de los actores
Crítica de la obra en los periódicos
Iniciación de los ensayos sin vestuario
Redacción del guion
Terminación de la escenografía
Venta de boletos

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 18
Problema: El marciano se encuentra en el desierto, con hambre y deseoso de comer manzanas.
Complete el cuadro indicando la secuencia lógica de los pasos que debe realizar el marciano para
comer todas las manzanas (estrategia de solución)

Los únicos pasos o acciones básicas que puede


realizar el marciano son las siguientes:

Comer manzana

Mover a la izquierda

Mover a la derecha

Mover arriba

Mover abajo

Ayuda: Debe tener en cuenta la posición


inicial en la que se encuentra el marciano en
el tablero y la posición donde están
distribuidas las manzanas

https://pilasbloques.program.ar/online/#/desafio/4

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 19
UNIDAD 5

5 Constantes, variables, identificadores y tipos de datos.

5.1 Introducción

Los programas son el resultado de traducir para la computadora el algoritmo que resuelve un
determinado problema que nos hayamos planteado. Los datos son la materia prima sobre la que
trabaja nuestro algoritmo y luego nuestro programa.

Para que nuestro algoritmo, y más adelante nuestro programa, maneje, manipule y almacene los
datos que opera, es necesario contar con un mecanismo que lo permita. Esta situación se resuelve
mediante el uso de variables y constantes.

5.2 Constante

Una constante es un valor que permanece sin cambios ni alteraciones durante todo el
desarrollo del algoritmo o durante la ejecución del programa.

Las constantes pueden referirse a diferentes valores, según lo requiera el problema que se resuelve,
por ejemplo, una constante puede ser el horario de entrada al trabajo de un grupo de empleados (8
horas), o puede ser el nombre de un negocio (SuperMarket), o puede ser el estado de un semáforo
(activo o verdadero).

Ejemplos de constantes:

25 "Factory" -8.569 "743" 'b' Falso

5.3 Variable

Una variable representa o contiene un valor que puede ser cambiado durante el desarrollo
del algoritmo o la ejecución del programa.

Una variable posee 3 atributos: un nombre o identificador, un tipo de valor y un valor.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 20
5.3.1 El identificador es el nombre que le asignamos a la variable y que usaremos para
referirnosa ella.
5.3.2 Su tipo determina el conjunto de todos los valores posibles que puede contener.

5.3.3 Su valor es único en cada momento y puede variar o ser cambiado.

Una variable es un contenedor, debe ser definida, declarada o descripta antes de poder ser utilizada.
En la declaración de la variable se indica su identificador o nombre, el tipo de valores que
almacenará, y en ocasiones también se indica su valor inicial.

5.4 Identificador

Un identificador es un nombre que sirve para denotar elementos en un algoritmo o programa.


Podemos usarlo para identificar variables, constantes y otros componentes de un programa.

En el gráfico podemos ver al dato, representado por


"mi dato". La variable es el contenedor y su nombre
es miVariable. Al nombre miVariable se le llama
identificador de la variable y puede tener el nombre
que le asignemos siempre cumpliendo con las reglas
para crear identificadores.

5.5 Reglas para escribir un identificador

5.5.1 Está formado por una secuencia de letras, dígitos y caracteres que
pueden estar unidos porun guion bajo o símbolo de subrayado ( _ ).

5.5.2 Debe comenzar con una letra, mayúscula o minúscula, y no puede comenzar
con un número.

5.5.3 No debe contener espacios en blanco.

5.6 Ejemplos de identificadores o nombres de variables.

Identificadores Válidos Identificadores No válidos

ApeyNom Ape y Nom

Cant1 1Cant

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 21
Identificadores Válidos Identificadores No válidos

Valor8_pos Valor8 - pos

importepagado importe pagado

5.7 Ingreso de valores a variables

Las variables son lugares de la memoria de la computadora, podríamos decir que son como
celdas o contenedores que sirven para guardar valores o datos que utilizaremos para
resolver un problema.

En un algoritmo podemos definir todas las variables que sean necesarias para contener los datos
que servirán de entrada para el funcionamiento del algoritmo.

Sobre estos datos, contenidos en las variables, operará el algoritmo produciendo los cambios y
modificaciones adecuadas a las operaciones incluidas entre las tareas del algoritmo.

Cada variable podrá ser identificada mediante su identificador, en la gráfica podemos observar a las
variables llamadas EDAD, Suma, NUM_1, NUM1, Resul, e Importe.

Cada una de ellas almacenará el valor que le sea asignado. Dicho valor podrá luego ser modificado,
alterando el contenido de la variable, generalmente como resultado de un ingreso de valor o
asignación.

Ejemplo Descripción

Puede ingresarse o asignarse el valor 20 a la


variable EDAD, de ese modo dicho valor quedará
almacenado en el espacio de memoria relacionado
con el identificador EDAD. Si luego se ingresa o se
asigna el valor 38 a la variable EDAD, el valor 20 será
reemplazado por este nuevo valor.

Una variable puede contener un único valor en cada


momento.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 22
Ejemplo Descripción

En el gráfico podemos observar que la variable


Nombre almacena realmente el nombre de una
persona. De este modo al utilizar la variable en
nuestro algoritmo o en nuestro programa, su
identificador ayudará a reconocer el significado de su
contenido.

Es conveniente que el identificador o nombre de la


variable esté relacionado al contenido que
almacenará.

En este ejemplo podemos observar los atributos de


la variable Altura:

• Su identificador es Altura.

• Su tipo es real o punto flotante, almacena


valores con parte decimal.

• Su valor es 1.67.

5.8 Acciones o instrucciones que permiten guardar un valor en una variable

Es posible guardar valores en variables mediante operaciones, acciones o instrucciones:

5.8.1 Acción de ingreso de datos: Se trata, por ejemplo, de información que deberá ser
ingresadaal programa por un usuario, se obtiene generalmente como resultado de
una acción denominada lectura (se leen datos desde el exterior al algoritmo).

5.8.2 Acción de asignación: Consiste en indicar el valor que se desea asignar a la


variable, utilizando un símbolo que representa a la operación de asignación.

5.9 Tipos de datos

Los datos constituyen la manera simbólica de representar condiciones, hechos, situaciones, o


valores. De hecho, mediante un dato podemos simbolizar un número, una letra, un signo ortográfico
o cualquier otro símbolo que represente una cantidad, una medida, una palabra o una expresión.
Los datos son importantes debido a que asociándolos dentro de un contexto podemos obtener
información. Los datos por sí mismos no comunican ningún significado de importancia y debido a
esto no tienen influencia sobre quien los recibe, no generan ningún impacto. Para que los datos

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 23
sean de utilidad deben haberse convertido en información, entregando un significado, un
conocimiento, un conjunto de ideas o de conclusiones, etc.

Los datos poseen suma importancia cuando podemos utilizarlos como expresiones generales para
describir las características que poseen las entidades sobre las que opera un algoritmo,
principalmente cuando pueden ser representados de manera que pueden ser manipulados por una
computadora.

El tipo de dato es el conjunto de propiedades que caracterizan a los valores que puede almacenar
un dato y que determina…

• el conjunto de valores que puede tomar el dato o rango de definición,

• las operaciones que se le pueden aplicar, y

• la manera en que puede ser representado internamente en una computadora.

Un tipo de datos está determinado por un conjunto de valores ordenados y por las
operaciones permitidas sobre esos valores.

Los datos pueden poseer los siguientes tipos:

Tipo numérico

• Entero: Subconjunto finito de los números enteros, cuyo rango o tamaño dependerá del lenguaje
en el que posteriormente se codifique el algoritmo y de la computadora utilizada. Los números
enteros son un conjunto de números que incluye a los números naturales distintos de cero (1,
2, 3, ...), los negativos de los nros. naturales (..., −3, −2, −1).

Ejemplos: 465, -387, 9, 99, -1578, 125550

• Real: Subconjunto de los números reales limitado no sólo en cuanto al tamaño, sino también en
cuanto a la precisión. Son números que contienen una parte fraccionaria y, por lo tanto, incluyen
el punto decimal, pueden esta precedidos del signo + o --.

Ejemplos: 17725.87, -45128.0, 158000.75, -35.58788

Tipo texto o de carácter

• Carácter (Char): Conjunto finito y ordenado de los caracteres que la computadora reconoce. Su
valor lo comprenden todos los caracteres alfabéticos, mayúsculas y minúsculas (A – Z),
numéricos (0 – 9) y símbolos especiales (#,@,%,&).

• Cadena de caracteres o alfanumérico (String): Los datos (objetos) de este tipo contendrán una
serie finita de caracteres, que podrán ser directamente traídos o enviados a/desde consola. Su

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 24
valor está representado por un conjunto de caracteres que se indican entre comillas. Ejemplos:
“Reporte Anual de Fallas Técnicas”, “1 de mayo, día del Trabajador”

Tipo lógico

• Lógico o booleano: Conjunto formado por los valores Verdad (V) y Falso (F). Se utiliza para
representar las opciones (si/no) a determinadas condiciones. Ejemplo: true, false, verdadero,
falso

Tanto los datos numéricos, carácter y lógicos son datos simples.

El tipo de dato cadena de caracteres o alfanumérico es un tipo de dato compuesto ya que


está formado por una sucesión de caracteres.

Veamos un caso de la vida diaria en el que se utilizan datos de diversos tipos:

• Darío se encarga en su trabajo de tomar los datos de las personas interesadas en realizar un
curso.

• María es una de las personas interesadas, y se acerca a realizar la inscripción, proporciona sus
datos a Darío, y él los almacena en la computadora.

• El jefe de Darío necesita información respecto al curso, quiere saber cuántos son los inscriptos.

• Ya que los datos fueron ingresados por Darío a la computadora, el programa puede proporcionar
la información solicitada por su jefe.

• María indica a Darío su DNI (tipo numérico, entero), su nombre y apellido (tipo texto, cadena), y
su edad (tipo numérico, entero).

5.10 Introducción al pseudocódigo utilizando PSeInt

Podemos utilizar PSeInt para definir un algoritmo en pseudocódigo.

Al comenzar indicaremos el nombre del algoritmo precedido por la palabra "Algoritmo".

Podremos indicar comentarios comenzando la línea con dos barras seguidas. Todo lo que
indiquemos a continuación de las barras será un comentario y PSeInt lo indicará en un color
grisáceo.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 25
Para definir variables utilizaremos la
palabra reservada "Definir". A continuación
indicaremos el nombre o identificador de la
variable y luego expresaremos el tipo de la
variable.

Podremos indicar variables de tipo caracter,


cadena, real, entero o lógico. Observa en el
gráfico que sólo bastará con indicar "Como
" y el tipo de dato a continuación del nombre de la variable o identificador.

Siempre finalizaremos las líneas de pseudocódigo con un punto y coma (;).

Concluiremos nuestro algoritmo con la palabra reservada "FinAlgoritmo".

No olvides guardar tus algoritmos en una carpeta que destines para eso. ¡Practica mucho!

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 26
UNIDAD 6

6 Instrucción de asignación

La instrucción de asignación es la operación mediante la cual podemos almacenar un dato


en una variable. Esta instrucción se representa mediante una flecha hacia la izquierda ( <-).

Como resultado de la asignación, el contenido de la variable es modificado por el nuevo valor


indicado a la derecha del símbolo de asignación.

Ejemplos de instrucción de asignación en pseudocódigo

variTOTAL <- 977;

ape_nom <- "José Ernesto Pintos";

Suma_Resul <- Suma_Resul + 1;

El símbolo de asignación ( <- ) pretende


representar el movimiento de valores que ocurre internamente en la computadora. El valor que se
indica a la derecha del signo de asignación es guardado en la variable cuyo identificador se ubica a
la izquierda del símbolo.

6.1 Reglas de la instrucción de asignación

• Regla 1. A la izquierda del símbolo de asignación sólo puede indicarse el nombre de una única
variable.

• Regla 2. El valor que se asigna a la variable debe tener el mismo tipo de la variable.

Ejemplos en pseudocódigo

• Asignación a una variable de tipo entero:

Definir NUM Como Entero;

NUM <- 10;

• Asignación a una variable de tipo real:

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 27
Definir PRECIO Como Real;

Definir SUELDO Como Real;

PRECIO <- 800.45;

SUELDO <-12000;

En la memoria de la computadora, las variables son como las cajas de un almacén, cada una de
ellas puede contener elementos que son de importancia (datos o valores).

La instrucción de
asignación es la que un
empleado del almacén
realiza cuando ubica un
producto dentro de una caja
del almacén. Si la caja
(variable) previamente
contenía otro producto
(dato o valor), es eliminado
del contenedor.

6.2 Ejemplos de asignación a variables

Para estudiar la instrucción de asignación es conveniente que revisemos algunos ejemplos que
muestren diferentes casos en los que la instrucción puede utilizarse para cambiar los datos o valores
de variables.

Ejemplo Descripción

Si deseamos almacenar en la variable Edad el valor 31,


podemos utilizar la instrucción de asignación, colocando a
la derecha del símbolo el valor 31 y a su izquierda el
nombre de la variable Edad.

Posteriormente a una instrucción de asignación, la variable


contiene el valor asignado.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 28
Ejemplo Descripción

Supongamos que asignamos a la variable NUM1 el valor


31. Posteriormente podemos utilizar la variable NUM1 para
asignar el mismo valor que ella contiene a otra variable, por
ejemplo, a NUM2.

Si NUM2 almacenaba algún valor, se pierde.

Es posible realizar operaciones de asignación entre


variables.

Podemos realizar varias operaciones de asignación a una


misma variable, sin embargo, sólo almacenará el último
valor asignado. Si la variable Edad almacena 31 y luego se
le asigna 22, el valor 31 es reemplazado por el 22.

Una variable sólo puede poseer un único valor.

Para intercambiar valores entre dos variables, es preciso


seguir ciertos pasos para evitar que el valor de alguna de
las variables se pierda.

Supongamos que deseamos almacenar el valor de NUM1


en NUM2, y viceversa.

• Entonces como primer paso, se asignará el valor de


NUM1 a una variable AUX y de esta manera se
preservará su valor.

• A continuación, se asignará el valor de NUM2 a NUM1.

• Por último, se asignará a NUM2 el valor de AUX, valor


que fue preservado desde la variable NUM1.

El intercambio de valores entre variables es una tarea muy


común y necesitaremos realizarla en muchos casos para
resolver los problemas.

6.3 Formas de expresar la instrucción de asignación

Así como cuando debemos expresarnos por escrito tenemos que seguir una sintaxis, una forma de
expresar y organizar las palabras, de igual manera en el ámbito de la Informática y la Programación
se siguen reglas de expresión en las diferentes maneras de, por ejemplo, expresar un algoritmo.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 29
Podemos, entonces reconocer no sólo maneras de expresar la instrucción de asignación sino
también reglas para su sintaxis.

Una manera de expresar la instrucción de asignación es


utilizando pseudocódigo.

En su sintaxis se indica el nombre de la variable, a


continuación y separado por espacios, el símbolo de
asignación ( <- ), y finalmente el valor que deseamos
asignar a la variable.

El valor de asignación podrá estar dado por una constante, una variable, o una operación entre
variables y/o constantes.

El pseudocódigo, al ser un lenguaje de especificación o descripción de algoritmos, permite


representar la instrucción de asignación utilizando el símbolo <- para denotar que el valor a
su izquierda es enviado para ser almacenado a la variable a su derecha.

Otra manera de representar un algoritmo es el diagrama de flujo.

En un diagrama de flujo cada tipo de instrucción tiene su propia manera de ser graficada.

El símbolo que se utiliza para representar la instrucción de asignación es el rectángulo.

Dentro del rectángulo se coloca la variable que recibe el dato, la flecha de asignación y luego el
valor del dato que se desea asignar.

La instrucción de asignación representada en el diagrama de flujo


será uno de los elementos que puede formar parte de un algoritmo.
El diagrama deberá representar todo el algoritmo, cada una de sus
instrucciones, órdenes o pasos.

Los diagramas de flujo nos permiten observar gráficamente todas las


características de un algoritmo sin tener que leer un texto extenso
con descripciones. Se trata de una herramienta de expresión
indispensable cuando procuramos expresar la manera en la que consideramos que debe resolverse
un enunciado, caso o problema.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 30
UNIDAD 7

7 Instrucciones de Entrada/Salida

7.1 Introducción

En lecciones anteriores hemos tratado conceptos básicos para la construcción de algoritmos. Por
ejemplo, para llevar adelante la resolución de problemas mediante el uso de computadoras es
preciso en la Etapa 1 identificar el problema, reconocer que resultado se requiere obtener, que datos
se necesitan para alcanzar ese resultado y las condiciones o restricciones que deben cumplirse
para poder resolver el problema.

Posteriormente, continuaremos con la Etapa 2, definiendo y representando la manera en que se


puede resolver el problema.

Por lo tanto, para resolver un problema en computadora no basta simplemente en saber qué
resultados buscamos, sino que debemos identificar qué datos son necesarios para
procesarlos y resolver el problema.

En esta lección aprenderemos sobre las instrucciones de Entrada/Salida. Estas instrucciones nos
permitirán obtener los datos necesarios para resolver el problema y mostrar al usuario los
resultados.

7.2 Definición de la instrucción de Entrada

La instrucción de entrada permite ingresar datos a una variable. Leer e ingresar son
sinónimos.

Una instrucción de entrada permite recoger los datos desde una entrada estándar, generalmente el
teclado.

El verbo relacionado a la instrucción de entrada es "leer" y describe que el sistema de computadora


efectúa operaciones que le permiten captar datos desde el exterior.

El usuario escribe los valores de los datos usando, por ejemplo, el teclado. Los datos son tomados
por la computadora y, siguiendo la instrucción de entrada, son almacenados en la variable indicada.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 31
7.3 Formas de expresar la instrucción de entrada

• Pseudocódigo.

La manera de indicar una operación de lectura o de entrada en pseudocódigo es mediante la palabra


Leer.

Podemos ingresar valores desde teclado


a cualquier tipo de variable. Para esto
utilizaremos la palabra Leer y a
continuación indicaremos el nombre de la
variable en la cual se almacenará el valor
leído desde el teclado.

En el ejemplo se observa a la variable


NUM definida como de tipo entero, luego
mediante la instrucción de entrada se
almacena un valor en ella.

• Diagrama de Flujo.

Podemos representar una instrucción de entrada en un diagrama de flujo, para esto utilizaremos el
símbolo de paralelogramo.

Dentro del símbolo se indica el identificador o nombre de la


variable en la cual se almacenará el dato que se lea desde la
entrada.

7.4 Definición de la instrucción de Salida

La instrucción de salida permite mostrar en pantalla los resultados del procesamiento y


emitir mensajes para el usuario.

Mediante una instrucción de salida es posible mostrarle al usuario los resultados de los cálculos y
operaciones realizadas por la computadora en un programa.

El verbo relacionado a la instrucción de salida es "Escribir". Mediante este verbo se pretende


representar que el sistema escribe información para el usuario. La computadora envía información
hacia el exterior mediante una instrucción de salida.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 32
Normalmente los datos son enviados a la salida estándar, la pantalla, pero existen otros dispositivos
que también pueden ser utilizados, por ejemplo, la impresora.

7.5 Formas de expresar la instrucción de salida

• Pseudocódigo.

La manera de indicar una operación de


salida en pseudocódigo es mediante la
palabra Escribir.

Esta instrucción es útil para emitir


mensajes en la pantalla e indicar el
resultado de las tareas realizadas por
nuestro programa.

Luego de indicar el verbo Escribir puede


colocarse el identificador o nombre de la
variable que puede ir acompañado por una
cadena de caracteres, entre comillas.

Mediante esta instrucción podemos emitir el contenido de cualquier variable. También podemos
usarla para mostrar simplemente un mensaje, sin ninguna variable.

En el ejemplo puede observarse que la instrucción emite una cadena de caracteres y el contenido
de la variable NUM. La instrucción, entonces, está mostrando una constante de tipo cadena y una
variable de tipo entero.

• Diagrama de Flujo.

Para representar una instrucción de salida en diagrama de flujo


utilizaremos un símbolo rectángulo con su lado inferior ondeado.

Dentro del símbolo podemos indicar lo que se muestra en la salida,


por ejemplo, la variable, así como cualquier mensaje.

7.6 Ejemplo aplicando instrucciones de Entrada/Salida

Las instrucciones de Entrada/Salida tienen mucha influencia en la manera en que nuestros


algoritmos y programas funcionan. Dada una entrada realizada por el usuario, la computadora
llevará a cabo el resto de instrucciones del programa. Por lo tanto, según el valor que el usuario

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 33
haya proporcionado al programa, serán los resultados que el programa emitirá mediante
instrucciones de salida.

Las instrucciones de entrada son el medio por el cual el programa puede obtener los datos para
resolver el problema del que se encarga. Sin las instrucciones de entrada nuestro programa sólo
podría trabajar sobre los datos que se hayan definido en el programa, por ejemplo, mediante
instrucciones en las que se asignan constantes como valores iniciales a las variables que usa el
programa.

El usuario pretende utilizar el programa y ejecutarlo con la intención de obtener resultados. Las
instrucciones de salida le permiten al usuario obtener esos resultados. Cuando escribimos un
programa normalmente las instrucciones de
salida se utilizan para mostrar mensajes
orientativos para el usuario y finalmente los
valores resultantes del procesamiento.

Consideremos y analicemos las líneas de


pseudocódigo del ejemplo siguiente:

• Líneas 2 y 3: se declaran y definen las


variables nombre y edad.

• Líneas 5 y 7: instrucciones de salida, se


emiten mensajes para el usuario
solicitándole determinadas acciones para
que el programa continúe. En este caso se
solicita al usuario que ingrese la información respectiva a su nombre y edad.

• Líneas 6 y 8: instrucciones de entrada, se indican los identificadores o nombres de variables en


las cuales se almacenarán los valores ingresados por el usuario. Durante una instrucción de
entrada el sistema se detiene y espera que el usuario responda, continúa en la siguiente
instrucción posteriormente a que el usuario complete el ingreso, generalmente con un <Enter>
(tecla) al finalizar.

• Línea 10: se trata de una instrucción que permite borrar de la pantalla todo lo que se haya
mostrado previamente. Se utiliza para generar una salida de mensajes para el usuario más
organizada y clara.

• Líneas 12 y 13: Nótese que las instrucciones de salida pueden mostrar combinaciones de
cadenas de caracteres y variables, siempre separadas por una coma. En la línea 12, por
ejemplo, se indica la cadena de caracteres "Hola ", luego se coloca una coma de separación y
a continuación el nombre o identificador de la variable cuyo valor se desea mostrar.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 34
Las instrucciones de entrada proporcionan al programa los datos necesarios para llevar
adelante el procesamiento mientras que las instrucciones de salida permiten mostrar
mensajes y resultados que se entregan usuario. Todo programa en computadora requiere
una entrada para luego desarrollar y/o concluir su procesamiento generando una salida.

¿Cómo podemos expresar el algoritmo utilizando diagramación de flujo?

Observemos el gráfico, en él se conectan diferentes figuras:

Paralelogramos: representan las instrucciones de entrada, y dentro de los símbolos se indican los
nombres de las variables que se leen en cada instrucción. En este ejemplo se leen las variables
nombre y edad, ubicamos entonces cada una de ellas en un paralelogramo.

Cuadrados con lado inferior ondeado: los utilizaremos para representar las instrucciones de salida,
dentro del símbolo se indican las cadenas de caracteres y los nombres de las variables que se
envían a la salida, siempre separadas por comas (,).

Elipses: marcamos el inicio y el final de todo diagrama de flujo con una elipse. El inicial se rotula
con la palabra "inicio", la elipse que marca el final del diagrama se rotula con la palabra "fin" o "final".

Mediante el diagrama de flujo podemos reconocer de una manera ágil y visualmente en qué
consisten las tareas de un algoritmo o programa. Para crearlos digitalmente podemos utilizar
Draw.io.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 35
UNIDAD 8

8 Operadores

8.1 Definición

Cuando tratamos de plantear mediante un algoritmo la resolución de un problema, normalmente


necesitamos utilizar componentes de cálculo que nos permitan concretar el objetivo del algoritmo
propuesto. Entre estos componentes de cálculo se encuentran los operadores.

Un operador, es un elemento que indica el tipo de operación que se le va a aplicar a uno o más
datos.

Un operador es un símbolo que representa una operación específica que puede aplicarse
sobre un cierto número de variables y/o constantes.

En esta lección abordaremos conceptos referidos a los operadores. Muchos de los conceptos que
trataremos son estudiados en Matemáticas y la Informática se relaciona estrechamente con ella.
Todas las acciones de una computadora se basan en cómputos o cálculos.

8.2 Tipos de operadores

El tipo de un operador determina el tipo de operandos con los que puede trabajar y el tipo de
operaciones que puede realizar.

Existen tres tipos de operadores: operadores aritméticos, operadores relacionales y operadores


lógicos. En esta lección comenzaremos tratando sobre los primeros.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 36
8.3. Operadores Aritméticos

Los operadores aritméticos permiten la realización de operaciones matemáticas con valores


numéricos que pueden estar representados mediante constantes o almacenados en
variables.

Un operador aritmético toma valores numéricos (constantes o variables) como sus operandos y
devuelve un solo valor numérico. Los operadores aritméticos estándar son suma (+), resta (-),
multiplicación (*) y división (/).

En la tabla podemos observar el conjunto completo de los operadores aritméticos.

En Informática se utiliza un asterisco (*) para representar la


operación de multiplicación.

El símbolo ^ se utiliza para representar la operación de


potenciación.

La operación de módulo suele representarse mediante el


símbolo % o mediante la sigla MOD.

8.4. Expresiones aritméticas

En programación una expresión aritmética es una fórmula aritmética que permite calcular un
valor.

En una expresión aritmética los operandos que intervienen son numéricos, el resultado es un
número y los operadores son aritméticos.

El valor de la expresión aritmética se obtiene al tomar los valores de los operandos y aplicarles el
operador. Los operandos pueden ser constantes, variables u otras expresiones del mismo tipo.

Para la evaluación de expresiones aritméticas en programación, existen reglas detalladas que


permiten determinar el tipo de datos del resultado. En términos generales se pueden resumir de la
siguiente forma:

• Si ambos operandos son de tipo entero, el resultado será de tipo entero.

• Si ambos operandos son de tipo real, el resultado será de tipo real.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 37
• Si un operando es real y el otro entero, el operando de tipo entero se convertirá a real y luego
se aplicará la operación.

¿Cómo podemos efectuar el cálculo de una expresión aritmética mediante el uso de un programa
en pseudocódigo? Observemos el gráfico, y
analicemos las líneas de código:

• Se definen dos variables de tipo entero y


una variable de tipo real.

• Las variables de tipo entero son


inicializadas mediante operación de
asignación utilizando constantes.

• Se realiza el cálculo de la expresión


aritmética y se asigna a la variable RESUL de
tipo real.

• En la expresión aritmética se evalúan los miembros aplicando la jerarquía de operadores


aritméticos.

• Por último, se utiliza una instrucción de salida para emitir el resultado del cálculo realizado.

8.5 Jerarquía de operadores aritméticos

Es el orden en que los operadores deben ejecutarse dentro de una expresión para que sea
calculada en forma correcta. Los operadores se agrupan por su prioridad

La jerarquía de operadores determina el orden en el que se resuelven las expresiones cuando se


involucran operaciones aritméticas como la suma, resta, multiplicación, división, potencia, raíz y
módulo de la división. Este orden es el que permite que una expresión aritmética cualquiera siempre
tenga la misma interpretación ya sea
resolviéndola en papel, en calculadora o
en la computadora.

En principio se resuelven los corchetes y


paréntesis, luego las operaciones de
potencia y raíz, luego la multiplicación y
la división, y por último las sumas y
restas.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 38
8.6 Ejercicios
Dadas las expresiones aritméticas propuestas, se pide identificar:

• las variables,

• las constantes,

• los tipos de operadores, y

• calcular el resultado.

Al finalizar indica de qué tipo es el resultado de cada expresión .


Valores Variables,
Resultado Tipo del
de las Expresión constantes,
obtenido resultado
variables operadores
A=1 B - A * (B + C) * 2 + 1
B=5 A + C * 3 - 12 / 2
C=0
(A + 10 / 5 * A + (B↑2))

A=1 A+B-C/3

B = -2 (A - B - C / 3 + 2) ↑2
C=3
A * B + (B - C) * 3 / (B - 3)

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 39
UNIDAD 9

9 Estructura de Control Secuencial

9.1Definición

Los algoritmos están integrados y se organizan mediante secuencias de instrucciones. Algunas


tareas complejas que realizan los algoritmos requieren establecer un orden de realización de las
instrucciones donde se aplican repeticiones, o se seleccionan caminos de acción entre varias
posibilidades.

En un algoritmo las estructuras de control permiten romper el orden simple de ejecución en las
instrucciones de un programa.

Se denominan estructuras de control a las organizaciones que controlan la ejecución de las


acciones en un algoritmo.

Las estructuras de control permiten establecer el flujo de control en un programa, definen el


orden de ejecución de las instrucciones de un programa.

En esta lección trataremos sobre las estructuras de control y especialmente sobre la estructura de
control secuencial.

9.2. Diferencias entre estructuras de control e instrucciones

Mediante las instrucciones un programa indica a la computadora las acciones a ejecutar. Una
estructura de control organiza conjuntos de esas instrucciones para establecer el flujo de
ejecución de un programa.

Las estructuras de control son las que indican en


que orden se ejecutarán las acciones en un
programa. Permiten especificar la coordinación y
regulación del algoritmo, porque determinan la
dirección que debe seguir el flujo de información
en el mismo.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 40
Teniendo en cuenta lo descripto respecto a las estructuras de control, es necesario destacar que un
algoritmo y su representación en diagrama de flujo deben cumplir con ciertas condiciones:

1. Tener un solo punto de inicio y un solo punto de finalización.

2. Toda acción de cada algoritmo es accesible, es decir, existe al menos un camino que va
desde el inicio hasta el fin del mismo, que se puede seguir y pasa a través de dicha acción.

3. No existirán repeticiones que nunca concluyan, es decir, infinitas.

Observemos que estas condiciones coinciden con las propiedades que hemos estudiado respecto
a los algoritmos.

9.3. Clasificación de estructuras de control

Como vimos previamente, al ser un algoritmo una secuencia de pasos ordenados, debe seguir una
trayectoria para su ejecución desde el primer paso hasta el último. Esta trayectoria se denomina
flujo de control e indica el orden en el cual deben ejecutarse los pasos elementales.

Para organizar el flujo de control de un algoritmo se utilizan estructuras de control. Las estructuras
de control básicas para organizar el flujo de control en un algoritmo, son las siguientes:

• Estructura secuencial.

• Estructura de selección.

• Estructura de iteración.

Las estructuras de control de selección y de


iteración alteran el flujo de control lineal del
algoritmo.

Cada estructura de control posee características distintivas y propiedades que influyen de


diferentes maneras en el flujo de control de un programa.

A continuación, trataremos sobre la estructura de control más sencilla: la estructura de control


secuencial.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 41
9.4. Estructura de control secuencial

La estructura de control secuencial indica una secuencia de acciones a ser ejecutadas de forma
consecutiva. Se compone de instrucciones que deben ser ejecutadas una tras otra sin
excepciones.

En una estructura de control secuencial cada una de las instrucciones no


inicia su ejecución hasta que la instrucción inmediatamente previa no
haya concluido completamente. El flujo de control coincide con el orden
físico en que se indicaron las instrucciones.

Los tipos de operaciones en la estructura de control secuencial son los


siguientes:

9.4.1. Asignación. Consiste en


almacenar valores o
resultados en una zona
de la memoria, es decir,
en variables. Dicha zona
será reconocida con el
nombre de la variable
que recibe el valor.

9.4.2. Lectura. Consiste en


recibir desde un
dispositivo de entrada un
valor. Esta operación se
representa en un
pseudocódigo como:

Leer a;

Donde a es la variable que recibe el valor que se lee de la entrada.

9.4.3. Escritura. Consiste en enviar a un dispositivo de


salida un resultado o un mensaje. Esteproceso
se representa en un pseudocódigo como:

Escribe “El resultado es:”, x;

Donde “El resultado es:” es una cadena de caracteres que compone el mensaje para el usuario y x
es una variable que contiene un valor que se desea mostrar.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 42
9.5. Formas de expresar la estructura de control secuencial

Cuando expresamos una estructura secuencial en pseudocódigo, las instrucciones se irán


ubicando y ejecutando una después de la otra. Normalmente, serán instrucciones mediante las
cuales realicemos operaciones de entrada, de salida y de asignación.

La composición de una estructura secuencial no es conmutativa. Por lo tanto, la secuencia:

Leer a;

Leer b;

c <- a + b;

Escribir c;

No es equivalente a indicar:

Leer a;

c <- a + b;

Escribir c;

Leer b;

El orden de las instrucciones en una estructura de control secuencial es único y determinado


por el objetivo que debe cumplir el algoritmo.
Para representar la estructura de control secuencial mediante diagrama de flujo, simplemente
indicaremos cada una de las instrucciones dentro de su símbolo
correspondiente, una a continuación de la otra, conectadas
mediante una flecha que indica el flujo de control.

Toda representación en diagrama de flujo debe seguir en forma


estricta el formato de la notación propia de esta herramienta de
representación. Por lo tanto, en cada símbolo deberá indicarse
una única instrucción.

En el gráfico observamos que los símbolos en el diagrama de


flujo siguen una secuencia y orden, aspecto característico de la
estructura de control secuencial.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 43
9.6. Ejercicios

Ejercicio 1: pseudocódigo y diagrama de flujo

En los ejercicios 1.a, 1.b y 1.c, realizar las siguientes actividades:


• Identificar variables de entrada y de salida.
• Ejecutar los pseudocódigos en PSeInt y/o pasarlos a mano.
• Realizar el diagrama de flujo en Draw.io y/o pasarlos a mano.

Ejercicio 1.a
Enunciado: Leer dos números. Intercambiar sus valores. Mostrarlos antes y después del intercambio.

Ejercicio 1.b
Enunciado: Ingresar tres números. Sumar los números ingresados previamente. Mostrar el resultado
de la suma.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 44
Ejercicio 1.c
Enunciado: Ingresar un número. Identificar y mostrar:
o el número ingresado,
o el número siguiente al ingresado,
o el número anterior al ingresado.

Ejercicio 2: prueba y verificación de diagramas de flujo


En este ejercicio se te propone que realices la verificación o prueba del diagrama de flujo dados
determinados valores de entrada.
En la tabla de verificación de un diagrama de flujo es preciso indicar tantas columnas como variables
y/o expresiones sean necesarias representar, según lo indique el diagrama.
Deberás completar la tabla de verificación o prueba considerando tres casos

Ejercicio 2.a

Caso de prueba 1

A=5 A B R Imprime
B = -8
Caso de prueba 2

A = -3 A B R Imprime
B = 10

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 45
Caso de prueba 3

A=0 A B R Imprime
B=1
A, B

R = B - A * (B + A) * 2 + 1

Ejercicio 2.b

Caso de prueba 1

X = 30 X Z R Imprime
X, Z
Z = 15

Caso de prueba 2
R= X + Z * 3 – (24/12)
X = -10 X Z R Imprime
Z = 71
R
Caso de prueba 3

X = 25 X Z R Imprime
Z = -35

Ejercicio 2.c

Caso de prueba 1

A, B
A = 455 A B R Imprime
B = -180

Caso de prueba 2
R= ((B+ 3 * (5 + 2) / 10))* A (-1)

A = 98 A B R Imprime
B = 45
R

Caso de prueba 3

A = -55 A B R Imprime
B = -67

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 46
UNIDAD 10

10. El Método Heurístico

10.1. Definición

La Heurística es la capacidad que ostenta un sistema determinado para realizar de manera


inmediata innovaciones positivas para sí mismo y sus propósitos.

Para la informática, la heurística consiste en encontrar o construir algoritmos con buenos tiempos
de ejecución y buenas soluciones, usualmente las óptimas. Un método heurístico, normalmente,
está formado por un conjunto de principios, reglas y estrategias.

Un método heurístico es un método que establece las pautas necesarias para obtener la
resolución de un problema mediante el uso de computadoras.

En el método Heurístico se integran la analogía y la reducción; se definen pautas que ayudan a


encontrar los medios para resolver los problemas, entre las más empleadas se pueden destacar
separar lo dado de aquello buscado, confección de mapas, esquemas, utilización de números,
reformulación de problemas, etc.

En el método heurístico se aplican recursos organizativos funcionales al proceso de resolución de


un problema planteado.

10.2. Pasos del método heurístico

El método heurístico está compuesto por cuatro pasos bien diferenciados, ellos son:

• Definición del problema.

• Análisis.

• Diagrama de flujo.

• Verificación.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 47
Durante el desarrollo de estas etapas es necesario realizar un seguimiento estricto de todo lo que
se realiza. Es preciso reconocer deliberadamente cada caso que se tome en la solución de un
problema.

Desde el principio se debe adoptar una actitud receptiva. Todas las propuestas deben considerarse
tentativamente sin importar que tan obvias o imposibles parezcan. De esta manera se creará una
conciencia y será posible identificar nuevas soluciones.

Para obtener algún beneficio de este método es necesario aceptar en forma tentativa todas las ideas
que se presenten. Es mejor rechazar una idea conscientemente que estar de acuerdo con ellas, sin
haberla analizado.

10.3. Definición del problema

La definición de un problema implica la formulación de tres preguntas:

• ¿Qué resultados se deben obtener?

Especifique con precisión qué resultados se requieren. Si los resultados van a tener un uso
práctico los datos originales se deben incluir en los resultados finales.

• ¿Qué datos se nos proporcionan?

Defina todos los datos en forma precisa. Examine de nuevo las especificaciones de los mismos
y encuentre cuántos elementos de datos hay. ¿Puede variar este número? ¿Hay alguna
restricción en el tipo de datos?

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 48
• ¿Qué condiciones relacionan los datos a los resultados? ¿Son satisfactorias estas condiciones
(es decir, aseguran que se obtendrán resultados correctos para todos los datos)?

Asegúrese de que no omite condiciones y de que comprende perfectamente los términos que
se utilizan para relacionar los datos y los resultados.

A menudo no se pueden establecer correctamente las condiciones hasta que se analiza más
detalladamente el problema. Sin embargo, es posible tener un conocimiento intuitivo de las
condiciones y más adelante se puede revisar la definición y adaptar la experiencia que se obtenga
en el estudio de las soluciones posibles.

Se debe tratar de introducir una notación adecuada para los datos y resultados, mediante la cual se
puedan expresar las condiciones en forma más clara y concisa.

Es probable que, al tratar de desarrollar una solución, se encuentren fallas en esta definición y las
preguntas se tengan que volver a establecer. Siempre se debe considerar que una definición
preliminar es tentativa. No debe cambiarse sin una razón positiva y hasta entonces es necesario
apegarse estrictamente a ella.

10.4. Análisis del problema

Se lleva adelante después de responder a las preguntas ¿Entiendo el problema? ¿Sé cómo
resolverlo?

“Entiendo el problema” entonces procedo a desarrollar un algoritmo, pero a menudo la solución está
equivocada. Por lo tanto, es necesario comparar la resolución propuesta y los pasos mediante los
cuales se obtuvo con la definición original, para ver si hay discrepancias entre ellas.

Por lo general las fallas se presentan por imponer condiciones incorrectas, pero también se deben
verificar los datos y los resultados esperados.

La habilidad para seleccionar un buen método depende principalmente de la experiencia previa,


pero se puede indicar una guía importante:

Seleccione el procedimiento más sencillo y claro, el que tenga menos sutilezas.

En este paso nos respondemos a la pregunta ¿Cómo?

Comenzamos a diseñar el algoritmo correspondiente y expresamos las entradas y resultados que


se quieren obtener con los nombres de variables correspondientes.

La eficiencia de un algoritmo (su rapidez de ejecución) es de gran importancia y a menudo se utiliza


como el criterio básico para seleccionar un método. No obstante, es mejor buscar y desarrollar el
algoritmo que sea más eficiente desde el punto de vista del que lo resuelve, es decir, la solución
que se pueda convertir en algoritmo con el mejor esfuerzo. Con frecuencia esta solución también

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 49
será muy rápida. Sea la más rápida o no, siempre es más fácil retroceder y buscar mejores
alternativas una vez que se ha obtenido una solución satisfactoria.

10.5. Elaboración del Diagrama de Flujo

En este paso expresamos el algoritmo diseñado en el paso anterior, en un lenguaje natural o de


Pseudocódigo, a través de un Diagrama de Flujo.

10.6. Verificación

En este punto se debe verificar la solución propuesta. Una de las mejores técnicas consiste en
tabular el diagrama de flujo, teniendo cuidado de utilizar números distintos a los que se emplearon
antes. Debe procurar estar seguro de que se prueben todas las situaciones posibles. La tabulación
puede ser un proceso largo y tedioso, pero es el más sencillo para encontrar errores en la solución
del problema.

Se recomienda lo siguiente:

• Encontrar subproblemas y cruces-ayuda en el proceso de resolución y en la verificación.

• Seleccionar conjuntos de datos de prueba que permitan que se utilicen todas las trayectorias
en el diagrama de flujo.

• Es obvio que si una trayectoria en el diagrama de flujo no se ha verificado no se sabe si funciona


o no. La selección de conjuntos de datos de prueba es fácil en problemas sencillos: observe
todas las trayectorias en el diagrama de flujo y prepare un conjunto de datos para cada una de
las alternativas que se presenten.

• Además del problema de seleccionar los datos adecuados, en la tabulación hay dos causas por
las cuales se pueden cometer errores.

o Primero, nunca debe suponerse que un nombre de variable tiene un valor particular
asociada a él, y

o segundo, cada valor en la tabla debe corresponder a la acción de una sola caja del
diagrama.

• Cuando haga una tabulación se debe comportar como una computadora, no como un ser
humano; en otras palabras, debe carecer de iniciativa. Lo que es más importante, debe tabular
lo que diagrama hace y no lo que usted piensa o espera que haga.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 50
10.7. Ejercicios

Ejercicio 1: aplicación del Método Heurístico


Para resolver cada uno de los ejercicios siguientes es necesario:
• identificar el dominio del problema
• aplicar las cuatro etapas del Método Heurístico:
▪ Definición del problema.
▪ Análisis.
▪ Diagrama de Flujo.
▪ Verificación.

Ejercicio 1.a

Enunciado: En la pyme "FabriQ" tomaron 4 obreros para realizar diferentes funciones. Necesitan saber
cuánto dinero deben disponer para poder pagar sus sueldos. Leer 4 variables, cada una representa la
cantidad de plata que tienen que cobrar los obreros.

Ejercicio 1.b

Enunciado: Leer la base y la altura de un triángulo, calcular y mostrar su superficie

Ejercicio 1.c

Enunciado: Se leen 3 números. Calcular y mostrar el promedio de los números leídos.

Ejercicio 1.d

Enunciado: José se dirige al supermercado a realizar una compra de comestibles. Al llegar se


encuentra con un letrero que indica:

Hoy 15% de descuento por tu compra

José desea conocer cuanto deberá pagar por su compra. Realiza el cálculo e imprime el monto a pagar
de la compra

Ejercicio 1.e

Enunciado: Ingresar tres números de un dígito. Se pide:

• Utilizando los números ingresados, generar un número de tres dígitos.


• Se asume que los números ingresados poseen todo un solo dígito.

Ejemplo: Se ingresan (entrada) y se almacenan los siguientes números...

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 51
Num1=3
Num2=5 Se muestra en pantalla (salida) el número generado que es igual
Num3=4 a 354.

Ejercicio 1.f

Enunciado: Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas.
Durante un mes el vendedor realizó tres ventas, ahora desea saber cuánto dinero obtendrá por
concepto de comisiones y el total que cobrará en el mes, tomando en cuenta su sueldo base y las
comisiones.

Ejercicio 1.g

Enunciado: A una clase asisten alumnos de ambos sexos. Se desea conocer el porcentaje de
hombres y de mujeres.

Ejercicio 1.h

Enunciado: Un empleado que trabaja en una fábrica de automóviles desea saber cuánto dinero
cobrará a fin de mes.
Para calcular sus haberes se debe tener en cuenta su sueldo base, la cantidad de horas extras que
realizó y la cantidad de días que no trabajó.
A tener en cuenta:
• El importe a cobrar por cada hora extra es $200.
• Por cada día no trabajado se le aplica un descuento de $1.000

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 52
UNIDAD 11

11. Operadores Relacionales

11.1. Introducción

En la lección sobre operadores aritméticos hemos revisado la definición de operadores:

Un operador es un símbolo que representa una operación específica que puede aplicarsesobre
un cierto número de variables y/o constantes.

En esta lección trataremos sobre los operadores relacionales o de relación. Estos operadores nos
serán de utilidad cuando en un algoritmo sea preciso realizar comparaciones o establecer relaciones
entre los valores de variables y constantes.

11.2. Operadores relacionales o de relación

En una lección previa hemos clasificado a los tipos de operadores en: aritméticos, relacionales y
lógicos. Cada uno de estos tipos de operadores opera sobre diferentes tipos de operandos.

Como vimos previamente los operadores aritméticos operan sobre operandos aritméticos
conformando expresiones aritméticas cuyos resultados siempre son valores numéricos.

En esta oportunidad trataremos sobre los operadores relacionales o de relación.

Los operadores de relación o relacionales se utilizan para comparar dos valores. El resultado de la
evaluación puede ser un valor lógico Verdadero o Falso según corresponda a la evaluación realizada
entre los dos valores contrastados.
Un operador relacional o de relación permite identificar
la relación existente entre los valores de sus dos
operandos. Sus operandos pueden ser variables,
constantes, así como expresiones aritméticas.

Los operadores relacionales son mayor que (>),


mayor o igual que (≥), menor que (<), menor o igual
que (≤), igual que (=), distinto de (<>).
En la tabla podemos observar el conjunto completo de los operadores relacionales y el tipo de
relación que representan.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 53
11.3. Jerarquía de operadores aritméticos y de relación

El orden en el que deben ejecutarse los operadores aritméticos y de relación en una


expresión es el siguiente: (1) operadores aritméticos, (2) operadores relacionales.

Consideremos las expresiones siguientes:


Podemos observar que se aplica el primer nivel jerárquico a la
(890 - x) < 35 expresión entre paréntesis, se evalúa y luego se aplica el operador
relacional.
En este caso la operación se lleva a cabo de igual manera a si
existiera paréntesis en la primeraexpresión, esto debido a que entre
890 - x < 35 operadores aritméticos y relacionales se evalúa primeramente a los
aritméticos.
sumaEntera ≥ totalParcial En este caso se contrastan los valores contenidos en ambas
variables.
En este ejemplo primeramente se evalúa la operación de
num55 = vari99 * 25 multiplicación para luego realizar la contrastación entre el resultado
del producto y el valor contenido en la variable num55

11.4. Ejercicios

Dadas las expresiones aritméticas propuestas, se pide identificar:


• las variables,
• las constantes,
• los tipos de operadores, y
• calcula el resultado.

Al finalizar indica de qué tipo es el resultado de cada expresión .


Valores Variables,
Resultado Tipo del
de las Expresión constantes,
obtenido resultado
variables operadores
2 + 3 * N1 <> 6 + (N2 - 1)
N1 = 3
N2 = 6 N2 >= N1 + (N2 / 3)
6 / 2 * (N2 - N1) = 0

A=1 C <> (A + (B - C) * 3)

B = -2 A + B - C / 3 <= C * 2
C=3
A * B + (B + C) = 3 / (B + 3)

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 54
UNIDAD 12

12. Estructura de Selección

12.1. Introducción

Las estructuras de control son las que indican en que orden se ejecutarán las acciones en
un programa. Permiten especificar la coordinación y regulación del algoritmo, porque
determinan la dirección que debe seguir el flujo de información en el mismo.

Al crear algoritmos para resolver con computadora los problemas que se nos plantean, nos es
preciso simular la manera en que tomamos decisiones en nuestra vida diaria. La estructura de
control secuencial, por ejemplo, nos permite reflejar como una acción se realiza a continuación de
otra.

En esta lección trataremos sobre la estructura de selección. Con ella abordaremos nuevos
problemas para ser resueltos en los que es necesario elegir entre diferentes vías de acción.

12.2. Estructura de selección

La estructura de selección permite evaluar una condición lógica. Si el resultado es verdadero,


se ejecutarán determinadas acciones y, si el resultado es falso, se ejecutarán otras acciones.

En diagrama de flujo esta estructura es representada por una construcción consistente de:

• un rombo en el cual se indica la expresión lógica que se evalúa,

• el flujo con dos direcciones que surgen desde dos vértices del rombo, y

• secuencias de instrucciones en cada flujo, según corresponda.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 55
12.3. Estructura de selección simple

La estructura de selección puede ser una estructura de


selección simple, en este caso se evalúa una expresión
y se ejecuta una acción o un conjunto de acciones sólo
si la expresión es verdadera. Si la expresión evaluada es
falsa, no se ejecuta ninguna acción.

Esta estructura de selección es útil cuando debemos


verificar una condición determinada y ante el resultado
verdadero llevar adelante las tareas. Por ejemplo, Juan
desea comprar caramelos entonces verifica si el dinero
que posee es suficiente para comprarlos, si el dinero es
suficiente entonces los compra, sino no puede hacer
nada.

En la representación con diagrama de flujo, la estructura


de selección simple posee instrucciones sólo en el flujo de control correspondiente a un resultado
verdadero de la evaluación de la expresión lógica.

En pseudocódigo, la estructura de selección simple se representa mediante la composición

Si [expresión] Entonces

[acciones por verdadero]

FinSi

Normalmente se utiliza sangría para organizar las instrucciones que se ejecutan por el resultado
verdadero, resaltando de este modo tanto el inicio como el final de la estructura.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 56
12.4. Estructura de selección compuesta

Esta estructura de selección permite


realizar determinadas acciones si el
resultado fue verdadero al evaluar la
expresión lógica, y permite ejecutar
otras acciones si el resultado fue falso.
De este modo tenemos dos vías del
flujo de control en las cuales se llevan
adelante diferentes acciones.

Siguiendo con el ejemplo de Juan que


deseaba comprar caramelos,
podemos replantear la solución
utilizando una estrategia de selección
compuesta de este modo: Juan
verifica si posee el dinero suficiente
para hacer una compra, si lo posee entonces realiza la compra, si no lo posee entonces compra
algo más barato.

La representación mediante diagrama de flujo de la estructura de selección compuesta posee


instrucciones en ambos flujos de control. Existen instrucciones que se ejecutan sólo si la expresión
lógica es verdadera, e instrucciones que se ejecutan sólo si la expresión lógica es falsa.

En pseudocódigo, la estructura de selección compuesta se representa mediante la composición

Si [expresión lógica] Entonces

[acciones por verdadero]

SiNo

[acciones por falso]

FinSi

Se utiliza sangría para destacar los distintos componentes de la estructura, de este modo el
seguimiento de la representación del algoritmo es mucho más fácil de comprender en el momento
dela verificación del algoritmo.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 57
12.5. Ejercicios
1. Prueba y verificación de diagramas de flujo

Dados los siguientes problemas y sus correspondientes algoritmos solución, se pide:

• Determinar datos de entrada, resultados y dominio del problema.


• Efectuar los casos de pruebas necesarios para verificar el algoritmo.

Ejercicio 1.a

Enunciado: Leer un número entero. Si el número es positivo, imprimir "positivo"; si el número es


negativo, imprimir "negativo"; de lo contrario imprimir "nulo".

Completar:

Dominio del problema: …………………………………….………….….


▪ Dato/s de Entrada: ………………………………………………….…….

▪ Resultado/s: …………………………………………………….…………

Casos de prueba NUM Imprime

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 58
Ejercicio 1.b

Enunciado: Leer dos números determinar si uno es múltiplo del otro.

Completar:

Dominio del problema: ……………………………………………………………..


▪ Dato/s de Entrada: ………………………………………………………………….

▪ Resultado/s: …………………………………………………………………………
Casos de prueba
Imprime

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 59
Ejercicio 1.c

Enunciado: Ingresar tres números y luego imprimir el menor.

Completar:

Dominio del problema: …………………………………………………………..


▪ Dato/s de Entrada:……………………………………………………………….

▪ Resultado/s:………………………………………………………………………
Casos de prueba
Imprime

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 60
2. Aplicación del Método Heurístico
Para resolver cada uno de los ejercicios siguientes es necesario:
• identificar el dominio del problema
• aplicar las cuatro etapas del Método Heurístico:
▪ Definición del problema.
▪ Análisis.
▪ Diagrama de Flujo.
▪ Verificación.

Ejercicio 2.a

Enunciado: Leer la duración de una llamada telefónica en minutos, mostrar su costo teniendo en
cuenta que: Toda llamada que dure 3 minutos o menos tiene un costo de $15. Cada minuto
adicional cuesta $7.

Ejercicio 2.b

Enunciado: Ingresar un número. Imprimirlo si es múltiplo de 3 pero no es múltiplo de 5

Ejercicio 2.c

Enunciado: En un kiosco de golosinas, la bolsa grande de papas fritas tiene un costo de $120.00.
Si el cliente se lleva más de tres bolsas, recibe un descuento de $10 por cada bolsa. Elabore un
algoritmo para calcular lo que un cliente debe pagar al comprar una cantidad x de bolsas grandes
de papas fritas en el kiosco.

Ejercicio 2.d

Enunciado: En un grupo de personas dos de ellas desean comparar sus edades. Leer dos edades
y mostrar la edad que sea mayor. Se asume que las edades leídas son distintas.

Ejercicio 2.e

Enunciado: Leer un número que representa la nota de la materia Informática de un alumno. Se


desea indicar la condición a la que corresponde la nota ingresada, teniendo en cuenta la tabla que
se detalla a continuación:
Condición Notas
Desaprobado 0 a 39
Aprobado 40 a 74
Promocionado 75 a 100

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 61
Ejercicio 2.f

Enunciado: Dada la edad de una persona, informar si es o no mayor de edad. Se supone que
una persona mayor de edad tiene por lo menos 18 años.

Ejercicio 2.g

Enunciado: Ingresar un número e imprimir si es par o impar según corresponda.

Ejercicio 2.h

Enunciado: Se leen tres números. Mostrar el mayor de los números ingresados.

Ejercicio 2.i

Enunciado: Se solicita que simule las operaciones a realizar en un cajero automático con un saldo
inicial de $1000, de acuerdo a la siguiente tabla:

Código Operación
1 Depósito
2 Extracción

Se ingresan el código de la operación y el importe, al finalizar se pide imprimir el saldo de la cuenta.


Se deben realizar los siguientes controles:

• Si la operación a realizar es una extracción mayor al saldo inicial deberá mostrar el


siguiente mensaje “El valor solicitado excede su saldo”.
• Si el código de operación ingresado no es un valor permitido, mostrar el mensaje “Código
de operación erróneo”.

Ejercicio 2.j

Enunciado: Leer el sueldo de un empleado, se pide mostrar el sueldo incrementado de acuerdo


a la siguiente tabla:

Sueldo Porcentaje de incremento


0 a 1000 15%
1001 a 2000 10%
2001 en adelante 5%

Ejercicio 2.k

Enunciado: Se leen tres números enteros. Mostrar aquellos que posean 3 dígitos.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 62
Ejercicio 2.l

Enunciado: Leer un número entero. Mostrarlo si posee dos dígitos y si además es un número
impar.

Ejercicio 2.m

Enunciado: Se ingresan los siguientes datos de un artículo vendido:

el precio del artículo, y la cantidad de cuotas.

La cantidad de cuotas permitidas puede ser entre en 1 y 6.

Se pide calcular e imprimir el precio con el incremento de acuerdo con lo siguiente

• Si la cantidad de cuotas es <= 3, el precio se incrementa en un 10%


• Si la cantidad de cuotas es mayor a 3 y menor o igual que 6, el precio se incrementa en un
25%.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 63
UNIDAD 13

13. Operadores Lógicos

13.1. Introducción

Revisemos la definición de operador:

Un operador es un símbolo que representa una operación específica que puede aplicarse
sobre un cierto número de variables y/o constantes.

Gran parte de la manipulación de datos de la parte de sentencias de un programa o algoritmo se


ejecuta mediante operadores, los operadores se dividen en tres categorías: operadores aritméticos,
operadores relacionales y operadores lógicos, los cuales determinan el orden de evaluación de una
sentencia de asignación.

Como vimos previamente, los operadores aritméticos facilitan la creación de expresiones


aritméticas, por otra parte, mediante los operadores relacionales es posible "relacionar" los valores
contenidos en variables, los valores de constantes y los resultados de expresiones aritméticos.

En esta lección trataremos sobre los operadores lógicos.

13.2. Operadores lógicos

En lecciones previas vimos como los operadores


aritméticos operan sobre operandos aritméticos y
generan resultados de tipo numérico.

Así mismo, hemos tratado sobre los operadores


relacionales y aprendimos que éstos pueden
identificar relaciones de valor entre sus operandos,
por ejemplo, indicando si el valor de una variable
es mayor que una constante determinada, o si el resultando de una expresión aritmética es igual a
cero. Los operadores relacionales siempre devuelven un resultado de tipo lógico.

A continuación, abordaremos los últimos, y no menos importantes operadores, los operadores


lógicos.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 64
Los operadores lógicos o booleanos permiten combinar y evaluar expresiones lógicas.
Generan un resultado lógico con valores Verdadero o Falso.

El conjunto de operadores lógicos está formado por:

• Operador AND o Y, aplica la operación de conjunción.


Evalúa dos expresiones lógicas si ambas son
Verdaderas entonces su resultado es Verdadero, y de
lo contrario es Falso.

• Operador OR u O, aplica la operación de disyunción.


Evalúa dos expresiones lógicas, si alguna de ellas es Verdadera entonces su resultado es
Verdadero, su resultado es Falso sólo si ambas expresiones lógicas son falsas.

• Operador NOT o No, se trata de un operador unario y aplica la operación de negación, si la


expresión es falsa, el resultado es Verdadero, y si la expresión es verdadera el resultado es
Falso.

13.3. Tablas de Verdad de la Lógica de Boole

La evaluación de las expresiones lógicas en las que se aplican los operadores lógicos se rigen por
las tablas de verdad de la lógica de Boole, por lo que es necesario conocerlas para poder aplicarlas.

A continuación, observaremos cada una de las tablas de verdad correspondiente a cada operador
lógico.

• Operador AND o Y.

Este operador es binario, se


requieren dos operadores
lógicos, operando 1 y
operando 2.

La tabla muestra las posibles


combinaciones. El resultado sólo será verdadero cuando operando 1 y operando 2 sean ambos
verdaderos.

Siempre que alguno de los operandos sea falso, el resultado será falso.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 65
• Operador OR u O.

Este operando es binario, evalúa dos operandos lógicos, operando 1 y operando 2.

Siempre que alguno de los


operandos sea verdadero, el
resultado es verdadero.

Si ambos operandos, operando 1 y


operando 2, son falsos, el resultado
es falso.

• Operador NOT o NO.

Se trata de un operador unario.

Opera sobre el operando generando el resultado opuesto al


valor lógico del operando. Es decir, si el operando es
verdadero, el resultado es falso, y si el operando es falso, el
resultado es verdadero.

13.4. Jerarquía de operadores lógicos

El orden en el que deben ejecutarse los operadores lógicos es el siguiente: (1) NOT, (2) AND,
(3) OR.

Supongamos la evaluación de la siguiente expresión lógica en la que se combinan operadores


relaciones y lógicos:

NO ((9 > 5 O 2 < 8) Y (6 = 3))

Su evaluación será la siguiente:

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 66
NO ((V O V) Y (F))

NO (V Y F)

NO (F)

Observemos cómo el uso de paréntesis permite cambiar el orden de jerarquía según se requiera en
la tarea de resolver un problema determinado.

En el ejemplo participan los operadores lógicos NO, O e Y.

13.5. Ejercicios

Evaluación de expresiones relacionales y lógicas

• Dadas las siguientes expresiones propuestas, se pide identificar:


o las variables,
o las constantes,
o los tipos de operadores, y
o calcula el resultado.
• Al finalizar indica de qué tipo es el resultado de cada expresión.

Variables,
Tipo del
Valores Expresión Constantes, Resultado
resultado
Operadores Obtenido

T and (R <= S) or (not U)

R<= S / 3 and T

R=2, S=6
T= verdadero Not U and ( S < 1 ) or T
U= falso

T and ( R<= 2 )

T or U and ( R < S )

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 67
UNIDAD 14

14. Estructuras de control de iteración

14.1. Introducción

En lecciones previas hemos tratado sobre la estructura de control secuencial y sobre la estructura
de selección, ambas permiten establecer el flujo de control en un algoritmo o programa. En esta
lección trataremos sobre las estructuras de control de iteración.

Las estructuras de control de selección y de iteración permiten modificar el flujo secuencial


de la ejecución de un programa. Son las que indican en que orden se ejecutarán las acciones
en un programa.

Cuando nos proponemos resolver problemas en computadora, debemos representar en muchas


ocasiones secuencias de acciones que se repiten y cuya repetición debe ser lógicamente
controlada.

Las acciones repetitivas en muchas ocasiones son indispensables para resolver algún problema en
particular.

¿Cómo podemos representarlas en la diagramación de flujo?

¿Cómo podemos utilizarlas en el pseudocódigo para representar una solución algorítmica?

En esta lección responderemos a estas preguntas.

14.2. Estructura de control de iteración

Podemos definir una estructura iterativa como la estructura de control que permite al
algoritmo ejecutar en forma repetitiva un conjunto de acciones utilizando una condición para
indicar su finalización.

Las estructuras de control de iteración o estructuras iterativas permiten ejecutar un conjunto de


instrucciones varias veces. La cantidad de veces que se repiten las instrucciones está dada por la
evaluación de una expresión relacional y/o lógica.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 68
En una estructura de control iterativa el conjunto de instrucciones que se repiten conforman un
denominado "bucle" o "ciclo". Dicho conjunto de instrucciones se caracteriza por estar constituido
por las acciones que es necesario reproducir una determinada cantidad de veces para solucionar
un problema.

En el conjunto de instrucciones que se repiten, deben ocurrir acciones que alteren el


resultado de la evaluación de la expresión relacional y/o lógica que define la repetición, para
permitir la finalización del "ciclo" o "bucle".

Dado que existe un bucle o ciclo en una estructura de


control de iteración, existe una instrucción al final de dicho
bucle o ciclo que envía el control a una instrucción previa
para que vuelva a ejecutarse.

Las estructuras de control de iteración son:

• Mientras.

• Repetir-hasta.

Aunque ambas poseen el mismo objetivo -repetir


cíclicamente un bloque de instrucciones- difieren en su sintaxis, de todos modos, una solución
planteada con la estructura Mientras puede adaptarse para ser planteada con una estructura
Repetir-hasta.

Algunos problemas que podemos resolver con estas estructuras son por ejemplo los siguientes:

• Imprimir todos los números pares menores a 10. En este caso iteraremos sobre cada uno de los
números de un dígito comenzando con una variable con valor igual 1 hasta llegar hasta 9. Para
cada valor aplicaremos la verificación por número par. La iteración concluirá cuando el valor de
la variable iguale a 10.

• Mostrar 5 veces el mensaje "Hola mundo!". Para este caso el bucle o ciclo estará integrado por
la tarea de mostrar el mensaje y contar las veces que se muestra el mensaje. El ciclo concluirá
cuando la variable que usemos para contar sea igual a 6, suponiendo que le dimos el valor inicial
igual a 1.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 69
14.3. Estructura Mientras

La estructura iterativa Mientras es una estructura que impide la ejecución de un conjunto de


instrucciones si la evaluación de una expresión relacional y/o lógica es falsa. Es decir, el
conjunto de instrucciones se repetirá sólo si la evaluación de la expresión relacional y/o
lógica es verdadera.

El bloque de instrucciones incluidas en


el bucle o ciclo podrá ejecutarse entre
0 y N veces. Si la expresión lógica es
inicialmente falsa, el bloque de
instrucciones se ejecutará 0 veces.

La dinámica de ejecución de esta


estructura es la siguiente:

1. Se evalúa la expresión lógica. Si el


resultado es falso, ir a (3). Si el resultado es verdadero, ir a (2).

2. Se ejecutan las acciones del ciclo o bucle.

3. La estructura termina.

En pseudocódigo, la estructura iterativa Mientras se representa mediante la siguiente composición:

Mientras (expresión_lógica) Hacer

[secuencia_de_acciones]

FinMientras

Para representar la estructura Mientras


usando diagramación de flujo se utiliza un
rombo para indicar la expresión relacional
y/o lógica que se evalúa.

Por la salida de verdadero se indica el


bloque de sentencias que formarán el ciclo o
bucle, y se indica el flujo de control creando
un ciclo que va desde el final del bloque de
instrucciones hasta antes del rombo donde
se indica la expresión relacional y/o lógica.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 70
De este modo, en el diagrama de flujo es posible observar cómo la ejecución del bucle está
condicionada a que la evaluación de la expresión sea verdadera.

Por la salida de la evaluación falsa de la expresión relacional y/o lógica, la estructura finaliza.

14.4. Estructura Repetir-Hasta

En la estructura iterativa Repetir-Hasta se ejecuta un conjunto de acciones, se evalúa la


expresión relacional y/o lógica y si es falsa se ejecuta nuevamente el bloque de acciones.

Esta estructura de control repetitivo se caracteriza porque ejecuta un conjunto de instrucciones sin
realizar previamente la evaluación de la expresión relacional y/o lógica. Las acciones se repiten
HASTA QUE se cumple una condición expresada en la expresión relacional y/o lógica.

El bloque de instrucciones incluidas en el bucle o ciclo podrá ejecutarse entre 1 y N veces. Si la


expresión lógica es inicialmente falsa, el bloque de instrucciones se ejecutará 1 sola vez.

La dinámica de ejecución de esta estructura es la siguiente:

1. Se ejecutan las acciones del ciclo o bucle.

2. Se evalúa la expresión lógica. Si el resultado es falso, ir a (1). Si el resultado es verdadero, ir a


(3).

3. La estructura termina.

En pseudocódigo, la estructura iterativa


Repetir-Hasta se representa mediante la
composición

Repetir

[secuencia_de_acciones]

Hasta Que (expresión_lógica)

Para representar la estructura Repetir-Hasta usando diagramación de flujo se indica primeramente


el bloque de acciones que se repiten y luego se utiliza un rombo para indicar la expresión relacional
y/o lógica que se evalúa.

Por la salida de falso, el flujo de control retorna al inicio del bloque de acciones que se repiten,
definiéndose de este modo el bucle o ciclo de sentencias.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 71
Por la salida de la evaluación verdadera de la
expresión relacional y/o lógica, la estructura
finaliza.

Dado que en esta estructura la condición se


evalúa al final, las instrucciones del cuerpo del
ciclo serán ejecutadas al menos una vez.

A fin de evitar ciclos infinitos, el cuerpo del ciclo


debe contener alguna instrucción que modifique
la o las variables involucradas en la condición de
modo que en algún momento la condición sea
verdadera y se finalice la ejecución del ciclo.

14.5. Diferencias entre las estructuras iterativas Mientras y Repetir-Hasta

Una de las principales


diferencias entre las
estructuras iterativas Mientras
y Repetir-Hasta reside en la
cantidad de veces en que el
bucle o ciclo de instrucciones
puede repetirse.

En la estructura Mientras el ciclo


puede repetirse como mínimo 0 veces mientras que en la estructura Repetir-Hasta el ciclo puede
repetirse como mínimo 1 vez.

Otra diferencia reside en el momento en que se efectúa la verificación de ejecución o


repetición del ciclo o bucle.

En el caso de la estructura Mientras, la verificación de ejecución del ciclo se lleva a cabo en primera
instancia, mientras que en el caso de la estructura Repetir-Hasta, la verificación de ejecución es la
última tarea de la estructura. Esta característica define además el número de ejecuciones.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 72
14.6. Ejercicios

Ejercicio 1: prueba y verificación de diagramas de flujo

Dados los siguientes problemas y sus correspondientes algoritmos solución, se pide:


• Determinar datos de entrada, resultados y dominio del problema.
• Efectuar los casos de pruebas necesarios para verificar el algoritmo.

Enunciado:

Leer 10 números.
Imprimir la
cantidad de
números positivos,
negativos y nulos
ingresados.

Ejercicio
1.a
Completar:
Dominio del problema: ……………………………………………………………..
▪ Dato/s de Entrada: ………………………………………………………………….

▪ Resultado/s: …………………………………………………………………………

Casos de prueba
Imprime

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 73
Ejercicio 1.b
.

Enunciado:

Leer 10 números.
Imprimir la cantidad
de números pares y
la suma de los
números impares
ingresados.

Completar:
Dominio del problema: ……………………………………………………………..
▪ Dato/s de Entrada: ………………………………………………………………….

▪ Resultado/s: …………………………………………………………………………

Casos de prueba
Imprime

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 74
Ejercicio 1.c

Enunciado:

Leer 10 números enteros


positivos. Imprimir
la cantidad de
números de tres
dígitos ingresados
.

Completar:
Dominio del problema: ……………………………………………………………..
▪ Dato/s de Entrada: ………………………………………………………………….

▪ Resultado/s: …………………………………………………………………………

Casos de prueba
Imprime

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 75
Ejercicio 2: aplicación del Método Heurístico
Para resolver cada uno de los ejercicios siguientes es necesario, inicialmente, identificar el dominio
del problema y luego aplicar las cuatro etapas del Método Heurístico.
▪ Definición del problema.
▪ Análisis.
▪ Diagrama de Flujo.
▪ Verificación.

Ejercicio 2.a

Enunciado: Ingresar el apellido, el nombre y la edad de 20 personas. Informar por cada persona
su apellido, nombre y el mensaje “mayor de edad”, en caso de que lo sea.
Se supone que una persona es mayor de edad si tiene por lo menos 18 años.

Ejercicio 2.b

Enunciado: Ingresar N números de dos dígitos. Imprimir, para cada número ingresado, el dígito
correspondiente a la unidad.

Ejercicio 2.c

Enunciado: Se leen N números y se precisa realizar el cálculo del promedio de los números que
sean múltiplos de 3 y no sean múltiplos de 5. Mostrar el resultado del cálculo realizado.

Ejercicio 2.d

Enunciado: Leer una serie de números enteros cuyo final viene indicado por el número cero,
mostrar aquellos que sean múltiplos de 7.

Ejercicio 2.e

Enunciado: Leer N números enteros, determinar y mostrar el mayor y el menor de los números
ingresados

Ejercicio 2.f

Enunciado: Leer de N alumnos el número de legajo y la nota de la materia Informática.


Se desea conocer:
• La mayor nota.
• La cantidad de alumnos por cada condición, teniendo en cuenta la tabla que se detalla a
continuación.

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 76
Condición Notas
Desaprobado 0 a 39
Aprobado 40 a 74
Promocionado 75 a 100

Ejercicio 2.g

Enunciado: Leer una sucesión de números enteros de 3 dígitos, cuyo final viene
indicado por un número negativo.
Se pide mostrar:
• El primer y el último dígito, solo si el dígito central es par.

• El mensaje “Capicúa” si el número ingresado lo es. Un número es capicúa si se lee

igual de izquierda a derecha y viceversa.


• El menor número ingresado.

Ejercicio 2.h

Enunciado: Leer 100 números de legajos de los alumnos de una asignatura de la carrera de
Informática.
El número de legajo consta de 5 dígitos con el siguiente formato:
• los tres (3) primeros dígitos corresponden al número de orden de inscripción del alumno, y
• los dos (2) últimos dígitos corresponden al año de ingreso.

Se pide:
1. Imprimir los números de legajo de los alumnos que ingresaron en el año 2015.
2. Calcular e imprimir el porcentaje de alumnos cuyo número de orden de inscripción es impar.
3. Calcular e imprimir la cantidad de alumnos que ingresaron en el año 2021.

Ejercicio 2.i

Enunciado: Leer una serie de números de tres dígitos, cuyo final viene dado por el ingreso
del número 999. Imprimir cada uno de los dígitos que componen un número indicando la
posición que ocupan en él.
Por ejemplo, si se lee 458, la salida correspondiente sería…4, 5, 8

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 77
Ejercicio 2.j

Enunciado: Se necesita analizar la información sobre un grupo de alumnos de la escuela primaria.


Para llevar a cabo esta tarea se ingresa la información de N alumnos.
Para cada alumno se leen dos datos: apellido y fecha de nacimiento (MMAA).
Para leer la fecha de nacimiento se aplica el siguiente formato: MMAA, donde MM indica el número
del mes y AA indica los dos últimos dígitos del año.
Se pide:
• Mostrar el apellido del alumno si nació en el año 2014.
• Calcular y mostrar la cantidad de alumnos que nacieron en el mes de mayo.
• Calcular y mostrar el promedio de las edades de los alumnos. Para realizar este cálculo utilizar
sólo el año de nacimiento.

Ejercicio 2.k

Enunciado: Se ingresa la información referente a N empleados de distintas sucursales de un banco.


Para cada empleado se lee: código de empleado y código de sucursal y sueldo.
Se pide mostrar…
• Los códigos de empleados de la sucursal de la ciudad de Salta.
• La cantidad de empleados de la sucursal de Tucumán.
• El código de empleado del mayor sueldo.

Para responder a las solicitudes tener en cuenta la siguiente tabla con información:

Código
Descripción
Sucursal
1 Salta

2 Santiago del Estero

3 Tucumán

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 78
BIBLIOGRAFÍA

De Giusti A. (2001). Algoritmos, datos y programas. Con aplicaciones en Pascal, Delphi y Visual Da
Vinci. Prentice Hall, Argentina.

Joyanes Aguilar L. (2008). Fundamentos de Programación. Algoritmos, Estructuras de datos y


objetos. Cuarta Edición, Mc Graw Hill, Madrid.

Unzaga Silvina (2020). Cartilla del Curso de Ingreso- FCEyT-UNSE

Docente compilador: Ing. Analía Méndez Coordinadora: Ing. Carmen Silva Página 79

You might also like