Pascal/Turbo Pascal - Comentar paso a paso este programa

 
Vista:

Comentar paso a paso este programa

Publicado por gabriela (1 intervención) el 02/11/2014 21:35:11
hola, necesito explicar paso a paso este programa que hice tiempo atras.. y no me acuerdo muy bien, aparte en la parte de la opcion dos (ya veran si corren el programa) me da error al insertar un codigo de producto no existente..... SI LO PUEDEN MEJORAR SE LOS AGRADECERIA..

el programa es sobre un supermercado...

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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
program consecionario;
uses crt;
 
type
datos = record
cod:string;
nombre:string;
precio:real;
existencia:integer;
condicion:boolean;
end;
 
var
   x,num,i,posicion,consumo:integer;
   codigoBuscar:string;
   OPCION,OP:CHAR;
   cadena:array[1..100] of datos;
 
function buscar(codigo:string):integer;
begin
for i:=1 to 100 do
begin
     IF(codigo=cadena[i].cod)then
     buscar:=i;
end;
 
end;
 
begin
num:=1;
x:=0;
while(x=0)do
begin
WRITEln('1)Agregar');
WRITEln('2)Consultar');
WRITEln('3)Modificar');
WRITEln('4)Eliminar');
wRITEln('5)Recuperar');
WRITEln('6)Consumo');
WRITEln('Introduzca opcion:');
readln(OPCION);
clrscr;
   if(OPCION='1')then
   begin
     write('Codigo de producto:');
     readln(cadena[num].cod);
     write('Nombre de producto:');
     readln(cadena[num].nombre);
     write('Precio de producto:');
     readln(cadena[num].precio);
     write('Introduzca exitencia:');
     readln(cadena[num].existencia);
     cadena[num].condicion:=true;
     num:=num+1;
     clrscr;
   end;
 
 
   if(OPCION='2')then   //AQUI ES EL PROBLEMAA
          begin
		writeln('Codigo del producto:');
		readln(codigoBuscar);
		posicion:=buscar(codigoBuscar);
			if(cadena[posicion].condicion=true)then    //si la condicion es verdadera, es decir, si existe el codigo, el lo encontrara.
			begin
			writeln('cod: ',cadena[posicion].cod);
			writeln('nombre: ',cadena[posicion].nombre);
			writeln('precio: ',cadena[posicion].precio:7:2);
			writeln('existencia: ',cadena[posicion].existencia);
			writeln('Pulse ENTER para volver al menu');
			readkey;
			clrscr;
			end
    else                     //sino, arrojara este mensaje.
     begin
			writeln('El producto que introdujo no existe.');
			writeln('Pulse ENTER para volver al menu');
			readkey;
			clrscr;
		end;
	end;
		if(OPCION='3')then
  begin
		writeln('introduzca el codigo del producto a  buscar');
		readln(codigoBuscar);
		posicion:=buscar(codigoBuscar);
        writeln('1)cambiar el nombre');
        writeln('2)cambiar el precio');
        writeln('3)cambiar la existencia');
        writeln('¿Que desea realizar?');
        readln(OP);
 
			if(OP='1')then
            begin
			WRITE('INTRODUZCA EL nombre:');
			READLN(cadena[posicion].nombre);
			end;
 
			if(OP='2')then
            begin
			WRITE('INTRODUZCA EL precio:');
			READLN(cadena[posicion].precio);
			end;
 
			if(OP='3')then
            begin
			write('INTRODUZCA la existencia:');
			readln(cadena[posicion].existencia);
			end;
		end;
 
	if(OPCION='4')then
      begin
		writeln('introduzca el codigo del producto que desea eliminar');
		readln(codigoBuscar);
		posicion:=buscar(codigoBuscar);
		cadena[posicion].condicion:=false;
	end;
 
 
	if(OPCION='5')then
  begin
		writeln('introduzca el codigo del producto que desea recuperar');
		readln(codigoBuscar);
		posicion:=buscar(codigoBuscar);
		cadena[posicion].condicion:=true;
		end;
 
 
	if(OPCION='6')then
        begin
		writeln('Codigo de producto a consumir');
		readln(codigoBuscar);
		posicion:=buscar(codigoBuscar);
		writeln('cuantos quieres?');
		readln(consumo);
		if(cadena[posicion].existencia>=consumo)then
		begin
		cadena[posicion].existencia:=cadena[posicion].existencia-consumo;
		end
   else
       begin
		writeln('En este momento solo existen ',cadena[posicion].existencia,' productos');
		writeln('¿Desea realizar consumo?');
		end;
