Resumen Con Pruebas de Escritorio
Resumen Con Pruebas de Escritorio
Resumen Con Pruebas de Escritorio
Ejercicio
Un programa que permita leer una serie de números positivos hasta que un valor de cero sea
leído. Además, determinar la cantidad de números diferentes de cero que fueron leídos, al
mayor número leído, el menor número leído y el promedio de todos los números leídos
diferentes de cero. Por último, realizar la prueba de escritorio.
Promedio= X1+X2+X3+…….Xn
n
Programa SERIE;
Var
CONTA: Entero;
NUMERO, PROMEDIO, MAYOR, MENOR, SUMA: Real;
Inicia SERIE
Escribir (‘Ingrese un número positivo <<Con 0 Termina>>: ‘);
Leerysaltar (NUMERO)
MAYORNÚMERO;
MENORNÚMERO;
CONTA1
SUMANUMERO;
Mientras NUMERO<> 0 Hacer
Proceso LECTURA
Escribir (‘Ingrese otro número positivo <<Con 0 Termina>>:’);
Leerysaltar (NUMERO);
Si NUMERO >0 Entonces
Proceso CÁLCULO
CONTACONTA +1;
SUMASUMA+NÚMERO;
Si NUMERO> MAYOR Entonces
MAYORNÚMERO;
Si NUMERO<MENOR Entonces
MENORNÚMERO;
Fin Proceso CÁLCULO
Fin Proceso LECTURA;
Si SUMA <> 0 Entonces
Proceso IMPRESIÓN
PROMEDIOSUMA/CONTA;
Escribirysaltar (‘El número menor es: ‘, MENOR);
Escribirysaltar (‘El número mayor es: ‘, MAYOR);
Escribirysaltar (‘Fueron Leídos ’, CONTA,
‘números’);
Escribirysaltar (‘El promedio es: ‘, PROMEDIO)
Fin Programa SERIE.
3. En la tercera lectura NUMERO que está dentro del lazo, en la segunda pasada, se
tendrá los valores:
NUM CONTA MAYOR MENOR SUMA PROMEDIO
2 1 2 2 2
3 2 3 5
6 3 6 11
4. En la cuarta lectura de la variable NUMERO que está dentro del lazo, en la tercera
pasada, se tendrá los valores:
NUM CONTA MAYOR MENOR SUMA PROMEDIO
2 1 2 2 2
3 2 3 5
6 3 6 11
1 4 1 12
5. En la quinta lectura se lee el valor de 0 en la variable NUMERO que está dentro del
lazo, en la cuarta pasada, por lo que al no cumplir las instrucciones Si NUMER>0
Entonces y Mientras NUMERO <>0 Hacer, termina el lazo y calcula el promedio de
los números ingresados, que es igual3. Por lo que el programa está correcto.
2.7. EJERCICIOS
1). Realizar un programa que permita detectar entradas erróneas en el ingreso de números
enteros. Esta detección de números no enteros se realiza con la utilización de un “interruptor”,
el cual se inicia en 0 antes de entrar a un lazo en donde se va realizar la lectura del entero;
cambiando a 1 cuando se haya leído correctamente el entero, momento en que termina la
lectura. Si el número leído no es un entero este no es tomado en cuenta, volviéndose a realizar
una nueva lectura. Para determinar si un número es entero utilizar la función interna ENT.
Programa ENTEROS_ERRONEOS;
Var
SW, NUM: Entero;
NUMERO: Real;
Inicia ENTEROS_ERRONEOS
SW0
Mientras SW=0 Hacer
Proceso SW=0 Hacer
Escribir (‘Ingrese un número entero: ‘);
Leerysaltar (NUMERO):
Si NUMERO <> ENT (NUMERO) Entonces
Escribirysaltar (‘Dato ni valido’)
Caso_contrario
SW1
Fin Proceso VALIDAR;
NUM TRUNCA (NUMERO);
Escribirysaltar (‘El entero ingresado es: ‘, NUM)
Fin Programa ENTEROS_ERRONEOS.
Prueba de escritorio
Consola:
Memoria:
# Entero
3.14
5
Programa TABLA_MULTIPLICACION;
Var
PRODUCTO, TAM, FILA, I, J: Entero;
Inicia TABLA_MULTIPLICACION;
Escribir (‘Ingrese el tamaño de la tabla: ‘);
Leerysaltar (TAM);
Escribir (‘Ingrese el número de multiplicandos: ‘);
Leerysaltar (FILA);
Para I 1 a TAM Hacer
Proceso TABLA
Escribirysaltar (‘Tabla del ‘, I, ‘:’);
Para J1 a Fila Hacer
Proceso FILA_I
PRODUCTOI*J;
Escribirysaltar (I, ‘x’, ‘J,’ =’, PRODUCTO)
Fin Proceso FILA_I
Escribirysaltar
Fin Proceso TABLA
Fin Programa TABLA_MULTIPLICACION.
Var
NOMBRE: Cadena;
COE1, COE2, COE3, PROM, PROM_GENERAL: Real;
CONTA: Entero;
Inicia PROMEDIOS
Escribir (‘Ingrese el nombre del estudiante<< FIN Termina>>:’);
Leerysaltar (NOMBRE);
CONTA 0;
PROM_GENERAL 0;
Mientras NOMBRE<> ‘FIN’ Hacer
Proceso CÁLCULO
Escribir (‘Ingrese coeficiente 1: ‘);
Leerysaltar (COE1);
Escribir (‘Ingrese coeficiente 2: ‘);
Leerysaltar (COE2);
Escribir (‘Ingrese coeficiente 3: ‘);
Leerysaltar (COE3);
PROM (COE1+COE2*2+COE3*3)/6;
PROM_GENERAL PROM_GENERAL+PROM;
CONTA CONTA+1
Escribirysaltar (‘El estudiante: ‘, NOMBRE);
Escribirysaltar (‘Nota de coeficiente 1: ‘, COE1);
Escribirysaltar (‘Nota de coeficiente 2: ‘, COE2);
Escribirysaltar (‘Nota de coeficiente 3: ‘, COE3);
Escribirysaltar (‘EL Promedio es: ‘, PROM);
Escribirysaltar;
Escribir (‘Ingrese nombre de otro estudiante<< FIN Termina>>:’);
Leerysaltar (NOMBRE)
Fin Proceso CÁLCULO;
Si CONTA<>0 Entonces
Proceso IMPRIMIR
PROM_GENERAL PROM_GENRAL/ CONTA;
Escribirysaltar (‘El promedio general del curso es: ‘, PROM_GENERAL)
Fin Proceso IMPRIMIR
Fin Programa PROMEDIOS.
Una salida del programa podría ser:
Ingrese el nombre del estudiante <<FIN Termina>>: Luis Páez
Ingrese coeficiente1: 16
Ingrese coeficiente2: 10
Ingrese coeficiente3: 20
El estudiante: Luis Páez
Nota de coeficiente 1: 16.00
Nota de coeficiente 2: 10.00
Nota de coeficiente 3: 20.00
El promedio es: 16.00
Ingrese nombre de otro estudiante <<FIN Termina>>: FIN
El promedio general del curso es: 16.00
Prueba de escritorio
Consola:
Ingrese el nombre del estudiante <<FIN Termina>>: Luis Páez
Ingrese coeficiente1: 16
Ingrese coeficiente2: 10
Ingrese coeficiente3: 20
El estudiante: Luis Páez
Nota de coeficiente 1: 16.00
Nota de coeficiente 2: 10.00
Nota de coeficiente 3: 20.00
El promedio es: 16.00
Ingrese nombre de otro estudiante <<FIN Termina>>: FIN
El promedio general del curso es: 16.00
Memoria:
nombre del estudiante <<FIN Termina>> coeficiente
Luis Páez 16
10
20
12) Ingresar un número entera positivo para obtener sus factores primos y probar el resultado.
Validar el ingreso del dato.
Por ejemplo: Si se ingresa el número 36, sus factores primos son:
36 2
18 2
9 3
3 3
1
Se multiplican los factores primos:
2*2*3*3=36
Programa FACTORES;
Var
NÚMERO, NUM, FACT, PRODUCTO: Entero;
Inicia FACTORES
Repetir
Escribir (‘Ingresar un número: ‘);
Leerysaltar (NUMERO)
Hasta_que NUMERO>0;
NUM NÚMERO;
FACT2;
PRODUCTO1;
Escribirysaltar (‘Los factores primos son: ‘);
Repetir
Si NUM MOD FACT= 0 Entonces
Proceso FACTORES_PRIMOS
NUM NUM DIV FACT;
Escribirysaltar (FACT);
PRODUCTO PRODUCTO*FACT
Fin Proceso FACTORES_PRIMOS
Caso_contrario
FACTFAC+1;
Hasta_que FACT > NUM;
Escribirysaltar (NUMERO, ‘=’, PRODUCTO)
Fin Programa FACTORES.
Memoria:
Número
36
16) Realizar un algoritmo para resolver un sistema de dos ecuaciones lineales con dos
incógnitas. El algoritmo debe de verificar que no se produzca división por cero.
ax + by = c
dx + ey = f
Programa SISTEMA_LINEAL
Var
A, B, C, D, E, F, DEN, X, Y: Real;
Inicia SISTEMA LINEAL
Escribir (‘Ingrese coeficientes (a, b, c) de la ecuación 1, separado con un espacio:’);
Leerysaltar (A, B, C);
Escribir (‘Ingrese coeficientes (d, e, f) de la ecuación 2, separado con un espacio:’);
Leerysaltar (D, E, F);
DEN ← A*E-B*D
Si DEN <> 0 Entonces
Proceso SOLUCION
X ← (C*E-B*F) / DEN;
Y ← (A*F-C*D) / DEN;
Escribirysaltar (‘Coeficientes de la primera ecuación:’);
Escribirysaltar (‘A=’, A, ’B = ‘, B,’C = ‘, C);
Escribirysaltar (‘Coeficientes de La segunda ecuación:’);
Escribirysaltar (‘D = ‘, D, ‘E = ‘, E, ‘F = ‘, F);
Escribirysaltar (‘Solución:’);
Escribirysaltar (‘X = ‘, X, ’Y = ‘, Y);
Fin proceso SOLUCION
Caso_contrario
Escribirysaltar (‘Se produce división por cero, no hay solución’);
Fin programa SISTEMA_LINEAL
Prueba de escritorio
Consola:
Memoria:
A B C D E F X Y
2 3 6 1 3 5 -1 2
20) Una compañía utiliza para fumigar las cosechas contra algunas plagas. Los valores que la
compañía cobra a los granjeros dependen de la plaga que se desea fumigar y del número
de hectáreas de cultivo, de acuerdo a la tabla 2.3.
Realiza un programa que lea la siguiente información: nombre del granjero, tipo de
plaga que se desea fumigar (código entero entre 1 y 4), y el numero entero de
hectáreas del cultivo. El ingreso de los datos termina cuando se lea la palabra ‘FIN’ en
lugar del nombre del granjero.
El programa debe generar una salida como la mostramos a continuación:
(PROG0238)
Programa FUMIGACION;
Var
HECTAREAS, SODIGO, CLIENTES, VALOR: Entero;
CUENTA, TOTAL_DINERO, TOTAL_HECTAREAS, DESCUENTO: Real;
NOMBRE, TIPO: Cadena;
Inicia FUMIGACION
CLIENTE ← 0;
TOTAL_DINERO ← 0;
TOTAL_HECTAREAS ← 0;
Escribir (‘ORD NOMBRE TIPO DE PLAGA AREA DE VALOR POR’);
Escribirysaltar (‘DESCUENTO CUENTA A’);
Escribir (‘CLIENTE (Nombre) CULTIVO Ha.’);
Escribirysaltar (‘PAGAR’)
Repetir
Escribir (Ingrese el nombre del granjero <FIN, Termina>:’);
Leerysaltar (NOMBRE);
Si NOMBRE <> ‘FIN’ Entonces
Proceso INGRESO_IMPRESION
Repetir
Escribir (‘Ingrese el código de fumigación:’);
Leerysaltar (CODIGO)
Hasta_que (CODIGO > 0) Y (CODIGO < 5);
Repetir
Escribir (‘Ingrese el área de fumigación:’);
Leerysaltar (HECTAREA)
Hasta_que HECTAREAS > 0;
Caso CODIGO De
1 : Proceso MALAS_HIERBAS
VALOR ← 10;
TIPO ← ‘Malas hierbas’
Fin proceso MALAS HIERBAS;
2 : Proceso LANGOSTAS
VALOR ← 20;
TIPO ← ‘Langostas’
Fin proceso LANGOSTAS;
3 Proceso GUSANOS
VALOR ← 30;
TIPO ← ‘Gusanos’
Fin proceso GUSANOS;
4 Proceso TODAS
VALOR ← 50;
TIPO ← ‘Todas’
Fin proceso TODAS;
Fin caso;
CUENTA ← HECTAREAS*VALOR;
DESCUENTO ← 0;
Si CUENTA > 150 Entonces;
DESCUENTO ← (CUENTA-DESCUENTO)*0.5+DESCUENTO;
CUENTA ← CUENTA-DESCUENTO;
CUENTA ← CLIENTE +1;
TOTAL_HECTAREAS ← TOTAL_HECTAREA + HECTAREAS;
TOTAL_DINERO ← TOTAL_DINERO+CUENTA;
Escribirysaltar (‘CLIENTE,’ ‘, NOMBRE,’ ‘, TIPO,’ ‘,
HECTAREAS,’ ‘, VALOR,’ ‘, DESCUENTO,’ ‘, CUENTA)
Fin proceso INGRESO_IMPRESION
Hasta_que NOMBRE =’FIN’;
Escribirysaltar (‘Números de clientes: ‘, CLIENTES);
Escribirysaltar (‘Números de hectáreas fumigadas: ‘, TOTAL HECTAREAS);
Escribirysaltar (‘Total de dinero en dólares: ‘, TOTAL_DINERO);
Fin Programa FUMIGACION
Prueba de escritorio
Consola:
Memoria:
CLIENTE CODIGO AREA DOLARES
1 1 20 185.35
2 4 40 1724.25
TOTAL 2 60.00 1909.5
24) Los estudiantes que aspiran a ingresar a una universidad son aceptados de acuerdo a la
calificación obtenida en su grado de bachiller y a la nota obtenida en el examen de ingreso. Si
tiene un promedio de estas notas mayor o igual al 60% del máximo posible ingresa a la
universidad y se establecerá un descuento en el pago de la matrícula de acuerdo a la Tabla 2.4
Promedio Descuento
>= 90 % 50%
>= 80% pero <90% 30%
>= 70% pero <80% 10%
Las lecturas para cada uno de los estudiantes consistirán del: NOMBRE del estudiante, nota
de GRADO y nota de INGRESO; las notas serán sobre 20 puntos. Además, se lee el valor de
la matrícula.
Realizar un programa que lea los datos de cada aspirante y que prepare un reporte como lo
siguiente:
El del ingreso de datos se hará al digitar la palabra ‘FIN’ en lugar del nombre del estudiante.
(*PROG0242*)
Programa UNIVERSIDAD;
Var
NOMBRE: Cadena;
CONT1, CONT2, CONT3, CONT4, GRADO, INGRESO: Entero;
MATRICULA, TOTAL_RECIBIR, DESCUENTOS, PAGAR, PROMEDIO: Real;
Inicia UNIVERSIDAD
Repetir
Escribir (‘Ingrese el valor de la matricula:’);
Leerysaltar (MATRICULA)
Hasta_que MATRICULA > 0;
CONT1 ← 0;
CONT2 ← 0;
CONT3 ← 0;
CONT4 ← 0;
CONTA ← 0;
Escribirysaltar (‘Valor Matricula = ‘, MATRICULA);
Escribir (‘ORD NOMBRE NOTA DE NOTA DE PROMEDIO’)
Escribirysaltar (‘A PAGAR’);
Escribirysaltar (‘GRADO INGRESO % USD’);
TOTAL_RECIBIR ← 0;
Fin Programa UNIVERSIDAD
Prueba de Escritorio:
Consola:
Inserte el nombre del granjero: Katerine Criollo <Enter>
Ingrese el código de fumigación: 1 <Enter>
Ingrese el área a fumigarse: en Ha: 40 <Enter>