]> git.llucax.com Git - z.facultad/75.41/material.git/blob - tp_ejemplo/tp1.pas
Se expanden keywords del svn.
[z.facultad/75.41/material.git] / tp_ejemplo / tp1.pas
1 program tp1;\r
2 {\r
3         TRABAJO PRACTICO NUMERO 1\r
4         1er Cuatrimestre 2000\r
5 \r
6 }\r
7 \r
8 uses TDA_GRAL, ldoblec, tabla, pila_C, crt;\r
9 \r
10 Type\r
11     T_registro_entrada = record\r
12                          Comando: string[2];\r
13                          DNI: string[8];\r
14                          Nombre: string[40];\r
15                          Movimiento: string[1];\r
16                          DNI_hasta: string[8];\r
17                         End;\r
18     comando = ( OTRO, INS, IO, ORD, BC, BR, LS, LC, BO, MO, LI);\r
19 \r
20 \r
21 Var mitabla: T_TABLA;\r
22     pila: PILAC_Pila;\r
23     infile: file of T_registro_entrada;\r
24     cmd: comando;\r
25     mov: t_movim;\r
26     o: text;\r
27     r: T_registro_entrada;\r
28     e: t_registro;\r
29     error: boolean;\r
30     aux: string;\r
31 \r
32 \r
33 {------- Aca empieza el programa -------}\r
34 \r
35 begin\r
36 \r
37      WriteLn;\r
38      Writeln('Archivo de Entrada:', ParamStr(1));\r
39      Writeln('Archivo de Salida :', ParamStr(2));\r
40 \r
41      Assign(infile, ParamStr(1));\r
42      Reset (infile);\r
43 \r
44      Assign(o, ParamStr(2));\r
45      rewrite (o);\r
46 \r
47      Writeln(o,'Archivo de Entrada:', ParamStr(1));\r
48      Writeln(o,'Archivo de Salida :', ParamStr(2));\r
49      Writeln(o);\r
50 \r
51      T_TABLA_Crear(mitabla);\r
52      PILAC_Inicializar (pila);\r
53 \r
54   while not eof(infile) do begin\r
55 \r
56      read(infile, r);\r
57 \r
58 {     r.comando:= UpCase (r.comando);}\r
59 \r
60      writeln(o);\r
61      write(o,'>',r.comando);\r
62      write(o,' ',r.dni);\r
63      write(o,' ',r.nombre);\r
64      write(o,' ',r.movimiento);\r
65      write(o,' ',r.dni_hasta);\r
66      writeln(o);\r
67 \r
68      e.dni:= r.dni;\r
69      e.nombre:= r.nombre;\r
70 \r
71 {Estos bloques son para interpretar los strings y ponerlos en un enumerado}\r
72 \r
73      IF r.comando = 'IN' then cmd:= INS\r
74      ELSE IF r.comando = 'IO' then cmd:= IO\r
75      ELSE IF r.comando = 'OR' then cmd:= ORD\r
76      ELSE IF r.comando = 'BC' then cmd:= BC\r
77      ELSE IF r.comando = 'BR' then cmd:= BR\r
78      ELSE IF r.comando = 'LS' then cmd:= LS\r
79      ELSE IF r.comando = 'LC' then cmd:= LC\r
80      ELSE IF r.comando = 'BO' then cmd:= BO\r
81      ELSE IF r.comando = 'MO' then cmd:= MO\r
82      ELSE IF r.comando = 'LI' then cmd:= LI;\r
83 \r
84      IF r.movimiento= 'P' then mov:=lsc_primero\r
85      ELSE IF r.movimiento= 'A' then mov:=lsc_anterior\r
86      ELSE IF r.movimiento= 'S' then mov:=lsc_siguiente\r
87      ELSE IF r.movimiento= 'U' then mov:=lsc_ultimo;\r
88 \r
89      CASE cmd of\r
90 \r
91           INS: begin\r
92 \r
93                 T_TABLA_Insertar(mitabla, e, mov)\r
94 \r
95                 end;\r
96 \r
97           IO: begin\r
98 \r
99                 T_TABLA_Insertar_O(mitabla, e)\r
100 \r
101                 end;\r
102 \r
103           ORD: begin\r
104 \r
105                 T_TABLA_Ordenar(mitabla)\r
106 \r
107                 end;\r
108 \r
109           BC:  begin\r
110 \r
111                  T_TABLA_Buscar_Clave (mitabla, r.dni, error );\r
112 \r
113                  IF Error then\r
114                     writeln(o,'Error buscando la clave: ',r.dni)\r
115                  Else\r
116                     begin\r
117 \r
118                     T_TABLA_Elem_Cte (mitabla, e);\r
119 \r
120                     writeln('Encontrado: ', e.nombre);\r
121 \r
122                     end;\r
123 \r
124                  end;\r
125 \r
126           BR: begin\r
127 \r
128                 Buscar_por_Rango(mitabla, r.dni, r.dni_hasta, pila);\r
129 \r
130                 Writeln(o,'RESULTADOS DE LA BUSQUEDA:');\r
131 \r
132                 Writeln(o,'--------------------------');\r
133 \r
134                 while not PILAC_vacio(pila) do begin\r
135 \r
136                     PILAC_sacar(pila, e);\r
137 \r
138                     writeln(o,' ',e.dni,' - ', e.nombre);\r
139 \r
140                     end;\r
141 \r
142                 Writeln(o,'----- FIN BUSQUEDA ------');\r
143 \r
144                 end;\r
145 \r
146           LS: begin\r
147 \r
148                 If NOT T_TABLA_Vacia (mitabla) then begin\r
149 \r
150                       T_TABLA_Mover_Cte (mitabla, lsc_primero, error);\r
151 \r
152                       error:= false;\r
153 \r
154                        while NOT error do begin\r
155 \r
156                              T_TABLA_Elem_Cte (mitabla, e);\r
157 \r
158                              writeln(o,' ',e.dni,' - ', e.nombre);\r
159 \r
160                              T_TABLA_Mover_Cte (mitabla, lsc_siguiente, error);\r
161 \r
162                        end;\r
163                 end\r
164 \r
165                 Else\r
166 \r
167                     Writeln(o, 'TABLA VACIA');\r
168 \r
169                 end;\r
170 \r
171           LC: begin\r
172 \r
173                     T_TABLA_Elem_Cte (mitabla, e);\r
174 \r
175                     writeln(o,' ',e.dni,' - ', e.nombre);\r
176 \r
177                 end;\r
178 \r
179           BO: T_TABLA_Borrar_Cte ( mitabla );\r
180 \r
181           MO: T_TABLA_Modif_Cte (mitabla, e);\r
182 \r
183           LI: T_TABLA_Limpiar (mitabla);\r
184 \r
185           ELSE\r
186                writeln(o,' ERROR. Comando desconocido :', r.comando );\r
187 \r
188      end; {case}\r
189 \r
190   end; {while}\r
191 \r
192   close(o);\r
193 \r
194 end.\r
195 \r