end;
end;
 
end.

gracias de antemano..
PD: falta agregarle algunos clrscr cuando culmine con la accion de las opciones.
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

Comentar paso a paso este programa

Publicado por ramon (2158 intervenciones) el 05/11/2014 23:54: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
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
{A ver si esto te hayuda}
 
 program consecionario;  {Nombre del programa funciona sin el}
  uses
    crt;  {Esta unidad proporcionan control sobre
            el modo de pantalla, c¢digo extendidos de
            teclado, colores, ventanas, y sonido.}
  type
 
    datos = record       {Nuestro registro de datos }
         cod : string;
      nombre : string;
      precio : real;
  existencia : integer;
   condicion : boolean;
   end;
 
   var  {Nuestras variables globales validas para todo el programa}
     x, num, i, posicion, consumo : integer;
     codigoBuscar : string;
     OPCION, OP : CHAR;
     cadena : array[1..100] of datos;
 
  {Funcion con la cual localizamos la
   posicion en el array de nuestro registro}
  function buscar(codigo:string):integer;
  begin
    buscar := 0;  {ponemos a 0 la funcion pera luego tratarla}
    for i := 1 to 100 do  {recorremos el array}
    begin
      IF (codigo = cadena[i].cod) then  {si la espresion es cierta segimos}
      begin
      buscar := i; {funcion toma valor de i}
      break;  {paramos el for y salimos}
      end;
    end;
  end;
 
  procedure Agregar; {Esto poco que comentar presentamos pregunta y
                      entramos los datos}
  begin
      writeln;
      write('   Codigo de producto   : ');
      readln(cadena[num].cod);
      write('   Nombre de producto   : ');
      readln(cadena[num].nombre);
      write('   Precio de producto   : ');
      readln(cadena[num].precio);
      write('   Introduzca exitencia : ');
      readln(cadena[num].existencia);
      cadena[num].condicion := true;
      num := num + 1;  {incremetamos el contador}
      if num > 100 then {si es mayor de 100 lo dejamos en 100
                         maximo del array para controlarlo}
      num := 100;
   end;
 
   procedure consultar;    {Consultar los datos}
    begin
       write('    Codigo del producto : '); {Producto a presentar}
       readln(codigoBuscar);
       posicion := buscar(codigoBuscar);  {tomamos posicion en el array}
     if posicion > 0 then   {Si posicion es 0 no se encontro salimos
                             si no segimos}
     begin
     if (cadena[posicion].condicion = true) then  {comprovamos si esta
                                                   activado}
     begin          {Presentamos los datos}
      clrscr;
      writeln;
      writeln('  ¨¨¨ Datos Del Codigo Entrado Son ???');
      writeln;
      writeln('   cod        : ',cadena[posicion].cod);
      writeln('   nombre     : ',cadena[posicion].nombre);
      writeln('   precio     : ',cadena[posicion].precio:0:2);
      writeln('   existencia : ',cadena[posicion].existencia);
      writeln;
      writeln('   Pulse Una Tecla para volver al menu');
      readkey;   {detiene el proceso asta pulsar una tecla}
    end
  else
     begin    {sino error}
       writeln('   El producto que introdujo no existe.');
       writeln;
       writeln('   Pulse Una Tecla para volver al menu');
       readkey;
     end;
    end
 else
    begin     {Si es posicion 0 error}
      writeln('¨  Producto No Encontrado Pulse Una Tecla ?');
      readkey;
   end;
 end;
 
  procedure Modificar;   {para modifocar el o los datos de un registro}
  var
    sali : boolean;  {variables locales}
  begin      {estos pasos como los anteriores}
     writeln;
     write('   introduzca el codigo del producto a Modificar : ');
     readln(codigoBuscar);
     posicion := buscar(codigoBuscar);
     if posicion > 0 then
     begin
     sali := false;
    repeat           {presentamos el menu}
     clrscr;
     writeln('    1) cambiar el nombre');
     writeln('    2) cambiar el precio');
     writeln('    3) cambiar la existencia');
     writeln('    4) Terminar Y Salir');
     writeln;
     writeln(' ¨ Que desea realizar ?');
    repeat
     OP := readkey;      {elejimos opcion}
    until op in['1','2','3','4'];  {si es al guna de estas salimos}
   case op of  {Ejecutamos la opcion elegida}
 '1' : begin
        write('   INTRODUZCA EL nombre : ');
        readln(cadena[posicion].nombre);
       end;
 '2' : begin
         write('   INTRODUZCA EL precio : ');
         readln(cadena[posicion].precio);
       end;
 '3' : begin
         write('   INTRODUZCA la existencia : ');
         readln(cadena[posicion].existencia);
       end;
 '4' : sali := true;
   end;
     until sali = true;
     end
   else
      begin   {si posicion 0  error}
         writeln('¨  Producto No Encontrado Pulse Una Tecla ?');
         readkey;
      end;
  end;
 
  procedure Eliminar;  {eliminamos un registro temporal mente}
  begin
      writeln;  {estos pasos como los anteriores}
      write('   introduzca el codigo del producto que desea eliminar : ');
      readln(codigoBuscar);
      posicion := buscar(codigoBuscar);
      if posicion > 0 then
      cadena[posicion].condicion := false  {lo elimina}
    else
       begin   {si posicion 0 error}
         writeln('¨  Producto No Encontrado Pulse Una Tecla ?');
         readkey;
       end;
    end;
 
    procedure Recuperar;
    begin
      writeln;    {estos pasos como los anteriores}
      write('   introduzca el codigo del producto que desea recuperar : ');
      readln(codigoBuscar);
      posicion := buscar(codigoBuscar);
      if posicion > 0 then
      cadena[posicion].condicion := true  {lo activamos}
    else
      begin   {si posicion 0 error}
         writeln('¨  Producto No Encontrado Pulse Una Tecla ?');
         readkey;
       end;
    end;
 
   procedure Consumos;
   var
     tt : char;  {variables locales}
   begin
       writeln;    {estos pasos como los anteriores}
       write('   Codigo de producto a consumir : ');
       readln(codigoBuscar);
       posicion := buscar(codigoBuscar);
       if posicion > 0 then
       begin
         writeln('    cuantos quieres ? : ');
         readln(consumo);
     if (cadena[posicion].existencia >= consumo) then {comprovamos si
                                 existen vastantes y los restamos sino}
     begin
       cadena[posicion].existencia := cadena[posicion].existencia - consumo;
     end
  else
      begin   {le preguntamos si quiere los que quedan}
        writeln('   En este momento solo existen ',cadena[posicion].existencia,
                                           ' productos');
       writeln('   ¨ Desea realizar consumo ? [S/N] : ');
       repeat
          tt := upcase(readkey);
       until tt in['S','N'];
       if tt = 'S' then    {Si pulsa la S lo reatamos sino nada}
       cadena[posicion].existencia := cadena[posicion].existencia - consumo;
       end;
      end
   else
       begin    {si posicion 0 error}
         writeln('¨  Producto No Encontrado Pulse Una Tecla ?');
         readkey;
       end;
    end;
 
 
 
  procedure menujeneral;  {Menu}
  var
     sal : boolean;   {variables locales}
     tec : char;      {del menu}
  begin
      sal := false;  {anulamos la salida}
   repeat
       clrscr;     {borramos pantalla}
       writeln('     ***** Menu Jeneral ***** ');
       writeln;
       writeln('    1) Agregar');
       writeln('    2) Consultar');
       writeln('    3) Modificar');    {presentamos opciones menu}
       writeln('    4) Eliminar');
       writeln('    5) Recuperar');
       writeln('    6) Consumo');
       writeln('    7) Salir');
       writeln;
       writeln('    <<<< Introduzca opcion: >>>>');
       repeat
           tec := readkey;   {tomamos opcion}
       until tec in['1','2','3','4','5','6','7'];
       clrscr;
     case tec of  {ejecutamos peticion segun opcion}
  '1' : Agregar;
  '2' : consultar;
  '3' : Modificar;
  '4' : Eliminar;
  '5' : Recuperar;
  '6' : consumos;
  '7' : sal := true;
    end;
   until sal = true;
  end;
 
 
  begin   {programa principal}
    num := 1;   {iniciamos contador}
    menujeneral; {ejecucion del menu}
  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