Pascal/Turbo Pascal - ejercicio 4 actividad 2

 
Vista:
sin imagen de perfil

ejercicio 4 actividad 2

Publicado por Erik (73 intervenciones) el 12/03/2014 17:58:20
hola, queria hacer lo siguiente:

Codifique un procedimiento que presente un menú de opciones por pantalla y devuelva la opción elegida por el usuario. Las opciones que presentará son:
1. Abrir cesta de compra existente.
2. Comenzar cesta de compra nueva.
3. Añadir producto a la cesta.
4. Eliminar producto de la cesta.
5. Guardar cesta.
6. Pedir cesta.
7. Salir del programa.

Una vez que el usuario elija una opción en el procedimiento se comprueba si es válida, es decir si es un número entre 1 y 7. En caso de que la opción no sea válida, se volverá a repetir la presentación del menú hasta que el usuario pulse una opción válida. Para depurar el procedimiento deberá incluirlo en un sencillo programa que simplemente invoque el procedimiento y compruebe que el resultado devuelto es el correcto.

gracias de antemano
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
sin imagen de perfil

ejercicio 4 actividad 2

Publicado por XfontanillsX (5 intervenciones) el 12/03/2014 20:51:45
Esto es lenguaje c no?
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
sin imagen de perfil

ejercicio 4 actividad 2

Publicado por XfontanillsX (5 intervenciones) el 12/03/2014 21:36:26
Vamos a explicartelo rapidamente con el metodo case

primero como ya debes saber declararas la variables que vas utilizar no?.Si no bueno me lo haces saber.
Aqui esta lo primero que debes hacer:

Declaras tu (begin) como normalmente haces colocas un ciclo (repeat) esto para cuando se eliga una opcion equivocada se vuelva a repetir el menu como pides. Luego el (clrscr) para borrar pantalla cada vez que se repita, el (writeln) para mostrar en pantalla las opciones. Luego (read) esto para leer la opcion que el usuario eliga, esto con la variable (num) pero puede ser cualquiera que tu desees. La variable (num) esta declara como de tipo (char) .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
begin
repeat
clrscr;
writeln('1) Incluir');
writeln('2) Consultar');
writeln('3) Modificar');
writeln('4) Eliminar');
writeln('5) Reporte de estadisticas');
writeln('6) Salida');
writeln;
writeln('Coloque la opcion que desee realizar');
read(num);
repeat-----pendiente aqui
until num in ['1','2','3','4','5','6','7'];

continuando..
debajo de todo aquello colocas:

El (repeat) para salir El (case) es el comando para invocar las opciones que coloque el usuario. (num) es la variable como ya te explique char.

Nota: las opciones 1 2 que ves entre comillas es porque la variable num es de tipo char y como es un caracter para que lo lea el compilador debe estar entre comillas. Luego (begin) depues del numero 1 para empezar el proceso correspondiente a esa opcion, al igual que 2 y asi sucesivamente con las opciones que vayas a colocar. haora la opcion 3 que esta de ultimo es para salir y la variable que ves alli que es (salir) esta declara como de tipo (boolean) asi mismo se escribe en la declaracion, esto para que cuando lo lee el ciclo repeat que invoque donde te puse (pendiente aqui) se salga del comando (case).

Nota: Cualquier cosa me avisas estare pendiente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
case num of
'1': begin
writeln('Consulta entre numero de matricula');
writeln;
write(' Numero : ');
readln(nume);
for nn:=1 to length(nume) do
nume[nn]:= upcase(nume[nn]);
nn:=0;
enco:=false;
repeat
if vehiculo[nn].placa=nume
writeln('Placa del Vehiculo: ',vehiculo.placa,'');
writeln;
writeln('Numero de pasajeros: ',vehiculo.pasajeros,'');
writeln;
writeln('Alcabala: ',vehiculo.alcabala,'');
writeln;
writeln('Fecha: ',vehiculo.fecha,'');
writeln;
writeln('Tipo de vehiculo: ',vehiculo.carro,'');
writeln;
writeln('Sale/Entra: ',vehiculo.accion,'');
writeln;
writeln('Presione enter para continuar');
readln(enter);
read(num2);
end;
 
'2': begin
writeln('Modificar: 1) Placa del vehiculo');
writeln;
writeln('Modificar: 2) Numero de pasajeros');
writeln;
writeln('Modificar: 3) Alcabala');
writeln;
writeln('Modificar: 4) Fecha');
writeln;
writeln('Modificar: 5) Tipo de Vehiculos');
writeln;
writeln('Coloque la opcion');
readln(num3);
end;
'3': salir:=true;
end;
until salir=true;
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

ejercicio 4 actividad 2

Publicado por ramon (2158 intervenciones) el 13/03/2014 00:30:09
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
procedure menu;
 var
   rt, tre : char;
   salir : boolean;
 begin
    salir := false;
   repeat
       clrscr;
       writeln('***** Menu Jeneral *****');
       writeln;
       writeln('   1 = altas');
       writeln('   2 = baja');
       writeln('   3 = Modificacion');
       writeln('   4 = Consulta');
       writeln('   5 = Listados');
       writeln('   6 = Salir');
       writeln;
       writeln('   Elija Opcion ');
       repeat
           tre := readkey;
       until tre in['1','2','3','4','5','6'];
       clrscr;
   case tre of
 '1' : begin
          writeln('   1 ');
          readkey;
       end;
 '2' : begin
          writeln('   2 ');
          readkey;
      end;
 '3' : begin
         writeln('   3 ');
         readkey;
      end;
 '4' : begin
         writeln('   4 ');
         readkey;
      end;
 '5' : begin
         writeln('   5 ');
        readkey;
      end;
 '6' : salir := true;
   end;
   until salir = true;
 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
sin imagen de perfil
Val: 35
Ha disminuido 1 puesto en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

ejercicio 4 actividad 2

Publicado por Enrique Martin (15 intervenciones) el 23/02/2019 23:18:20
Este ejercicio se puede comprobar por duplicado, tanto viendo por pantalla el resultado elegido en el menú como añadiendo trazas de depuración para ver los valores de las variables durante el flujo del programa, aqui os dejo una posible solución por si ayuda:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Program ProcedimientoMenu;
 
var
(*Declaramos las variables necesarias*)
 opcion: char;
(*Variable para realizar las trazas de depuracion*)
 dep: boolean;
 
(*Declaramos el procedimiento Menu que nos va a servir para elegir
  distintas opciones, en este caso necesitamos pasar por referencia
  el parámetro opcion para que conserve el valor al salir del procedimiento.*)
 
(*Si pasamos por valor al querer utilizar opcion en el bloque principal
  nos da error, no aparece en pantalla el valor y por tanto
  no entra en el condicional múltiple según sea (case-of)
  que nos permite terminar de chequear el procedimiento y el menu*)
 
Procedure Menu(VAR opcionPro:char);
var
(*Para activar las trazas de depuración que nos permiten ver
  el funcionamiento del flujo a través del valor de las variables,
  necesitamos declarar las variables DEP tanto en el procedimiento
  como en el bloque principal*)
 dep:boolean;
 
 begin
(*Activamos las trazas de depuración con true*)
  dep:=true;
  repeat
  writeln ('Elige la opcion que deseas realizar: ');
  writeln;
  writeln('1. Abrir cesta de compra existente.');
  writeln;
  writeln ('2. Comenzar cesta de compra nueva.');
  writeln;
  writeln ('3. Añadir producto a la cesta.');
  writeln;
  writeln('4. Eliminar producto de la cesta.');
  writeln;
  writeln ('5. Guardar cesta.');
  writeln;
  writeln ('6. Pedir cesta.');
  writeln;
  writeln ('7. Salir del programa.');
  readln(opcionpro);
 
(*Iniciamos la depuración para comprobar que opción es elegida
  antes de pasar a la condicional del bucle*)
  if (dep) then
  begin
     writeln('%%%%% Dentro Procedimiento Menu');
     writeln('%%%%%   valor de opcion antes del until: ', opcionpro);
     readln;
  end;
  until opcionpro IN ['1','2','3','4','5','6','7'];
 end;
 
begin
(*Activamos las trazas en el bloque principal*)
  dep := true;
(*Llamamos al procedimiento*)
  menu (opcion);
(*Comprobamos los valores*)
  if (dep) then
     begin
     writeln('%%%%%   valor de opcion despues del until: ', opcion);
     readln;
     end;
(*Si tuvieramos que desarrollar el menu, la forma mas sencilla sería utilizando
  la estructura de selección multiple segun sea, en este caso
  la vamos a emplear para saber si todo va fluyendo correctamente*)
  Case Opcion of
        '1','2','3','4','5','6','7': writeln ('La opcion es: ',opcion);
  end;
  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