• No se han encontrado resultados

Formato para prácticas de laboratorio

N/A
N/A
Protected

Academic year: 2021

Share "Formato para prácticas de laboratorio"

Copied!
16
0
0

Texto completo

(1)

CARRERA PLAN DE ESTUDIO

CLAVE

ASIGNATURA NOMBRE DE LA ASIGNATURA

IC 2003-1 5032 Programación Estructurada

PRÁCTICA No.

LABORATORIO

DE Ingeniero en Computación

DURACI ÓN (HORA)

2

NOMBRE DE LA

PRÁCTICA

Utilización de mandos de decisión 2

1 INTRODUCCIÓN

Los programas hasta ahora realizados se ejecutan de un modo secuencial, de tal forma que se ejecuta una sentencia después de otra. Sin embargo, para la resolución de problemas de tipo general es necesario controlar cualquiera de las sentencias que se ejecuten. En esta práctica veremos las estructuras condicionales que controlan la ejecución de una sentencia o lista de sentencias, si se cumple una condición.

Es común que en los programas, las acciones que se toman dependen de que una o varias condiciones se cumplan, inclusive una condición puede a su vez contener otras condiciones, cuando esto sucede estamos frente a un problema de decisiones anidadas. C maneja las siguientes estructuras para la toma de decisiones:

if, if-else y switch()

Cada una de ellas puede anidar una similar o diferente, es decir una estructura if puede anidar a otra estructura if o bien a otra estructura switch y viceversa, construyendo de este modo estructuras de decisiones anidadas.

2 OBJETIVO (COMPETENCIA)

Aplicara los mandos de decisiones en programas de forma adecuada, en los diferentes problemas, para que los utilicé de aquí en adelante durante el curso de programación. Tambien utilizará condiciones anidadas para la toma de desiciones en programas.

(2)

3 FUNDAMENTO

La Estructura if.

La estructura if es una estructura de control condicional que permite llevar a cabo una acción si una condición lógica dada, tiene un valor especifico (cierto o falso). Esta estructura tiene dos formas diferentes. La forma más sencilla es:

if (expresión lógica) Acción;

La sentencia Acción de la estructura anterior se ejecutará solamente si la expresión lógica es cierta. Si la espresión lógica es falsa será ignorada. La segunda forma es:

if (expresión lógica) Acción1;

else Acción2

La Acción1 y la Acción2 , pueden ser una única sentencia que termina en un punto y coma (;) o un grupo de sentencias encerradas entre llaves, es decir un bloque de instrucciones. Cuando se ejecuta la sentencia if-else se evalúa la expresión lógica. Si la expresión es verdadera, se ejecuta Acción1 y en caso contrario se ejecuta Acción2.

Por ejemplo:

#include <stdio.h>

int main( ) {

char caracter;

printf("Teclea un carácter y adivina ");

scanf("%c",&caracter);

if (caracter=='A')

printf ("Ganaste el caracter --- %c --- es correcto ", caracter) else

(3)

3 FUNDAMENTO

Un if o switch anidado es una estructura if o switch que es objeto de otra estructura if o switch. Cuando tenemos if anidados, resulta problemático identificar a que if corresponde cada else. Las siguientes reglas solucionan el problema: Un else está enlazado con el if más cercano que no tenga ya una sentencia else asociada.

Cuando se usan llaves se elude la asociación normal, y el else que esta después de un bloque encerrado entre llaves { } estará asociado con el if colocado antes de la llave que indica el inicio del bloque.

Ejemplo 1:

if (a==0) if (b!=3) sentencia1;

else

sentencia2;

Ejemplo 2:

if(a==0) {

if(b!=3) sentencia1;

} else

sentencia2;

En el ejemplo 1 el else está asociado con la condición if(b!=3), en el ejemplo 2 esta asociado con la condición if(a==0).

(4)

3 FUNDAMENTO

if (condición) sentencia;

else if (condición) sentencia;

else if (condición) sentencia;

. . .

else if (condición) sentencia;

else

sentencia;

La computadora evalúa las expresiones condicionales iniciando con la primera, y continuando con la siguiente en forma descendente hasta encontrar una condición verdadera, en cuyo caso la computadora ejecuta la sentencia asociada a esta condición y salta el resto de la escalera, si ninguna condición es verdadera se ejecutará la sentencia asociada con el else final. Si todas las condiciones son falsas y no hay else final, no hace nada.

La sentencia switch().

El lenguaje C tiene incorporada una sentencia de bifurcación múltiple llamada switch, la computadora comprueba una variable sucesivamente frente a una lista de constantes enteras o de caracter. Después de encontrar una coincidencia, la computadora ejecuta la sentencia o bloque de sentencias que se asocian con la constante. La forma general de la sentencia switch es:

(5)

3 FUNDAMENTO

switch(variable) {

case constante1:

secuencia de sentencias break;

case constante2:

secuencia de sentencias break;

. . . default:

secuencia de sentencias }

donde la computadora ejecuta la sentencia default si el valor de la variable no coincide con ninguna constante de la lista. El default es opcional. Cuando el valor de la variable coincide con alguna constante de la lista, la computadora ejecuta las sentencias asociadas con el case hasta encontrar un break.

4 PROCEDIMIENTO (DESCRIPCIÓN)

A EQUIPO NECESARIO MATERIAL DE APOYO

Computadoras con Linux instalado. La practica 3 de Lenguaje de programación estructurada impresa.

B DESARROLLO DE LA PRÁCTICA

Considere el siguiente ejemplo para resolver los ejercicios propuestos, observe como el mismo problema puede resolverse con estructuras if o switch anidadas.

(6)

B DESARROLLO DE LA PRÁCTICA Un restaurante ofrece el siguiente menú, con los siguientes costos por platillo:

1.- Carne en su Jugo 89.60

2.- Hígado encebollado 60.25

Adicionalmente el cliente puede elegir uno de los siguientes postres, por los cuales se agregará al costo del platillo las cantidades que se indican:

1) Flan 5.00

