Datový typ record

Kromně základních datových typů (integer,real,boolean,char,string) a polí umožňuje Pascal definici typu record, který umožňuje sdružit několik proměnných jednoduššího typu do jednoho komplexnějšího typu.

Příklad - komplexní čísla

Typ pro uložení komplexního čísla můžeme v Pascalu definovat například takto:

	type TComplex = record
			  re: real;
			  im: real;
			end;
	

Proměnnou potom definujeme jako:

	var C: TComplex;
	

Poté můžeme s jednotlivými složkami pracovat, jako s "obyčejnými" proměnnými - abychom specifikovali část proměnné C se kterou zrovna chceme pracovat, používáme operátor "." (tečka):

	...
	C.re := 8.54;   {nastav reálnou složku}
	C.im := 3.2;    {nastav imaginární složku}
	...
	writeln('C = [',C.re:4,',',C.im:4,']');
	... 

Základy práce se soubory

Postup pro práci s textovými soubory:

  • 1. Vytvoříme proměnnou typu soubor
    var soubor: text;
  • 2. Spojíme proměnnou se jménem souboru
    assign(soubor,'jmenoSouboru');
  • 3. Otevřeme soubor - nový/existující pro přepis/existující pro přidávání
    rewrite(soubor); / reset(soubor); / append(soubor);
  • 4. Pracujeme se souborem - čtení/zápis
    read(soubor,promenna_do_ktere_cteme); /
    write(soubor,promenna_kterou_zapisujeme);
  • 5. Zavřeme soubor
    close(soubor);

Pokud chceme zjistit, jestli se otevření/zavření souboru podařilo, můžeme zapnout direktivy překladače a testovat co vrátí funkce IOResult. Ta vrací kód vypovídající o poslední I/O operaci (rewrite,reset,append,close). Když je vše v pořádku, tak vrací 0.

Skládačka

Začali jsme řešit jednoduchý problém skládačky známé též jako sliding puzzle.

Z ilustračního obrázku by mělo být zřejmé, jak skládačka funguje: na hrací ploše je jedno prázdné místo, na které lze přesunout některou ze sousedních kostek. Pomocí posloupnosti takových přesunů chceme uspořádat kostky do nějakého cílového stavu (např. chceme vidět obrázek plaza, kterak chytá mouchu).

Plaz chytá mouchu.

Zatím jsme určili jak budeme reprezentovat skládačku (dvojrozměrné pole charů) a naprogramovali jsme procedury pro načítání vstupního rozložení skládačky a pro výpis aktuálního rozložení.

Když jednotlivé kostky očíslujeme, můžeme pomocí posloupnosti čísel jednoznačně definovat posloupnost přesunů (číslo udává kostku sousedící s mezerou, která se přesune). Toho později využijeme.

Domácí úkol

V CodExu byly zadány 2 úlohy: Orientace a Převod z obecné soustavy. Dohromady jsou za 15 bodů.