Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino -...

68
Universidad Nacional de Misiones Facultad de Ingeniería Informática Guía Teórica Parte Estructuras selectivas y repetitivas analizadas desde su uso Plan DOCENTES Ing. Alicia Rendón Ing. Andrea Santander Ing. Daniel Refosco Ing. Juan Pablo Gross Sr. Matías Krujoski Sr. Walter Wasilewski Facultad de Ingeniería. U.Na.M. – Juan Manuel de Rosas - Oberá (Misiones.) CP 6 – Teléfonos/Fax: + 6/ Fax: Interno . www.fio.unam.edu.ar. E-mail:mailto:[email protected]

Transcript of Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino -...

Page 1: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Universidad Nacional de Misiones

Facultad de Ingeniería

Informática

Guía Teórica Parte 3

Estructuras selectivas y repetitivas analizadas desde su uso

Plan 2013

DOCENTES

Ing. Alicia Rendón

Ing. Andrea Santander

Ing. Daniel Refosco

Ing. Juan Pablo Gross

Sr. Matías Krujoski

Sr. Walter Wasilewski

Facultad de Ingeniería. U.Na.M. – Juan Manuel de Rosas 325 - Oberá (Misiones.) CP 3360 –Teléfonos/Fax: +54 03755 422169/422170 Fax: Interno 104. www.fio.unam.edu.ar.

E-mail:mailto:[email protected]

1

Page 2: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Guía Teórica de Informática - Universidad Nacional de Misiones. Facultad de Ingeniería.Los textos de este libro se distribuyen bajo una licencia Reconocimiento-CompartirIgual 3.0 Un-ported (CC BY-SA 3.0):http://creativecommons.org/licenses/by-sa/3.0/deed.es_ES

Esta licencia permite:Compartir: copiar y redistribuir el material en cualquier medio o formato.Adaptar: remezclar, transformar y crear a partir del material para cualquier finalidad.

Siempre que se cumplan las siguientes condiciones:

Reconocimiento: Debe reconocer adecuadamente la autoría, proporcionar un enlace ala licencia e indicar si se han realizado cambios. Puede hacerlo de cualquier manera razona-ble, pero no de una manera que sugiera que tiene el apoyo del licenciador o lo recibe por eluso que hace.

Compartir Igual: Si remezcla, transforma o crea a partir del material, deberá di- fundirsus contribuciones bajo la misma licencia que el original.Las figuras e ilustraciones que aparecen en el libro son de autoría de los respectivos autores. Deaquellas figuras o ilustraciones que no son realizadas por los autores, se coloca la referenciarespectiva.

Este texto forma parte de la Iniciativa Latinoamericana de Libros de Texto abiertos (LATIn),proyecto financiado por la Unión Europea en el marco de su Programa ALFA III EuropeAid. ElProyecto LATIn está conformado por: Escuela Superior Politécnica del Litoral, Ecuador (ESPOL);Universidad Autónoma de Aguascalientes, México (UAA), Universidad Católica de San Pablo,Perú (UCSP); Universidade Presbiteriana Mackenzie, Brasil(UPM); Universidad de la República,Uruguay (UdelaR); Universidad Nacional de Rosario, Argentina(UR); Universidad Central deVenezuela, Venezuela (UCV), Universidad Austral de Chile, Chile (UACH), Uni- versidad del Cauca,Colombia (UNICAUCA), Katholieke Universiteit Leuven, Bélgica (KUL), Universidad de Alcalá,España (UAH), Université Paul Sabatier, Francia (UPS). [?]

Cátedra de Informática rev8 2 de 68

Page 3: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Índice general

3 Estructuras selectivas y repetitivas analizadas desde su uso 53.1 Estructuras de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.2 Estructuras de selectiva o decisión: Condicionales . . . . . . . . . . . . . . . . . . . . . 63.2.1 Condicionales con una pregunta, Si-Entonces - FinSi (del Inglés: if) . . . . . . 63.2.2 Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) 93.2.3 Condicionales con casos o en cascada . . . . . . . . . . . . . . . . . . . . . . . 103.2.4 Condicionales en árbol o anidados . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2.5 Condicionales con casos vs. en árbol . . . . . . . . . . . . . . . . . . . . . . . . 143.2.6 Ejercicios propuestos de estructuras de decisión . . . . . . . . . . . . . . . . . 143.3 Estructuras de selección múltiple Según - Finsegun (switch) . . . . . . . . . . . . . . . 163.3.1 Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.4 Estructuras repetitivas: "Bucles" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.4.1 Estructura “Para-FinPara” (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4.2 Variantes de uso del Para-FinPara . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.4.3 Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.4.4 Estructura "Mientras - FinMientras" (While) . . . . . . . . . . . . . . . . . . . . . 383.4.5 Estructura "Repetir - Mientras Que" (Do - While) . . . . . . . . . . . . . . . . . . 413.4.6 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.5 Bucles con números Aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.5.1 Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.6 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.6.1 Ejemplos y Aplicaciones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.6.2 Ejemplos de Estructuras de Control - Bucles con Bases numéricas . . . . . . 59

3

Page 4: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,
Page 5: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

3 Estructuras selectivas y repetitivas analizadasdesde su uso

El presente capítulo tiene como objetivo describir el uso y utilidad de las estructuras de controlpara elaborar algoritmos que permitan resolver tareas asociadas con el manejo de información.En un algoritmo, las estructuras de control permiten escoger el orden en que se realizarán lasacciones a seguir o repetir. Por ejemplo:

Validar si se obtuvo la calificación suficiente para aprobar el curso,Permitir subir pasajeros a un transporte mientras no se sobrepase su capacidad,Asignar un descuento a un producto si se ha comprado más de una docena,Verificar que un número ingresado se encuentre dentro de un rango valido, entre otros.

3.1. Estructuras de control

Las estructuras de control se clasifican en dos grandes grupos:

Estructuras de Selección:• Condicionales o de selección

Estructuras repetitivas, iterativas o bucles (del Inglés: "Loops"):• Lazo o Bucle Mientras - FinMientras [también llamado WHILE]• Lazo o Bucle Repetir - Mientras que [también llamado DO-WHILE]• Lazo o Bucle Para - FinPara [también llamado FOR]

Las estructuras condicionales permiten seleccionar las operaciones o acciones a seguir basadosen una pregunta o condición. Los bucles usan una pregunta o condición para indicar si se repiteuna o un grupo de acciones. Cada una de estas estructuras son tratadas en detalle en las siguien-tes secciones. En cada sección se repasan conceptos básicos para desarrollar ejercicios, que sonincorporados en los algoritmos, y que serán necesarios para las secciones siguientes. Los diagra-mas de flujo para algoritmo, se realizarán con las formas básicas del estándar ISO/ANSI 5807:1985.5

Page 6: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

3.2. Estructuras de selectiva o decisión: Condicionales

Estas estructuras permiten controlar el flujo de secuencia de una solución en un algoritmo, demanera tal que en función de una condición (que puede ser el valor de una variable), es posibledesviar la secuencia entre diferentes alternativas.Cuando se puede escoger entre dos caminos, se debe tomar una decisión entre las opciones. Enestos casos se utilizan los “Condicionales” que son estructuras de selección.3.2.1. Condicionales con una pregunta, Si-Entonces - FinSi (del Inglés: if)

El condicional más simple se encuentra constituido por dos caminos, donde se formula unapregunta simple (cuya respuesta puede ser verdadero o falso) que compara al menos dosvariables mediante expresiones de comparación, tales como:a>ba=ba<ba==trueb!=falseetc....en forma general: {operando 1 } {operador relacional} {operando 2}

En diagramas de flujo el condicional se representa por un rombo, la expresión se escribe dentrodel rombo. Por convención, hacia la derecha del rombo se dibuja la salida por verdadero (V), yhacia abajo o la izquierda se dibuja la acción cuando el resultado es falso (F).

decisión

Acciones Acciones

F

I

F V

Figura 3.1: Ejemplo de una estructura de decisión con dos bifurcaciones posiblesCátedra de Informática rev8 6 de 68

Page 7: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Paramostrar la aplicación de un condicional en un algoritmo se utilizan los siguientes ejemplos:3.2.1.1. Ejemplo 1 - Descuento en Almacén

Un almacén aplica un descuento del 10% a quienes han comprado mas de $ 100 en productos.Realice un algoritmo que permita realizar esta operación directamente en la caja registradora.Desarrollo:

El descuento lo puede aplicar el cajero, o se puede incorporar en el algoritmo de la máquinaregistradora, para que lo ejecute automáticamente. El valor de compra es la variable de ingreso, elprocedimiento debe determinar el valor a pagar, que se presenta al final como variable de salida.

1 Proceso ofertas012 Definir valor,descuento,pagar Como Real;3 Leer valor;4 Si valor>100 Entonces5 descuento = 0.10;6 SiNo7 descuento = 0;8 FinSi9 pagar = valor*(1-descuento);10 Escribir pagar;11 FinProceso

Figura 3.2: Diagrama de flujo del ejercicio del almacén con descuento

Cátedra de Informática rev8 7 de 68

Page 8: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Otra forma de expresar el algoritmo es desde el punto de vista del dueño del almacén, quienprefiere que no exista descuento (0), el cual se modifica solamente si se cumple con la condiciónde que el cliente adquiera un valor superior a 100 dólares:El pseudo-código para el ejercicio se presenta a continuación:

1 Proceso ofertas022 Definir valor,descuento,pagar Como Real;3 Leer valor;4 descuento = 0;5 Si valor>100 Entonces6 descuento = 0.10;7 FinSi8 pagar = valor*(1-descuento);9 Escribir pagar;10 FinProceso

Y su respectivo diagrama de flujo:

Figura 3.3: Diagrama de flujo del ejercicio

Cuando la condicional modifique el valor de una variable solamente en caso de que secumpla la condición, la acción se debe ejecutar por el lado Verdadero.

Importante!

Cátedra de Informática rev8 8 de 68

Page 9: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Debe evitarse plantear condiciones lógicas que salgan solamente por el Falso y no tenganacción alguna por el camino Verdadero.

3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés:if-else)

Cuando se debe incluir más de una pregunta en un condicional, se utilizan los operadores lógicos.En diagramas de flujo o pseudo-código, las expresiones usan las mismas conectivas y que lanotación de lógica matemática. Algunos prefieren usar la notación de lenguajes estructuradosde programación y otros utilizan la forma simple: “Y”, “O”.Conectiva Símbolo Expresión OperadorConjunción ^ ,&& Y ANDDisyunción v ,|| O ORNegación ! NO NOT

Cuadro 3.1: Operadores lógicos comunes3.2.2.1. Ejemplo 2 - Descuento en Almacén con 2 condiciones

Un almacén aplica el descuento del 10 % para compras mayores a 8 dólares y que incluyan másde 10 artículos.Desarrollo:Para el ejercicio se requieren dos variables de ingreso: valor y cantidad.El descuento se aplica con la lógica

(valor > 8) y (canti d ad > 10). (3.1)que se traduce en la siguiente expresión:

(valor > 8) && (canti d ad > 10). (3.2)Para el procedimiento se continúa de igual forma que en el ejercicio anterior:

1 Proceso ejemplo022 Definir valor,descuento,pagar Como Real;3 Definir cantidad Como Entero;4 Leer valor;5 Leer cantidad;6 Si (valor>8) Y (cantidad>10) Entonces7 descuento = 0.10;8 SiNo9 descuento = 0;10 FinSi11 pagar = valor*(1-descuento);12 Escribir pagar;13 FinProceso

Cátedra de Informática rev8 9 de 68

Page 10: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.4: Diagrama de flujo del ejercicio del almacén con descuento incluyendo la cantidad

3.2.3. Condicionales con casos o en cascada

Existen problemas en los que una variable puede tomar diferentes valores conforme alcumplimiento de diferentes casos.

Por ejemplo, cuando se realizan ventas por volumen (por cantidades grandes de producto), eldescuento depende de la cantidad del producto que se vende.

Cuando el condicional puede tener varios valores, se puede abordar el problema, dividiendo lacondición en casos, donde cada caso es una pregunta. Se empieza por el caso más simple y semodifica va analizando las condiciones utilizando preguntas en cascada:Cátedra de Informática rev8 10 de 68

Page 11: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

decisión

Caso 2

I

Caso 1

F

decisión

Caso 3

V

V

Figura 3.5: Condicionales con casos3.2.3.1. Ejemplo 3 - Descuento en Almacén con más de 2 condiciones

Un almacén rebaja 10% del precio de un producto si se adquieren más de 20 unidades y 5% siadquieren entre 10 y 20 unidades (inclusive), no hay descuento para cantidades menores oiguales a 10 unidades. Con el precio unitario del producto y la cantidad adquirida, realice unalgoritmo para mostrar el valor a pagar.

[ ]( ](

descuento = 0%

0

descuento = 5%

10

descuento = 10%

20cantidad

Figura 3.6: Intervalo para el ejemploDesarrollo:

Una forma de simplificar la resolución del problema, es dividirlo en casos. Siguiendo la lógica quese plantea en la figura 3.6, el programa calcula el descuento en función de la cantidad deartículos. De este modo, la acción de "Aplicar los descuentos" se traduce en evaluar cada rangode cantidad y escribirlos uno a uno como condicionales.Cátedra de Informática rev8 11 de 68

Page 12: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.7: Ejemplo 3 - condicionales con rangos

1 Proceso ofertas022 Definir valor,descuento,pagar Como Real;3 Leer valor;4 Leer cantidad;5 descuento <- 0;6 Si (cantidad>10) Y (cantidad<=20) Entonces7 descuento <- 0.05;8 FinSi9 Si (cantidad>20) Entonces10 descuento <- 0.1;11 FinSi12 pagar <- valor*cantidad*(1-descuento);13 Escribir pagar;14 FinProceso

3.2.4. Condicionales en árbol o anidados

Cátedra de Informática rev8 12 de 68

Page 13: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Otra forma de resolver el problema del ejemplo anterior, consiste en generar un camino por cadacaso para asignar el valor a la variable de salida. De esta forma, cada camino planteado es partede un condicional.

decisión 1

I

F

Caso 2

decisión 2

Caso 3Caso 1

V

F

VF

Figura 3.8: Diagrama de Flujo de un condicional en árbol

Replanteando el ejemplo anterior utilizando condicionales en árbol, el código queda:

1 Proceso ofertas022 Definir valor,descuento,pagar,cantidad Como Real;3 Leer valor;4 Leer cantidad;5 descuento = 0;6 Si (cantidad>10) Entonces7 Si (cantidad>20) Entonces8 descuento = 0.1;9 SiNo10 descuento = 0.05;11 FinSi12 SiNo13 descuento = 0;14 FinSi15 pagar = valor*cantidad*(1-descuento);16 Escribir pagar;17 FinProceso

Cátedra de Informática rev8 13 de 68

Page 14: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.9: Diagrama de Flujo de condicionales en árbol para el ejemplo

3.2.5. Condicionales con casos vs. en árbol

Comparando los diagramas de flujo en las Figuras 3.7 y3.9, es posible notar que el hilo delprograma es diferente en ambas soluciones. El programa hace lo mismo, pero de diferentemanera. En un caso las preguntas se realizan una a continuación de otra, siempre. En elcondicional por árbol, solo se realizan las preguntas necesarias para el cada caso.3.2.6. Ejercicios propuestos de estructuras de decisión

1. Escriba un algoritmo que determine si un número ingresado es positivo, negativo o cero.2. Escriba un algoritmo que permita leer dos valores numéricos A y B. Si A es mayor que Bdebe realizar la suma de ambos, caso contrario, se hace el producto.3. Escriba un algoritmo que permita ingresar valores numéricos A, B, C, D, E y decir si supromedio es mayor o igual a 10.4. Hacer un programa que permita ingresa dos números y el símbolo de la operación (+,-,*,/).obteniéndose el correspondiente resultado. Si el símbolo no es correcto deberá imprimir unmensaje que indique “Error en símbolo”.5. Escriba un algoritmo capaz de encontrar el máximo de dos valores (M y N)6. Escriba un algoritmo capaz de encontrar el máximo de tres valores (R, S y T).

Cátedra de Informática rev8 14 de 68

Page 15: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

7. Escribir un algoritmo que permita ingresar tres números distintos entre sí y los muestre enpantalla ordenados de mayor a menor y de menor a mayor.8. Desarrollar un algoritmo que permita realizar la suma de dos horas distintas (HH, MM, SS).Tener en cuenta que si la hora supera 24 se debe contar un día.9. Leer los lados de un rectángulo y el radio de un círculo. Determinar si las áreas de ambasfiguras son o no iguales.

10. Diseñe un algoritmo que permita ingresar la hora actual del día en tres variables, HH, MM ySS y determine cuantas horas, minutos y segundos restan para las 23:59:00.11. Diseñe un algoritmo que permita ingresar dos valores X e Y, luego determine quéporcentaje es X de Y.12. El promedio de prácticas de un curso se calcula en base a cuatro notas de las cuales seelimina la nota menor y se promedian las tres notas más altas. Diseñe un algoritmo quedetermine la nota eliminada y el promedio de un estudiante.13. Diseñe un algoritmo que lea tres longitudes y determine si forman o no un triángulo. Si esun triángulo determine de que tipo de triángulo se trata entre: equilátero (si tiene tres ladosiguales), isósceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales).Considere que para formar un triángulo se requiere que: "el lado mayor sea menor que lasuma de los otros dos lados".14. Ingresar un número C y determinar si pertenece al intervalo [A, B] con A y B ingresados porteclado.15. Una compañía dedicada al alquiler de automóviles cobra $30 hasta un máximo de 300 kmde distancia recorrida. Para más de 300 km y hasta 1000 km, cobra $30 más un montoadicional de $ 0.15 por cada kilómetro en exceso sobre 300. Para más de 1000 km cobra$30 más un monto adicional de $ 0.10 por cada kilómetro en exceso sobre 1000. Losprecios ya incluyen el 18% del impuesto general a las ventas, IGV. Diseñe un algoritmo que,ingresando la distancia recorrida, determine el monto a pagar por el alquiler de un vehículoy el monto incluido del impuesto. Basándose en el año de fabricación y el peso delautomóvil en una fábrica se determina la tarifa de registro según la siguiente tabla:

Año (modelo) Peso (lb.) Categoría de Peso Tarifa de Registro

1970 o anterior Menos de 2.700 1 $ 11.6002.700 a 3.800 2 $ 23.200Más de 3.800 3 $ 34.8001971 a 1979 Menos de 2.700 4 $ 13.0002.700 a 3.800 5 $ 26.000Más de 3.800 6 $ 39.000

1980 o posterior Menos de 3.500 7 $ 12.0003.500 o más 8 $ 46.000Cuadro 3.2:

El programa debe ingresar el año y el peso del auto e imprimir la categoría y la tarifa.Cátedra de Informática rev8 15 de 68

Page 16: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

16. El cuadrante en el cual se ubica una línea dibujada desde el origen está determinado por elángulo que la línea forma con el eje positivo de x en la siguiente forma:Ángulo del eje positivo de x Cuadrante

Entre 0 y 90 grados IEntre 90 y 180 grados IIEntre 180 y 270 grados IIIEntre 270 y 360 grados IVCuadro 3.3: Tabla de ángulos y cuadrantes

El programa debe ingresar el ángulo de la línea como dato de entrada y desplegar elcuadrante apropiado, según la tabla dada. Si el ángulo es exactamente 0, 90, 180 o 270grados, la línea resultante no se ubica en ningún cuadrante sino en cada uno de los ejesrespectivos.17. Dados dos números reales mostrar el mayor.18. Dados cuatro números reales mostrar el mayor.19. Teniendo como dato una temperatura en grados Celsius, indicar el estado físico del agua aesa temperatura y a 760 mm de presión atmosférica: sólido (menor ó igual a 0 °C), líquido(mayor a 0 °C y menor ó igual a 100 °C) y gaseoso (mayor a 100 °C).20. Siendo los datos tres números enteros, determinar si la suma de cualquier pareja de ellos esigual al número restante. Si se cumple esta condición, escribir “Iguales”, en caso contrarioescribir “Distintos”.

