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

Turbo Pascal - 6. lekceTurbo Pascal - 6. lekce

 

Turbo Pascal - 6. lekce

Google       Google       21. 11. 2005       40 232×

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 NEWTON Media prohledá 200  milionů mediálních zpráv během sekund díky Cisco UCS

NEWTON Media prohledá 200 milionů mediálních zpráv během sekund díky Cisco UCS

Česká společnost NEWTON Media provozuje největší archiv mediálních zpráv ve střední a východní Evropě. Mezi její zákazníky patří například ministerstva, evropské instituce nebo komerční firmy z nejrůznějších oborů. NEWTON Media rozesílá svým zákazníkům každý den monitoring médií podle nastavených klíčových slov a nabízí online službu, kde lze vyhledat mediální výstupy v plném znění od roku 1996.

Reklama
Reklama
Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý