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
Pergoly a střechy Brno

Turbo Pascal - 6. lekce

Google       Google       21. 11. 2005       44 901×

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 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ý