a) Dados tres números enteros distintos ingresados por teclado, determinar y mostrar elnúmero que ocupa la posición del centro, al ordenar los mismos de menor a mayor.21. Siendo los datos tres enteros válidos que representan una fecha: dd, mm, aa, se pide obtenery mostrar la fecha del día siguiente.22. Ingresar un número de mes válido y un año. Mostrar la cantidad de días que puede tener elmismo, considerando que el año puede ser bisiesto.

3.3. Estructuras de selección múltiple Según - Finsegun (switch)

Las estructuras de selección múltiple se utilizan para realizar selecciones entre mas de dosopciones, aliviando la necesidad realizar condiciones múltiples dentro de una misma pregunta. Acontinuación se presentan ejemplos que muestran los diferentes escenariosCátedra de Informática rev8 16 de 68

Page 17: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

3.3.0.1. Ejemplo - Selección de vocales usando Si-Sino-FinSi con condiciones múltiples

En este ejemplo semuestra un programa que permite ingresar una letra por teclado e identificarlas vocales ingresadas. Se implementa utilizando una decisión con una condición formada porvarias proposiciones individuales. Estas proposiciones individuales se unen mediante operadoreslógicos. Cada caso debe especificarse con su respectiva condición.

Este ejemplo se usa para demostrar el uso justificado del Segun-FinSegun en losprogramas.Si un bloque de un programa se puede implementar utilizando Si-FinSi o también Segun-FinSegun indistintamente, SE DEBE realizar usando esta última, de forma de optimizar el usode las instrucciones dadas en clase.

Atención!

1 Proceso vocal12 Definir letra Como Caracter;3 Escribir "Ingrese una letra para determinar si es vocal";4 Leer letra;5 Si (letra=="a" O letra=="e" O letra=="i" O letra=="o" O letra=="u")Entonces6 Escribir "es vocal";7 SiNo8 Escribir "No es vocal";9 FinSi10 FinProceso

Figura 3.10: Ejemplo - Selección de vocales usando IF

3.3.0.2. Ejemplo - Selección de vocales usando múltiples Si-Sino-FinSi

En este ejemplo semuestra un programa que permite ingresar una letra por teclado e identificarlas vocales ingresadas. Se implementa utilizando estructuras de decisión anidadas.Cátedra de Informática rev8 17 de 68

Page 18: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Cada decisión identifica solo una vocal. Las demás vocales se identifican mediante otras con-diciones colocadas por el camino del FALSO de cada decisión.

La última decisión, tiene por el camino del FALSO el caso por descarte, que corresponde a cuan-do no se cumple con ninguna de las condiciones anteriores.Cátedra de Informática rev8 18 de 68

Page 19: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Este ejemplo se usa para mostrar el uso justificado del Segun-FinSegun en los programas.Si un bloque de un programa se puede implementar utilizando Si-FinSi o también Segun-FinSegun indistintamente, SE DEBE realizar usando esta última, de forma de optimizar el usode las instrucciones dadas en clase.

Atención!

1 Proceso vocal22 Definir letra Como Caracter;3 Escribir "Ingrese una letra para determinar si es vocal";4 Leer letra;5 Si (letra=="a") Entonces6 Escribir "es vocal";7 SiNo8 Si (letra=="e") Entonces9 Escribir "es vocal";10 SiNo11 Si (letra=="i") Entonces12 Escribir "es vocal";13 SiNo14 Si (letra=="o") Entonces15 Escribir "es vocal";16 SiNo17 Si (letra=="u") Entonces18 Escribir "es vocal";19 SiNo20 Escribir "No es vocal";21 FinSi22 FinSi23 FinSi24 FinSi25 FinSi26 FinProceso

Cátedra de Informática rev8 19 de 68

Page 20: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.11: Ejemplo - Selección de vocales usando IF

3.3.0.3. Ejemplo - Selección de vocales- usando Segun-FinSegun

Figura 3.12: Ejemplo - Selección de vocales usando Segun-FinSegunCátedra de Informática rev8 20 de 68

Page 21: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

1 Proceso switch_12 Definir letra Como Caracter;3 Escribir "Ingrese una letra para determinar si es vocal";4 Leer letra;5 Segun (letra) Hacer6 "a":7 Escribir "es vocal";8 "e":9 Escribir "es vocal";10 "i":11 Escribir "es vocal";12 "o":13 Escribir "es vocal";14 "u":15 Escribir "es vocal";16 De Otro Modo:17 Escribir "No es vocal";18 FinSegun19 FinProceso

En este ejemplo se muestra el mismo programa pero implementado utilizando la instrucciónSegun-FinSegun. Con una sola estructura de decisión es posible identificar las vocales y mostrarun cartel correspondiente. En caso de no se ingrese una vocal, existe el caso por defecto (tambiénse lo suele llamar caso "por descarte"), en el cual se muestra un cartel indicando que no se haingresado una vocal.3.3.0.4. Ejemplo - Selección de vocales - variante

En este ejemplo se muestra como unificar los casos de cada vocal en uno solo, quedando entotal sólo dos casos.

Figura 3.13: Ejemplo - Selección de vocalesCátedra de Informática rev8 21 de 68

Page 22: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

1 Proceso switch_22 Definir letra Como Caracter;3 Escribir "Ingrese una letra para determinar si es vocal";4 Leer letra;5 Segun (letra) Hacer6 "a","e","i","o","u","A","E","I","O","U":7 Escribir "es vocal";8 De Otro Modo:9 Escribir "No es vocal";10 FinSegun11 FinProceso

3.3.0.5. Ejemplo - Implementar un Menú - variante con números

En este ejemplo se presenta un menú en pantalla. Cada opción del menú tiene un número aso-ciado. El usuario debe elegir una opción ingresando por teclado el número correspondiente a laopción elegida.Si el número ingresado por el usuario coincide con una de las opciones presentadas por elmenú,se ejecuta lamisma. En caso de que el número no coincida con alguna de las opciones disponiblesen el menú, se presenta en pantalla un mensaje que indica que la opción elegida no es válida.

Figura 3.14: Ejemplo - Ejemplo de MenúCátedra de Informática rev8 22 de 68

Page 23: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

1 Proceso switch_22 Definir op Como Entero;3 Escribir "Ingrese una opción para el menú";4 Escribir "1.- sumar dos números";5 Escribir "2.- restar dos números";6 Escribir "3.- dividir dos números";7 Escribir "4.- multiplicar dos números";8 Escribir "5.- Salir";9 Leer op;10 Segun (op) Hacer11 1:12 Escribir "sumar";13 2:14 Escribir "restar";15 3:16 Escribir "dividir";17 4:18 Escribir "multiplicar";19 5:20 Escribir "salir";21 De Otro Modo:22 Escribir "Opción no valida";23 FinSegun24 FinProceso

3.3.0.6. Ejemplo - Implementar un Menú - variante con letras

Este ejemplo muestra una variante del ejercicio del menú, en donde cada opción del menú tieneasociada una letra. En este caso, el usuario ingresa la opción elegida en forma de carácter. Si elcarácter ingresado se corresponde con alguna de las opciones del menú, la misma se ejecuta.

Cuando la variable que almacena la opción elegida es del tipo carácter, lo que se guarda enla misma es el símbolo que corresponde con el número de opción elegida. Por eso esnecesario indicar en las opciones individuales que se está trabajando con caracteres,encerrando el carácter usando las comillas simples ’1’, o dobles "1".Si no se usan las comillas, el programa interpretará solo el valor numérico de los símbolos.Se sugiere repasar el tema referente a caracteres ASCII en el capítulo 1.

Prestar atención

Cátedra de Informática rev8 23 de 68

Page 24: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.15: Ejemplo - Ejemplo de Menú

Cátedra de Informática rev8 24 de 68

Page 25: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

1 Proceso switch_22 Definir op Como Caracter;3 Escribir "Ingrese una opción para el menú";4 Escribir "1.- sumar dos números";5 Escribir "2.- restar dos números";6 Escribir "3.- dividir dos números";7 Escribir "4.- multiplicar dos números";8 Escribir "S o s.- Salir";9 Leer op;10 Segun (op) Hacer11 "1":12 Escribir "sumar";13 "2":14 Escribir "restar";15 "3":16 Escribir "dividir";17 "4":18 Escribir "multiplicar";19 "S","s":20 Escribir "salir";21 De Otro Modo:22 Escribir "Opción no valida";23 FinSegun24 FinProceso

3.3.1. Ejercicios propuestos

1. Realizar un programa que permita ingresar un número que corresponde con un número demes. El programa deberá imprimir el nombre del mes ingresado. Por ejemplo: si se ingresaun 4, debe imprimir "Abril".2. Realizar un programa que permita ingresar la nota (número entero) de un alumno. En funciónde la misma debe imprimir la calificación correspondiente según la escala que se presenta:

Nota menor que 6 : "Reprobado"Nota igual a 6: "Regular"Nota igual a 7: "Bien"Nota igual a 8: "Muy bien"Nota igual a 9: "Excelente"Nota igual a 10: "Sobresaliente"

3. Hacer un programa que permita ingresa dos números y el símbolo de la operación (+,-,*,/),obteniéndose el correspondiente resultado. Si el símbolo no es correcto deberá imprimir unmensaje que indique “Error en símbolo”.

3.4. Estructuras repetitivas: "Bucles"

Cátedra de Informática rev8 25 de 68

Page 26: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Son estructuras que permiten repetir un bloque de instrucciones un determinado número deveces. También se las conoce como estructuras de iteración o ciclos repetitivos. La cantidad deveces que se repite es controlada por una condición lógica o el valor de una variable.En los programas es común que existan bloques de operaciones que deban repetirse. Estasoperaciones se pueden repetir dentro de dos contextos:

Mientras se cumpla una condición (mientras la condición tenga resultado verdadero (true)).Hasta que se cumpla una condición (mientras la condición tenga resultado falso (false)).

Por ejemplo

Forma 1:

Un estudiante toma un curso, al final debe cumplir la condición de superar una calificaciónmínima para pasar al siguiente curso, en caso contrario debe repetir el curso.Forma 2:

Un estudiante debe repetir el curso si obtiene una calificación inferior a la mínima. En cambio sila supera, puede pasar al siguiente curso.Análisis

En las dos formas se indica que el alumno repite el curso si no consigue superar la calificaciónmínima, pero se plantea de 2 formas diferentes.En la primer forma, el alumno repite el curso mientras su calificación sea inferior a lamínima, en caso contrario, pasa al curso siguiente.En la segunda forma, el alumno pasa al curso siguiente si su calificación supera la mínima,en caso contrario, repite el curso.

