Opakování asymptotické notace
Na cvičení byly rozebrány dva příklady. Není mým záměrem poskytovat zde univerzální návod pro rozhodování o vztazích mezi funkcemi. Věřím ale, že konkrétní řešený příklad může často pomoct pro lepší orientaci v problematice.
Jak se píše program
K napsání programu vám stačí libovolný textový editor. Na cvičení jsme použili editor zabudovaný ve vývojovém prostředí pro Turbo Pascal 7.0. Následující program ilustruje konstrukce a pojmy předvedené na cvičení.
1 Program cvicnyProgram; 2 const Pozdrav = 'Ahoj'; 3 tajneCislo = 10; 4 var X: integer; 5 Y: integer; 6 i: integer; 7 Begin 8 writeln(Pozdrav); 9 write('Hadej cislo: '); 10 readln(X); 11 Y := X; 12 if Y > tajneCislo then 13 writeln('To je moc. Zkus priste min.') 14 else 15 begin 16 if Y = tajneCislo then 17 begin 18 writeln('Trefa!'); 19 write('Za odmenu ti tu napisu ',tajneCislo,' hvezdicek: '); 20 for i:=1 to tajneCislo do 21 write('*'); 22 writeln; 23 end 24 else 25 writeln('To je malo. Zkus priste vic.'); 26 end; 27 readln; 28 End.
Komentář
Na prvním řádku najdeme název programu. Mezi řádky 7 až 28 je hlavní blok programu uzavřený mezi Begin
a End.
. Pascal ve zdrojovém kódu nerozlišuje velká a malá písmena. Hlavní blok je speciálním případem bloku příkazů a proto je za End
tečka místo středníku. Další bloky příkazů jsou např. mezi řádky 15-26, nebo 17-23. Každý blok příkazů obsahuje seznam příkazů oddělených znakem ";".
Na řádku 2 a 3 je uvedena definice konstant používaných v programu. Jde o seznam dvojic:
nazevKonstanty = hodnota
uvozený klíčovým slovem
const
, jehož položky jsou odděleny středníkem.
Podobně jsou na řádcích 4-6 uvedeny deklarace konstant. Tentokrát jde o seznam dvojic ve tvaru:
nazevPromenne : typPromenne
Položky seznamu jsou opět odděleny středníkem.
Pascal rozpoznává množství příkazů. V této ukázce se vyskytují:
- přiřazovací příkaz (ř. 11 - kopírování hodnoty z jedné proměnné do druhé)
- příkazy pro standartní vstup (ř. 10 - čtení hodnoty do proměnné; a 27 - čekání na Enter). V obou případech jde o volání procedury
readln
. - příkazy pro standartní výstup (ř. 8,9,13,18,19,21,22 a 25). Jde vždy o volání procedur
write
, nebowriteln
. Druhá jmenovaná vypíše kromě svých parametrů také konec řádku. řídicí struktury (ř. 12-26, 16-25 a 20-21). V prvních dvou případech jde o větvící příkaz ve tvaru:
if COND then prikaz_1 else prikaz_2;
PřitomCOND
může být jakýkoliv výraz, který lze vyhodnotit jako pravdivý, nebo nepravdivý aprikaz_1
iprikaz_2
může být libovolný příkaz z tohoto seznamu příkazů, nebo blok příkazů uzavřený mezibegin
aend
.Struktura na řádcích 20-21 představuje cyklus s daným počtem opakování ve tvaru:
for iteracniPromenna:=start to konec do prikaz;
Funguje to tak, že seprikaz
provede postupně pro každou hodnotu počínajestart
a končekonec
.
Domácí úkol
V CodExu je zadána první domácí úloha. K jejímu vyřešení budete potřebovat využít funkce read,readln,writeln
, řídicí strukturu představenou jako for
-cyklus a několik proměnných typu integer
. Zdrojový kód si zkuste přeložit a spustit. Případné technické problémy vyřešíme společně na příštím cvičení.
Za úlohu sice nejsou žádné body, ale úspěšní řešitelé mohou získat bonusové body. Na příštím cvičení si příklad podrobně rozebereme.