2) Gelatina 3.50

3) No desea postre (el cliente pagará 10.00 pesos menos por su platillo).

El programa deberá pedir la información referente a el platillo y al postre, a través de un menú y al final mostrará un mensaje con el monto que el cliente deberá pagar. El siguiente programa soluciona el problema anterior con estructuras if anidadas.

#include <stdio.h>

int main() {

int platillo,postre;

float costo=0.0;

printf("\n\nQue platillo desea el cliente\n");

printf(" 1)Carne en su Jugo ó 2)Hígado encebollado\n");

printf("Proporcione la Opción (1 ó 2): [ ]\b\b");

scanf("%d",&platillo);

(7)

B DESARROLLO DE LA PRÁCTICA if(platillo==1)

{

printf("\nSeleccione postre\n");

printf("1-Flan, 2-Gelatina 3-No desea postre)\n");

printf("Proporcione la Opción (1,2 ó 3): [ ]\b\b");

scanf("%d",&postre);

if (postre==1) costo=89.60+5.00;

else if (postre==2) costo=89.60+3.50;

else if (postre==3) costo=89.60-10.00;

else

printf("\nExiste un error en la selección del postre\n");

}

else if(platillo==2) {

printf("\nSeleccione postre\n");

printf("Proporcione la Opción (1,2 ó 3): [ ]\b\b");

scanf("%d",&postre);

if (postre==1)

costo=60.25+5.00;

if (postre==2)

costo=60.25+3.50;

if (postre==3)

costo=60.25-10.00;

} else

printf("Error en la selección del platillo\n");

printf("\nEl total a pagar es %8.2f \n",costo);

return 0;

}

Solución con estructuras switch anidadas, las opciones del platillo serán ahora a y b.

(8)

B DESARROLLO DE LA PRÁCTICA

#include <stdio.h>

int main() {

char platillo;

int postre;

float costo=0.0;

printf("\n\nQue platillo desea el cliente\n");

printf(" a)Carne en su Jugo ó b)Hígado encebollado\n");

printf("Proporcione la Opción (a ó b): [ ]\b\b");

scanf("%c",&platillo);

switch(platillo) {

case 'A':

case 'a':

printf("\n\nQue postre desea el cliente:\n");

printf("1) Flan, 2) Gelatina 3) No desea postre\n");

printf("Proporcione la Opción (1,2 ó 3): [ ]\b\b\b");

scanf("%d",&postre);

switch(postre) {

case 1:costo=89.60+5.00;

break;

case 2:costo=89.60+3.50;

break;

case 3:costo=89.60-10.00;

break;

default:printf("\nError en la selección del postre\n");

} break;

case 'B':

case 'b':

printf("\n\nQue postre desea el cliente:\n");

printf("1) Flan, 2) Gelatina 3) No desea postre\n");

printf("Proporcione la Opción (1,2 ó 3): [ ]\b\b\b");

scanf("%d",&postre);

(9)

B DESARROLLO DE LA PRÁCTICA switch(postre)

{

case 1:costo=60.25+5.00;

break;

case 2:costo=60.25+3.50;

break;

case 3:costo=60.25-10.00;

break;

default:printf("\nError en selección del postre\n");

} break;

default:printf("\nError en la selección del platillo\n");

}

printf("\nEl total a pagar es %8.2f \n",costo);

return 0;

}

A continuación se muestra un ejemplo utilizando posicionamiento de cursor y algunas funciones matemáticas, al momento de compilarlo deberas hacerlo como se muestra abajo, substituyendo nombre por el nombre con el que tu lo salvaste:

gcc -o nombre nombre.c -l m -l ncurses

#include <ncurses.h>

#include <math.h>

int main() {

char opcion1;

int opcion2;

float dato,resultado;

initscr();

clear();

(10)

B DESARROLLO DE LA PRÁCTICA move(10,10);printw("Menú de Opciones");

move(11,10);printw("A] Funciones Matemáticas");

move(12,10);printw("B] Áreas y Perímetros");

move(13,10);printw("Dame tu opció[ ]\b\b");

refresh();

scanw("%c",&opcion1);

switch(opcion1) {

case 'A':

case 'a':

clear();

move(10,10);printw("Menú de Funciones Matemáticas");

move(11,10);printw("1] Eleva un número dado al cuadrado");

move(12,10);printw("2] Calcula raíz cuadrada de un número dado");

move(13,10);printw("Dame tu opció[ ]\b\b");

refresh();

scanw("%d",&opcion2);

if (opcion2==1) {

move(15,10);printw("Dame un número : ");

refresh();

scanw("%f",&dato);

resultado=pow(dato,2);

move(17,10);printw("%.2f elevado al cuadrado es %.2f",dato,resultado);

refresh();

}

else if (opcion2==2) {

move(15,10);printw("Dame un número : ");

refresh();

scanw("%f",&dato);

resultado=sqrt(dato);

move(17,10);printw("La raíz cuadrada de %.2f es %.2f",dato,resultado);

refresh();

}

(11)

B DESARROLLO DE LA PRÁCTICA else

{

move(20,10);printw("Error en opció del segundo menú");

refresh();

} break;

case 'B':

case 'b':

clear();

move(10,10);printw("Menú de Áreas y Perímetros");

move(11,10);printw("1] Dado el radio de un circulo calcula área");

move(12,10);printw("2] Dado el radio de un circulo calcula perímetro");

move(13,10);printw("Dame tu opció[ ]\b\b");

refresh();

scanw("%d",&opcion2);

if (opcion2==1) {

move(15,10);printw("Proporciona radio del circulo : ");

refresh();

scanw("%f",&dato);

resultado=3.1416*pow(dato,2);

move(17,10);printw("El área del circulo es %.2f",resultado);

refresh();

}

else if (opcion2==2) {

move(15,10);printw("Proporciona radio del circulo : ");

refresh();

scanw("%f",&dato);

resultado=2*3.1416*dato;

move(17,10);printw("El perímetro del circulo es %.2f",resultado);

refresh();

} else {

move(20,10);printw("Error en opció del segundo menú");

refresh();

}

(12)

B DESARROLLO DE LA PRÁCTICA break;

default:

move(20,10);printf("Error en la opció del menú principal");

refresh();

} getch();

endwin();

return 0;

}

A continuación se mencionan 5 ejercicios para el alumno, de los cuales deberá resolver uno con una estructura if y otro con un switch anidado, recuerde que una estructura if puede anidar una estructura switch() y viceversa.

Para seleccionar el ejercicio que deberá resolver usted, atienda las indicaciones de su maestro de laboratorio.

1. Escribe un programa que calcule el sueldo semanal de un empleado, si la empresa donde trabaja, paga a sus empleados por horas trabajadas semanalmente, siguiendo las siguientes consideraciones:

Existen dos departamentos, en los que a sus empleados se les pagan las siguientes cantidades por hora:

1) Contabilidad 61.25 pesos p/hora 2) Producción 22.45 pesos p/hora

Además la empresa otorga a sus empleados un bono por asistencia según el reporte de asistencias del último año

0 (cero) faltas...185.00 pesos adicionales 2 faltas...90.00 pesos adicionales 3 faltas...30.00 pesos adicionales

(13)

B DESARROLLO DE LA PRÁCTICA Más de 3 faltas no recibe bono por asistencia

El programa deberá preguntar:

El departamento en que trabaja en el empleado (1 =contabilidad ó 2 =producción), el número de faltas que tiene en el último año trabajado y horas trabajadas por semana.

Después de pedir esta información el programa calculará el sueldo integrado del empleado, que se obtendrá de la siguiente manera:

sueldo_neto= (horas_trabajadas*sueldo_diario) sueldo_integrado=sueldo_neto+bono_por_asistencia Finalmente mostrara un reporte como el siguiente:

Sueldo neto...:xxxxx.xx Bono por asistencia...:xxxxx.xx Sueldo integrado...:xxxxx.xx

2. Un almacén de alimentos, atendiendo al monto anual que los clientes compran al almacén, los clasifica y les otorga descuentos permanentes según la tabla que se muestra a continuación:

a.- Cliente Preferente

recibe el 5% de descuento en montos menores a 500.00 pesos recibe el 10% de descuento en montos de 500.00 pesos o más

b.- Cliente especial

recibe el 2% de descuento en montos menores a 500.00 pesos recibe el 5% de descuento en montos de 500.00 pesos o más

(14)

B DESARROLLO DE LA PRÁCTICA c.- Cliente Ordinario

no recibe descuento

El programa deberá preguntar la clasificación del cliente y el monto a pagar, posteriormente mostrará un reporte como el siguiente:

Monto a pagar...:xxxxx.xx Descuento...:xxxxx.xx TOTAL con descuento...:xxxxx.xx

3. Una empresa familiar de zapatos, fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta:

1.- Modelo Ejecutivo...345.50 2.- Modelo Premier...298.70 3.- Modelo Emperador...246.00

Los 3 modelos son fabricados únicamente en talla 8. La empresa planea fabricar los tres modelos también en tallas 9 y 10, y desea un programa que calcule los precios de venta para estas nuevas tallas. Se sabe que por cada número que se aumente en la talla del zapato, su precio de venta deberá incrementarse 10 pesos, esto significa que si el modelo Emperador cuesta 246.00 pesos en medida número 8, su costo en número 9 será 256.00 y en 10 es 266.00

Escribe un programa que pida el modelo del zapato (a, b ó c) y la medida (8,9 ó 10) e imprima en pantalla su precio de venta correspondiente.

4. Una asociación de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada, de los siguientes 3 niveles:

(15)

B DESARROLLO DE LA PRÁCTICA a) Primaria...beca básica=300.00

b) Secundaria...beca básica=600.00 c) Preparatoria...beca básica=900.00

Adicionalmente se suman las siguientes cantidades a la beca básica dependiendo del estado de la vivienda en la que habita el estudiante.

1) Su familia vive en casa propia...= no se incrementa su beca básica.

2) Su familia renta casa...= se suman 100.00 pesos a su beca básica.

3) Vivienda irregular, sin servicios..= se suman 200.00 pesos a su beca básica.

Escribe un programa que pregunte el nivel del estudiante:

( a)primaria, b)secundaria ó c)preparatoria)

Pregunte también la condición de la vivienda que el estudiante habita:

(1) casa propia, 2)casa rentada ó 3)vivienda irregular, sin servicios) Posteriormente muestre en pantalla el monto total de su beca.

1. Escribe un programa que muestre nombres propios para hombre o mujer, cuya primer letra sea una vocal, esto es, el programa deberá pedir la Vocal con la que se desea el nombre (a, e, i, o, u), y preguntar si se desea nombre para hombre o para mujer (1.- hombre, 2.- mujer), posteriormente mostrará el nombre que corresponda a esa selección, los nombres propuestos son:

Alberto...Ángela Ernesto...Emilia Imanol....Isis Octavio...Oralia

(16)

C CÁLCULOS Y REPORTE

El maestro le pedirá de forma individual que ejecute los programas que se realizaron en la practica y le preguntará acerca del desarrollo de los mismos.

Conteste las siguientes preguntas:

1. Cuándo una estructura if debe llevar llaves { } ?

2. Qué sucede en una estructura switch cuando colocamos cualquier sentencia entre el switch( ) y el primer case, o entre un break y un case?

3. Qué sucede en un estructura switch() cuando no ponemos los break?

4. Para qué se utiliza la opción -l del compilador gcc ?

5 RESULTADOS Y CONCLUSIONES

En cada uno de los problemas propuestos, se recomienda, hacer una prueba de escritorio, con algunos valores de entrada predeterminados, y observar los resultados obtenidos, para posteriormente comprobarlos en el momento de ejecutar el programa

6 ANEXOS

Referencias

Documento similar

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

95 Los derechos de la personalidad siempre han estado en la mesa de debate, por la naturaleza de éstos. A este respecto se dice que “el hecho de ser catalogados como bienes de

Separa y escribe en los recuadros las sílabas de cada dibujo y en la línea derecha coloca el nombre de la palabra según el número de sílabas que tienen.. Pronuncia las palabras,

A continuación, el médico evaluará su capacidad para ver letras o símbolos a distancia y examinará el interior de los ojos para detectar derrames de los vasos sanguíneos..

¿Cómo el sector veterinario en la ciudad de Tijuana Baja California pude desarrollar su competitividad en base al crecimiento de tenencia de mascotas no convencionales?.

La oferta existente en el Departamento de Santa Ana es variada, en esta zona pueden encontrarse diferentes hoteles, que pueden cubrir las necesidades básicas de un viajero que

37 El TPI, en los fundamentos jurídicos del 149 al 154 de la sentencia «Virgia- micina», examinó las dos actividades complementarias que integran la evaluación de riesgos: