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. 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. 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. 3) spustíme program a počkáme až se zastaví na námi definovaném breakpointu
  4. 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.