Existen varias formas de expresar las repeticiones por lazos:1. Estructura Para2. Estructura Repetir - Mientras Que3. Estructura Mientras - Repetir

3.4.1. Estructura “Para-FinPara” (FOR)

En algoritmos es frecuente encontrar lazos controlados solamente por un incremento en 1, por loque se pueden integrar y resumir en una forma de representación conocida como el bucle“Para-FinPara”. En la figura 3.16 usamos un diagrama de flujo para mostrar el concepto con unbucle Para-FinPara.Cátedra de Informática rev8 26 de 68

Page 27: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

I

i < valor límite?

F

i=i+1

sentenciasa repetir

i = valor inicial

F

V

PARA

A repetir

Figura 3.16: Diagrama de flujo de la estructura PARA

La variable contador i (con valor inicial conocido) permite el controlar la cantidad de repeticionesdel bloque de sentencias mediante el lazo, cuya condición de salida consiste en evaluar el valordel contador i comparado con un valor límite. Luego de ejecutar el bloque de sentencias, en cadaiteración se incrementa el valor del contador i para luego, evaluar el valor del contador y repetir sies necesario.

El resultado de todo esto es que el bloque de sentencias se ejecuta un cantidad definida deveces, que viene dado por la diferencia entre el valor final e inicial del contador.

En el PSeInt se integran el contador y el lazo en un sólo símbolo, por lo que en el diagrama deflujo queda:

1 Proceso ciclo_para2 Definir i Como Entero;3 Para i=0 Hasta 10 con paso 1 hacer4 Escribir "acciones a repetir";5 FinPara6 FinProceso

Cátedra de Informática rev8 27 de 68

Page 28: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.17: Diagrama de flujo de PSEint de la estructura PARA

Se puede leer también: “Para los valores de i empezando en el valor de inicio (i=0), avanzando enpasos de incremento 1 hasta llegar al valor de fin (i=10), repita el siguiente bloque de operaciones”.

3.4.2. Variantes de uso del Para-FinPara

Es posible darle otros usos a la estructura PARA, veamos algunos ejemplos:

Incremento diferente a 1

Es posible hacer que el contador se incremente de dos en dos, en este caso solamente secambia el valor del incremento:

1 Proceso ciclo_para2 Definir i Como Entero;3 Para i=0 Hasta 10 con paso 2 hacer4 Escribir "el valor del contador es: ",sin saltar;5 escribir i;6 FinPara7 FinProceso

Cátedra de Informática rev8 28 de 68

Page 29: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.18: Diagrama de flujo de PSEint de la estructura PARA con paso 23.4.2.1. Ciclo Para con incremento negativo

En este caso se cambia la condición de salida y el incremento1 Proceso ciclo_para2 Definir i Como Entero;3 Para i=10 Hasta 0 Con Paso -1 Hacer4 Escribir "El valor del contador es: ", Sin Saltar;5 Escribir i;6 FinPara7 FinProceso

Figura 3.19: Diagrama de flujo de PSEint de la estructura PARA decremental3.4.2.2. Forzar la salida anticipada del ciclo Para

Es posible forzar la salida del ciclo PARA, de forma que no tenga que hacer todas las iteracionesdefinidas por el contador. Esto puede ser útil en algunas circunstancias.Cátedra de Informática rev8 29 de 68

Page 30: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Para forzar la salida, dentro del ciclo PARA, se agrega una linea que asigna al contador un valorque haga que al evaluar la condición de repetición, esta de resultado "falso".

Si se cambia el valor del contador desde dentro del PARA, el programa puede entrar encondición de "colgado" o "bucle infinito".

Atención!

1 Proceso ciclo_para_salida_anticipada2 Definir i Como Entero;3 Para i=0 Hasta 10 Hacer4 Escribir "el valor del contador es: ", Sin Saltar;5 Escribir i;6 Si i>3 Entonces7 i = 10; // cambio el valor del contador dentro del PARA8 FinSi9 FinPara10 FinProceso

Figura 3.20: Diagrama de flujo de PSEint de la estructura PARA con salida anticipadaCátedra de Informática rev8 30 de 68

Page 31: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.21: Vista de la salida del programa de la estructura PARA con salida anticipada

3.4.2.3. Bucles infinitos utilizando el ciclo Para-FinPara

Se puede lograr entrar en un bucle infinito de varias maneras. Una de ellas es alterando el valorde la variable del contador, de forma tal que cuando se evalúa la condición de repetición lamisma siempre resulta en "verdadero":

un ejemplo de ello se muestra en el siguiente código:

1 Proceso ciclo_para_salida_anticipada2 Definir i Como Entero;3 Para i=0 Hasta 10 Hacer4 Escribir "el valor del contador es: ", Sin Saltar;5 Escribir i;6 Si i>3 Entonces7 i = 7; // cambio el valor del contador dentro del PARA8 FinSi9 FinPara10 FinProceso

Cátedra de Informática rev8 31 de 68

Page 32: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.22: Diagrama de flujo de PSEint de la estructura PARA con un bucle infinito

Figura 3.23: Vista de la salida del programa de la estructura PARA en un bucle infinitoEn este caso se hace que el contador i comience con valor 0. El ciclo se repitenormalmente hasta que i=4, entonces se cumple que:

• si i>3 entonces hacer que i=7; con ello se logra que i al finalizar la iteración, se le sume1, lo que hace que i tome siempre el valor 8. Se muestra en pantalla el valor 8.se incrementa el contador y se muestra el valor.Como i>3 entonces se vuelve a hacer que i=7, termina la iteración y se le suma 1; y sevuelve a repetir el bucle. Se muestra en pantalla el valor 8.

Cátedra de Informática rev8 32 de 68

Page 33: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

3.4.2.4. Otra forma de lograr bucles infinitos

En este caso se hace que el contador vuelva tome el valor inicial cada cierta cantidad deiteraciones.

1 Proceso bucle_infinito22 Definir i Como Entero;3 Para i=0 Hasta 10 Hacer4 Escribir "el valor del contador es: ", Sin Saltar;5 Escribir i;6 Si i>3 Entonces7 i = -1; // cambio el valor del contador dentro del PARA8 FinSi9 FinPara10 FinProceso

Figura 3.24: Diagrama de flujo de PSEint de la estructura PARA con un bucle infinitoCátedra de Informática rev8 33 de 68

Page 34: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.25: Vista de la salida del programa de la estructura PARA con salida anticipadaEn este caso se hace que i comience con valor 0. el ciclo se repite hasta que i=4, entoncesse cumple que:Si i>3 entonces hacer que i=–1; con ello se logra que i comience en 0 de nuevo, ya que elcontador se incrementa al finalizar la iteración. →−1+1 = 0

Se incrementa el contador y se muestra el valor.Como i>3 entonces se vuelve a hacer que i=7 y se vuelve a repetir el bucle.

Es muy importante mantener el control de los valores de las variables dentro del cicloPARA. Es necesario tener presente los rangos de los valores que pueden tomar lasvariables y tener presente como van cambiando entre iteración e iteración.

Tener presente

3.4.3. Ejercicios propuestos

1. Escribir un algoritmo que permita ingresar 10 números y calcule el promedio.

Para este ejercicio es útil repasar los conceptos de contadores y acumuladores.TIP

Cátedra de Informática rev8 34 de 68

Page 35: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

2. Ingresar 5 juegos de cuatro valores cada uno. Calcular y emitir el promedio de cada juego.3. Dados 10 números, escribir un algoritmo que imprima:

La suma de los números positivos de la listaCantidad de números negativos de la listaPromedio de los números positivos.

4. Desarrollar un algoritmo que determine en un conjunto de cien números la cantidad denegativos, cuántos son mayores de 50 y cuántos están comprendidos entre 25 y 45.5. Escribir un algoritmo que calcule la suma de los cuadrados de los 10 primeros númerosnaturales.6. Ingresar dos números y calcular el producto de los mismos por sumas sucesivas.7. Calcular la suma de los números pares, la suma de los números impares comprendidosentre 1 y N, donde N es un número ingresado por teclado. (recordar que el incrementopuede ser de 2).8. Escribir un algoritmo que imprima la tabla de multiplicar del 2.9. Escribir un algoritmo que imprima todas las tablas de multiplicar (desde la del 2 hasta ladel 9).

10. Escribir un algoritmo que imprima la suma de los 1000 primeros números naturales, esdecir, 1 + 2 + 3 + 4 + ... + 998 + 999 + 1000.11. Escriba un algoritmo para imprimir las coordenadas (X - Y) de una función cuadrática, de laforma Y = a ·X +b ·X + c haciendo variar X en el intervalo [-20, 20] con un incremento de 2.12. Escribir un algoritmo que calcule el factorial de un número. El factorial de un número N sesimboliza: N!, donde N ! = N · (N −1)!. Sólo existen factoriales de números naturales y elcero. Se define 0! = 1. Ej: 5! = 5 ·4 ·3 ·2 ·1 = 125.13. Leer 10 valores numéricos. Calcular e informar: La suma de los valores positivos y elproducto de los valores negativos. (Ignorar los valores nulos)14. Leer una lista de 50 números y emitir: el valor mínimo de la lista, el valor máximo de la listay la ubicación del máximo dentro de la lista.15. Dada una lista de 50 valores numéricos, indicar si esta ordenada en forma ascendente.16. Diseñe un algoritmo para calcular el resultado de la suma de los 100 primeros términos dela siguiente serie: S = 1− 1

3 + 19 − 1

27 + 181 .

17. Realizar un algoritmo que convierta un número ingresado por teclado (en sistema decimal)a su equivalente en sistema binario.18. Construir el algoritmo que realice la operación inversa al del ejercicio anterior.19. Escribir un algoritmo que permita el ingreso de dos números X y N, y calcule X N , pormultiplicaciones sucesivas. Hacer las consideraciones necesarias para que funcione.Tener en cuenta casos particulares.

Cátedra de Informática rev8 35 de 68

Page 36: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

20. Escribir un algoritmo que permita ingresar el promedio de un curso y luego lascalificaciones de un grupo de 50 alumnos. Se necesita saber cuántos alumnos tienen unacalificación superior al promedio del grupo. Realizar prueba de escritorio para 10 alumnos.21. Escribir un programa que permita ingresar dos valores A y B que determinan un intervalo,luego ir acumulando los valores que se ingresan a continuación siempre y cuando estospertenezcan al intervalo.22. Diseñar un DF que permita el ingreso de N números y al finalizar muestre el menor, el mayory la posición en que se ingresó cada uno. N se ingresa al principio por teclado. AYUDA:hacer primero el mayor, después agregarle la posición, después complicarlo con todo.23. Realizar un algoritmo que imprima los N primeros números de la sucesión de Fibonacci. Nse ingresa por teclado.24. Calcular la serie de Fibonacci. Ingresar N y generar la serie hasta que el último término seamenor a N.25. Teniendo comodatos dos valores enterosA yB, calcular ymostrar el producto de losmismosdesarrollando un algoritmo que calcule a dicho producto como una suma reiterada.26. Teniendo como datos dos enteros A y B, calcular y mostrar el cociente entre A y B, con Bdistinto de cero, como una resta reiterada.27. Un numero es perfecto cuando es igual a la suma de todos sus números divisores.

Ejemplo 6=1 + 2 +3Ingresar un número entero e informar si es perfecto.

28. Se leen 30 valores (comprendidos entre 5 y 40), que representan la temperatura máxima decada uno de los días de un mes. Se pide hallar e informar :La temperatura máxima del mes y el día que se produjo. (Se supone única)Cuántos días la temperatura supero los 25 °C.El promedio de las temperaturas máxima del mes.

29. Los datos son: un número entero y la posición de un dígito del mismo, es decir posición1:unidades, posición 2: decenas, posición 3 centenas, etc, etc, etc. Mostrar el número y el dígitoque se encuentra en la posición ingresada. Proponer un fin de datos.Ejemplo: Numero= 10345 y posición = 4 el algoritmo deberá mostrar: 10345 - 0 .

30. Se llaman números amigos a aquellos números donde cada uno de ellos es igual a la sumade los divisores del otro. Ingresar un valor entero N y mostrar todas las parejas de númerosamigos menores que N.31. Se ingresan las notas de 40 alumnos. Por cada alumno se ingresa:

número de matrícula : 4 dígitos (1-9999)asistencia : 1, presente; 0, ausentecalificación: 2 dígitos (0-10).

A partir de esta información se debe calcular e informar:Cátedra de Informática rev8 36 de 68

Page 37: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Cantidad y% de alumnos presentes.Promedio de calificaciones de alumnos presentes.% de alumnos aprobados (sobre el total de alumnos presentes).Número de matrícula del alumno de mayor calificación. (Si hay varios alumnos conesa calificación: calificación y cantidad de alumnos en esa situación).

32. Ejercicio - aproximación de π: El número π puede ser obtenido mediante aproximacionessiguiendo la serie conocida como “producto de Wallis”, desarrollada por el matemáticoinglés John Wallis en el año 1655.2

1× 2

3× 4

3× 4

5× 6

5× 6

7× 8

7× 8

9× . . . = π

2(3.3)

Realice un algoritmo para encontrar el valor aproximado de π con la fórmula mostrada paraun valor de N términos ingresado por teclado.33. La sucesión de Padovan es la secuencia de números enteros P(n) definida por lossiguientes valores iniciales:

P0 = P1 = P2 = 1 (3.4)a partir de 2, el valor siguiente se calcula mediante

Pn = Pn−2 +Pn−3 (3.5)34. Se dice que un número de dos cifras es primo permutable si al intercambiar sus cifras, esteotro número también es primo:

Ejemplos:• 37 es primo, entonces -> 73 también es primo.• 17 es primo, entonces -> 71 también es primo.• 19 es primo, entonces -> 91 también es primo.• Realice un algoritmo para determinar si un número x es primo permutable.

Se sugiere comenzar desarrollando un algoritmo que permita averiguar si un numeroes primo.Una vez hecha esa parte es posible agregar la capacidad de permutar los dígitos delnúmero.Para permutar los números se puede utilizar la descomposición en dígitos vista en elejemplo 3.55

Tip

35. Un número perfecto es aquel que es igual a la suma de todos sus divisores, con excepcióndel mismo. Realice un algoritmo que valide si un número cualquiera X es o no perfecto, res-pondiendo mediante valores lógicos 1 y 0.Ejemplo:

6 es perfecto porque sus divisores son: 1, 2, 3 (6 no se considera). Sumados da: 1+2+3=6. El algoritmo debe imprimir un valor 1, para este caso.Cátedra de Informática rev8 37 de 68

Page 38: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

8 no es perfecto porque sus divisores son: 1,2,4 (8 no se considera). Sumados da:1+2+4=7. El algoritmo debe imprimir un valor 0 en este caso.Propuesta de mejora:Modifique el programa escrito para que que calcule los números perfectos entre 0 y un límiteingresado por el usuario.

36. Describa un algoritmo estructurado que calcule y muestre el término n de la sucesión,considere que n >3.

Ejemplo

Los primeros valores de P(n) son:1,1,1,2,2,3,4,5,7,9,12,16,21,28,37, ... (3.6)

Si n=15, el numero buscado es 37.

3.4.4. Estructura "Mientras - FinMientras" (While)

Esta estructura requiere que se satisfaga la condición para luego ejecutar el bloque se instruc-ciones a repetir.Es una forma usada para cumplir una condición antes de pasar al siguiente bloque. Si usamos lacondición del punto anterior, se usará la negación de la expresión, pues para continuar al siguientebloque se usará el lado falso.

condición es verdadera?

I

F

instruccionesa repetir

se evalúa la condición

se repiten las instrucciones

continúa el hilo del programa

inicio del bucle

F

V

Figura 3.26: Mientras - FinMientras

3.4.4.1. Ejemplo - Validación de datos de entrada con Mientras-FinMientras

En este ejemplo se muestra como validar datos de entrada en el rango 0 a 10.Cátedra de Informática rev8 38 de 68

Page 39: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

1 Proceso while32 Definir nota Como Entero;3 Leer nota;4 Mientras (nota<0 O nota>10) Hacer5 Escribir "La nota no es valida, por favor reingrese";6 Leer nota;7 FinMientras8 Escribir "la nota es valida y vale: ",nota;9 FinProceso

Figura 3.27: Diagrama de flujo de PSEint de la validación

3.4.4.2. Ejemplo - Contador con Mientras-FinMientras

1 Proceso while22 Definir i Como Entero;3 i = 0;4 Mientras i<10 Hacer5 Escribir "El contador vale: ",i;6 // bloque de7 // sentencias a repetir8 i = i+1;9 FinMientras10 FinProceso

Cátedra de Informática rev8 39 de 68

Page 40: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.28: Diagrama de flujo de PSEint de la estructura Repetir-MientrasQue

3.4.4.3. Ejemplo - Cursos de idiomas

Un instituto dicta cursos de idioma. Se cuenta con dos cursos, el nivel A (básico) y B ( avanzado).Cada nuevo alumno que se inscribe, debe pasar por una evaluación para determinar que cursoes adecuado para su nivel actual. El procedimiento utilizado establece que el estudiante primerorealiza una prueba. Si el resultado de la misma no alcanza la calificación mínima requerida, elalumno debe tomar el nivel A, en caso contrario puede pasar al nivel B.

Lo mismo sucede cuando el alumno termina el curso, se lo evalúa y si no supera el nivel mínimorequerido, debe repetir el curso.Cátedra de Informática rev8 40 de 68

Page 41: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

no supera el nivel mínimo requerido?

I

F

evaluación de nivel

evaluación de nivel

asistencia al curso

F

pasa al siguiente curso

al comienzo del curso

V

Figura 3.29: Asistencia a curso de idioma3.4.5. Estructura "Repetir - Mientras Que" (Do - While)

La primera forma de repetir mostrada es el Repetir- Mientras que, que ejecuta un bloque oprocedimiento para luego evaluar una condición a ser satisfecha para pasar al siguiente bloque.Si la condición no se puede satisfacer, se repetirá el bloque de instrucciones hasta que en algúnmomento deje de cumplirse la condición.

condición

I

F

secuenciaa repetir

F

V

Figura 3.30: Repetir - Mientras Que

Cátedra de Informática rev8 41 de 68

Page 42: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

3.4.5.1. Ejemplo - Validación de datos con Repetir-MientrasQue

En este ejemplo se muestra como validar datos de entrada en el rango 0 a 10.

1 Proceso while32 Definir nota Como Entero;3 Repetir4 Leer nota;5 Si (nota<0 O nota>10) Entonces6 Escribir "La nota no es valida, por favor reingrese";7 FinSi8 Mientras Que (nota<0 O nota>10)9 Escribir "la nota es valida y vale: ",nota;10 FinProceso

Figura 3.31: Diagrama de flujo de PSEint de la validación

3.4.5.2. Ejemplo - contador con Repetir- MientrasQue

Un programa que cuenta hasta 10 mientras va mostrando en pantalla el conteo:Cátedra de Informática rev8 42 de 68

Page 43: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

1 Proceso dowhile12 Definir i Como Entero;3 i = 0;4 Repetir5 Escribir "El contador vale: ",i;6 // bloque de7 // sentencias a repetir8 i = i+1;9 Mientras Que i<1010 FinProceso

Figura 3.32: Diagrama de flujo de PSEint de la estructura Mientras

3.4.5.3. Ejemplo - Fin de Curso Universidad

Un curso o materia de estudio en la universidad, al final del curso tiene la condición de superar lanota mínima para aprobar. El diagrama de flujo que representa el proceso de evaluar el curso yotorgar el estado de "aprobado o no aprobado" se puede representar así:Cátedra de Informática rev8 43 de 68

Page 44: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

¿la nota es inferiora la mínima?

I

F

Fin del curso

FAprueba el curso

V

No aprueba el curso

Figura 3.33: Ejemplo de Repetir - Mientras Que

3.4.6. Ejercicios Propuestos

