Ayuda en Pascal

Pues eso, todos los comentarios que no tienen cabida en ninguno de los otros foros, postéalos aquí.

Moderadores: Shimbe, fran_friki

Ayuda en Pascal

Nuevo mensajepor Zheg el 07 Abr 2011 07:56

Hola peasistas, vengo a pedir ayuda sobre este tema. Nesecito saber cómo se le hace para que cuando el usuario escriba "1" haga el área de un cuadrado y al escribir "2" haga el área de un triangulo.
En taller de informatica vino este problema en un examen, el profesor dijo que me salió correctamente pero quiero saber si existe otra forma de hacerlo. No sé si me expliqué bien.

Como yo lo hice en el examen:
Código: Seleccionar todo
Program cuadrado_o_triangulo;
Uses
   wincrt;
Var
   b : real;
   l : real;
   h : real;
   a : real;
   x : real;
Begin
   writeln('Si quieres cuadrado, presiona 1, si quieres triangulo, presiona 2');
   readln(x);
   if numero = 1 then
      Begin
      writeln('Dame la medida de un lado');
      read(l);
      a:= l*l;
      writeln(a);
      end
   else
      Begin
      writeln('Dame la base');
      readln(b);
      writeln('Ahora dame la altura');
      readln(h);
      a:= b*h/2;
      writeln(a);
      end
end.
Última edición por Zheg el 08 Abr 2011 09:26, editado 3 veces en total
Avatar de Usuario
Zheg
Usuari@ Habitual
Usuari@ Habitual
 
Mensajes: 508
Registrado: 23 Ene 2011 05:14
Ubicación: México
Sexo: Hombre
Juego favorito: Pang!

Re: Ayuda en Pascal

Nuevo mensajepor NoZKeY el 07 Abr 2011 18:23

Nunca en mi vida he usado este lenguaje pero se ve bastante simple y similar a lo que he usado mucho tiempo para hacer juegos..

Bueno.. para qué quieres otra forma de hacerlo? xD Se ve bien así. Pero lo que no entiendo es qué haces con esa area, no debería imprimirla en pantalla también? Me imagino que poniendo al final:

writeln(area1);

Un pequeño arreglo que le haría al código, es borrar la variable "area2", porque si te fijas usas una sola área, ya sea del cuadrado o del triángulo, la otra variable no la usas, entonces puedes ahorrar memoria y usar una sóla llamada "area".. entonces reemplazas todos los area1 y area2 por area.. y claro borras el area2 al comienzo.

Además ese código no tiene un error? Porque hay un If .. Else, pero no tiene End?

Bueno espero que te sirva, y obviamente todo lo que dije lo estoy deduciendo de mirar el código xD
Avatar de Usuario
NoZKeY
Usuari@ Expert@
Usuari@ Expert@
 
Mensajes: 2108
Registrado: 08 Dic 2008 18:26
Ubicación: W er
Sexo: Hombre
Juego favorito: DKC3

Re: Ayuda en Pascal

Nuevo mensajepor Zheg el 07 Abr 2011 21:16

NoZKeY escribió:...Pero lo que no entiendo es qué haces con esa area, no debería imprimirla en pantalla también? Me imagino que poniendo al final: writeln(area1);...

Básicamente cuando se termina la operación matematica se manda el resultado a la pantalla, aunque para evitar errores se puede utilizar el comando de writeln(area1); :D Gracias

NoZKeY escribió:Además ese código no tiene un error? Porque hay un If .. Else, pero no tiene End?

Ahi es donde tambien me entra la duda. Cuando se inicia el if se pueden hacer varias cosas, yo puse el otro begin para no tener problemas al momento de sacar el área. El problema es cuando se acaba el if o el else, no sé si terminarlo con end; o end. Se ma hace que es más probable que termine en end; si no se daria por terminado el programa.

PD: Gracias por lo de el area1, no se me había pasado por la cabeza usar menos variables XD
Avatar de Usuario
Zheg
Usuari@ Habitual
Usuari@ Habitual
 
Mensajes: 508
Registrado: 23 Ene 2011 05:14
Ubicación: México
Sexo: Hombre
Juego favorito: Pang!

Re: Ayuda en Pascal

Nuevo mensajepor Shimbe el 07 Abr 2011 22:05

Zheg escribió:El problema es cuando se acaba el if o el else, no sé si terminarlo con end; o end. Se ma hace que es más probable que termine en end; si no se daria por terminado el programa.

Pero como no hay más código después del cálculo, ahorras ciclos de procesador si terminas el mismo con un (end.). No tiene sentido esperar a salir del (if) si ya no vas a hacer nada más ^^

Ahora, dejando a un lado mejoras visuales y demás adornos, el código base está bien, yo también hubiera usado un (else)... la otra opción sería usar una rutina tipo (do ~ while) para mantener el programa en funcionamiento permanente =O
¡Te invitamos a colaborar con nosotros!
Ayúdanos redactando descripciones, aporta artículos informativos, o crea mapas de tu juego favorito ;)
Avatar de Usuario
Shimbe
Moderador
Moderador
 
Mensajes: 3077
Registrado: 10 Feb 2008 03:52
Ubicación: Chile
Sexo: Hombre
Género favorito: RPG
Juego favorito: Final Fantasy VI

Re: Ayuda en Pascal

