Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

TP Nº 4: 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.

Resolver los ejercicios, respetando en cada caso, las siguientes consignas:


- Aplicar el método de resolución de problemas: definir el objetivo, pensar una estrategia y
descomponerla en partes.
- Codificar la solución en lenguaje C.
- Realizar la verificación con casos de prueba representativos del problema. Tener en cuenta que es
necesario identificar de antemano cuáles son los resultados esperados para cada caso de prueba.

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:

Cant. unidades: 5 - Precio unit.: $ 10.50


Total: $ 52.50
¡Gracias por su compra!

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.

2. ESTRUCTURAS DE CONTROL ALTERNATIVA

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

2.1. Alternativa Simple

La estructura alternativa simple ejecuta una acción o conjunto de acciones cuando se cumple una determinada
condición.

Como resultado de evaluar la condición, puede ocurrir:

1. Que la condición sea VERDADERA → en cuyo caso se ejecuta la acción preestablecida

2. Que la condición sea FALSA → ante esta situación no se hace nada

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!

Algoritmos y Estructuras de Datos I - 2023 Página 2 de 11


Guía de Trabajos Prácticos 4

2.2. Alternativa Doble

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.

2.3. Alternativas Anidadas

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:

Rango de temperatura Sensación térmica


[-10, 10) Mucho frío
[10, 15) Poco frío
[15, 25) Temperatura normal
[25, 30) Poco calor
[30, 45) Mucho calor
Para obtener el mensaje de la sensación térmica correspondiente, se debe preguntar solamente por
el límite superior del rango. Según el cuadro el límite superior, al tener paréntesis, no entra en el
rango. Por lo tanto, en el primer caso sería:

SI (temp >= -10 Y temp < 10) → “Mucho frío”

Algoritmos y Estructuras de Datos I - 2023 Página 3 de 11


Guía de Trabajos Prácticos 4

2.4. Alternativa Múltiple

En ocasiones ocurre que se necesitan más de dos alternativas.

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.

3. Opcionalmente, se puede escribir un <bloque_de_instrucciones_n> por defecto.

→ 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:

Algoritmos y Estructuras de Datos I - 2023 Página 4 de 11


Guía de Trabajos Prácticos 4

Funciona de la siguiente manera:

4. Se busca el valor de la expresión (también conocida como selector) en alguna de las listas de valores.

5. Si aparece, entonces se ejecuta la sentencia correspondiente.

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

3.1. Repetición Simple ó Indexada (PARA/for)

En ocasiones, se requiere ejecutar una secuencia de instrucciones un número determinado


de veces que se conoce de antemano.

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:

Algoritmos y Estructuras de Datos I - 2023 Página 5 de 11


Guía de Trabajos Prácticos 4

Ejemplo: Si quisiéramos simular el desafío No me canso de saltar de PilasBloques, en C


podríamos escribir algo como lo siguiente:

EJERCICIOS

Utilizando la estructura de repetición simple, diseñe en cada caso un algoritmo para:

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.

*Nota: En este programa es conveniente declarar una


constante para el valor 20. En C las constantes se declaran y
definen usando la directiva #define seguido de un nombre
(en el ejemplo: N) y luego de un espacio, el valor que se
desea asignar a la constante (en el ejemplo: 20):

3.1.3. Generar y mostrar la tabla de multiplicar de un número introducido por el teclado.

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:

7.0 | 9.0 | 5.20 | 8.0 | 2.50


8.25 8.50 | 9.70 | 3.80 | 7.50

Algoritmos y Estructuras de Datos I - 2023 Página 6 de 11


Guía de Trabajos Prácticos 4

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

3.2. Repetición Condicional

Existen otras ocasiones, en que se requiere ejecutar una secuencia de instrucciones un

número determinado de veces que NO se conoce de antemano.

C posibilita automatizar tareas repetitivas de este tipo a través de los comandos

while y do while

WHILE

1. La condición o expresión lógica se evalúa antes de cada ejecución del bucle.

→ Si la condición es verdadera, se ejecuta el bucle, y si es falsa, el control pasa a la instrucción siguiente


al bucle.

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.

→ En este caso, se dice que se ha ejecutado 0 veces.

3. Mientras la condición sea verdadera, el bucle se ejecutará.

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

Algoritmos y Estructuras de Datos I - 2023 Página 7 de 11


Guía de Trabajos Prácticos 4

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:

Algoritmos y Estructuras de Datos I - 2023 Página 8 de 11


Guía de Trabajos Prácticos 4

Ejemplo: Ahora veamos el mismo caso del ejemplo anterior, pero aplicando el do while

Tratamiento de Cadenas de caracteres

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

→ Imprimir datos: Es necesario utilizar el especificador %s


printf("El nombre ingresado es %s", nombre);

→ Declarar y asignar una variable de tipo cadena:


char nombre[30]; // declaración

strcpy(nombre, "Juan Perez"); // Para asignar valores se utiliza la función strcpy(variable, cadena);

→ Limpiar la cadena: Se copia una cadena de espacios en blanco en la cadena destino:


strcpy(nombre, " " );

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

Más adelante veremos este tema con más detalle.

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:

Algoritmos y Estructuras de Datos I - 2023 Página 9 de 11


Guía de Trabajos Prácticos 4

********************************
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:

Producto Cantidad Precio Resultado esperado


Jabón Líquido Ala Matic 2 $ 860,00 $
Fideos Tallarines Canale 5 $ 120,00 $
Tomates Peritas Triturados 3 $ 150,00 $
TOTAL A PAGAR: $

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:

Ejemplo 1: Ejemplo 2: Ejemplo 3:


2 X $ 18.00 5 X $ 12.00 3 X $ 16.00
Jabón en Polvo Ala $ 36.00 Fideo Pasta Tuti $ 60.00 Tomate Triturado $ 48.00
Realizar la verificación con los mismos casos de prueba del ejercicio anterior.

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:

Nro. Usuario Categoría Importe facturado


1585 1 $ 3550,00

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:

El socio 2589 LLEVA A DOMICILIO el título “Algoritmos y Estructuras de Datos”

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

Resultados esperados: XXXXX

Algoritmos y Estructuras de Datos I - 2023 Página 10 de 11


Guía de Trabajos Prácticos 4

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

Algoritmos y Estructuras de Datos I - 2023 Página 11 de 11

También podría gustarte