Pascal/Turbo Pascal - Ayuda con anidaciones IF

 
Vista:

Ayuda con anidaciones IF

Publicado por Juan (1 intervención) el 10/07/2009 08:39:22
Buenas! Estoy aprendiendo hace poco pascal, y intenté hacer un programa que, cuando el usuario introduce 3 números, saca el mayor y menor y los imprime en pantalla

Yo hize ésto:

program mayorymenor;

var

num1 : integer;
num2 : integer;
num3 : integer;

begin

write ('introduzca el primer número');
readln (num1);
write ('introduzca el segundo número');
readln (num2);
write ('introduzca el tercer número');
readln (num3);

if num1 > num2 then
if num1 > num3 then
write ('el mayor es:', num1);
if num2 > num3 then
write ('el menor es:', num3);
else
write ('el menor es:', num2);
else
write ('el mayor es:', num3);
write ('el menor es:', num2);
else
if num2 > num3 then
write ('el mayor es:', num2);
if num3 > num1 then
write ('el menor es:', num1);
else
write ('el menor es:', num3);
else
write ('el mayor es:', num3);
write ('el menor es:', num1);

end.


Pero al compilar me dice:

(23,3) Fatal syntax error, ";" expected but "ELSE" found.

Cuál es mi problema y cómo lo soluciono? :S

Cada else y cada oracion que corresponde a cada if las puse con la misma sangría.

gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con anidaciones IF

Publicado por Miguel (159 intervenciones) el 10/07/2009 09:05:50
¿Quien no tuvo problemas con las anidaciones de los IF?, jejeje. Bueno este problema es algo comun. Para evitarlos te recomiendo que cuando escribas un IF THEN ELSE, lo primero que debes hacer es en una linea escribir IF <condicion> luego debajo THEN y por debajo de este ELSE y por debajo END; , luego te encargas de escribir el cuerpo del IF... pero primero has eso de esta forma evitas de olvidate ELSE y el END; final. Por que es comun al anidar escribir IF luego THEN y luego empiezas con la anidacion del proximo IF y ahi te olvidas de poner el primer ELSE, no se si se entiende mi consejo.
Ahora tu problema es que antes de un ELSE no puede haber un ; . Sacalo y corrige el resto del programa, tal vez te conviene comenzar de nuevo.
Otro detalle es que cuando escribes dentro de un THEN mas de una accion, todo ese bloque debe ir dentro de un BEGIN END, por que si no pascal tomara en cuenta solo la primer acción.
Veamos unos ejemplos de como escribir los IF:

Forma correcta con una sola acción:

IF <condicion>
THEN
<accion>
ELSE
<accion>
END;

Otra forma de escribir el mismo codigo:

IF <condicion>
THEN
<accion>
ELSE
<accion>;

Forma incorrecta con una sola acción:

IF <condicion>
THEN
<accion>; { aca esta el error }
ELSE
<accion>
END;

Forma correcta con mas de una acción:

IF <condicion>
THEN BEGIN
<accion>;
<accion2>;
<accion3>;
END
ELSE BEGIN
<accion>;
<accion2>;
<accion3>;
END;
END;

Otra forma del mismo codigo:

IF <condicion>
THEN BEGIN
<accion>;
<accion2>;
<accion3>;
END
ELSE BEGIN
<accion>;
<accion2>;
<accion3>;
END;

Forma incorrecta con mas de una acción:

IF <condicion>
THEN
<accion>;
<accion2>;
<accion3>
ELSE
<accion>;
<accion2>;
<accion3>;
END;

Bueno espero que te haya servido, y si alguien encuentra un error o algun otro dato que falte que diga, por que cada lenguaje tiene lo suyo y lo mas probable es que alguna vez me confunda con otro lenguaje jeje. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con anidaciones IF

Publicado por juan (159 intervenciones) el 10/07/2009 22:51:31
ahora pruebo a ver
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar