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

Turbo Pascal - 6. lekceTurbo Pascal - 6. lekce

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

Turbo Pascal - 6. lekce

Google       Google       21. 11. 2005       44 665×

Datové typy i proměnné máme za sebou. Můžeme se tedy pustit do podmínek.

Reklama
Reklama

Výklad učiva:

Podmínky v Pascalu máme vlatně jen dvě. Jsou výjimky typu While, ale já osobně pokládam while za cyklus a ne podmínku. První z podmínek má hodně možností zapsání, kdežto druhá má pouze dva.

Příkaz IF

Podmínka IF aneb "jestliže", má mnoho způsobů zapsání, ovšem všechny mají stejné jedno, a to porovnání podmínky. Podmínka se zapisuje pomocí porovnávíní Cproměnné a máme několik možností porovnání:


Číselné hodnoty (Integer)

a<5   (* proměnná a je menší než 5 *)
a>5   (* proměnná a je větší než 5 *)
a<=5 (* proměnná a je menší nebo rovna 5 *)
a>=5 (* proměnná a je větší nebo rovna 5 *)
a<>5 (* proměnná a se nerovná 5 *)
a=5   (* proměnná a se rovná 5 *)

Písmena (Char)
a='N'  (* proměnná a se rovná N *)
a<>'N' (* proměnná a se nerovná N *)

Logické hodnoty (Boolean)
a=TRUE  (* proměnná a se rovná TRUE (pravda) *)
a<>False (* proměnná a se nerovná FALSE (nepravda) *)

Číselné příklady jsou, myslím si, jasné. U písmen, tedy typu Char, je možné dělat i stejné operace jako u čísel, protože každé písmeno má svojí hodnotu v ASCII tabulce, ale dopředu se dohodneme, že budeme u písmen používat pouze rovná se a nerovná se. U posledního typu (Boolean) si bystřejší z vás všimnou, že obě podmínky mají stejný význam, protože pokud se 'a' nerovná FALSE, logicky se rovná TRUE, což je napsané nad ní.

Podmínky lze také kombinovat, samozřejmě, a to pomocí logických operátorů AND a OR, přičemž se musí výraz umístit do závorek. Uveďme si příklad:


(a='N') AND (a='n')
(a=5) OR (a=10)

Složené podmínky můžeme také kombinovat a vnořovat, takže nám může vzniknout například tohle:


( (a='N') OR (a='n') AND (a='A') OR (a='a') )

Upozorňuji na velkou ostražitost při psaní závorek!

To by byl základ psaní podmínek a teď již k samotnému příkazu.

Jednoduchá podmínka

Jednoduchá podmínka se zapisuje ve tvaru: IF podminka THEN prikaz; např.: IF a=5 THEN write('Ahoj svete');

Program zkontroluje výraz v podmínce jestli je pravdivý a pokud ano, provede příkaz za slůvkem THEN. Pokud není podmínka pravdivá, celý příkaz přeskočí a pokračuje v programu. Například:


...  
  writeln('Pokud zmacknes klavesu O vypise se ti ,,Obraz" ');
  a:=readkey;
  if (a='O') OR (a='o') then writeln('Obraz');
  write('Pokracujeme v programu');
... 

Jak vidíte, rovnou jsem si pojistil v podmínce, že zmáčknutá klávesa může být jak velké tak malé ,,O" . Jde o to, že v syntaxi kompilátor sice nerozpoznává velká a malá, ovšem hodnota proměnné je buď velká nebo malá.

Úplná podmínka

Úplná podmínka se zapisuje ve tvaru : IF podminka THEN prikaz ELSE prikaz; např.: IF a=5 THEN write('Ahoj svete') ELSE write('Nashle svete');

Program tedy zkontroluje podmínku a pokud je pravdivá, vykoná příkaz za slůvkem THEN, pokud není pravdivá, vykoná příkaz za slovem ELSE. Všiměte si, že příkaz za slůvkem THEN není ukončen středníkem a to proto, že pokud v podmínce použijete slovo ELSE, nesmí se za THEN psát středník. Program tedy vykoná větev podle vyhodnocení podmínky a pokračuje dál. Například:


...
  write('Chces vypsat ahoj svete? A/N ');
  readln(volba);
  IF (volba='A') OR (volba='a') THEN writeln('Ahoj svete') ELSE writeln('Nevypisu');
  write('Podminka byla vykonana a pokracujeme');
...

Podmínky se mohou samozřejmě také vnořovat, ale moc to nedoporučuji, protože se pak zdrojový kód stává dost nepřehledným.

Myslím, že prozatím nebudeme k příkazu IF více potřebovat. Poslední co potřebujete vědět je, že, jak jste si všimli, za slůvka THEN a ELSE lze vložit pouze jeden příkaz. Taková podmínka by nám byla samozřejmě k ničemu, a proto se tento problém řeší použitím složeného příkazu BEGIN END; . Dejte si pozor na středník za endem.

Příkaz CASE

Předchozí příkaz (IF) nám program dokázal rozvětvit pouze do dvou větví, což je dobré jen pro nějaká opatření a další maličkosti, ovšem pro větší projekty je samozřejmě potřeba větvení do více větví. O to se právě stará příkaz CASE nebo-li přepínač.

Příkaz se zapisuje v tomto tvaru:

CASE promenna OF
'hodnota': prikaz;
'hodnota2': prikaz;
....
'hodnotaN': prikaz;
End;

Nejlepší asi bude, když hned uvedu příklad:


...
writeln('zadej tvoji volbu: ');readln(volba);
CASE volba OF
  'A','a' : writeln('Ahoj svete');
  'N','n' : writeln('Nashle svete');
  'E','e' : writeln('Euklidovo cislo');
  'K','k' : writeln('Konec');
End;
write('Prepinac vypsal, co mel a my pokracujeme');
...  

Příkaz CASE, stejně jako IF, má ještě jednu variantu, a to se slůvkem ELSE. Tzn., že přepínač zkontroluje všechny větve a pokud výraz neodpovídá žádné z nich, provede to, co je za slůvkem ELSE. Pokud slovo ELSE nepoužijeme, tak program normálně pokračuje dále.

Problematika podmínek je, myslím si, velmi těžká látka a pro dnešek jsme si toho už vysvětlili hodně. Nakonec tedy malá ukázka programu s použitím podmínek:


Program podminky;
Uses crt;
label skok;      (* Deklarace skoku *)
var i:integer;     (* Deklarace promennych *)
    odpoved,volba:char;
Begin
 clrscr;
 write('Vitejte v programu Test');  (* Uvitani *)
 readln;
 skok:    (* Zacatek skoku *)
 clrscr;
 writeln('1. Jaka je nejlepsi stranka o programovani? ');
 writeln('a) Azetko.sk');
 writeln('b) Programujte.com');    (* Otazka *)
 writeln('c) Seznam.cz');
 readln(odpoved);
 CASE odpoved OF    (* Prepinac *)
   'A','a' : Begin    (* pokud je odpoved A *)
               write('Nene Azetko je slovensky vyhledavac zkus to znovu');
               readln;
               goto skok;
             end;
   'B','b' : write('Vyborne! Programujte rulezzz');  (* Pokud je odpoved B *)
   'C','c' : Begin     (* Pokud je odpoved C *)
               write('Ale to vis ze ne Seznam je Cesky vyhledavac zkus to znovu');
               readln;
               goto skok;
             end;
   ELSE Begin     (* Pokud je odpoved jina nez a,b,c *)
          write('Spatne zadani. Zadej a,b nebo c');
          readln;
          goto skok;
        end;
 End;
readln;
clrscr;
Write('Odpovedel jsi spravne chces to zkusit znovu ? (N/A)');
readln(volba); 
if (volba='A') OR (volba='a') Then goto skok ELSE write('Dekuji za pouziti'); (* Opakovat ? *)
readln;
end.

Úkol

Jak ste si asi všimli, měl jsem trošku problém vymslet rychle nějaký problém, kde bych použil IF i CASE a nebylo to na tisíc řádků. A jelikož programátor musí být nápaditý a mít fantazii, tak je to samé teď na vás. Vymyslete nějaký program, ve kterém použijete jak IF, tak CASE. Dopředu říkam, že chci, aby program měl určitou úroveň, tzn. počty s proměnnými a další a další věci.

×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.

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

Nové články

Obrázek ke článku Open source neznamená „zdarma“

Open source neznamená „zdarma“

Mnoho společností po celém světě, univerzity, vládní organizace a jim podobné dnes používají open source technologie k vytvoření vlastních webových stránek. Tyto technologie se používají čím dál tím více. Jednoduše proto, že je řada poskytovatelů nabízí zcela zdarma. Je to ale opravdu to správné řešení pro všechny? 

Reklama
Reklama
Obrázek ke článku Rádi sledujete obsah streamovacích služeb? Dejte si pozor na pirátské verze Mandaloriana a Netflixu

Rádi sledujete obsah streamovacích služeb? Dejte si pozor na pirátské verze Mandaloriana a Netflixu

Streamovací služby a jejich obsah se v uplynulých měsících těšily velkému zájmu uživatelů, kteří se při pobytu v karanténě chtěli zabavit sledováním filmů a seriálů. Toho bleskově zneužili hackeři, kteří pod názvy oblíbených streamovacích platforem a jejich obsahu maskovali škodlivé soubory. Nejčastěji používali jako návnadu Netflix a seriál The Mandalorian. 

Obrázek ke článku Bionické ruce mění lidem životy. Konference INSPO ukázala nejnovější technologie

Bionické ruce mění lidem životy. Konference INSPO ukázala nejnovější technologie

Bionické myoprotézy rukou jsou ukázkou pokroku, který udělaly za posledních dvacet let technologie pro lidi se zdravotním postižením. Dnešní protézy, které fungují na principu snímání svalových vzorců, umožňují uživatelům operovat s křehkými předměty či provádět úkony složité na kooperaci různých částí těla – ať už jde o hru na hudební nástroje, zavazování tkaniček, nebo třeba pití ze skleničky. Na 20. ročníku konference INSPO se budou zájemci moci naživo seznámit nejen s takzvanou myorukou, ale rovněž s jedním z jejích uživatelů. 

Obrázek ke článku Využití .htaccess na malém webu

Využití .htaccess na malém webu

V dnešní době existuje spoustu cms, které mnohdy ale vůbec nepotřebujeme a stačila by nám pouze základní funkčnost k úpravě url, přesměrování. K tomuto účelu je ideální .htaccess soubor, který nám se všemi těmato úpravami umí pomoct.

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