Pascal/Turbo Pascal - Procedure y Case

 
Vista:

Procedure y Case

Publicado por Alberto (6 intervenciones) el 01/05/2008 20:53:53
Hola tengo una pregunta ... tengo mi primer programita en pascal ... pero cuadno quiero ejecutar un procedure dentro de un Case no me deja me tira error de sintaxis ....

quisiera saver si es que se puede usar el Procedure dentro del Case o que opcion me recomendarian ..... aca les dejo parte del programa que arme

la idea es intentar usar el procedure y no usar el Goto ademas que no estoy seguro si me dejara usa el Goto dentrode un Case ... que seria lo mismo que me pasa con el Procedure

procedure pedido;
begin
clrscr;
gotoxy(15,2);writeln(' Bienvenido Introdusca su pedido' );
gotoxy(3,6);writeln('Hamburgesas (1)');
gotoxy(3,8);writeln('Milanesas (2)');
gotoxy(3,10);writeln('Sandwiches (3)');
gotoxy(3,12);writeln('Lomitos (4)');
gotoxy(3,14);writeln('Pizzas (5)');
gotoxy(3,16);writeln('Picadas (6)');
readln(opcion);
case opcion of
1:hamburgesas;
2:milanesas;
3:sandwiches;
4:lomitos;
5:pizzas;
6:picadas;
ELSE WriteLn('El numero no estaba en el rango indicado');
end;

procedure hamburgesas;
begin
clrscr;
gotoxy(15,2);writeln('Hamburgesas');
gotoxt(2,6);writeln('Hamburgesa Comun');
gotoxt(2,8);writeln('Hamburgesa Especial');
gotoxt(2,10);writeln('Hamburgesa Super');
gotoxt(2,12);writeln('Hamburgesa Tortuga');
readln(case_hambur);
case case_hambur of
1:hambur_com
2:hambur_esp
3:hambur_sup
4:hambur_tor
else writeln('El numero no estaba en el rango indicado');
end;
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:Procedure y Case

Publicado por Diego Romero (996 intervenciones) el 02/05/2008 00:45:09
La llamada a un procedimiento debe ser POSTERIOR a su declaración en el código fuente. O dicho de otra manera, no puedes llamar a un procedimiento que TODAVÍA no ha sido declarado.

En tu caso la declaración del procedimiento "hamburguesas" debe estar arriba (ser anterior) a la declaración del procedimiento "pedido".

Un excepción a esto es el caso de llamadas mútuas (A llama a B y B llama a A) en ese caso puedes usar la cláusula forward, pero en el caso que expones no es necesario.
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:Procedure y Case

Publicado por Alberto (6 intervenciones) el 02/05/2008 06:35:08
thx ^^ me sacaste ese problema de ensima ya me tenia pel*** ahora podre terminar esto ^^ ... aver que tal me quedara luego lo subo y lo conparto
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:Procedure y Case

Publicado por Alberto (6 intervenciones) el 02/05/2008 06:45:32
hora tengo otro problema :S ... bueno la cosa es asi .. te hice caso y funciono eso pero ahora me tira otro error :S ... me dice
Error: illegal expression
fatal: syntax error ; expected but identifier Milanesas found

aver si me podes ayudar otraves :P ... te dejo todo el codigo de fuente nomas -_- aver que te parese

program Hamburgeseria;
uses
crt;
const
ham_comun=2.00;
ham_especial=3.00;
ham_super=4.00;
mil_comun=4.50;
mil_especial=5.50;
mil_alplato=8.00;
mil_napolitana=11.00;
san_miga=3.50;
san_triple=3.50;
san_pebete=3.50;
san_carlito=3.50;
pica_comun=6.00;
pica_especial=11.00;
lom_comun=6.00;
lom_especial=7.00;
lom_alplato=12.00;
pizza_comun=13.00;
pizza_especial=16.00;

var
cant_carne:integer;
cant_mila:integer;
cont_mila:integer;
cont_hambur:integer;
cont_san:real;
cont_lomi:integer;
cont_pica:integer;
cont_pizza:integer;
cant_pan_hambur:integer;
cant_pan_mila:integer;
cant_pan_miga:integer;
cant_pizza:integer;
sino:char;
opcion:integer;
case_hambur:integer;
case_mila:integer;
case_san:integer;
case_pizza:integer;
case_pica:integer;
case_lomi:integer;

procedure inicio;
begin
cant_carne:=0;
cant_mila:=0;
cont_hambur:=0;
cont_san:=0;
cont_lomi:=0;
cont_pica:=0;
cont_pizza:=0;
cant_pan_hambur:=0;
cant_pan_mila:=0;
cant_pan_miga:=0;
cant_pizza:=0;
end;

procedure iniciardia;
begin
clrscr;
gotoxy(15,2);writeln('Cuantas carnes decea Agregar?');
readln(cant_carne);
gotoxy(15,4);writeln('Cuantas Milanesas decea Agregar?');
readln(cant_mila);
gotoxy(15,6);writeln('Cuantas panes de Hamburgesa decea agregar?');
readln(cant_pan_hambur);
gotoxy(15,8);writeln('Cuantos panes de Milanesa decea Agregar?');
readln(cant_pan_mila);
gotoxy(15,10);writeln('Cuantos panes de miga decea Agregar?');
readln(cant_pan_miga);
gotoxy(15,12);writeln('Cuantas Pizza decea Agregar?');
readln(cant_pizza);
gotoxy(7,16);writeln('Usted intrudijo ,' ,cant_carne, ' carnes, ' ,cant_mila, ' Milanesas, ' ,cant_pan_hambur, ' Panes de Hamburgesas, ' ,cant_pan_mila, ' Panes de Milanesa, ' ,cant_pan_miga, ' Panes de Miga y ', cant_pizza, ' Pizzas' );
Readln(sino);
end;

procedure hamburgesas;
begin
clrscr;
gotoxy(15,2);writeln('Hamburgesas');
gotoxy(2,6);writeln('Hamburgesa Comun (1)');
gotoxy(2,8);writeln('Hamburgesa Especial (2)');
gotoxy(2,10);writeln('Hamburgesa Super (3)');
gotoxy(2,12);writeln('Hamburgesa Tortuga (4)');
readln(case_hambur);
case case_hambur of
1:writeln('hola');
2:writeln('hola');
3:writeln('hola');
4:writeln('hola');
else writeln('El numero no estaba en el rango indicado');
end;

procedure milanesas;
clrscr;
gotoxy(15,2);writeln('Milanesas');
gotoxy(2,6);writeln('Milanesa Comun (1)');
gotoxy(2,8);writeln('Milanesa Especial (2)');
gotoxy(2,10);writeln('Milanesa Al Plato (3)');
gotoxy(2,12);writeln('Milanesa Napolitana (4)');
readln(case_mila);
case case_mila of
1:writeln('hola');
2:writeln('hola');
3:writeln('hola');
4:writeln('hola');
else writeln('El numero no estaba en el rango indicado');
end;

procedure sandwiches;
clrscr;
gotoxy(15,2);writeln('Sandwiches');
gotoxy(2,6);writeln('Miga (1)');
gotoxy(2,8);writeln('Triple (2)');
gotoxy(2,10);writeln('Pebete (3)');
gotoxy(2,12);writeln('Carlito-Tostado (4)');
readln(case_san);
case case_san of
1:writeln('hola');
2:writeln('hola');
3:writeln('hola');
4:writeln('hola');
else writeln('El numero no estaba en el rango indicado');
end;

procedure lomitos;
clrscr;
gotoxy(15,2);writeln('Lomitos');
gotoxy(2,6);writeln('Lomito Comun (1)');
gotoxy(2,8);writeln('Lomito Especial (2)');
gotoxy(2,10);writeln('Lomito al Plato (3)');
readln(case_lomi);
case case_lomi of
1:writeln('hola');
2:writeln('hola');
3:writeln('hola');
else writeln('El numero no estaba en el rango indicado');
end;

procedure pizzas;
clrscr;
gotoxy(15,2);writeln('Pizzas');
gotoxy(2,6);writeln('Pizzas Comunes (1)');
gotoxy(2,8);writeln('Pizzas Especiales (2)');
readln(case_pizza);
case case_pizza of
1:writeln('hola');
2:writeln('hola');
else writeln('El numero no estaba en el rango indicado');
end;

procedure picadas;
clrscr;
gotoxy(15,2);writeln('Picadas');
gotoxy(2,6);writeln('Picada de Milanesa (1)');
gotoxy(2,8);writeln('Picada de Milanesa - aceitunas- queso - pan (2)');
readln(case_pica);
case case_pica of
1:writeln('hola');
2:writeln('hola');
else writeln('El numero no estaba en el rango indicado');
end;

procedure pedido;
begin
clrscr;
gotoxy(15,2);writeln(' Bienvenido Introdusca su pedido' );
gotoxy(3,6);writeln('Hamburgesas (1)');
gotoxy(3,8);writeln('Milanesas (2)');
gotoxy(3,10);writeln('Sandwiches (3) ');
gotoxy(3,12);writeln('Lomitos (4)');
gotoxy(3,14);writeln('Pizzas (5)');
gotoxy(3,16);writeln('Picadas (6)');
readln(opcion);
case opcion of
1:hamburgesas;
2:milanesas;
3:sandwiches;
4:lomitos;
5:pizzas;
6:picadas;
ELSE WriteLn('El numero no estaba en el rango indicado');
end;

begin
repeat
gotoxy(15,19);writeln('Estos datos estan correcto ? S/N');
readln(sino);
inicio;
iniciardia;
until sino='n';
pedido;
end.
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:Procedure y Case

Publicado por Diego Romero (996 intervenciones) el 02/05/2008 23:33:32
Te faltan todos los end; que finalizan los case (recuerda, la sentencia case es la única que requiere un end; sin begin).

Y dime en qué línea te da el error que mencionas.
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:Procedure y Case

Publicado por Alberto (6 intervenciones) el 03/05/2008 07:23:34
thx si justamente probe eso y me soluciono todo ^^ ... ahroa a terminar el programa
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:Procedure y Case

Publicado por Alberto (6 intervenciones) el 02/05/2008 06:55:13
PD: ya solucione lo de los begin que me faltavan pero el programa sige tirando el mismo error :S
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:Procedure y Case

Publicado por Alex (1 intervención) el 25/08/2008 21:29:16
mira... creo yo q tenes q declar el procedure antes q el begin del programa, por ende.. antes del case.. a mi me funciono. =) suerte... y esta comunidad de programadores... esta a caso sin gente?
jeje
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:Procedure y Case

Publicado por yo (1 intervención) el 03/02/2009 18:31:43
qiero saber como puedo mandar a llamar un procedure dentro de otro procedure???
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:Procedure y Case

Publicado por marko (1 intervención) el 13/10/2011 07:27:34
1-se puede anidar un procedure dentro de un procedure ?
otra
2-se puede anidar una function dentro de un procedure?
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:Procedure y Case

Publicado por ramon (2158 intervenciones) el 16/10/2011 14:50:53
{esto te mostrara algo}

program anidado;
uses
crt;
var
x, y : integer;

procedure texto(tex : string);
procedure posicion;
begin
x := WhereX;
y := Wherey;
gotoxy(x,y);
end;
begin
posicion;write(tex);
end;

function sumas(d1, d2, d3 : integer) : integer;
function primera(d1 : integer) : integer;
begin
primera := trunc(d1 * 3.1416 / 2);
end;
begin
sumas := primera(d1) + (d2 + d3);
end;


begin
clrscr;
gotoxy(20,10);
texto('PROCEDURES ANIDADAS');
gotoxy(20,11);write('FUNCIONES ANIDADAS ',sumas(20,10,50));
readln;
end.
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