Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4 AED1 TP4 Estructuras de Control
4 AED1 TP4 Estructuras de Control
Objetivos:
1. Incorporar los conceptos de la programación estructurada, que basa la resolución de problemas en la
utilización de tres estructuras básicas: secuencia, selección y repetición.
2. Realizar el análisis del problema planteado, previo al desarrollo del algoritmo, aplicando el método de
resolución de problemas.
3. Entender y aplicar las distintas estructuras utilizando la más adecuada al problema.
4. Incorporar la verificación con Casos de Prueba que permitan determinar el correcto funcionamiento del
algoritmo, es decir si el resultado obtenido es el resultado deseado.
1. ESTRUCTURA SECUENCIAL
a) Diseñe un algoritmo que emita el ticket con el importe a pagar en un supermercado considerando los
datos: cantidad y precio del producto. Imprimir el ticket tomando como referencia el diseño de este ticket
de ejemplo:
b) Diseñe un algoritmo para calcular y mostrar el porcentaje de partidos de fútbol ganados por un club en un
campeonato, conociendo los datos: cantidad de partidos jugados y cantidad de partidos ganados por el
club.
Al resolver un problema podría pasar que se requiera elegir uno de entre varios caminos en
función de ciertas condiciones.
Por ejemplo, si tuviera que resolver el problema que un robot salga de una habitación, en
donde la puerta puede o no estar abierta, se debería indicar de alguna manera que en el
caso que la puerta esté cerrada, primero hay que abrirla.
Para resolver situaciones como esta y otras más, en programación existen las sentencias
alternativas, selectivas o de decisión que permiten como resultado de la evaluación de una
condición, seleccionar uno de entre varios caminos por donde seguirá la ejecución del
programa.
En algunos casos esta selección viene determinada por la evaluación de una expresión
lógica.
Guía de Trabajos Prácticos 4
La estructura alternativa simple ejecuta una acción o conjunto de acciones cuando se cumple una determinada
condición.
Sintaxis en C:
EJERCICIOS
2.1.1. Reutilice el código del programa correspondiente al ejercicio 1.a) y modifíquelo para que calcule una
bonificación de 15% al total de la compra si ésta es mayor o igual a $5000 o se compran más de 10
productos. Utilice una sola expresión lógica.
2.1.2. Reutilice el código del programa correspondiente al ejercicio 2.1.1 y modifíquelo para que el ticket
incluya la bonificación en el detalle. Ejemplos:
Cant. unidades: 5 - Precio unit.: $ 10.50 Cant. unidades: 7 - Precio unit.: $ 1000
Total: $ 52.50 Total: $ 7000.00
Bonificación: $ 0.00 Bonificación: $ 1050.00
Total a pagar: $ 52.50 Total a pagar: $ 5950.00
¡Gracias por su compra! ¡Gracias por su compra!
2.1.3. Reutilice el código del programa correspondiente al ejercicio 2.1.2 y modifíquelo para que calcule una
bonificación de 10% al total de la compra si ésta es mayor o igual a $5000 y si la forma de pago es en
efectivo. Utilice una sola expresión lógica. Modificar el ticket para que incluya la forma de pago en el
detalle. Será necesario ingresar la forma de pago. Las formas de pago disponibles son (c-tarjeta de
crédito / d-tarjeta de débito / e-efectivo).
*Nota: prestar atención al ingreso de datos de tipo char.
Ejemplos:
Cant. unidades: 7 - Precio unit.: $ 1000 Cant. unidades: 7 - Precio unit.: $ 1000
Total: $ 7000.00 Total: $ 7000.00
Forma de pago: c Forma de pago: e
Bonificación: $ 0.00 Bonificación: $ 700.00
Total a pagar: $ 7000.00 Total a pagar: $ 6300.00
¡Gracias por su compra! ¡Gracias por su compra!
La estructura alternativa condicional doble permite elegir entre dos opciones o alternativas posibles en función
del cumplimiento o no de una determinada condición que se escribe como una expresión lógica.
Sintaxis en C:
EJERCICIOS
2.2.1. Para otorgar un préstamo, un banco evalúa el sueldo del solicitante. Si el sueldo es mayor o igual a
$100000, se autoriza un préstamo de hasta $300000. Para sueldos inferiores, sólo se autoriza un
préstamo de hasta el 75% de sus ingresos. Codifique en C un programa que permita ingresar el monto
del sueldo del solicitante y muestre en pantalla una leyenda indicando el monto de préstamo
autorizado.
2.2.2. Con el objeto de conseguir fondos para su viaje de egresados, los alumnos de 6to. año organizaron un
baile. El precio de las entradas es de $750 con una consumición, y de $500 sin consumición. Si la venta
es anticipada, se realiza un descuento del 20% al valor de la entrada. Escriba un algoritmo que solicite
por teclado el tipo de entrada (1-con consumición, 2-sin consumición) y un carácter que indique si la
venta fue anticipada (‘S’) o no (‘N’) y muestre por pantalla el tipo de entrada y el importe a pagar.
EJERCICIOS
2.3.1. Se dispone de un termómetro para medir con exactitud la temperatura en un determinado lugar. Se
desea una aplicación que permita ingresar un valor de temperatura y muestre un mensaje que indique
la sensación térmica, considerando los rangos siguientes:
Si bien esta situación podría resolverse anidando estructuras alternativas, esto dificulta mucho la legibilidad
del código cuando las alternativas son numerosas, además de ofrecer mayor posibilidad de cometer errores
en la codificación.
La estructura alternativa múltiple es una toma de decisión especializada que permite evaluar una expresión
con n posibles resultados, y en base al resultado seleccionar el siguiente bloque de instrucciones a ejecutar,
de entre varios posibles.
Sintaxis en C:
1. Dependiendo del valor obtenido al evaluar la expresión, se ejecutará un bloque de instrucciones u otro.
2. En las listas de valores se deben escribir los valores que determinan el bloque de instrucciones a ejecutar,
teniendo en cuenta que un valor sólo puede aparecer en una lista de valores.
→ Este bloque de instrucciones se ejecutará en el caso de que el valor obtenido al evaluar la expresión no
se encuentre en ninguna de las listas de valores especificadas.
Ejemplo:
4. Se busca el valor de la expresión (también conocida como selector) en alguna de las listas de valores.
6. Si no aparece y hay una cláusula default entonces se ejecuta la sentencia que le sigue.
7. Si no aparece y no hay default entonces no se hace nada (continua con la siguiente instrucción).
EJERCICIOS
2.4.1. Una farmacia emite un ticket de compra en función de la cantidad y precio del producto vendido, y el
tipo de producto: ‘P’, ‘F’ o ‘L’ (P-Perfumería, F-Farmacia y L-Limpieza). Escriba un programa en C para
calcular el valor de la compra, aplicando una bonificación de acuerdo al tipo de producto: ‘P’: 5%, ‘F’:
10%, ‘L’: 15%. Imprimir el importe a pagar y el porcentaje de bonificación, con la leyenda “%
bonificado: XX”.
3. ESTRUCTURAS REPETITIVAS
C posibilita automatizar tareas repetitivas de este tipo a través del comando for
En primer lugar, tenemos que identificar la secuencia de instrucciones que se desea repetir
→ identificar el PATRÓN.
Sintaxis en C:
EJERCICIOS
3.1.1. Mostrar los números enteros desde 1 hasta N, sumarlos e informar la suma.
3.1.2. Calcular e informar el promedio de los números impares menores o iguales a 20.
3.1.4. Diseñe un algoritmo para calcular el promedio general de los exámenes aprobados en el primer parcial
de Algoritmos y Estructuras de Datos I. Considere que el curso está compuesto por 96 alumnos.
Realizar la verificación con los siguientes casos de prueba. Determinar previamente el resultado
esperado:
*Nota: Para realizar la verificación no es necesario ingresar los datos de los 96 alumnos. Se puede
tomar una cantidad menor de notas, por ejemplo, entre 5 y 10 notas, haciendo la modificación
necesaria en el código.
while y do while
WHILE
2. Si la condición se evalúa a falso cuando se ejecuta el bucle por primera vez, el cuerpo del bucle no se
ejecutará nunca.
→ Esto significa que el bucle se ejecutará indefinidamente a menos que “algo” en el interior del bucle
modifique la condición haciendo que la condición sea falsa.
→ Si la expresión nunca cambia de valor, entonces el bucle no termina nunca. En este caso, se trata de un
bucle infinito. Deben evitarse estas situaciones.
Sintaxis en C:
Ejemplo:
Recordemos el caso del ejercicio de PilasBloques en el que el ratón avanzaba hasta llegar a la meta. Si lo
simulamos en C podría ser algo como lo siguiente:
*Nota: Observe que cada vez que el usuario responda a la pregunta de si llegó a la meta o no, debería
responder ingresando el valor 1 ( verdadero/true ) en caso que quisiera indicar que llegó a la meta y caso
contrario el valor 0 ( falso/false ).
DO WHILE
1. La condición (expresión lógica) se evalúa al final del bucle, después de ejecutarse todas las sentencias.
2. Si la expresión lógica es VERDADERA, se vuelve a repetir el bucle y se ejecutan todas las sentencias.
3. Si la expresión lógica es FALSA, se sale del bucle y se ejecuta la siguiente instrucción luego del while.
4. Si la condición se evalúa a falso cuando se ejecuta el bucle por primera vez, el cuerpo del bucle se ejecutará
al menos una vez.
Sintaxis en C:
Ejemplo: Ahora veamos el mismo caso del ejemplo anterior, pero aplicando el do while
Para trabajar con cadenas de caracteres se debe importar la librería: #include <string.h>
Algunas consideraciones:
→ Ingresar datos: En este caso hay que agregar un modificador al especificador %s (cadenas) para que
tenga en cuenta los espacios en blanco entre palabras.
scanf("%[^\n]s", &nombre);
strcpy(nombre, "Juan Perez"); // Para asignar valores se utiliza la función strcpy(variable, cadena);
→ Comparar cadenas: Se utiliza la función strcmp(cadena1, cadena2) que retorna el valor 0 en caso que las
cadenas sean iguales:
int resultado = strcmp(nombre, "Juan Perez"); // → Si el valor que contiene nombre es “Juan Perez”,
entonces la función retorna 0, caso contrario retorna un valor distinto de 0.
EJERCICIOS
3.2.1. Diseñe un programa para un supermercado que a partir de los siguientes datos de los productos
comprados por un cliente: cantidad, precio unitario y descripción, permita calcular el valor total de la
compra teniendo en cuenta que un cliente puede comprar varios productos distintos. El cajero
ingresará -1 como valor de cantidad para indicar que terminó de ingresar los productos de un cliente.
Imprimir el importe total a pagar con el formato que se muestra a continuación:
********************************
TOTAL A PAGAR: $ 1800.00
********************************
¡Gracias por su compra!
Resolver utilizando while. Realizar la verificación con los siguientes casos de prueba. Completar
previamente la columna de resultado esperado:
3.2.2. Modifique el ejercicio 3.2.1 para que a medida que se ingresan los datos de un producto de la compra
se muestre el subtotal en la pantalla, de la siguiente manera:
3.2.3. La DPEC dispone de los siguientes datos de la facturación mensual por consumo de energía eléctrica
de los usuarios de energía: Nro. Usuario, categoría (1-Residencial, 2-Comercial, 3-Industrial), importe
facturado. Se necesita saber qué porcentaje de la recaudación corresponde a los usuarios de tipo
Residencial. Se podrán ingresar datos de usuarios hasta que el operador del sistema indique que no
desea ingresar más datos.
Elaborar 3 casos de prueba adicionales al que figura como modelo. Realizar la verificación con los 4
casos de prueba. Determinar previamente el resultado esperado:
Resultado esperado: $ ……
3.2.4. Una biblioteca gestiona los siguientes datos de los préstamos de libros: Nro. socio, título de la obra,
tipo de préstamo (1- Lectura en sala, 2-Lectura en domicilio). Cada vez que se ingresan los datos de
un socio que lleva un libro a domicilio, se debe visualizar en pantalla una leyenda como la siguiente:
Además, se desea conocer la cantidad de libros leídos en sala, y el porcentaje de los mismos sobre el
total de préstamos. El final de los datos estará dado con el valor -9 en Nro. Socio.
Elaborar 4 casos de prueba y realizar la verificación. Determinar previamente el resultado esperado:
Nro. Socio Título de la obra Tipo de préstamo
3.2.5. Para un campeonato regional de básquetbol, los organizadores utilizan una ficha de inscripción con
los siguientes datos: DNI, sexo (M/F), edad, categoría (N-niños, C-cadetes), provincia de origen (1-
Chaco, 2- Formosa, 3-Corrientes). Escriba un programa que ingrese los datos, teniendo en cuenta que
el operador debe indicar si desea ingresar más datos ingresando una ‘S’ o ‘N’ y:
- Muestre en pantalla el DNI de las mujeres cadetes de Corrientes o del Chaco.
- Calcule y muestre la cantidad de varones entre 10 y 12 años de Formosa.
Realizar la verificación con los siguientes casos de prueba:
DNI Sexo Edad Categoría Provincia Resultado esperado en pantalla
31978654 M 10 N 3
41968654 F 14 C 3
49654886 M 11 N 2
45482286 F 10 N 1
47481184 F 14 C 1
Resultados esperados: XXXXX