[ Foro de Pascal ]
Hola otra vez...
Este ejercicio lo había hecho con un REPEAT...UNTIL. Pero luego lo he cambiado por un WHILE. Pero bueno, es mas o menos igual. Eso sí, le he aplicado un BREAK dentro del ciclo. Aunque no sé si me estirará el profe Nacho de las orejas (por no haberlo dado aún).
{ Ejercicio propuesto 4.1.2.2: Crea un programa que pida al usuario diez
* números enteros, los guarde en un array y luego le vaya preguntando
* qué número quiere buscar de forma repetitiva, y diga si era parte de
* los 10 datos originales o no. Terminará cuando el número introducido
* sea 9999.}
program ejercicio_4_1_2_2;
var
vector : array[1..10] of integer;
num, i : integer;
existe : boolean;
begin
writeln('Escribe 10 numeros...');
for i := 1 to 10 do
readln(vector[i]);
num := 0;
while num <> 9999 do
begin
existe := false;
writeln('Que numero quieres buscar...? ');
readln(num);
if num = 9999 then
break;
for i := 1 to 10 do
if vector[i] = num then
existe := true;
if existe then
writeln('El numero existe...')
else
writeln('No existe el numero...')
end;
end.
Efectivamente, está casi perfecto. Y el "casi" se debe a que hay que evitar el "break" siempre que sea posible, porque rompe el flujo natural del programa, así que disminuye su legibilidad. Y en este caso, es fácil evitarlo: en vez de decir "interrumpe si es 9999" puedes decir "haz esto si no es 9999".
Por cierto, incluiré el "break" en el tema de "for", en vez de en un tema más avanzado, como estaba en la versión anterior del curso, pero recordando que se debe intentar no usarlo.
OK. Tomo nota del consejo. Muchas gracias...
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)