]> git.llucax.com Git - z.facultad/75.41/tabla.git/blob - programa.pas
Import inicial después del "/var incident". :(
[z.facultad/75.41/tabla.git] / programa.pas
1 program TrabajoPracticoI;\r
2 \r
3 {\r
4          ALGORITMOS Y PROGRAMACIÓN II\r
5          ========== = ============ ==\r
6 \r
7          TRABAJO PRÁCTICO NÚMERO 1\r
8          ~~~~~~~ ~~~~~~~~ ~~~~~~ ~\r
9 \r
10          Catedra: Carolo\r
11          =======\r
12 \r
13          1er Cuatrimestre 2000\r
14          --- ------------ ----\r
15 \r
16          Grupo: 22\r
17          =====\r
18 }\r
19 \r
20  uses\r
21    PROG_GRL, GRAL, TABLA, PILA_C;\r
22 \r
23 var\r
24    tbl: T_TABLA;\r
25    p: T_PILAC;\r
26    fEnt: T_ARCHIVO_COMANDOS;\r
27    fSal: text;\r
28    id: ID_COMANDO;\r
29    m: T_MOVIM;\r
30    c: T_COMANDO;\r
31    r: T_REGISTRO;\r
32    err: boolean;\r
33    cmd: ID_COMANDO;\r
34    valerr: integer;\r
35    s: string;\r
36    dni: T_CLAVE;\r
37 \r
38 begin\r
39    mensajeDeEntrada( 'Programa para procesar archivos de comandos.' );\r
40    procesarParametros( fEnt, fSal, err );\r
41    if ( err ) then begin\r
42       errorParametros;\r
43       exit; { ----------------------------------> SALE DEL PROGRAMA!!!! }\r
44       end;\r
45    intro( fSal );\r
46    { Inicializacion de TADs }\r
47    T_TABLA_Crear( tbl );\r
48    PILAC_Inicializar( p );\r
49 \r
50    { Lectura de datos hasta EOF }\r
51    while ( not eof( fEnt ) ) do begin\r
52      read( fEnt, c );\r
53      cmd := strToComando(  c.comando );\r
54      agregaComando( fSal, c );\r
55 \r
56      { Ejecuta segun tipo comando }\r
57      case ( cmd ) of\r
58 \r
59        { Insersion }\r
60        INS: begin\r
61          val( c.dni, r.dni, valerr ); { Convierte el DNI en string a DNI en longint }\r
62          if ( valerr <> 0 ) then      { Si hay un error al convertir }\r
63            agregaError( fSal, comandoToStr( cmd ), 'DNI incorrecto!' )\r
64          else begin\r
65             r.nombre:= c.nombre;\r
66             if ( T_TABLA_Llena( tbl ) ) then\r
67               agregaError( fSal, comandoToStr( cmd ), 'Tabla Llena!' )\r
68             else begin\r
69                m := strToMovim( c.Movimiento, err );\r
70                if ( err ) then\r
71                   agregaError( fSal, comandoToStr( cmd ), 'Movimiento NO valido ("' + movimToStr( m ) + '")!' )\r
72                else begin\r
73                   T_TABLA_Insertar( tbl, m, r );\r
74                   agregaRegistro( fSal, comandoToStr( cmd ), r );\r
75                end;\r
76             end;\r
77          end;\r
78        end;\r
79 \r
80        { Insersion Ordenada }\r
81        INSO: begin\r
82          val( c.dni, r.dni, valerr ); { Convierte el DNI en string a DNI en longint }\r
83          if ( valerr <> 0 ) then      { Si hay un error al convertir }\r
84            agregaError( fSal, comandoToStr( cmd ), 'DNI incorrecto!' )\r
85          else begin\r
86             r.nombre:= c.nombre;\r
87             if ( T_TABLA_Llena( tbl ) ) then\r
88                agregaError( fSal, comandoToStr( cmd ), 'Tabla Llena!' )\r
89             else if ( not T_TABLA_Ordenada( tbl ) ) then\r
90                agregaError( fSal, comandoToStr( cmd ), 'Tabla Desordenada!' )\r
91             else begin\r
92                T_TABLA_Insertar_Ord( tbl, r );\r
93                agregaRegistro( fSal, comandoToStr( cmd ), r );\r
94             end;\r
95          end;\r
96        end;\r
97 \r
98        { Ordenar }\r
99        ORDEN: begin\r
100          if ( T_TABLA_Vacia( tbl ) ) then\r
101             agregaError( fSal, comandoToStr( cmd ), 'Tabla Vacia!' )\r
102          else\r
103            T_TABLA_Ordenar( tbl );\r
104        end;\r
105 \r
106        { Buscar Clave }\r
107        BC:  begin\r
108          val( c.dni, dni, valerr ); { Convierte el DNI en string a DNI en longint }\r
109          if ( valerr <> 0 ) then      { Si hay un error al convertir }\r
110            agregaError( fSal, comandoToStr( cmd ), 'DNI incorrecto!' )\r
111          else if ( T_TABLA_Vacia( tbl ) ) then\r
112             agregaError( fSal, comandoToStr( cmd ), 'Tabla Vacia!' )\r
113          else if ( not T_TABLA_Ordenada( tbl ) ) then\r
114             agregaError( fSal, comandoToStr( cmd ), 'Tabla Desordenada!' )\r
115          else begin\r
116             T_TABLA_Buscar_Clave( tbl, dni, err );\r
117             if ( err ) then\r
118                agregaError( fSal, comandoToStr( cmd ), 'No se encontro la clave "' + c.dni + '"!' )\r
119             else begin\r
120                T_TABLA_Elem_Cte( tbl, r );\r
121                agregaRegistro( fSal, comandoToStr( cmd ), r );\r
122             end;\r
123          end;\r
124        end;\r
125 \r
126        { Buscar Rango }\r
127        BR: begin\r
128          val( c.dni, r.dni, valerr ); { Convierte el DNI en string a DNI en longint }\r
129          if ( valerr <> 0 ) then      { Si hay un error al convertir }\r
130            agregaError( fSal, comandoToStr( cmd ), 'DNI incorrecto!' )\r
131          else begin\r
132             val( c.dni_hasta, dni, valerr ); { Convierte el DNI en string a DNI en longint }\r
133             if ( valerr <> 0 ) then      { Si hay un error al convertir }\r
134                agregaError( fSal, comandoToStr( cmd ), 'DNI_hasta incorrecto!' )\r
135             else begin\r
136                if ( T_TABLA_Vacia( tbl ) ) then\r
137                   agregaError( fSal, comandoToStr( cmd ), 'Tabla Vacia!' )\r
138                else if ( not T_TABLA_Ordenada( tbl ) ) then\r
139                   agregaError( fSal, comandoToStr( cmd ), 'Tabla Desordenada!' )\r
140                else begin\r
141                   T_TABLA_Buscar_por_Rango( tbl, r.dni, dni, p, err );\r
142                   if ( err ) then\r
143                      agregaError( fSal, comandoToStr( cmd ),\r
144                                   'No se encontro ninguna clave "' + c.dni + '-' + c.dni_hasta + '"!' )\r
145                   else begin\r
146                      while ( not PILAC_vacio( p ) ) do begin\r
147                          PILAC_sacar( p, r );\r
148                          agregaRegistro( fSal, comandoToStr( cmd ), r );\r
149                          end;\r
150                   end;\r
151                end;\r
152             end;\r
153          end;\r
154        end;\r
155 \r
156        { Listar Tabla }\r
157        LS: begin\r
158          if ( T_TABLA_Vacia( tbl ) ) then\r
159             agregaError( fSal, comandoToStr( cmd ), 'Tabla Vacia!' )\r
160          else begin\r
161             T_TABLA_Mover_Cte( tbl, T_MOVIM_primero, err );\r
162             err:= false;\r
163             while ( not err ) do begin\r
164                 T_TABLA_Elem_Cte( tbl, r );\r
165                 agregaRegistro( fSal, comandoToStr( cmd ), r );\r
166                 T_TABLA_Mover_Cte( tbl, T_MOVIM_siguiente, err );\r
167             end;\r
168          end;\r
169        end;\r
170 \r
171        { Listar Corriente }\r
172        LC: begin\r
173          if ( T_TABLA_Vacia( tbl ) ) then\r
174             agregaError( fSal, comandoToStr( cmd ), 'Tabla Vacia!' )\r
175          else begin\r
176             T_TABLA_Elem_Cte( tbl, r );\r
177             agregaRegistro( fSal, comandoToStr( cmd ), r );\r
178          end;\r
179        end;\r
180 \r
181        { Borrar Corriente }\r
182        BO: begin\r
183          if ( T_TABLA_Vacia( tbl ) ) then\r
184             agregaError( fSal, comandoToStr( cmd ), 'Tabla Vacia!' )\r
185          else begin\r
186             T_TABLA_Elem_Cte( tbl, r );\r
187             T_TABLA_Borrar_Cte( tbl );\r
188             agregaRegistro( fSal, comandoToStr( cmd ), r );\r
189          end;\r
190        end;\r
191 \r
192        { Modificar Corriente }\r
193        MO: begin\r
194          val( c.dni, r.dni, valerr ); { Convierte el DNI en string a DNI en longint }\r
195          if ( valerr <> 0 ) then      { Si hay un error al convertir }\r
196            agregaError( fSal, comandoToStr( cmd ), 'DNI incorrecto!' )\r
197          else begin\r
198             if ( T_TABLA_Vacia( tbl ) ) then\r
199                agregaError( fSal, comandoToStr( cmd ), 'Tabla Vacia!' )\r
200             else begin\r
201                T_TABLA_Elem_Cte( tbl, r );\r
202                agregaRegistro( fSal, comandoToStr( cmd ), r );\r
203                r.nombre:= c.nombre;\r
204                T_TABLA_Modif_Cte( tbl, r );\r
205                agregaRegistro( fSal, comandoToStr( cmd ), r );\r
206             end;\r
207          end;\r
208        end;\r
209 \r
210        { Limpiar Tabla }\r
211        LI:\r
212          T_TABLA_Limpiar( tbl );\r
213 \r
214        { Comando Desconocido }\r
215        else\r
216          agregaError( fSal, comandoToStr( cmd ), 'Comando Desconocido!' )\r
217 \r
218      end; { case ( cmd ) of }\r
219    end; { while ( not eof( fEnt ) ) do begin }\r
220    close( fSal );\r
221    close( fEnt );\r
222    writeln( 'Archivo ', paramstr( 1 ), ' procesado con exito.' );\r
223    writeln( 'Puede ver la salida y/o errores en el archivo ', paramstr( 2 ) );\r
224    writeln( 'FIN DEL PROGRAMA' );\r
225 end.