Skip to content

Commit 638a27b

Browse files
authored
Merge pull request mouredev#3752 from edalmava/pascal
#19 - Pascal
2 parents 28dc21f + 706dfc4 commit 638a27b

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
program Enumerado;
2+
Uses Crt;
3+
4+
type
5+
DiasSemana = (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo);
6+
EstadoPedido = (PENDIENTE, ENVIADO, ENTREGADO, CANCELADO);
7+
Pedido = object
8+
private
9+
id : Integer;
10+
estado : EstadoPedido;
11+
public
12+
constructor Iniciar(Identificador: Integer);
13+
procedure EnviarPedido;
14+
procedure EntregarPedido;
15+
procedure CancelarPedido;
16+
procedure MostrarEstadoPedido;
17+
end;
18+
19+
var
20+
Dia: DiasSemana;
21+
numDia: Byte;
22+
pedido1, pedido2, pedido3, pedido4: Pedido;
23+
ids : String;
24+
25+
constructor Pedido.Iniciar(Identificador: Integer);
26+
begin
27+
id := Identificador;
28+
estado := PENDIENTE
29+
end;
30+
31+
procedure Pedido.EnviarPedido();
32+
begin
33+
if estado = PENDIENTE then
34+
begin
35+
estado := ENVIADO;
36+
Str(id, ids); WriteLn('Pedido ' + ids + ' Enviado')
37+
end
38+
else
39+
WriteLn('No se puede enviar el pedido')
40+
end;
41+
42+
procedure Pedido.EntregarPedido();
43+
begin
44+
if estado = ENVIADO then
45+
begin
46+
estado := ENTREGADO;
47+
Str(id, ids); WriteLn('Pedido ' + ids + ' Entregado')
48+
end
49+
else
50+
WriteLn('No se puede entregar un pedido que no se ha enviado')
51+
end;
52+
53+
procedure Pedido.CancelarPedido();
54+
begin
55+
if estado = ENTREGADO then
56+
Writeln('No se puede cancelar el pedido porque ya fue entregado')
57+
else
58+
begin
59+
estado := CANCELADO;
60+
Str(id, ids); WriteLn('Pedido ' + ids + ' Cancelado')
61+
end
62+
end;
63+
64+
procedure Pedido.MostrarEstadoPedido();
65+
begin
66+
Str(id, ids);
67+
Write('Pedido ' + ids);
68+
case estado of
69+
PENDIENTE: Writeln(' : Pendiente');
70+
ENVIADO: WriteLn(' : Enviado');
71+
ENTREGADO: WriteLn(' : Entregado');
72+
CANCELADO: WriteLn(' : Cancelado');
73+
end;
74+
end;
75+
76+
function getDia(const dia: Byte):DiasSemana;
77+
begin
78+
getDia := DiasSemana(dia - 1);
79+
end;
80+
81+
begin
82+
ClrScr();
83+
Write('Digite el numero del dia: ');
84+
ReadLn(numDia);
85+
if not (numDia in [1, 2, 3, 4, 5, 6, 7]) then
86+
begin
87+
WriteLn('El numero debe ser un numero entre 1 y 7');
88+
exit
89+
end;
90+
Dia := getDia(numDia);
91+
Write('Corresponde a: ');
92+
case Dia of
93+
Lunes: Writeln('Lunes');
94+
Martes: Writeln('Martes');
95+
Miercoles: Writeln('Miercoles');
96+
Jueves: Writeln('Jueves');
97+
Viernes: Writeln('Viernes');
98+
Sabado: Writeln('Sabado');
99+
Domingo: Writeln('Domingo');
100+
end;
101+
102+
Writeln('');
103+
WriteLn('Reto Extra');
104+
Delay(1000);
105+
106+
WriteLn('');
107+
WriteLn('Iniciando Pedidos');
108+
pedido1.Iniciar(101);
109+
pedido2.Iniciar(102);
110+
pedido3.Iniciar(103);
111+
pedido4.Iniciar(104);
112+
113+
WriteLn('');
114+
WriteLn('Movimiento de Pedidos');
115+
pedido1.EnviarPedido();
116+
pedido2.EnviarPedido();
117+
pedido3.EntregarPedido();
118+
pedido4.EntregarPedido();
119+
pedido1.EntregarPedido();
120+
pedido2.EntregarPedido();
121+
pedido3.CancelarPedido();
122+
pedido1.CancelarPedido();
123+
124+
WriteLn('');
125+
WriteLn('Tras realizar movimientos');
126+
pedido1.MostrarEstadoPedido();
127+
pedido2.MostrarEstadoPedido();
128+
pedido3.MostrarEstadoPedido();
129+
pedido4.MostrarEstadoPedido();
130+
end.

0 commit comments

Comments
 (0)