Pascal/Turbo Pascal - 1.2 tema 7

 
Vista:
sin imagen de perfil

1.2 tema 7

Publicado por Erik (73 intervenciones) el 09/04/2014 15:31:43
hola tengo que corregir un codigo, aqui dejo lo que tengo que corregir:

Mira como has definido la constante

1
2
Const
       TAMCOLECCION = 4;

Ahora cuando declaras el array debes escribir la costante también con mayísculas
1
2
3
4
Type
      coleccion = array[1..tamcoleccion] of real;
 
     coleccion = array[1..TAMCOLECCION] of real;

Aunque funciona correctamente con el while, lo habitual y más eficiente es utilizar un for para el recorrido de un array.

ahora dejo el codigo en cuestion que hay que corregir

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
Program Galeria;
  uses
    crt;
  (*-- Constantes globales al programa -- *)
   Const
       TAMCOLECCION = 4;
 
   (*-- Tipos globales al programa -- *)
   Type
      coleccion = array[1..tamcoleccion] of real;
 
   (*-- Variables del módulo principal -- *)
    Var
    precios : Coleccion;
 
   (*-- Funciones y procedimientos -- *)
  procedure lee_tabla(var t : coleccion; n : integer);
  var
    i : integer;
  begin
     i := 1;
     writeln('  Entre Precio Cuadro ');
   while i < n + 1 do
   begin
      write('  Numero ',i,' : ');
      readln(t[i]);
      i := i + 1;
   end;
  end;
 
  procedure imprime_tabla(t : coleccion; n : integer);
  var
    i : integer;
  begin
     i := 1;
   writeln('  Los Resultados Son ');
   writeln;
   while i < n + 1 do
   begin
      writeln(' Num. : ',i,'  Precio : ',t[i]:0:2);
      i := i + 1;
   end;
  end;
 
 
 
 
    (*-- Programa Principal -- *)
   Begin
      clrscr;
      lee_tabla(precios, TAMCOLECCION);
      clrscr;
      imprime_tabla(precios, TAMCOLECCION);
      readln;
    End.

gracias de antemano.
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
sin imagen de perfil

1.2 tema 7

Publicado por Diego (98 intervenciones) el 09/04/2014 18:50:44
En custión de eficiencia relmente no es tan así para saberlo tenés que contar las unidades de tiempo que emplea ejecutarlo con un while y con un for y luego comparar,
Generalmente el for es más cómodo de usar, (el for y el while no son tan simples como un if, sino que emplean otras operaciones; es mas el while emplea un doble if ni no mal recuerdo)
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
sin imagen de perfil

1.2 tema 7

Publicado por Erik (73 intervenciones) el 10/04/2014 17:03:56
explicamelo en codigo pascal, por favor.
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
sin imagen de perfil

1.2 tema 7

Publicado por Diego (98 intervenciones) el 11/04/2014 21:32:52
Es más teoria que realización de código:
ejemplo:

1
2
3
4
5
6
Function sum ( n: integer ) : integer;
 
{1}    s_parcial := 0;
{2}    for i := 1 to n do
{3}         s_parcial := s_parcial + i * i * i;
{4}    sum := s_parcial;

Las líneas {1} y {4} cuentan una unidad cada una, entonces tenemos 2.

La línea {3} cuenta 4 unidades cada vez que se ejecuta, entonces 4 n (1 asignación, 1 suma y 2 productos)

La línea {2} tiene una inicialización, testeo de i<=n e incremento de i, entonces 1 de la asignación, más (n+1) para todos los test y n para el incremento, entonces 1+ (n+1) + n = 2n + 2
T(N) ==> total = 2 + 4 n + 2 n + 2
==> 6 n + 4 = O(n)
es una de las formas de calcular la eficiencia de un programa.
Como te darás cuenta el for es más que una simple comparación (if solo requiere una comparación por cada argumento osea una unidad de tiempo por cada argumento). Si me equivoque que alguien me mustre el error(lo dudo, pero puede pasar).
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
sin imagen de perfil

1.2 tema 7

Publicado por Erik (73 intervenciones) el 12/04/2014 20:27:24
si, esta bien pero muestramelo con el codigo pascal que escribi yo, configuralo para que se corriga los errores.
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
sin imagen de perfil

1.2 tema 7

Publicado por Diego (98 intervenciones) el 13/04/2014 03:39:23
Como ya te dije es más bien comprender la manera en la que pascal hace uso de la memoria y como es que están compuestas las instrucciones;
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