Kommunikáció paraméterek illetve globális változók segítségével - példaprogram

1. A program egy globális változóban (tömbben) tárolja az adatokat, melyeket az eljárások feldolgoznak.

program Globalis;
uses Crt;
type TOszt=array[1..50] of string;
var Osztaly: TOszt;
    Letszam: integer;
    c: char;

procedure Beiras;
  var i: integer;
  begin
    ClrScr;
    Write('Hány név lesz: ');
    ReadLn(Letszam);
    for i := 1 to Letszam do
      begin
        Write('Az ',i,'. név: ');
        ReadLn(Osztaly[i])
      end
  end;

procedure Rendezes;
  var i, j: integer;
      seged: string;
  begin
    for i := 1 to Letszam-1 do
      for j := i + 1 to Letszam do
        if Osztaly[i] > Osztaly[j] then
          begin
            seged := Osztaly[i];
            Osztaly[i] := Osztaly[j];
            Osztaly[j] := seged
          end
  end;

procedure Listazas;
  var i: integer;
  begin
    ClrScr;
    for i:=1 to Letszam do
      WriteLn(Osztaly[i]);
    ReadKey
  end;

begin
  repeat
    ClrScr;
    WriteLn('1. Nevek beírása');
    WriteLn('2. Névsorba rendezés');
    WriteLn('3. Listázás');
    WriteLn('4. Vége');
    repeat c := ReadKey until c in ['1'..'4', #27];
    case c of
      '1': Beiras;
      '2': Rendezes;
      '3': Listazas;
    end;
  until (c = '4') or (c = #27)
end.

2. Az egyes eljárások több adatsorral (tömbbel) is dolgoznak, paramétereken keresztül kapják meg a feldolgozandó tömböt, illetve adják vissza a főprogramnak.

program Parameterek;
uses Crt;
type TNaplo = array[1..50] of real;
var A_oszt, B_oszt: Tnaplo;
    A_letsz, B_letsz: integer;

procedure Beolvas(var Oszt: Tnaplo; var Letsz: integer);
  var i: integer;
  begin
    Write('Hány tanuló van: ');
    readln(Letsz);
    for i := 1 to Letsz do
      begin
        Write('Az ',i,'. átlaga: ');
        ReadLn(Oszt[i])
      end;
    WriteLn;
  end;

function Atlag(Oszt: Tnaplo; Letsz: integer): real;
  var i: integer;
      sum: real;
  begin
    sum := 0;
    for i := 1 to Letsz do
      sum := sum + Oszt[i];
    Atlag:= sum / Letsz
  end;

begin
  ClrScr;
  WriteLn('Irja be az A osztály tanulóinak átlagait: ');
  Beolvas(A_oszt, A_letsz);
  WriteLn('Irja be az B osztály tanulóinak átlagait: ');
  Beolvas(B_oszt, B_letsz);
  WriteLn('Az A osztály átlaga: ', Atlag(A_oszt, A_letsz):4:2 );
  WriteLn( 'A B osztály átlaga: ', Atlag(B_oszt, B_letsz):4:2 );
  ReadKey;
end.