Nuevo mensajepor Mike_ el 08 Abr 2011 04:48

Hay una cosa. Si escribes cualquier numero que no sea 1, hará el área del triángulo. Entonces usa otro if después del else. De esa manera, las opciones quedan restringidas a "1" y "2".

Por supuesto, es sólo un error lógico, no de programación, el programa de todas maneras servirá... Pero imagina que escribo por error 12 (presiono "1", pero se me desliza el dedo y también tecleo el "2"), hará el área del triángulo.
Avatar de Usuario
Mike_
Usuari@ Avanzad@
Usuari@ Avanzad@
 
Mensajes: 1678
Registrado: 09 Ene 2009 06:42
Ubicación: Guatemala
Sexo: Hombre
Género favorito: RPG
Juego favorito: Super Mario Bros. 3

Re: Ayuda en Pascal

Nuevo mensajepor Zheg el 08 Abr 2011 09:22

Ya edité el programa, sólo fueron unos detallitos XD
Ahora en la escuela nos enseñaron lo que es es el for y el do while. El for no recuerdo en que consiste ya que no tomo apuntes, intento memorizar los comandos y sólo me acordé del do while.

Un ejemplo de lo que hice, es un programa para que en la pantalla se muestren números del 1 al 100.
Código: Seleccionar todo
Program 1_100;

Uses
   wincrt;
Var
   x : real;
Begin
   do while x <= 100
      Begin
      x := x + 1;
      writeln(x);
      end
end.

Lo sé, un programa corto, pero fui el primero en terminarlo.

PD: El profesor me anotó algo a un lado después de iniciar el Begin, dice x=0 aunque no le veo importancia.
Avatar de Usuario
Zheg
Usuari@ Habitual
Usuari@ Habitual
 
Mensajes: 508
Registrado: 23 Ene 2011 05:14
Ubicación: México
Sexo: Hombre
Juego favorito: Pang!

Re: Ayuda en Pascal

Nuevo mensajepor Mike_ el 09 Abr 2011 06:16

Es que tienes que darle un valor a tu variable antes de usarla. La computadora no se lo asigna hasta que se lo digas. Entonces, si quieres que escriba desde el 0 hasta el 100, tendrás que decirle que la x es cero al principio. De lo contrario, no sabrá con qué empezar.

Y para aclararte el for, te escribo un código (no sé muy bien la sintaxis de pascal asi que disculpame si me confundo)

Código: Seleccionar todo
Uses
   wincrt;
Var
   x : real;
    Begin
          for(x=0;x<=100;x++)
          writeln(x);
          end
    end.

EDITO:
Explico un poco más a fondo:
Al menos en C, esa es la sintaxis del ciclo for. for(<aqui empieza>;<aqui termina>;<asi cambia la variable>). Traduzco esto al español for(x=0;x<=100;x++) eso sería como decirle a la computadora vas a sumarle uno a x desde que valga cero hasta que valga 100...

Creo que ni yo logro entenderme a mi mismo xDDD. Basicamente usas el ciclo for cuando sabes bien cuando va a empezar y terminar el ciclo, es el ciclo que yo uso más porque es muy práctico. While y do while los uso para hacer que algunas cosas se repitan indefinidamente hasta que cambie cierta variable o cosas por el estilo.

EDITO UNA VEZ MAS:

Sólo quería que quedara claro xDD
Código: Seleccionar todo
Uses
   wincrt;
Var
   x : real;
    Begin
          for(x=100;x>=0;x--)
          writeln(x);
          end
    end.


Este código escribe los numeros del 100 al 0. Fijate los cambios, empieza en 100, termina en 0 y en cada recorrido le disminuye en 1 a la variable x.

Sólo una cosa mas. Con for no escribí el x=0 porque ya está implícito en el ciclo. Pero en el ciclo do while no se especifíca con qué valor empieza la variable en ningún momento, por eso debiste hacer este pequeñísimo cambio, o el programa nunca hubiera servido:

Código: Seleccionar todo
    Program 1_100;

    Uses
       wincrt;
    Var
       x : real;
    Begin
          x=0;
          do while x <= 100
          Begin
          x := x + 1;
          writeln(x);
          end
    end.
Avatar de Usuario
Mike_
Usuari@ Avanzad@
Usuari@ Avanzad@
 
Mensajes: 1678
Registrado: 09 Ene 2009 06:42
Ubicación: Guatemala
Sexo: Hombre
Género favorito: RPG
Juego favorito: Super Mario Bros. 3

Re: Ayuda en Pascal

Nuevo mensajepor Zheg el 09 Abr 2011 07:10

Gracias, Mike, pero el for tengo grabado en mi memoria más o menos su estructura y no se parece casi en nada al de C :lol:

Un ejemplo (No sé. Esto es más o menos lo recuerdo del pizarrón)
Código: Seleccionar todo
Program 1_100;
Uses
   wincrt;
Var
   x : real;
Begin
   x=0;
   for x to = 100;
   writeln(x);
end.


No recuerdo bien, pero parace que asi es :P
Avatar de Usuario
Zheg
Usuari@ Habitual
Usuari@ Habitual
 
Mensajes: 508
Registrado: 23 Ene 2011 05:14
Ubicación: México
Sexo: Hombre
Juego favorito: Pang!


Volver a Off-Topic

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 39 invitados