Pascal/Turbo Pascal - Ejercicios Pascal

 
Vista:
Imágen de perfil de JUAN

Ejercicios Pascal

Publicado por JUAN (11 intervenciones) el 14/06/2013 11:54:22
Estoy haciendo unos ejercicios en pascal y me he atascado en esta parte de funciones.

La siguiente función tiene errores. Utilice el compilador de Pascal para encontrarlos e indique en el apartado RESPUESTA 3, qué errores encontró.

Function PVP(valorprod: real, ivaprod: real) real
Var
total_iva : real;
begin
total_iva := valorprod*ivaprod/100;
Resultado := valorprod + total_iva;
End.

Una vez corregidos los problemas incluya la función en un programa que pida al usuario el valor de un producto, el % de IVA que hay que aplicarle y devuelva por pantalla el precio de venta al público del producto.

Codifique un programa que incluya este procedimiento y este módulo principal, compile y ejecute:

PROCEDIMIENTO

Procedure ingreso(saldo: real; ingreso: real);
Begin
if (ingreso >0) then
saldo := saldo + ingreso
else (* Se resta comision por numeros rojos *)
saldo := (saldo + ingreso) – 3 ;
End;

MÓDULO PRINCIPAL

(*Saldo de micuenta corriente *)
micuenta:= 600;
(* Hago un ingreso de 500 euros *)
ingreso(micuenta, 500);
(* Imprimo el saldo actualizado *)
writeln(‘Su saldo es ahora de ‘, micuenta:0:2, ‘euros’);

[b]Ahora repita el ejercicio anterior pero cambiando la definición del procedimiento a:

Procedure ingreso(VAR saldo: real; ingreso: real);

Indique el resultado obtenido y la diferencia que observa en la ejecución de cada uno.
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

Ejercicios Pascal

Publicado por luisina (18 intervenciones) el 15/06/2013 03:52:32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program ej1;
var
  valorprod:real;
  ivaprod:real;
 
Function PVP(valorprod: real; ivaprod: real): real;
Var
total_iva : real;
begin
total_iva := valorprod*ivaprod/100;
pvp := valorprod + total_iva;
End;
 
begin  {programa principal}
  writeln ('ingrese valor del producto');
  read (valorprod);
  writeln ('ingrese porcentaje de iva');
  read (ivaprod);
  writeln ('el precio de venta al publico es ', pvp (valorprod,ivaprod):5:3);
  readln;
  readln;
end.


acá te dejo una solución del primer problema,, lo que cambie de la función es, RESULTADO por PVP, las funciones siempre tienen que terminar con el nombre de la función y el resultado que le vas a asignar.
si no entendiste algo preguntame
el otro ejercicio no entiendo muy bien que hay que hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ejercicios Pascal

Publicado por ramon (2158 intervenciones) el 15/06/2013 21:53:45
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
{Espero esto te ayude}
 
 program errores;
   uses
      crt;
   var
     saldo, ingreso : real;
 
   {Error Detectado num. 1 >valorprod: real, ivaprod: real< esto dara el }
   {error ?que espera parentesis? en realidad fallo de sintasis esto seria :}
   {Function PVP(valorprod, ivaprod: real) asi}
   {Error detectado num. 2 >PVP(valorprod, ivaprod: real) real< esto dara}
   {error ? Que espera dos puntoe : ? esto seria asi}
   {Function PVP(valorprod, ivaprod: real) : real}
   {error detectado num. 3 > Function PVP(valorprod, ivaprod: real) : real <}
   {error ? que espera punto y cona ;? esto seria asi}
   {Function PVP(valorprod, ivaprod: real) : real;}
   {Error detectado num. 4 > Resultado < variable no definida o no indenti-}
   {indentificada ? esto seria}
   {Var
      total_iva : real;
      Resultado : real ? }
    {o En otro caso faltaria cambiar resultado por pvp}
    {error detectado num. 5 > End. Se espera ; < esto seria ?}
    {End;}
 
   Function PVP(valorprod, ivaprod: real) : real;
    Var
      total_iva : real;
      Resultado : real;
       begin
       total_iva := valorprod*ivaprod/100;
       Resultado := valorprod + total_iva;
       {se tendria que poner pvp := resultado}
       pvp := resultado;
    End;
 
  procedure producto;
  var
    valor, iva : real;
  begin
      clrscr;
      write('  Entre Valor De Producto : ');
      readln(valor);
      write('  Entre El Iva Aplicar    : ');
      readln(iva);
      writeln;
      writeln('  El Precio De Venta Es : ',pvp(valor,iva):0:2);
      writeln;
      writeln('  Pulse Una Tecla');
      readkey;
  end;
 
  Procedure ingreso1(saldo : real; ingreso : real);
  Begin
    if (ingreso > 0) then
      saldo := saldo + ingreso
    else (* Se resta comision por numeros rojos *)
      saldo := (saldo + ingreso) - 3 ;
   End;
 
 
   Procedure ingreso2(VAR saldo : real; ingreso : real);
   Begin
    if (ingreso > 0) then
      saldo := saldo + ingreso
    else (* Se resta comision por numeros rojos *)
      saldo := (saldo + ingreso) - 3 ;
     end;
 
  begin
      producto;
        saldo := 600;
      ingreso := 500;
      clrscr;
      ingreso1(saldo,ingreso);
      writeln(' resultado obtenido en la ejecucion num. 1 es ');
      writeln(' Su saldo es ahora de ', saldo:0:2,' euros');
      writeln;
      ingreso2(saldo,ingreso);
      writeln(' resultado obtenido en la ejecucion num. 2 es ');
      writeln(' Su saldo es ahora de ', saldo:0:2,' euros');
      writeln;
      writeln(' Causa Del Efecto es : El primer Procedimiento recive');
      writeln(' Los Valores pero no los debuelve puesto que son parametros');
      writeln(' De entrada no de salida.');
      writeln(' Mientras que el segundo si son de salida puesto que son');
      writeln(' Variavles esternas al procedimiento que recojen los valores');
      writeln(' tomados en la operacion.');
      writeln(' En el primer caso seran parametros por valor.');
      writeln(' En el segundo caso seran parametros por direccion.');
      writeln;
      writeln('  Pulse Una Tecla');
      readkey;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JUAN

