Palindromy
Pokud se řetězec znaků čte stejně zprava doleva i zleva doprava, nazýváme ho palindromem. Na cvičení jsme vytvořili program, který dokáže rozpoznat jestli je zadaný řetězec palindrom.
Přitom jsme potřebovali porovnávat jednotlivé znaky řetězce a zopakovali jsme si tak práci s datovým typem string
:
var text: string; // deklarace promenne ... readln(text); // nacteni retezce do promenne ... delka := length(text); // zjisteni delky retezce ... for i:=1 to delka do // priklad prace s jednotlivymi znaky: writeln(text[i]); // kazdy znak je vypsan na novem radku
Také jsme si ukázali, jak je možné číst řetězec po znacích s využitím funkce eoln
:
var c: char; ... while not eoln do // dokud neni konec radku begin read(c); // precte znak writeln(c); // vytiskne znak na novy radek end; read(c); // po skonceni cyklu je na rade znak konce radku writeln(ord(c)); // vypise ordinalni hodnotu oddelovace radku
POZOR!! znak oddělovače řádku závisí na operačním systému - proto k jeho detekci vždy používejte funkci eoln
, která s tím počítá. Ve windows jsou to z historických důvodů dokonce znaky dva.
Základy debugování
Na závěr hodiny jsme si ukázali základní postup pro trasování programů v Turbo Pascalu:
- 1) definujeme tzv. breakpoint - řádek programu, od kterého chceme začít trasovat výpočet programu po krocích(Debug->Add breakpoint - podmínku nastavíme na
true
) - 2) stanovíme proměnné, jejichž hodnotu chceme během trasování sledovat (Debug->Add watch - uvedeme název proměnné, tak jak je používána v programu)
- 3) spustíme program a počkáme až se zastaví na námi definovaném breakpointu
- 4) pomocí klávesy F7 (Run->Trace into - trasuje i vnitřní tělo funkce), nebo F8 (Run->Step over) potvrzujeme provedení jednotlivých řádků programu a pozorujeme v okně Watches (Debug->Watch) změny hodnot sledovaných proměnných.
Výše popsaný postup nám může v některých případech pomoci odhalit chybu (bug) v programu. Proto se tomu říká v překladu odbroukování.

Domácí úkol
V CodExu byl zadán domácí úkol za 18 bodů. Úloha má název Palindromická věta.