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