Problema
En los datos de entrada
aparecen una o más calificaciones de estudiantes en la escala de 0 a 100, seguidos del valor
centinela -999. Determinar y mostrar el total de las calificaciones excluyendo,
al centinela.
total:=0;
read(Calif);
WHILE
Calif<>-999 DO
BEGIN
total:=total+Calif;
read(Calif)
END;
Write(´El total de las
calificaciones es´, total:1)
Obsérvese
que se asigna a total el valor inicial 0 antes de la proposición WHILE. Dentro
del cuerpo del ciclo, la proposición.
total:=total+Calif;
Calcula
los totales parciales de las calificaciones
Completa en los espacios con
el identificador o el valor adecuado en el programa siguiente para que también
muestre el promedio de las calificaciones
total:=___; (*dar valor inicial al total de
calificaciones*)
contador:=0; (*contar el número de calificaciones*)
read(Calif); (*capturar la primera calificación*)
WHILE Calif<>____ DO (*probar
el centinela*)
______:=contador+1 (*incrementar el
contador*)
total:=______+Calif; (*sumar la nueva
calificación*)
read(____) (*capturar la siguiente calificación*)
END;
Write(´El total de las calificaciones es´,
total:1´)
(*Calcular
la calificación promedio*)
Promedio:=total/contador;
Writeln(´La calificación promedio
es´,promedio:6:2)
Es posible incluir
expresiones booleanas compuestas en las proposiciones WHILE de Pascal a través
de los operadores booleanos: AND, OR y
NOT. Las variables booleanas se pueden emplear para controlar la ejecución de una proposición WHILE.
Problema
¿Qué sucede si se prueban
todos los enteros entre uno y num no se
encuentra un divisor exacto? La variable indic seguirá teniendo el valor false,
pero será preciso terminar el ciclo. Es necesario probar también el
cumplimiento de esta condición. Por tanto, la expresión booleana que se usará
en la proposición WHILE tendrá dos partes: “NOT ind” y “divisor<num”.
Solución
El siguiente segmento en Pascal muestra la
solución:
read(num);
indic:=false; (*se supone que todavía no hay
divisor exacto*)
divisor:=2; (*se inicia la prueba de división
con 2*)
WHILE NOT
THEN indic AND (divisor<num) DO
BEGIN
indic:=num MOD divisor=0;
divisor:=divisor+1
END;
write(‘El numero’, num:1,’ ‘);
IF indic
THEN
writeln(‘Tiene divisor exacto’)
ELSE writeln(‘no tiene divisor exacto’)
La proposición de asignación
indic:=num MOD divisor=0
No hay comentarios:
Publicar un comentario