1. Realizar un algoritmo que permita calcular la suma de los números ingresadosmientras queel valor acumulado no supere el valor 100. Mostrar el valor acumulado antes de superar 100.2. Ingresar juegos de cuatro valores cada uno. Calcular y emitir el promedio de cada juego. Elproceso finaliza al encontrarse un juego cuyo primer valor es 0 (cero).3. Leer una lista de números que finaliza cuando se ingresar el número 0 (cero), al finalizaremitir el valor mínimo de la lista.4. Leer una lista de números que finaliza cuando se ingresar el número 0 (cero), al finalizaremitir el valor máximo de la lista.5. Leer una lista de números que finaliza cuando se ingresar el número 0 (cero), al finalizaremitir el valor máximo de la lista, y la ubicación del máximo dentro de la lista. (Suponer unúnico máximo).6. Escribir un programa que permite ingresar dos valores A y B que determinan un intervalo,luego ir acumulando los valores que se ingresan a continuación siempre y cuando estospertenezcan al intervalo. El ingreso de números finaliza cuando ingresa el 99.7. Diseñar el algoritmo para resolver una ecuación de segundo grado A · x²+B · x +C = y . Elalgoritmo deberá ingresar A, B y C e ir ingresando x. El programa finaliza cuando ingresa x =99.8. Se tienen los siguientes datos sobre nacimientos en una ciudad: sexo (“F” ó “M”) y fechade nacimiento (DD y MM). Se pide realizar un algoritmo que informe cuántos son varonesy cuántas son mujeres, cuántos nacimientos hubo en el primer semestre y cuántos en elsegundo. El final de lectura de datos viene dado por una lectura del sexo en blanco.

Cátedra de Informática rev8 44 de 68

Page 45: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

9. Realizar un algoritmo que determine si una serie de números ingresada por teclado es as-cendente. El final de la serie viene dado por un número negativo. (Ej: 1, 5, 5, 10, 11, 12, 12, 20,-1 es una serie ascendente).10. Diseñar unDiagramade Flujo deDatos (DFD) que permita el ingreso de datos de tipo carácterhasta que se ingrese un espacio en blanco; al final informar si algún dato fue numérico (undígito de ’0’ a ’9’) y si se ingresaron datos numéricos, cuántos fueron.11. Diseñar un DFD que permita el ingreso de N números; al final informar la sumatoria de losnúmeros. N se ingresa al principio por teclado.12. Diseñar un DFD que permita el ingreso de números e informe si se ingresaron o no númerosnegativos. El ingreso de números finaliza cuando ingresa el 99.13. Diseñar un DFD que permita calcular el promedio deN notas introducidas por teclado, siendoN un valor introducido por el usuario. Además ha de indicar si ha habido algún 10, el númerode reprobados y de aprobados.14. Diseñar un DFD que permita el ingreso de números, muestre el valor acumulado, el promedioy si ingresó el 0 (cero). El final del ingreso se da cuando ingresa el número 100 o la suma delos ingresados supere el valor 100.15. Diseñar un DFD que permita mostrar en pantalla una rutina de selección del siguiente menú:

1.- Suma2.- Resta3.- Producto4.- DivisiónS.- Salir.El usuario podrá elegir cualquier alternativa, luego ingresar A y B y realizar la operación se-leccionada. Solamente con “S” podrá Salir. Tener en cuenta que si elige 4.- División deberáreingresar el denominador hasta que ingrese un valor diferente a 0 (cero). Si ingresa un nú-mero negativo o mayor que 4 deberá informar “Opción no válida”.

16. Dado un conjunto de números positivos, determinar el mayor de ellos:Cuando se tiene como dato su cantidad o tamaño del conjuntoCuando el conjunto de datos finaliza con un valor negativo.

17. Un número OMIRP es un número primo que tiene una particularidad que lo hace diferente.Si se invierten los dígitos del número, se forma otro número. Este otro número también esun número primo, por ello se los llama números OMIRP. (PRIMO al revés)

Ejemplo Se desea escribir un algoritmo que permita determinar si un número n , tiene lacaracterística de ser un número OMIRP. Utilizando como ejemplo el número 1597:1597 es número primo,Se invierten sus dígitos: 7951Se comprueba que 7951 es primo,Entonces el número 1597 es un número omirp.

Cátedra de Informática rev8 45 de 68

Page 46: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

18. Escriba un algoritmo para determinar el número de puntos del plano cartesiano con coor-denadas de valores enteros que pertenecen al círculo limitado por la circunferencia, cuyaecuación esx2 + y2 = 100 (3.7)

(Círculo con centro en el origen y cuyo radio es 10).Muestre también el promedio de las distancias de dichos puntos al origen de coordenadas.

(0,0)

(10,0)

(0,10)

R=10

Figura 3.34: Diagrama de puntos dentro del círculo

Utilice un círculo inscrito en un cuadrado, para cada punto con coordenadas enteras,calcule la distancia al origen para determinar si el punto está dentro del círculo.Tip

19. Ingresar duplas de valores formadas cada una de ellas por un carácter y un dígito. Esteingreso no debe seguir ningún orden y no debe exceder las cuatro duplas. El carácter puedetomar los siguiente valores:U: unidades,D: decenas,C: centenas,M: unidades de mil.

Calcular y mostrar el número correspondiente.3.4.6.1. Ejemplo - Números triangulares

Extendiendo el ejercicio mostrado en la sección 3.6.2.5, construya un algoritmo para determinarsi un número T es triangular.

Cátedra de Informática rev8 46 de 68

Page 47: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Para esto el lazo se debe controlar mediante el número de bloques usados comparados con elnúmero T.

Cuando al cantidad de bloques USADOS son iguales o mayores a T, no es necesario continuar elproceso pues se obtuvo un resultado afirmativo, o los USADOS superan lo requerido y el númeroT no es triangular. Puede mostrarse la respuesta como un valor verdadero (1) o falso (0) alcomparar la igualdad entre T y usados.

1 Proceso verifica_triangular2 Definir N,piso,usados Como Entero;3 usados = 0;4 piso = 1;5 Escribir "Ingrese numero: ";6 Leer N;7 Repetir8 usados = usados+piso;9 piso = piso+1;10 Mientras Que usados<N11 Si N=usados Entonces12 Escribir "El numero es triangular";13 SiNo14 Escribir "El numero NO es triangular";15 FinSi16 FinProceso

Cátedra de Informática rev8 47 de 68

Page 48: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.35: Ejemplo - números triangularesPropuesta

Realizar el ejercicio usando la forma Repetir - MientrasQue.3.4.6.2. Ejercicio - conversión binario a decimal y decimal a binario

Realizar los algoritmos Binario a Decimal y Decimal a Binario usando el bucle Repetir-MientrasQue.a) Crear un algoritmo para convertir un número de base numérica genérica x a base y.b) Comprobar el algoritmo usando los valores: 15 en decimal a la base 8 (octal)

Sugerencia, convierta el número de la base X primero a decimal y luego transforme elresultado a la siguiente base numérica Y.

Tip

Cátedra de Informática rev8 48 de 68

Page 49: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

3.4.6.3. Ejercicio - Código de barras

El código de barras utiliza líneas paralelas verticales (barras y espacios) que representaninformación en su equivalente binario. El código es muy usado en los puntos de ventas y es“leído” por un dispositivo láser (scanner).

Para facilitar la lectura por scanner se usa el método de “simbología discreta”, en el que se marcael inicio, separación y fin de los datos con la secuencia barra/espacio/ barra (101) por cada grupode 10 bits (dígitos binarios).

Elabore un algoritmo que permita cambiar un código de producto conformado por dos númerosde 3 cifras a su equivalente en código de barras usando simbología discreta.Referencia: http://es.wikipedia.org/wiki/C%C3%B3digo_de_barras

Figura 3.36: Código de barras del ejercicio

3.4.6.4. Ejercicio - Odómetro octal

En un odómetro mecánico de un vehículo antiguo se marcan las distancias recorridas enkilómetros, en formato numérico octal de hasta cinco dígitos.

Realice un algoritmo para encontrar la distancia recorrida en kilómetros en formato numéricodecimal, convirtiendo el valor octal marcado por el odómetro luego de un viaje.

Un odómetro es un dispositivo que indica la distancia recorrida en un viaje de un vehículo.Tip

Cátedra de Informática rev8 49 de 68

Page 50: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

12345

Figura 3.37: odómetro

a) Para realizar la conversión de un número que está en una determinada base a su equivalentedecimal, debe emplearse la siguiente regla:Nr = dn−1 · r n−1 + . . .+ rn−2 · r n−2 +dn−i · r n−i +d1 · r 1 +d0 · r 0 (3.8)

En donde:Nr : número en expresado en la base r.r n−i : Base del sistema de numeración original, ponderado con el peso n-i.dn−i : dígito en la posición i, i = 0, 1, 2, ... (0 es la posición menos significativa)

Para repasar la conversión de sistemas numéricos, se recomienda revisar el Capítulo 1,sección 1.5.4.

Tip

1. Escriba un Algoritmo que permita obtener el equivalente decimal (base 10) de un numerooctal (entero de hasta 4 dígitos) ingresado por teclado. Suponga que ya existe la funciónEsOctal(n), cuyo parámetro n es un valor entero y retorna 2 posibles valores: 1 = verdadero,0 = falso, según sea que n es válido o no en ese sistema de numeración.2. Realice la prueba de escritorio del algoritmo construido en el literal a) para el siguienteejemplo:

1034|8 = N |10 (3.9)Ejemplo:para convertir 764 (en base 8) a (en base 10):N = 7 x 8 2 + 6 x 8 1 + 4 x 8 0 = 500 ( a base10)

N |8 = 7 ·82 +6 ·81 +4 ·80 = 7 ·64+6 ·8+4 ·1 = 448+48+4 = 500|10 (3.10)Cátedra de Informática rev8 50 de 68

Page 51: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

3.5. Bucles con números Aleatorios

Se presenta aquí el uso de números aleatorios mediante ejemplos y ejercicios.3.5.0.1. Ejemplo - Números aleatorios

Para simular un número de azar, por ejemplo el obtenido al lanzar un dado, se recurre alconcepto de números aleatorios. Un número aleatorio se define como un número real cualquieraen el rango [0,1)

[0 1)Figura 3.38: Intervalo aleatorio

Para utilizar el número aleatorio se debe convertir al rango apropiado del número a simular, porejemplo, para simular un dado se escribiría en el algoritmo:

Figura 3.39: Posibles salidas de un dado

