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);