Ejercicios Pascal

Publicado por JUAN (11 intervenciones) el 16/06/2013 13:23:35
Muchas gracias!!
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
Imágen de perfil de JUAN

Ejercicios Pascal

Publicado por JUAN (11 intervenciones) el 16/06/2013 14:12:46
El ejercicio me pide que realice un programa que incluya esto:

PROCEDIMIENTO

1
2
3
4
5
6
7
Procedure ingreso(saldo: real; ingreso: real);
Begin
   if (ingreso >0) then
      saldo := saldo + ingreso
   else     (* Se resta comision por numeros rojos *)
      saldo := (saldo + ingreso) – 3 ;
End;


MÓDULO PRINCIPAL

1
2
3
4
5
6
(*Saldo de micuenta corriente *)
micuenta:= 600;
(* Hago un ingreso de 500 euros *)
ingreso(micuenta, 500);
(* Imprimo el saldo actualizado *)
writeln(‘Su saldo es ahora de ‘, micuenta:0:2, ‘euros’);
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

Ejercicios Pascal

Publicado por ramon (2158 intervenciones) el 16/06/2013 15:28:56
Lo tienes implementado ya miralo como ingreso1 y ingreso2
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
Imágen de perfil de JUAN

Ejercicios Pascal

Publicado por JUAN (11 intervenciones) el 16/06/2013 18:53:32
El ejercicio me pide que lo compile solo con lo que me da.

Yo he hecho esto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Procedure ingreso(saldo: real; ingreso: real);
 
Begin
   if (ingreso >0) then
      saldo := saldo + ingreso
   else     (* Se resta comision por numeros rojos *)
      saldo := (saldo + ingreso) - 3 ;
End;
var
 micuenta:real;
begin
{MÓDULO PRINCIPAL}
 
(*Saldo de micuenta corriente *)
micuenta:= 600;
(* Hago un ingreso de 500 euros *)
ingreso(micuenta, 500);
(* Imprimo el saldo actualizado *)
writeln('Su saldo es ahora de ', micuenta:0:2, 'euros');
end.


Ahora tengo que cambiar la definicion del procedimiento por esto y decir que diferencia existe.
Procedure ingreso(VAR saldo: real; ingreso: real);


LA VERDAD ES QUE NO SE EXACTAMENTE QUE ES LO QUE PIDE EL DICHOSO EJERCICIO, SUPONGO QUE SERA DEFINIR LAS DIFERENCIAS ENTRE UN PROCEDIMIENTO U OTRO NO?
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

Ejercicios Pascal

Publicado por ramon (2158 intervenciones) el 16/06/2013 22:06:06
Como te comento en el ejemplo que te puse las diferencias que se observan son :
writeln(' Causa Del Efecto es : El primer Procedimiento recive');
writeln(' Los Valores pero no los debuelve puesto que son parametros');
writeln(' De entrada no de salida.');
writeln(' Mientras que el segundo si son de salida puesto que son');
writeln(' Variavles esternas al procedimiento que recojen los valores');
writeln(' tomados en la operacion.');
writeln(' En el primer caso seran parametros por valor.');
writeln(' En el segundo caso seran parametros por direccion.');

ejecuta el programa que te puse y lo veras y podras sacar las conclusiones oportunas.
Suerte.
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
Imágen de perfil de JUAN

Ejercicios Pascal

Publicado por JUAN (11 intervenciones) el 16/06/2013 23:20:50
Es verdad. Gracias
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