d ado ← enter o(al eator i o ∗6)+1 (3.11)Esto significa que la función Aleatorio() devuelve un número real en el rango [0,1):

[0 1)

al eator i o

Figura 3.40: Intervalo aleatorio [0 ,1)

Como el dado tiene 6 caras se multiplica por 6, obteniendo un real de [0,6). No se incluye el6.

Cátedra de Informática rev8 51 de 68

Page 52: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

[0 6)

al eator i o

Figura 3.41: Intervalo [0 , 5]

Se extrae solo la parte entera para obtener un número entero [0,5]

[0 1 2 3 4 5] 6

al eator i o

Figura 3.42: Intervalo [1 , 5)

Para que el resultado sea [1,6], se le suma 1

[1 2 3 4 5 6]

al eator i o

Figura 3.43: Intervalo [1 , 6]

3.5.0.2. Ejemplo - Juego de Generala

Realizar un programa que permita generar tiradas de un dado. Para ello es posible utilizar lafunción azar(N). El argumento N de la función sirve para indicar que genere un número aleatorioentero con un rango entre 0 y N-1.

A continuación se muestra un ejemplo de la salida del programa:Cátedra de Informática rev8 52 de 68

Page 53: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.44: Salida del programa3.5.1. Ejercicios propuestos

3.5.1.1. Propuesta de mejora al juego de Generala

Modificar el programa presentado en la Sección 3.5.0.2de forma que calcule el resultado de unatirada de la generala. La generala se juega con 5 dados. Considerar los siguientes casos:Si todos los números generados son iguales, es GENERALA.Si 3 números son iguales y 2 son iguales, es FULL.Si 4 números son iguales es POKER.Si todos los números son crecientes, es ESCALERA.

3.5.1.2. Ejercicio - Precio del Petróleo

Realice un algoritmo para simular el precio del barril de petróleo durante un mes de 30 días,suponiendo que son valores enteros que fluctúan en forma aleatoria entre $ 130 y $ 150 y seobtenga las siguientes respuestas:a) El promedio del precio del petróleo.b) ¿Cuál fue el día en el que estuvo más barato el barril de petróleo?

1 6 11 16 21 26120,00

125,00

130,00

135,00

140,00

145,00

150,00

155,00

Precio Petróleo

datos del mes

precio

día

pre

cio

[$]

Figura 3.45: Ejemplo de la variación del precio del petróleo a lo largo del mes.Cátedra de Informática rev8 53 de 68

Page 54: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Desarrollo:Para iniciar el algoritmo, se puede considerar como variable de entrada los días del mes, oasignarles directamente 30 días. La primera aproximación al problema para responder el literal a)consiste en generar números aleatorios en el rango [130, 150] y acumular sus valores para elpromedio. Será necesario disponer de un contador para controlar el número de veces que segeneran los precios de forma aleatoria en el lazo de repetición. Una de las formas de resolver elproblema es con un lazo REPETIR MIENTRAS.A continuación se muestra un ejemplo de salida del programa

Figura 3.46: Salida del programa

Para la pregunta b) es necesario analizar la manera de encontrar el día con el precio más barato.En este caso se utilizará un algoritmo para búsqueda del número menor, que consiste en iniciarcon el supuesto para el valor menor de precio y día, comparando contra el precio de cada día y deser necesario se cambian los valores menores. Es un similar al caso de usar una hipótesis yrealizar luego las pruebas. Como supuesto, se escogerá el valor máximo de precio con el objetivoque el primer precio que aparece sustituya los valores.

A continuación se muestra un ejemplo de salida del programa

Figura 3.47: Salida del programaCátedra de Informática rev8 54 de 68

Page 55: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Otra forma de realizar el algoritmo consiste en cambiar la perspectiva del bucleREPETIR-MIENTRAS QUE, por un bucle MIENTRAS - REPETIR. Se debe cambiar el lugar de lacondición, repitiendo la misma pregunta. Se deja como ejercicio propuesto al alumno reescribirel ejemplo utilizando este enfoque.

3.5.1.3. Ejercicio - Tiro al blanco

“Tiro al blanco” es un juego que consiste en lanzar dardos a un objetivo circular. El premio quegana el jugador, depende de la ubicación en la cual cae el dardo y su valor se reparte en Pesos($30, $40 o $50), tal como se muestra en la figura:

(0,0)

$30

$40

$50

80cm

40cm

10cm

160cm

Figura 3.48: Diana con su puntuación y premios

Existen 3 círculos concéntricos y las longitudes de los radios del primero, segundo y tercercírculos son 10 cm, 40 cm y 80 cm, respectivamente. Suponga que los 3 círculos están inscritosen un cuadrado de longitud de lado 160 cm.

Escriba un algoritmo que permita simular N lanzamientos aleatorios de dardos, asignando deforma aleatoria pares ordenados (x, y) en el cuadrado descrito. En cada lanzamiento se debeverificar si el dardo se ubica al interior de alguno de los círculos descritos y asignar el respectivopremio. Al final, muestre el premio total que obtuvo el jugador.Cátedra de Informática rev8 55 de 68

Page 56: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Desarrollo:

Como bloque de ingreso, se usará la variable N como el número de dardos cuyo lanzamientoserá simulado. Las coordenadas de los puntos donde cae cada dardo se harán utilizando comoreferencia el centro de los círculos, por lo que los rangos para el eje x y el eje y serán [-80, 80].Si las coordenadas serán aleatorias, el rango del número aleatorio será 80-(-80)=160, con valorinicial de -80 como se describe en la siguiente expresión:

Coor denad apx = azar (160)−80 (3.12)Al calcular la distancia de la coordenada del dardo al origen, usando la fórmula de distancia entredos puntos, se determinará la franja sobre la que cayó el dardo.Como ejercicio se propone realizar el diagrama de flujo usando el lazo Mientras-Repita:

3.5.1.4. Ejercicio - Estimación de π

Encuentre un valor aproximado de la constante π con el siguiente procedimiento: Considere uncírculo de radio unitario, centrado en el origen e inscrito en un cuadrado:

x²+y²<1

x²+y²>1

x²+y²=1

Figura 3.49: Círculo unitario dentro de un cuadrado

Para n puntos (x, y) con coordenadas generadas de forma aleatoria (números reales entre 0 y 1),determine cuántos puntos caen dentro del cuadrante de círculo. Para contar los puntos se puedeutilizar un contador. Si llamamos a este contador k, se puede establecer la siguiente relaciónaproximada suponiendo n grande:Cátedra de Informática rev8 56 de 68

Page 57: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

k

n=

14 ar ea del c ır culo

14 ar ea del cuadr ado

=14π · (1)2

14 · (2)2

= π

4(3.13)

Por ejemplo, para 4 pares de puntos (n=5) generados de forma aleatoria; si k puntos seencuentran dentro del área del círculo, entonces se puede escribir:k

nwπ

4−→ k

5= π

4(3.14)

Donde se puede obtener el valor aproximado de πmediante:π= k

n·4 (3.15)

3.5.1.5. Ejercicio - Tiro de penales

El juego que se plantea consiste en 5 lanzamientos por parte de los jugadores que patean elbalón, los cuales pueden decidir lanzar en cualquiera de las seis secciones del arco (1: arriba a laderecha, 2: arriba al centro, 3: arriba a la izquierda, 4 abajo a la izquierda, 5: abajo al centro, 6:abajo a la derecha). En cada lanzamiento, el arquero decide donde ubicarse para atajar el tiro yno tiene oportunidad de cubrir otra sección, si éste coincide con la ubicación donde disparó eljugador, entonces el lanzamiento fue atajado o fallado, caso contrario se marcó un GOL.Escriba un algoritmo que simule un juego de 5 lanzamientos de penales, en donde la sección delarco donde cada jugador lanza es decidido por el usuario y la sección cubierta por el arquero essimulado por el computador (aleatoria).Al final presente la siguiente información:

Cantidad de goles conseguidos.Cantidad de penales fallados.La cantidad de goles realizados en la parte derecha, central e izquierda del arco.La ubicación del arco (derecha, centro o izquierda) por donde ingresaron másgoles.Suponga que existe una sola.La ubicación del arco (derecha, centro o izquierda) por donde no ingresaron goles.Supongaque existe una sola.

Figura 3.50: Esquema de tiro de los penalesCátedra de Informática rev8 57 de 68

Page 58: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

3.6. Ejemplos

3.6.1. Ejemplos y Aplicaciones básicas

3.6.1.1. Ejemplo - Reciclado de botellas

Una fábrica produce botellas de vidrio reciclando botellas usadas. Suponiendo botellas similares,la máquina con cierta cantidad X de botellas usadas pueden fabricar 1 botella nueva. Realice unalgoritmo para encontrar la cantidad total acumulada de botellas que pueden fabricarse a partirde N botellas en el mercado, reciclándolas repetidamente hasta que ya no quede suficientesbotellas para reciclar.

Desarrollo

Si se recolectan 70 botellas usadas (N = 70), y se puede fabricar una botella nueva con 4 botellasusadas (X = 4), el programa debe dar como respuesta el número 23.

Entonces, cada vez que se recicla un lote de botellas, la cantidad obtenida se puede calcular con:

Nbotel l as

X=C anti d ad botel l as r eci cl ad as (3.16)

Veamos paso a paso como se llega al resultado:Primer reciclaje: se toman las 70 botellas recolectadas y se fabrican: 70/4 =17 botellas, ysobran 2 (que no se reciclan en esta etapa)Segundo reciclaje: las 17 botellas se reciclan, sumadas a las 2 que sobraron de la etapaanterior: 17 + 2 = 19. Con ellas se fabrican 19/4 = 4 botellas y sobran 3.Tercer reciclaje: Ahora quedan N= 4 + 3 =7, se fabrican 7/4 = 1 botella y sobran 3.Cuarto reciclaje: N=1+3=4, ahora se fabrican 4/4=1 botella y ya no quedan suficientesbotellas para reciclar. El algoritmo termina y muestra la cantidad acumulada.

Se entiende que algunas botellas se han reciclado mas de una vez. En este caso, el algoritmo haejecutado el proceso de reciclaje 4 veces en total.

Entonces, a lo largo de las sucesivas etapas, se produjeron en total: 17 + 4 + 1 + 1= 23 botellasrecicladas.Cátedra de Informática rev8 58 de 68

Page 59: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

3.6.2. Ejemplos de Estructuras de Control - Bucles con Bases numéricas

3.6.2.1. Ejemplo - conversión binario a decimal

Para convertir el número binario 101 a decimal, se realizan las siguientes operaciones:

1 0 1− 1 00 1− 01

1 01 0 −→ 1 0− 1 00

1 01 −→ 1− 01

1 00

Combinando los restos de las divisiones sucesivas se obtiene la cifra en binario

101 (3.17)

La conversión se puede escribir como

1 ·2²+0 ·21 +1 ·20 = 1 ·4+0+1 ·1 = 5 (3.18)

3.6.2.2. Algoritmo de Binario a Decimal

Para realizar el algoritmo, se tiene que separar cada dígito del número binario, y realizar laoperación de ponderación para acumularla en el resultado final.

En la ponderación se usará un contador de posición para ser usado como el exponente dela base 2. Para repasar la conversión de sistemas numéricos, se puede pueden revisar elCapítulo 1.

Tip

Cátedra de Informática rev8 59 de 68

Page 60: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.51: Diagrama de flujo de PSEint de la conversión de binario a decimal

1 Proceso binario2decimal2 Definir bin,dec,i,dig Como Entero;3 Leer bin;4 dec = 0;5 i = 0;6 Mientras bin>0 Hacer7 dig = bin MOD 10;8 bin = trunc(bin/10);9 dec = dec+dig*2^i;10 i = i+1;11 FinMientras12 Escribir "El valor decimal es:", Sin Saltar;13 Escribir dec;14 FinProceso

Cátedra de Informática rev8 60 de 68

Page 61: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

3.6.2.3. Algoritmo de Decimal a Binario

En este caso hay que analizar descomponer el número en la nueva base numérica, para luegotrabajar con los residuos ubicándolos desde la posición menos significativa a la mássignificativa.3.6.2.4. Ejemplo 2 - Número 17 decimal a binario

Para convertir el número decimal 17 a binario, se realizan las siguientes operaciones:2 5− 20 5− 41

21 2 −→ 1 2− 1 20

26 −→ 6− 60

23 −→ 3− 21

21 −→ 1− 01

20

Combinando los restos de las divisiones sucesivas se obtiene la cifra en binario11001 (3.19)

Nótese que los restos se escriben en orden inverso al que se fueron calculando: el resto dela última división es el primer 1 de la izquierda en binario (bit más significativo o MSB).Tip

La conversión se puede escribir como1 ·24 +1 ·23 +0 ·22 +0 ·21 +1 ·20 = 1 ·16+1 ·8+0 ·4+0 ·2+1 ·1 = 16+8+1 = 24 (3.20)

Observe la diferencia en las operaciones para el divisor y la base, las operaciones son similares alas del ejercicio anterior. Por lo que el algoritmo no debe representar mayor inconveniente al seruna variante del ejemplo anterior.Algoritmo

1 Proceso decimal2binario2 Definir bin,dec,i,dig Como Entero;3 Leer dec;4 bin <- 0;5 i <- 0;6 Mientras dec>0 Hacer7 dig <- dec MOD 2;8 dec <- trunc(dec/2);9 bin <- bin+dig*10^i;10 i <- i+1;11 FinMientras12 Escribir "El valor binario es:", Sin Saltar;13 Escribir bin;14 FinProceso

Cátedra de Informática rev8 61 de 68

Page 62: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.52: Diagrama de flujo de PSEint de la conversión de binario a decimal3.6.2.5. Ejemplo - Números triangulares

Un faraón le pide a su ingeniero Real que calcule los materiales necesarios para construir supirámide. El ingeniero real propone escribir un algoritmo que le permita encontrar el términon-ésimo de la secuencia de números triangulares. Un número triangular puede entenderse comoel número de elementos usados para formar una pirámide plana, como se muestra en la figura3.53.

1

1 3 6 10cantidad

1

2

1

2

3

1

2

3

4

pisos 1 2 3 4

Figura 3.53: números triangularesCátedra de Informática rev8 62 de 68

Page 63: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Matemáticamente, la fórmula que rige el algoritmo es la siguiente

canti d ad =pi sos∑p=1

usados (3.21)

Desarrollo:

Usando la analogía de la construcción de una pirámide, se observa que para construir un piso seusa un bloque, para añadir el piso 2 se usan 2 bloques, para añadir el piso 3 se usan 3 bloques,etc.

Así, para 3 pisos, se puede decir:canti d ad = 1+2+3 = 6 (3.22)

Al principio se le pregunta al Faraón cuantos pisos desea construir. El el ingeniero real ingresaesa información en el programa, que se almacena en la variable llamada CUÁNTOS. Para iniciarlos trabajos, se anuncia la construcción del primer piso y que se han usado 0 bloques. En elprocedimiento de construcción de la pirámide, PISO es una variable tipo contador; USADOS esuna variable tipo acumulador que registra los bloques usados en la construcción de cada piso.Se construye un nuevo piso, acumulando los bloques usados hasta que se hayan construido lospisos de la variable cuántos. La variable de salida que muestra el valor resultante es: USADOS.

1 Proceso num_triangulares2 Definir cuantos,piso,usados Como Entero;3 usados = 0;4 piso = 1;5 Escribir "Ingrese la cantidad de pisos: ";6 Leer cuantos;7 Mientras piso<=cuantos Hacer8 usados = usados+piso;9 piso = piso+1;10 FinMientras11 Escribir "La cantidad es: ",usados;12 FinProceso

Cátedra de Informática rev8 63 de 68

Page 64: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.54: Ejemplo - números triangulares

3.6.2.6. Ejemplo - averiguar números múltiplos de 9

Un entero es divisible para 9 si lo es la suma de sus cifras. Conociendo ésta propiedad, realice unalgoritmo para determinar si un número n es divisible para 9.

Por ejemplo:

n = 1492 = 1+4+9+2 = 16 −→ 1+6 = 7 (3.23)

como 7 no es divisible por 9, 1492 no es divisible por 9.

n = 1548 = 1+5+4+8 = 18 −→ 1+8 = 9 (3.24)

como 9 es divisible por 9, 1548 es divisible por 9.Cátedra de Informática rev8 64 de 68

Page 65: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Desarrollo:

La variable de entrada usada es n, que corresponde al número a evaluar.En el procedimiento, para separar los dígitos del número n, se usará el residuo de la división por10, que permite extraer cada dígito en forma consecutiva. Se acumulan los residuos en unavariable s, y de ser necesario se repite el proceso hasta quedar con un resultado s de un dígito.Finalmente, se puede verificar si el acumulado de los dígitos es divisible por 9.

Ejemplo - para el número 1492

1 4 9 2− 1 04 9− 4 09 2− 9 02

1 01 4 9 −→ 1 4 9− 1 04 9− 4 09

1 01 4 −→ 1 4− 1 04

1 01 −→ 1− 01

1 00

Se ve que cada vez que se hace una división, en el resto queda el dígito que corresponde a launidad (del dividendo). El paso siguiente es sumar los dígitos a medida que se van calculando, deforma tal que al final queda

2+9+4+1 = 16 (3.25)Como el resultado de esta suma es un número que tiene 2 dígitos, se vuelve a realizar ladescomposición del mismo

1 6− 1 06

1 01 −→ 1− 01

1 00

Para este caso, la suma de los dígitos queda6+1 = 7 (3.26)

Como el resultado final de la suma es 7, el mismo no es múltiplo de 9. Por ello es posible decirque el número 1492 NO es múltiplo de 9.Ejemplo - para el número 1548

1 5 4 8− 1 05 4− 5 04 8− 4 08

1 01 5 4 −→ 1 5 4− 1 05 4− 5 04

1 01 5 −→ 1 5− 1 05

1 01 −→ 1− 01

1 00

Cátedra de Informática rev8 65 de 68

Page 66: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Este caso la suma de los dígitos queda

8+4+5+1 = 18 (3.27)

Nuevamente

1 8− 1 08

1 01 −→ 1− 01

1 00

de los dígitos queda

8+1 = 9 (3.28)

En este ejemplo, la suma de los dígitos da 9, como es múltiplo de 9 se puede decir con seguridadque el número 1548 sí es múltiplo de 9.

Para realizar un programa que haga estos cálculos, primero es necesario desarrollar el algoritmopara acumular dígitos

1 // acumula los digitos de un numero ingresado por teclado2 // calcula el resto de la dividir el nro y 10 y lo acumula.3 Proceso acumular_digitos4 Definir n,s,r Como Entero;5 Escribir "ingrese numero: ";6 Leer n;7 s = 0;8 Repetir9 r = n MOD 10;10 s = s+r;11 n = trunc(n/10); // trunc() borra los decimales del resultado12 Mientras Que (n>0)13 Escribir s;14 FinProceso

Cátedra de Informática rev8 66 de 68

Page 67: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.55: Ejemplo - acumulador de dígitosLuego es posible ampliar el programa para abarcar la suma de dígitos hasta obtener unresultado de un dígito, lo que nos permitirá determinar si el número n es o no divisible por 9.

1 // averigua si un numero es multiplo de 9 acumulando los digitos del mismo.2 Proceso acumular_digitos3 Definir n,s,r Como Entero;4 Escribir "ingrese numero: ";5 Leer n;6 Repetir7 s = 0;8 Repetir9 r = n MOD 10;10 s = s+r;11 n = trunc(n/10); // trunc() borra los decimales del resultado12 Mientras Que (n>0)13 n = s;14 Mientras Que (s>=10)15 Si (s==9) Entonces16 Escribir "El número es multiplo de 9";17 SiNo18 Escribir "El número no es multiplo de 9";19 FinSi20 FinProceso

Cátedra de Informática rev8 67 de 68

Page 68: Universidad Nacional de Misiones...3.2.2. Condicional con varias preguntas, Si-entonces - sino - FinSi (del Inglés: if-else) Cuando se debe incluir más de una pregunta en un condicional,

Cátedra de Informática Departamento de ElectrónicaGuía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Universidad Nacional de Misiones

Figura 3.56: Ejemplo - números múltiplos de 9

Propuesta: Desarrollar el ejercicio anterior usando lazo Repetir-MientrasQue.

Cátedra de Informática rev8 68 de 68