Umíte pascalsky - 4.lekce ...

Umíte pascalsky?
4.lekce
Vytisknout  

Základní příkazy

     V dnešní lekci se začneme zabývat příkazy jazyka Pascal. Základní příkazy v Pascalu lze rozdělit takto:

jednoduché strukturované
přiřazovací příkaz složený příkaz
příkaz procedury podmíněný příkazy (IF a CASE)
příkaz skoku příkazy cyklu (FOR, REPEAT, WHILE)
prázdný příkaz příkaz WITH

Jednoduché příkazy

O přiřazovacím příkazu jsme si řekli v minulé lekci.

Příkaz procedury

Příkaz procedury slouží k aktivaci (vyvolání) procedur (podprogramů) standartních nebo programátorem definovaných.Mezi standartní patří již poznané procedury pro vstup a výstup:
write(parametry) a read(parametry).
Programátorem definované se musí nejprve deklarovat (poznáme později) a pak je aktivujeme názvem s parametry, např.:
Hledej(parametry),Vypocet_obsahu(parametry) atd.

Prázdný příkaz

Prázdný příkaz není tvořen žádným znakem a neodpovídá mu žádná akce. Umožňuje použít zápisy, které by jinak byly chybné. Např. za posledním příkazem v programu můžeme napsat středník a potom end. , protože za tímto středníkem se právě nachází onen prázdný příkaz.

Příkaz skoku

Příkaz skoku má tvar:
goto návěští
a přikazuje pokračovat při realizaci algoritmu na řádku uvozeném návěštím. Tento příkaz se snažíme z repertoáru vypusit, protože snižuje čitelnost, přehlednost programu.

Strukturované příkazy

Jsou to příkazy, které jsou vytvořeny z dalších příkazů, tedy mají nějakou vnitřní strukturu.

Složený příkaz

Z posloupnosti příkazů lze vytvořit jediný příkaz, tzv. složený příkaz. Má tvar:

begin
      příkaz1;
      příkaz2;
      ...
      příkazn
end

Používáme ho tehdy, jestliže nám syntaxe Pascalu přikazuje na určitém místě programu použít pouze jediný příkaz a my jich potřebujeme provést více.

Podmíněný příkaz

příkaz If - umožňuje podmíněné provedení nějakého příkazu
příkaz case - umožňuje provedení jednoho příkazu z několika alternativních

Příkaz If

Umožňuje vybrat k realizaji jeden ze dvou příkazů na základě splnění nebo nesplnění určité podmínky. Může být úplný nebo neúplný (jedna z akcí schází).

a) neúplný příkaz if má tvar:

if podmínka then příkaz

podmínka je výraz typu boolean, příkaz je jediný příkaz.
Realizace: Když má podmínka hodnotu true, vykoná se příkaz, když má hodnotu false, nevykoná se nic, příkaz je bez účinku.

Příklad: if cislo>0 then vysledek:=sqrt(cislo)
Je-li proměnná cislo kladná, pak do proměnné vysledek ulozi druhou odmocninu z cisla jinak neprovede nic.

b) úplný příkaz if má tvar:

if podmínka then příkaz1
                  else příkaz2

Realizace: Když má podmínka hodnotu true, vykoná se příkaz1, když má hodnotu false, vykoná se příkaz2.

Příklad: if cislo<0 then hodnota:=(-1)*cislo
                          else hodnota:=cislo
Je-li proměnná cislo záporná, do hodnoty uloží cislo opačné, jinak do hodnoty uloží cislo - výpočet absolutní hodnoty z proměnné cislo.

Poznámky:
1) před else nesmi být středník
2) chceme-li za then nebo else napsat více příkazů, musíme je pomocí
    begin a end převést na jeden složený příkaz
    if cislo>0 then
                       begin
                          soucet:=cislo + 5;
                          soucin:=cislo*3
                       end
3) použijeme-li vícekrát if za sebou, pak else patří vždy nejbližšímu (volnému) then.
    if cislo>0 then if cislo>5 then vysledek:=100 else vysledek:=0
    else se vztahuje k podmínce x>5, tedy je-li x>0 a x<5 pak se do vysledku ulozi 0.
    Lepší je ovšem použivat begin a end (zvyšuje čitelnost) a napsat to takto:
    if cislo>0 then
         begin
            if cislo>5 then vysledek:=100
                          else vysledek:=0
         end

Příklady:

Příklad1:
Jsou dána tři různá reálná čísla cislo1, cislo2, cislo3. Sestavte program, který určí největší z těchto daných čísel.

Myšlenka (hrubý algoritmus):
1) porovnáme první dvě čísla, větší z nich označíme Max
2) toto Max porovnáme s třetím číslem cislo3, bude-li cislo3 větší, bude to nové Max

Program tedy může vypadat takto:

program Maximum;
  var cislo1,cislo2,cislo3,Max: real; {Deklarace proměnných}
  begin
    writeln('Zadejte tři čísla'); {Napíše výzvu k zadání čísel}
    readln(cislo1,cislo2,cislo3);    {Načte čísla}
    if cislo1>cislo2 then Max:=cislo1 {Je-li cislo1 větší než cislo2}
                         else Max:=cislo2; {uloží do Max cislo1,jinak cislo2}
    if cislo3>Max then Max:=cislo3; {Do Max cislo3,je-li větší Max}
    writeln('Maximum je ', Max:3:1 );
  end.


Příklad2:
Sestavte program pro vyřešení lineární rovnice ax + b = 0.

Příklad: Rovnice 3x-5=0 dává řešení x=5/3
Rovnice 0x-5=0 dává 0x=5 a ta nemá řešení
Rovnice 0x-0=0 dává 0x=0 a zde je řešením každé číslo.

Myšlenka (hrubý algoritmus):
1) je-li a=0 pak závisí řešení na b, je-li i b=0 pak je řešením každé číslo jinak nemá řešení
2) není-li b=0, určíme řešení jako -b/a

A zde je program:

program Linear_Rovnice;
  var a,b,koren: real; {Deklarace proměnných}
  begin
    writeln('Zadejte koeficienty rovnice a , b'); {Napíše výzvu k koeficientů}
    readln(a,b);    {Načte koeficienty}
    if a=0 then {Je-li koef. a roven 0}
                 begin
                   if b=0 then writeln('Každé číslo') {je-li b=0 je to každé číslo}
                            else writeln('Nemá řešení') {není-li b=0 nemá řešení}
                 end
              else {není-li a=0}
                 begin
                   koren:=(-1)*b/a; {vypočte kořen jako -b/a}
                   writeln('Kořen je ',koren);
                 end
  end.

Domácí úkol:

     Sestavte program Kvadrat_Rovnice, který vyřeší kvadratickou rovnici ax2 + bx + c = 0 v oboru reálných čísel.

On-line účast na řešení úkolu

Řešit úkol Prohlídka hodnocení úkolu Dotazy,připomínky

Pomocí volby Řešit můžete (po přihlášení) odeslat vaše řešení domácího úkolu (každý úkol smíte řešit jen jednou). Volbou Hodnocení si přečtete hodnocení a komentář od vyučujícího. Dotaz nebo připomínku můžete opakovaně zasílat pomocí tlačítka Dotazy, Komunikace (na levém okraji) zobrazuje příklad možné komunikace s vyučujícím.