Pascal

Základní pojmy

Programování je činnost, která spočívá ve vytvoření programu pro řešení úlohy na počítači; má několik etap:
  1. definice problému
  2. návrh řešení
  3. algoritmizace
  4. kódování
  5. ladění
  6. zpracování dokumentace
  7. archivace
  8. praxe
  9. aktualizace
Algoritmus je přesně definovaná konečná posloupnost operací, která řeší daný úkol. Skládá se z jednotlivých příkazů, které musí být splněny. U algoritmu se klade důraz na konečnost (nehodláme vytvořit program bez konce :-) ), hromadnost (čím více příkladů náš program vyřeší, tím lépe), jednoznačnost (pro 2x a více zadené hodnoty chceme stejný výsledek - 2+2=4 nebo 5 :-) ), přehlednost (někdo po nás může projekt převzít, tak se v něm musí umět zorientovat - mohl by nám to vrátit u jiného projektu :-/ ). Algoritmy můžeme zapisovat několika způsoby: Vývojové diagramy slouží pro grafické znázornění řešení problému. Pro upřesnění postupu, kterým provádíme řešení se používají na spojnice šipky vyznačujíící směr.

Pro začátek diagramu se pouřívá stejná značka jako na konci, jen s jiným textem.Začátek algoritmu Konec algoritmu
Pro vstup a výstup také stačí použít stejnou značku, jen se zapisuje čti(A,B) - pro vstup nebo piš(A,B) - pro výstupVstup nebo výstup dat
Podmínka má jeden vstup a dva výstupy - jeden pro to když je splněna (A, ANO, +) a jeden pro to když není (N, NE, -)Podmínka
Značka "jednoduchý příkaz" slouží k provádění jednoduchých příkazů (přiřazení, ...)Jednoduchý příkaz
Skok slouží k přesunu mezi několika možnostmi například u větvení, nebo pro rozepsání některých složitějších ůkolů.Skok
Programovací jazyk Turbo Pascal je základním jazykem, ze kterého vychází výuka programování na většině středních i vysokých škol. Znak - písmena (A..Z, a..z), čísla (0..9), speciální znaky = zvláštní symboly (+,-,*,/,=,<>,<,>,<=,>=,(,),[,],{,},:=, . , , , ; , : , .. ,',(*,*),@,$,#,&) , vyhrazená slova
Vyhrazená slova = klíčová - taková, která mají své zvláštní použití a nemůžeme jim přiřadit jiný význam
Direktivy - podobně specifická slova jako "Klíčová", také je nesmíme používat jiným způsobem
Proměnná - úsek paměti, kam se ukládají čísla definující znaky; mění se v průběhu výpočtů
Konstanta - úsek paměti, kam se ukládají čísla definující znaky; zůstává stále stejná
Identifikátor - označení/název konstant a proměnných; nesmí začínat číslicí a nesmí obsahovat speciální znaky a neměl by ani diakritiku, nesmí být shodný s vyhrazeným slovem či direktivou

Každá proměnná musí mít určenu množinu přípustných hodnot a množinu operací. Popis těchto dvou hodnot souhrně nazýváme datový typ. Proměnná, která má přiřazen datový typ, nabývá vždy jen hodnot tohoto svého typu a žádných jiných a lze na ní provádět jen přípustné operace.

Datové typy

  1. Jednoduché datové typy
    1. Ordinální - hodnoty jsou uspořádány od nejmenší po největší, počet hodnot je tedy znám
      1. typy celých čísel - byte, word, shortint, integer, longint
      2. typy logických hodnot - boolean (true, false)
      3. znak - char
      4. výčet
      5. interval
    2. Neordinální - nejsou zobrazitelné na množině celých čísel
      1. racionální čísla - real, single, double, extended, comp
  2. Strukturované datové typy
    1. pole - array [a..b] of ...
    2. záznam - record
    3. množina - set of ...
    4. řetězec - string
    5. soubor - file of ...
  3. Typ ukazatel
  4. Typ podprogram
  5. Typ objekt

Deklarace konstant, datových typů a proměnných:

const konstanta1 = 5; (* Deklarace konstanty; - Takhle je možno psát poznámky/komentáře k programu *)
      pocetMesicu = 12;
      pocetDnuTydne = 7;
      nadpis = 'Ovoce a zelenina';
      podpis = 'Kymličková';

type cislaMesicu = 1..12; { Deklarace datového typu; - Nebo lze komentáře zapisovat takto }
     dnyTydne = (Pondeli, Utery, Streda, Ctvrtek, Patek, Sobota, Nedele);
     podil = real;

var mesic : cislaMesicu; { Deklarace proměnné }
    dnesniDen : dnyTydne;

Funkce Read/Ln, Write/Ln

  write(pok);             {vytištění konstanty nebo proměnné pod názvem "pok"}
  write('pokus');         {vytištění slova "pokus"}
  writeLn(pok);           {vytištění konstanty nebo proměnné pod názvem "pok", po té kurzor skočí na další řádek}
  writeLn('pokus');       {vytištění slova "pokus", po té kurzor skočí na další řádek}
  read(pok);              {načtení hodnoty z klávesnice do proměnné "pok"}
  readLn(pok);            {načtení hodnoty z klávesnice do proměnné "pok", po té kurzor skočí na další řádek}

Větvení

if podmínka then příkazANO      {Pokud je splněna, tak provede příkazANO, jinak provede příkazNE}
   else příkazNE

case proměnná of         {Pokud "proměnná" rovná se:}
    hodnota1: příkaz1;   {"hodnoty1" provede se "příkaz1"}
    hodnota2: příkaz2;   {"hodnoty2" provede se "příkaz2"}
    hodnota3: příkaz3;   {"hodnoty3" provede se "příkaz3"}
    hodnota4: příkaz4;   {"hodnoty4" provede se "příkaz4"}
    else příkazJINAK;    {v ostatních případech provede se příkazJINAK}
end;                      {MÁ SVŮJ END!!!!!!!}

Cykly

Cyklus A (s podmínkou na začátku, nebezpečí nekonečnosti):

while (podmínka) do (příkazy);
Hezky česky řečeno (Dokud platí "podmínka" dělej "příkazy")

Cyklus B (s podmínkou na konci, nebezpečí nekonečnosti):

repeat (příkazy) until (podmínka);
Hezky česky řečeno (Opakuj "příkazy" dokud nezačne platit "podmínka")

Cyklus C (s předem danými počty průchodů, konečný):

for proměnné:=od to do do (příkazy);
Hezky česky řečeno (Pro čísla "od" do "do" opakuj "příkazy")

Funkce a procedury, které máte znát

sqr(proměnná)              {mocnina}
sqrt(proměnná)             {odmocnina}
co div čím                 {"co" dělí celočíselně "čím" a vrátí celé číslo jako výsledek}
co mod čím                 {"co" dělí "čím" a vrátí zbytek po dělení}
length(čeho)               {vrací délku řetězce "čeho"}

Pole

1. Způsob:
type název_typu=array[od..do] of datový_typ;      {definice datového typu pole}
var proměnná_pole:název_typu;                     {nastavení proměnné datového typu pole}

2. Způsob:
type Stav = (Aktivni, Pasivni, Cekajici);
     StavMap = array[Stav] of string[8];
const StavStr: StavMap = ('Aktivni', 'Pasivni', 'Cekajici');

3. Způsob:
var proměnná_pole:array[od..do] of datový_typ;    {definice proměnné typu pole}
průchod polem běžně pomocí for-cyklu
proměnná_pole[index]                              {odkaz na jednotlivé buňky na pozici "index"}

CRT

Jednotka (knihovna) CRT (Cathode Ray Tube) obsahuje programové prostředky pro řízení systému zobrazení, vstupu z klávesnice, obsahuje podporu práce s okny a definování barevného ladění výstupů. Užití jednotky CRT zajišťuje zvýšenou rychlost výstupních operací.

Máme k dispozici procedury a funkce pro pohyb po obrazovce, práci se zvukem, barvami, časování, ...

Pro použití musíme před program napsat:

uses Crt;      {připojení knihovny Crt a případně jiných oddělených čárkami}
Stručný přehled hlavních funkcí a procedur knihovny Crt:
KeyPressed		{testuje zda byla stisknuta nějaká klávesa}
ReadKey			{načte jeden znak z vyrovnávací paměti klávesnice}
GotoXY(x,y)		{nastavení kurzoru na požadovné souřadnice}
ClrScr			{mazání obrazovky}
TextBackground(barva)	{nastaví barvu pozadí}
TextColor(barva)	{nastaví barvu písma}
Sound(Hz)		{spustí zvuk dané frekvence}
NoSound			{ukončí spuštěný zvuk} ... !!!!!!!! Nezapomeňte použít jinak budeme pískat do restartu !!!!!
Delay(ms)		{počká počet ms}
Ostatní (nejsou to všechny) a jejich přesné použití najdete v helpu, nemá smysl ho tu celý vypisovat.

Procedury a Funkce

Procedury a funkce jsou malé prográmky, které nám pomáhají zjednodušit kód programu. Píšou se na začátek programu ještě před Begin označující začátek programu.

Pro použití je musíme deklarovat:

procedure název(a,b,c:datový_typ);	{názvem pak budeme volat danou proceduru}
					{a,b,c jsou libovolné parametry nějakého datového typu}
var x,y:datový_typ;			{procedura může mít libovolný počet VLASTNÍCH proměnných}
begin					{procedura má vlastní begin}
	{zde jsou příkazy}
	{zde jsou příkazy}
end;					{procedura má vlastní end se středníkem!!}


function název(a,b,c:datový_typ1):datový_typ2;	{názvem pak budeme volat danou funkci}
					{a,b,c jsou libovolné parametry nějakého datového_typu1}
					{datový_typ2 je návratová hodnota, kterou funkce vrátí jako výpočet}
var x,y:datový_typ;			{funkce může mít libovolný počet VLASTNÍCH proměnných}
begin					{funkce má vlastní begin}
	{zde jsou příkazy}
	{zde jsou příkazy}
	název:=výpočet;				{názvu funkce musíme přiřadit výslednou hodnoutu, kterou má funkce vrátit}
end;					{funkce má vlastní end se středníkem!!}
Proměnné, které jsou deklarované uvnitř funkce či procedury patří jen té funci či proceduře nikde jinde jako by neexistovaly!

Textové soubory

Deklarace:

var soubor:text; Procedury:

Assign(soubor,'R:\soubor.txt');				{pojmenuje soubor na adrese R:\soubor.txt proměnnou soubor}
Append(soubor);						{otevře (existující) soubor pro vkládání na konec}
Reset(soubor);						{otevře (existující) soubor pro vkládání na začátek (pozor hrozí přepsání)}
Rewrite(soubor);						{vytvoří a otevře nový soubor}
Close(soubor);						{uzavře otevřený soubor}
Read(soubor,co);						{ze souboru přečte řádek a uloží do proměnné co - lze použít ReadLn}
Write(soubor,co);						{zapíše do souboru proměnnou (-né) co - lze použít WriteLn}

Typové soubory

Deklarace:

var soubor:file of datový_typ; Procedury:

Assign(soubor,'R:\soubor.txt');				{pojmenuje soubor na adrese R:\soubor.txt proměnnou soubor}
Reset(soubor);						{otevře (existující) soubor pro vkládání na začátek (pozor hrozí přepsání)}
Rewrite(soubor);						{vytvoří a otevře nový soubor}
Close(soubor);						{uzavře otevřený soubor}
Read(soubor,co);						{ze souboru přečte řádek a uloží do proměnné co - nelze použít ReadLn}
Write(soubor,co);						{zapíše do souboru proměnnou (-né) co - nelze použít WriteLn}

Record

- je datový typ podobný poli, jen se liší v tom, že každá položka může obsahovat jiný datový typ. Použití je hojné při ukládání dat do souboru.

type Clovek=record					{Tento člověk obsahuje 4 proměnné}
	Jmeno: String[10];
	Prijmeni: String[20];
	Pohlavi: Char;
	Vek: Integer;
     END;

var zak, ucitel: Clovek;

begin
  
end.

Graph

Home