Turbo Pascal - 8. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Turbo Pascal - 8. lekceTurbo Pascal - 8. lekce

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Pergoly a střechy Brno

Turbo Pascal - 8. lekce

Google       Google       20. 12. 2005       36 285×

Další zajímavou látkou a velmi užitečnou jsou takzvané podprogramy. Dnes se je tedy naučíme používat.

Reklama
Reklama

Podprogramy slouží především ke zjednodušení a zkrácení výsledného zdrojového kódu. Programátor může napsat část programu pouze jednou a opakovaně vložit do programu, kolikrát bude chtít, pouze jedním řádkem.

Pascal rozeznává dva druhy podprogramů:

  • Procedury
  • Funkce
  • Procedura je posloupnost příkazů, která se vyvolá příkazem, který je vlastně název procedury.
    Funkce je výraz, který má vypočítat určitou hodnotu.

    Velmi důležité při podprogramech je rozdělit si proměnné. Proměnné rozlišujeme na Globální a Lokální

    Globální proměnné jsou deklarované pro celý zdrojový kód a můžete je použít v jakékoli části programu.

    Lokální proměnné se deklarují v deklarační části libovolného podprogramu a platí pouze pro ten podprogram, tzn. nelze je použít jinde ve zdrojovém kódu.

    Z toho vyplývá, že pokud deklarujeme v podprogramu proměnnou např. ,,cislo" nemůžeme ji vyvolat v hlavní výkonné části programu, ale pouze v podprogramu. Uveďme si příklad:

    
    Program podprogramy;
    uses crt;
    var globalni:integer;  (*Deklarace globalni promenne*)
    Procedure vypis;    (*Definice procedury*)
    var lokalni:integer;  (*Deklarace lokalni promenne*)
      begin
        lokalni:=10;    (*Prirazeni hodnoty lokalni promenne*)
        writeln(lokalni);   (*Vypis lokalni promenne*)
      end;
    begin
      clrscr;
      globalni:=11;  (*Prirazeni hodnoty globalni promenne*)
      writeln(globalni); (*Vypis globalni promenne*)
      writeln(lokalni);  (*Chyba v programu*)
      vypis;  (*Vyvolani procedury*)
      readkey;
    end.  
    

    Jak vidíte, s lokální proměnnou lze pracovat jedině v těle podprogramu, jinak kompilátor zjistí chybu programu .

    Procedura

    Procedury deklarujeme slovem Procedure na konci deklarační části. Pro proceduru si také můžeme deklarovat vlastní lokální proměnné a další položky z deklarační části. Například takto:

    
    ...
    Procedure ahoj;
    var lokalni_promenna:integer;
      begin
        writeln('Ahoj svete ',lokani_promenna);
        readkey;
      end;
    ...
    

    Takto si deklarujeme proceduru a můžeme s ní pracovat v těle samotného programu. Proceduru, jak už jsem naznačil výše, vyvoláme napsáním jejího jména. Na příkladu pochopíte:

    
    ...
    clrscr;
    writeln('Nyni provedu podprogram');
    readkey;
    ahoj;        (* Vyvolani podprogramu *)
    writeln('Podprogram se provedl muzeme pokracovat');
    readkey;
    clrscr;
    ...
    

    Jak vydíte, vyvolání procedury je velmi jednoduché. Výstup na obrazovce bude vypadat takto:

    
    Nyni provedu podprogram
    Ahoj svete 0
    Podprogram se provedl a muzeme pokracovat
    _
    

    Procedury se používají celkem často, ovšem viděl jsem i zdrojáky, kde autor nacpal vše do procedur a tělo samotného programu pak byly jen čtyři slova. Tohle bych osobně nedoporučoval. Procedury slouží hlavně ke sjednocení hodně příkazů, které v programu často používáme.

    Funkce

    Funkce je podprogram, který vypočítá jednu hodnotu určitého typu a tuto hodnotu poskytne hlavnímu programu. Funkce se definuje, stejně jako procedura, na konci deklarační části programu: Function Jmeno (vstupni parametry): Typ vysledku

    Ve funkci si také můžete deklarovat lokální proměnné a pracovat s nimi pouze v rámci té funkce. Každá funkce musí končit příkazem přiřazení, kde přiřadíme funkci výslednou hodnotu.

    Jelikož je to látka vcelku těžká, ukážeme si to na praktickém příkladu. Vyrobíme si program, který nám bude počítat dvojnásobky čísla, které zadáme. Nejprve si tedy deklarujeme hlavičku programu:

    
    Program dvojnasobky;
    uses crt;   (* Pripojeni knihovny *)
    var i:integer;  (* Deklarace globalni promenne *)
    

    Nyní přidáme definici funkce:

    
    Program dvojnasobky;
    uses crt;
    var i:integer;
    
    function pocitani(cislo:integer):integer;  (* Definice funkce *)
      begin
        writeln(cislo);
        while cislo<=100 do
          begin
            cislo:=cislo*2;    (* Telo funkce *)
            writeln(cislo);
          end;
       writeln;
       write('Vysledek je: ',cislo);
       pocitani:=cislo;   (* Prirazeni funkci hodnoty *)
      end;
    

    A nakonec samozřejmě tělo samotného programu:

    
    Program dvojnasobky;
    uses crt;      (* Pripojeni knihovny *)
    var i:integer;     (* Deklarace globalni promenne *)
    
    function pocitani(cislo:integer):integer;(* Definice funkce *)
      begin
        writeln(cislo);
        while cislo<=100 do
          begin
            cislo:=cislo*2;      (* Telo funkce *)
            writeln(cislo);
          end;
       writeln;
       write('Vysledek je: ',cislo);
       pocitani:=cislo;    (* Prirazeni funkci hodnoty *)
      end;
    
    Begin
      clrscr;
      pocitani(2);  (* Vyvolani funkce *)
      readkey;
    end.
    

    Z definice funkce tedy vyčteme, že zadání od uživatele bude proměnná ,,cislo" a proměnná i výsledek celé funkce bude typu integer. Dále je výkonné tělo funkce, kde se provádí co nadefinujete. Posledním příkazem přidělíme funkci konečnou hodnotu, která se vrátí k uživateli. Následuje samotný program, ve kterém jsme názvem funkci vyvolali. V závorce za názvem je vámi zadaná (vstupní) hodnota pro funkci. V tomto případě číslo, jehož dvojnásobky chcete ukázat.
    Pokud byste tedy měli nadefinovanou funkci např. takhle: function pocitani(cislo,cislo2,cislo3:integer):integer;, potom by muselo vyvolání funkce vypadat např. takto: pocitani(20,50,36)

    Učení podprogramů není lehká látka, ale velmi užitečná. Podprogramy ušetří programátorovi jak čas, tak řádky zdrojového kódu. Nic se ale nemá přehánět!

    Domácí úkol

    Tentokrát mi odevzdáte dva programy. Chci abyste si vymysleli vlastní programy ve kterých využijete proceduru a ve druhém funkci. Známkuji hlavně dobrý nápad. Koukejte na to, co dnes lidi baví a o co se zajímají, vytvořte nějaký program do školy nebo cokoli, ale hlavně ať to má nápad.

    ×Odeslání článku na tvůj Kindle

    Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
    Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

    E-mailová adresa (např. novak@kindle.com):

    TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

    Tagy:
    Hlasování bylo ukončeno    
    0 hlasů
    Google
    Autor programuje v Pascalu.

    Nové články

    Obrázek ke článku Konference: Moderní informační systémy podporují automatizaci

    Konference: Moderní informační systémy podporují automatizaci

    Současná situace v šíření onemocnění Covid-19 klade na řadu firem nové nároky a mnohé z nich jsou nyní více než kdy jindy závislé na nejmodernějších informačních technologiích. Proto i v oblasti podnikových informačních systémů vidíme rostoucí důraz na automatizaci nebo na důslednou integraci. Také o těchto trendech se bude mluvit na konferenci Firemní informační systémy, která se koná 24.9.2020 v pražském Kongresovém centru Vavruška na Karlově náměstí.

    Reklama
    Reklama
    Obrázek ke článku Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

    Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

    Za cenu šesti dolarů lze celkem bez obtíží koupit nový, líbivě vyhlížející flash disk. Přidaná hodnota, které se vám spolu s ním dostane, už tak moc líbivá není. To, co se před pár sekundami tvářilo jako externí disk, se po připojení k počítači změní v důmyslné elektrické křeslo, které vaše zařízení v onen příslovečný škvarek promění za pár sekund. Cílovou skupinou pro koupi takových zařízení by mohli být záškodníci, kteří by tímto způsobem osnovali pomstu třeba vůči záletnému partnerovi. 

    Obrázek ke článku Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

    Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

    Snad nikdy není špatná příležitost na investici do hodnotného vzdělání. Obzvlášť v případě, že absolvent dovede teoretické poznatky přetavit v praktické dovednosti, využitelné při řešení problémů i v komunikaci. Právě na to se specializuje studijní program MBA Řízení informačních technologií, vyučovaný na Business Institutu.

    Obrázek ke článku Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

    Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

    Pandemie Covid-19 otřásla trhem práce v základech. Dopady krize pocítilo celkově až 45 % zaměstnanců. Není divu, že čím dál větší jistotu přináší obor IT. Ten zůstal krizí téměř nepoznamenán a při nutnosti začít dělat věci na dálku se ještě více ukázalo, jak moc mnohé firmy kvalitní IT potřebují. Do IT nyní přicházejí začátečníci, kteří v něm vidí lukrativní budoucnost a jistotu, ale i freelanceři a zaměstnanci z oborů zasažených krizí

    Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
    Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý