Vstupy a výstupy programu, podmínka

Programy v Pascalu (alespoň ty naše) jsou psány pro DOS. Uživateli se sice zdá, že program píše na obrazovku a čte z klávesnice, ale ne vždy je to zcela pravda. Program totiž čte ze standardního vstupu a píše do standardního výstupu. Problémem je to, že většinou je standardním vstupem klávesnice a standardním výstupem obrazovka. Pokud chceme, aby byl výstup vždy na obrazovce, stačí uvést v záhlaví programu
Uses CRT;
a výstup bude vždy na obrazovku, vstup vždy z klávesnice. Naopak, pokud v hlavičce programu toto neuvedeme a napíšeme na první řádek
Program Jméno( Input, Output );
můžeme například místo na obrazovku psát do souboru.

Parametry programu

Do programu mohou vstupovat parametry, tedy hodnoty, zadané při spuštění programu. Kolik parametrů bylo zadáno lze zjistit pomocí funkce ParamCount:

pocet:= ParamCount;

Jednotlivé parametry lze jako text (string) načítat následovně:
parametr:= ParamStr( 1 ); {načte první parametr programu}

Pokud se pokusím číst „nultý" parametr programu: jmeno:= ParamStr( 0 ); dozvím se jméno, kterým byl program spuštěn — tedy většinou jméno programu.

Číst parametry dál, než kolik jich je jest nesmysl. Ani nevím, jestli nastane chyba (asi ne) nebo dostanu nějaký nesmysl. Doporučuji vyzkoušet, zapamatovat a dávat si pozor.

Aby bylo možné spouštět programy „přeložené", tedy mimo prostředí Turbo Pascalu, je třeba nastavit v menu CompileDestination stav Disk.

Samozřejmě, že není nutné se vždy vracet do DOSu pokaždé, když chci zkoušet parametry, neboť ty je možné zadat přímo v prostředí Turbo Pascal: RunParameters.

Podmínka

Je snad každému jasné, že program většinou neběží „přímo" od začátku na konec. Většinou na něco reaguje, rozhoduje se: když tohle, tak udělám támhleto, jinak nic. V Pascalu se taková podmínka zapisuje:
If podmínka then příkaz

If a=1 then WriteLn( 'jedna' );

If p=0 then
Begin
WriteLn('Nesmí být nula! Nastavuji na jedničku.' );
p:= 1;
end;

If a>b then WriteLn( 'A je větší.' )
else WriteLn( 'A není větší.' );

Poznamenávám, že před else se nepíše středník!

Příklad:
Program Suma( Input, Output );
{                   Suma
        Sečte čísla - parametry programu}

 Var
  Par: String;                              {Parametr}
  Poc: Integer;                             {Počítadlo}
  Pom: Integer;                             {Pomocná prom.}
  Cis: Real;                                {Číslo}
  Sum: Real;                                {Suma - výsledek}
 Begin
  Sum:= 0;                                  {Vynulovat sumu}
  If ParamCount>=1 then                     {Když jsou parametry..}
  Begin
   For Poc:=1 to ParamCount do              {   Od prvního  do posledního}
   Begin
    Par:= ParamStr( Poc );
    Val( Par, Cis, Pom );                   {   Převod textu na číslo}
    Sum:= Sum+Cis;                          {   Přičíst}
   end;
   WriteLn( Output,'Suma = ',Sum:6:3 );     {   Výpis výsledku}
  end else                                  {..když nebyly parametry..}
  WriteLn( Output, 'SUMA cislo1 cislo2..'); {   Nápověda}
 End.