Shrnutí

Bajka o datových typech

Za osmero horami se rozkládá země zvaná RAM. Žijí tam pospolu 0 a 1 v bytech po 8. Každý byt má svoji adresu, aby Program, který celé zemi vládne mohl snadno kontrolovat své obyvatele.
V zemi jsou různě velké domy. Každý správný dům má předem daný počet bytů a podle toho, jaké nuly a jedničky v něm bydlí, může program určit jaká hodnota v něm přebývá.
Existují domy pro celá čísla (2 bytové domky na předměstí), domy pro znaky (1 bytové chatrče), ale najdeme zde také bydlení pro řetězce (řadové domky po jednom bytu), reálná čísla (8 bytové bytovky) a samozřejmě také celá sídliště například pro dvourozměrná pole celých čísel (panelák s několika vchody a dvěma byty v každém patře).

Podle výše uvedené alegorické bajky, které zoufale chybí zápletka si jistě domyslíte že:

  1. dům = proměnná
  2. byt = byte
  3. typ domu = datový typ

Ok... zatím je to trochu infantilní, ale až se budeme bavit o dynamické alokaci proměnných, ukazatelích a podobných věcech, třeba nám to ještě přijde vhod.

Datové typy

V Pascalu existují všeliké datové typy. Datový typ určuje, jaký význam mají bity v paměti počítače. Pro začátek si vystačíme s následujícími:

  • boolean - hodnota true nebo false. Zabírá 1 byt protože menší paměť nelze samostatně adresovat.
  • integer - celé číslo v rozsahu -(MAXINT+1)..MAXINT. Zabírá (obyčejně) 2 byty.
  • real - číslo s plovoucí desetinnou čárkou. V paměti se reprezentuje jako 2 celá čísla + znaménkový bit. Zabírá (obyčejně) 8 bytů.
  • char - jde o speciální případ celého čísla, které pascal interpretuje jako jeden z 256 znaků ASCII tabulky.
  • string - řetězec charů. Neřekneme-li jinak, má délku 255 znaků. Znak na pozici 0 přitom nese informaci o délce řetězce.
  • array - v úplné obecnosti jde o n-rozměrné pole jiných datových typů. My budeme pracovat s n=1,2.

Řídící struktury

V rychlosti jsme si připomenuli, jak fungují řídící struktury: for, while a repeat.
Z každé z nich lze "vyskočit" ven pomocí příkazu break, nebo přejít na začátek dalšího kola cyklu pomocí continue.

Bavili jsme se také o příkazu exit, který umožňuje předčasné ukončení funkce nebo procedury.

Neméně důležitou konstrukcí pro řízení běhu programu je potom větvící podmínka if .. then .. else, která je solí každého programu (bez ní se většina programů jen těžko obejde).

demo: break,continue,exit

Domácí úkol

V CodExu byl zadán domácí úkol za 30 bodů. Úloha má název Hledáme virus. Na cvičení bylo řečeno mnoho tipů jak je možné k úloze přistupovat. Například:

  1. + K řešení se mohou hodit bitové operace. Konkrétně XOR lze například využít pro "přepnutí" libovolného bitu na opačnou hodnotu.
  2. + Je výhodné rozdělit si program na menší jednoduché funkce, které lze jednoduše otestovat zvlášť (např. pohyb po hracím plánu, nalezení startovní pozice apod.). Program z nich potom půjde jednoduše složit.

Originalitě se ale meze nekladou - za invenci a kreativitu můžete získat až 7 bodů.