SoloCodigo

Programación General => Pascal => Mensaje iniciado por: Luis_1986 en Miércoles 13 de Febrero de 2008, 06:05

Título: Problemas Utilización: Dos "if" Y Un "else"
Publicado por: Luis_1986 en Miércoles 13 de Febrero de 2008, 06:05
Buenas!!

Tengo este codigo, en el cual estoy tratando de ejemplificar el uso del "IF":

PROGRAM prueba;
USES crt;
VAR
      numero:integer;
BEGIN
     clrscr;
     writeln ('Ingrese un número'); readln (numero);

    IF numero<100 THEN
        writeln ('El número es menor a 100');
    IF numero>100 THEN
        writeln ('El número es mayor a 100')
    ELSE
          writeln ('El número es igual a 100');
   
    readln
END.

Deseo ejemplificar el uso del "IF", y segun yo habia aprendido al escribir lo que esta en rojo al ingresar un valor mayor a 100 (ejem. 101) mostraria "El número es mayor a 100"; el otro caso sería si el valor es menor a 100 (ejem. 99) mostraria "El número es menor a 100"; y en el caso del ELSE al ser igual a 100 entonces mostraria "El número es igual a 100".

Bueno aquí viene mi verdadera pregunta.  Porque razón utilizando ese codigo al ingresar un valor menor a 100 me escribe lo que aparece en el primer "IF" y lo que aparece en el "ELSE"?

Pido disculpas si al ingresar el código e faltado a alguna norma del foro, pero no e encontrado información relacionada sobre este problema (se podría decir que el mismo codigo es anticuado) pero ni consultando con compañeros le e encontrado respuesta, espero que ustedes me puedan responder porque pasa eso.

 :blink: Se me olvidaba agregar que el programa lo escribi en Pascal 7.0
Título: Re: Problemas Utilización: Dos "if" Y Un "else"
Publicado por: shakka en Miércoles 13 de Febrero de 2008, 07:21
No tengo compilador a la mano para probarlo, pero recuerdo que era algo asi...

IF numero<100 THEN BEGIN
  writeln ('El número es menor a 100');
END
ELSE BEGIN
  IF numero>100 THEN BEGIN
    writeln ('El número es mayor a 100');
  END
  ELSE BEGIN
    writeln ('El número es igual a 100');
  END
END
Título: Re: Problemas Utilización: Dos "if" Y Un "else"
Publicado por: posman en Miércoles 13 de Febrero de 2008, 16:30
te falta pone un ELSE despues del primer IF

Te deberia quedar algo como lo que pusieron en el mensaje anterior:

Código: Text
  1.  
  2. IF numero&#60;100 THEN
  3.   writeln ('El número es menor a 100');
  4. ELSE &#60;-- te falto este
  5.   IF numero&#62;100 THEN
  6.     writeln ('El número es mayor a 100')
  7.   ELSE
  8.     writeln ('El número es igual a 100');
  9.  
  10.  
Título: Re: Problemas Utilización: Dos "if" Y Un "else"
Publicado por: Luis_1986 en Jueves 14 de Febrero de 2008, 04:42
Le/s agradezco su ayuda con la solucion de este codigo, pues bien, yo quisiera que me resuelvan la siguiente inquietud: por que con el codigo anterior cuando ingreso 99 me tira dos mesanjes: a) "Numero menor a 100"  y B) "numero igual a 100" :( , pues alli lo me tendría que mostrar es solo "numero es menor a 100" no los dos.  

Gracias de antemano!!
Título: Re: Problemas Utilización: Dos "if" Y Un "else"
Publicado por: ProfesorX en Jueves 14 de Febrero de 2008, 23:02
La solucion ya te la dieron, te falta un else, esa es la razon, al faltar el else se toma como 2 if separados, y no anidados, entonces, en el primer if, si el numero es menor, imprime que el numero es menor, y al llegar al segundo if, pregunta si es mayor, y como no es mayor, no imprime el mensaje de "es mayor" PERO como tiene un else, el else del segundo if se cumple si el numero es menor o igual, asi que vuelve a imprimir el mensaje.


Si aun sigues sin entender porque, entonces te recomiendo que estudies sobre los if anidados, y que le preguntes a tu maestro y que te haga una corrida de escritorio, asi comprenderas mejor porque.
Título: Re: Problemas Utilización: Dos "if" Y Un "else"
Publicado por: Luis_1986 en Viernes 15 de Febrero de 2008, 03:28
Gracias!!

:whistling: Pues ignoraba que entonces se volvieran dos "if" separados, siempre pensaba que si incluia varios "if" siempre iban a estar conectados dentro de ellos mismos y que "else" formaria parte de todos los "if" (no se si me di a entender).

Bueno, les agradezco su tiempo, gracias por participar y gracias ProfesorX por aclarame esa parte que no la sabia, lo demás si creo saberlo.