Página 1 de 9 Fundamentos de Programación 2007 UNIDAD 3 ESTRUCTURAS DE CONTROL Prof. Gerardo Sas. Respuestas a los ejercicios de la Guía Nº 3
Ejercicio 3.1. Realice un seguimiento (prueba de escritorio) del algoritmo siguiente para cada uno de los juegos de datos propuestos: Proceso Ejer1 Leer a, b, c; Si c = 0 entonces Escribir 'División por cero' sino r ← a / c; t ← b * c; v ← r - t; Escribir 'v=', v; FinSi FinProceso a) Datos: 120, 80, 2 b) Datos: 0, 4, 1 c) Datos: 45, 92, 0
A
B 120 0 45
C 80 4 92
R 2 1 0
T 60 0
160 4
V -100 -4
Ejercicio 3.2. Dada la función arbitraria siguiente, escribir un algoritmo que calcule e resultado de la función para un valor de x de la variable independiente ingresarse como dato.
Proceso E3.2; Escribir “Ingrese X: ” ; Leer X; //X servirá para evaluar el valor de Y Si X < 1 entonces //Estructura condicional Y<- X ^ 2 Sino Y<- X+3; Finsi; Escribir Y; FinProceso.
x 2 si x < 1 = x + 3 si x >= 1
informe el que debe
Página 2 de 9 Ejercicio 3.3.
Se ingresa un número entero como dato. Determine par o impar e informe un mensaje alusivo.
si es
Proceso E33 Escribir “Ingrese X: ” ; Leer X; Si (X/2) = Trunc(X/2) entonces Escribir “Es par” Sino Escribir “Es Impar” Finsi FinProceso Ejercicio 3.4. Ingresar 3 valores numéricos y determinar e informar el mayor.
Proceso E34 Escribir "Ingrese 3 valores numericos "; Leer A, B, C; Si A < B entonces Aux <- A; A <- B; B <- Aux; Finsi Si A < C entonces Escribir "El mayor es ",C Sino Escribir "El mayor es ",A; Finsi FinProceso Prueba de escritorio para (1,2,3), (2,1,3), (1,3,1).
A 1 2 2 2 3
B 2 1 1 3 2
C 3 3 1
Aux 1
Salida 3 3
2 3
Página 3 de 9 Ejercicio 3.5. Ingresar como datos los tres lados de un triángulo rectángulo. Estos datos se leen sin ningún orden. Determinar si los datos corresponden a ese tipo de triángulo. En caso de que no tratarse de un triángulo rectángulo indicar un mensaje alusivo; si lo es calcular e informar su área.
Proceso E35 Escribir "Ingrese 3 valores numericos (1,2,3 / 3,4,5) "; Leer A, B, C; Si A < B entonces Aux <- A; A <- B; B <- Aux; Finsi Si A < C entonces Hip <- C; Cat1 <- B; Cat2 <- A; Sino Hip <- A; Cat1 <- B; Cat2 <- C; Finsi Si (Hip^2) = (Cat1^2 + Cat2^2) entonces Escribir "Los datos pertenecen a un Triangulo Rectangulo"; Escribir "Sup= ",(cat1*cat2/2) Sino Escribir "Los datos NO pertenecen a un Triangulo Rectangulo" Finsi FinProceso Ejercicio 3.6. Resuelva el siguiente problema empleando la estructura iterativa Mientras-Hacer. Emplee pseudocódigo y diagrama de flujo. Problema: En un curso de cierta universidad se desea determinar cuantos estudiantes varones superan la altura 1.90 m y cuantas mujeres superan 1.75m. Se leen como datos el sexo y la altura de los 112 integrantes del curso.
Proceso E36 Cv<- 0; Cm<- 0; Ca<- 0; Mientras (Ca<5) hacer //Tendria que ser 112 Escribir "Ingrese Sexo y Altura: "; Leer S,A; Si ((S = "M") & (A>1.90)) entonces //M Masculino (El & es el Y logico /\) Cv <- Cv +1 Sino
Página 4 de 9
Si ((S='F') & (A>1.75)) entonces //F Femenino Cm <- Cm +1; Finsi Finsi Ca<- Ca+1; Finmientras Escribir "Varones con mas de 1.90 ", Cv; Escribir "Mujeres con mas de 1.75 ", Cm; Finproceso Ejercicio 3.7. Resuelva el problema anterior considerando que la cantidad de estudiantes es desconocida. La entrada de datos termina con la altura cero.
Proceso E37 Cv<-0; cm<-0; Escribir "Ingrese Altura: "; Leer A; Mientras (A < > 0) hacer Escribir "Ingrese Sexo: "; Leer S; Si ((S="M") /\ (A>1.90)) entonces CV <- CV +1 Sino Si ((S="F") /\ (A>1.75)) entonces Cm <- Cm +1 Finsi Finsi Escribir "Ingrese Altura: "; Leer A; Finmientras Escribir "Varones con mas de 1.90 ", cv; Escribir "Mujeres con mas de 1.75 ", cm; Finproceso Ejercicio 3.9. Resuelva el siguiente problema empleando pseudocódigo.
Problema: En cierta carrera universitaria la asignatura Algebra está organizada en 5 comisiones de 24 alumnos cada una. Se ingresa por cada alumno la calificación obtenida en una evaluación parcial y el número de comisión al que pertenece. Estos pares de datos llegan sin orden alguno. Informe el promedio de cada comisión.
Proceso E39 C1<-0; C2<-0;
Página 5 de 9
C3<-0; C4<-0; C5<-0; Ca<-0; Mientras (Ca < 5) hacer //Tendria que ser 120 Escribir "Ingrese Nota y Comision: "; Leer N, C; Ca <- Ca+1; Segun (C) hacer 1: C1<- C1+N; 2: C2<- C2+N; 3: C3<- C3+N; 4: C4<- C4+N; 5: C5<- C5+N; Finsegun Finmientras Escribir "Promedio de la comision N 1: ", c1/24; Escribir "Promedio de la comision N 2: ", c2/24; Escribir "Promedio de la comision N 3: ", c3/24; Escribir "Promedio de la comision N 4: ", c4/24; Escribir "Promedio de la comision N 5: ", c5/24; FinProceso Ejercicio 3.10. Resuelva el siguiente problema empleando diagrama de flujo. Problema: considere el enunciado del ejercicio anterior. Se desea lograr la misma salida (promedio de cada comisión) para la materia Inglés. Esta tiene 4 grupos o comisiones, pero se desconoce el número de alumnos por comisión. Los datos terminan con la calificación cero y el número de comisión cero.
Proceso E310 C1<-0; Ca1<-0; C2<-0; Ca2<-0; C3<-0; Ca3<-0; C4<-0; Ca4<-0; Escribir "Ingrese Nota y Comision: "; Leer N, C; Mientras ((N<>0) & (C<>0)) hacer Segun (C) hacer 1: C1<- C1+N; Ca1<- Ca1+1; 2: C2<- C2+N; Ca2<- Ca2+1; 3: C3<- C3+N; Ca3<- Ca3+1; 4: C4<- C4+N; Ca4<- Ca4+1;
Página 6 de 9
Finsegun Escribir "Ingrese Nota y Comision: "; Leer N, C; FinMientras Escribir "Promedio de la comision N 1: ", c1/ca1; Escribir "Promedio de la comision N 2: ", c2/ca2; Escribir "Promedio de la comision N 3: ", c3/ca3; Escribir "Promedio de la comision N 4: ", c4/ca4; FinProceso Ejercicio 3.11. En el recuadro de la derecha se plantea un algoritmo mediante un diagrama de flujo. a) Escriba el mismo algoritmo empleando pseudocódigo. b) Realice un seguimiento del algoritmo con los datos: 12, 28, 67, 10, 31, 29, 62 c) Modifique el algoritmo sustituyendo la estructura de control repetitiva por otra similar de modo de obtener la misma información de salida; y realice el un seguimiento con el mismo juego de datos del ejercicio (b) para verificar su diseño. d) Proponga un enunciado que tenga por solución el algoritmo planteado. a) Pseudocódigo.
Proceso E311a C <- 0; Suma <- 0; Repetir Escribir "Ingrese x: "; Leer X; C <- C+1; Si ((X/2) = Trunc(X/2)) entonces Suma <- Suma + X Finsi Hasta que (C = 7) Escribir "Suma = ", Suma; Finproceso b) Prueba de Escritorio para los datos 12, 28, 67, 10, 31, 29, 62.
X 12 28 67 10 31 29 62
C 1 2 3 4 5 6 7
c) otra estructura repetitiva. Mientras Hacer:
Proceso E311b
SUMA 12 40
SALIDA
50 112
Suma = 112
Página 7 de 9
C <- 0; Suma <- 0; Mientras C < 7 hacer Escribir "Ingrese X: "; Leer X; C <- C+1; Si ((X/2) = Trunc(X/2)) entonces Suma <- Suma + X Finsi FinMientras Escribir "Suma = ", Suma; Finproceso d) Enunciado: Ingrese 7 números y sume los pares.
Ejercicio 3.12. Resolver el problema siguiente empleando la estructura Repetir-Hasta Que. Problema: Ingresar como dato inicial la cantidad C de estudiantes que aprobaron un examen de Física. Si no hubiera aprobados (C=0), emitir el mensaje “Nadie aprobó” ; en otro caso determinar el % de esos estudiantes que obtuvieron 9 o más de calificación.
Proceso E312 Contador <- 0; CA<- 0; Escribir "Ingrese C: " ; Leer C; Si (C=0) Entonces Escribir "Nadie Aprobo" Sino Repetir Escribir "Ingrese Nota: " ; Leer N; Si N >= 9 entonces Contador <- Contador +1 Finsi CA <- CA+1; Hasta Que (CA = C) Si (Contador = 0) entonces Escribir "Ningun Alumno Obtuvo 9 o mas" Sino Escribir " Porcentaje de alumnos que aprobaron con 9 o mas:", Contador*100/C; Finsi Finsi FinProceso
Página 8 de 9 Ejercicio 3.13. Resolver el problema que sigue mediante un diagrama de flujo.Problema: Ingresar como datos N valores numéricos. Determinar e informar el mayor.
Proceso E313 C <- 0; Escribir "Ingrese N: " ; Leer N; Escribir "Ingrese Dato: " ; Leer Ma; //Leo el primer dato y lo tomo como Mayor Mientras (C < (N-1)) hacer Escribir "Ingrese Dato: " ; Leer X; Si (X > Ma) entonces Ma <- X; Finsi C <- C+1; FinMientras Escribir "Mayor:", ma; FinProceso. Ejercicio 3.14. Problema: Ingresar un número natural N como dato. Determinar e informar el factorial del número.
Proceso E314 C <- 0; F <- 1; Escribir "Ingrese N: " ; Leer N; Mientras (C < N) hacer C <- C+1; F <- F*C; FinMientras Escribir "Factorial ", F ; FinProceso Ejercicio 3.15. Problema: Ingresar una lista de alumnos (apellido y nombres) con sus correspondientes edades. Determinra e informar las edades y nombres de los 2 mayores.
Proceso E315 C <- 1; E2 <- 0; Escribir "Ingrese N: " ; Leer N; Escribir "Ingrese Nombre y Edad: " ;
Página 9 de 9
Leer N1,E1; Mientras (C <(N-1)) Hacer Escribir "Ingrese Nombre y Edad: " ; Leer N, E; Si (E > E1) entonces E2 <- E1; N2 <- N1; E1 <- E; N1 <- N; Sino Si (E > E2) entonces E2 <- E; N2 <- N; Finsi Finsi C <- C+1; FinMientras Escribir "Mayor 1: ", E1," Nombre: ",N1; Escribir "Mayor 2: ", E2," Nombre: ",N2; FinProceso
Fundamentos de Programación 2007 JTP Prof. Gerardo Sas Email
[email protected]