Está en la página 1de 7

Leer y mostrar una lista acabada

en una marca (por ejemplo, -1)


Diagrama MODULAR
PRINCIPAL (MAIN)
pLeeValor
pMostrarVector pLeerVectorVector fPromedio
pPromCont
A desarrollar
Programa Principal
CONST
marca = -1.;
nMAx = 20;
TYPE
tIndex = 1..nMax;
tCont = 0..nMax;
tVector= ARRAY[tIndex] OF
REAL;


VAR miVector: tVector;
begin
Writeln('programa prueba VEH');
Writeln;
pLeerVector(miVector);
pMostrarVector(miVector);

Write('Prem enter per
acabar');Readln;
end.
-1
marca
ESTRUCTURA
DATOS
pLeeValor
PROCEDURE pLeeValor(OUT unValor:REAL);
BEGIN
Write('Entre valor, ', marca:2:0,' = FINAL :');
READLN (unValor)
end;
pMostrarVector
PROCEDURE pMostrarVector (ciertoVector: tVector);
VAR
iP: tCont;
BEGIN
Writeln;
iP:=1;
IF ciertoVector[iP] = marca
THEN Writeln('Lista vacia')
ELSE
WHILE ciertoVector[ip] <> marca
DO
BEGIN
Writeln('Posicio ', iP,' valor = ', ciertoVector[iP]:8:2);
iP:=iP+1
end
;
Writeln
end;
pLeerVector
PROCEDURE pLeerVector(OUT unVector:tVector);
Var
iPos:tCont;
BEGIN
iPos:=1;
pLeeValor(unVector[iPos]);

WHILE unVector[iPos] <> marca
DO
BEGIN
iPos:= iPos + 1;
pLeeValor(unVector[iPos])
END;
END;

Trabajo a realizar
1. Pruebe el programa base

1. El algoritmo del PROCEDURE de lectura funciona, pero como debe
guardarse la marca, le proponemos que escriba uno ms elegante y
eficiente haciendo uso de REPEAT, en lugar de WHILE. As empezamos a
practicar con algo sencillo.

2. Aada una Funcin que Reciba el vector y devuelva el valor promedio.
FUNCTION fPromedio(unaLista:tVector): REAL;

3. Aada un PROCEDURE que reciba el vector y devuelva el valor
promedio y el contador de elementos existentes:
PROCEDURE pPromCont ( laLista:tVector;
OUT unPromedio: REAL;
OUT unContador: INTEGER);

También podría gustarte