Umíte pascalsky - 2.lekce ...

Umíte pascalsky?
2.lekce
Vytisknout  

Symboly a datové typy

     Po rychlém seznámení se stavbou programu v 1.lekci , nyní budeme pokračovat trochu podrobněji a bohužel na začátku trochu nezáživněji (příště už to bude veselejší).
     Na program v Pascalu se múžeme dívat ze dvou pohledů:
Program chápeme jako posloupnost znaků , které nesmějí mít žádné indexy ani nad řádkou,ani pod ní. Přípustné znaky tvoří tzv.abecedu jazyyka Pascal a jsou to:
     písmena latinské abecedy (bez háčků a čárek) , malá i velká
     číslice desítkové soustavy   0,1,2,3,4,5,6,7,8,9
       speciální symboly
operátory , závorky , klíčová slova , mezera ...
Ze znaků se vytváří lexikální jednotky , symboly (obdoba slov v bežném jazyce).
Program tedy můžeme také chápat jako posloupnost symbolů.Mezi symboly můžeme vložit jakýkoliv počet mezer , ale žádný symbol nemúže začít na jedné řádce a pokračovat na následující.

Typy symbolů Pascalu

Klíčová slova
tvoří jakousi kostru programu , dávají mu řád a jsou to většinou anglická slova.
Například:  program , begin , end , read , write ....

Identifikátory
Slova sestavená z písmen a číslic , začínající písmenem.Identifikátor se nesmí shodovat s žádným klíčovým slovem.
Například: Soucet , Podil2 , N3 .. jsou identifikátory
Identifikátory ale nejsou  a+b , 3x , součet , if , begin
Identifikátory se požívají k pojmenování (identifikaci) nejrůznějších objektů (proměnných , konstant , funkcí ..) U identifikátorů a klíčových slov nezáleží na typu písma (malá,velká,kurziva..), kterými jsou napsány.Identifikátory mohou být libovolně dlouhé.

Zápisy čísel
Čísla zapisujeme v Pascalu jak jsme zvyklí z běžného života pouze s tím rozdílem , že místo desetinné čárky používáme desetinnou tečku.
Například: 3.14     nebo    -175.45

Speciální symboly
Speciální symboly jsou v Pascalu tvořeny jedním znakem , nepř.:
                  -   +  :  /  ;  ,  .  <  >  =  (   )  {  }
nebo dvěma znaky , např.:
                  :=   <>  >

Znakové řetězce
Znakové řetezce jsou posloupnosti (libovolných) znaků mezi dvěma apostrofy a musí být celý uveden na jedné řádce programu.
Například:  'Výsledek výpočtu je'   nebo   'Zadejte číslo'

Komentáře
Nemají žádný vliv na realizaci programu - poskytují pouze vysvětlivky pro čtenáře programu a umožňují lepší orientaci v něm. Komentář začíná levou složenou závorkou { a končí pravou složenou závorkou  }  i na dalších řádcích.
Například: { Toto je výpočte obsahu }

Oddělování symbolů v programu
Symboly od sebe oddělujema jednou nebo více mezerami. Nezávisí na tom , zda další symbol napíšeme na stejné řádce nebo na další řádku.

Z 1.lekce víme , že program obsahuje deklarační čáat.Nyní, jak vypadá, trochu víc.

DEKLARAĆNÍ ČÁST

Za hlavičkou programu následuje deklarace identifikátorů , která může mít až čtyři části :

PROGRAM UKAZKA;
LABEL Tam,Zde; { návěští pro skok }
CONST Cislo=7; {konstanta Cislo hodnoty 7 typu INTEGER }
Znak='P'; { konstanta Znak typu CHAR obsahuje znak P }
TYPE Kod = INTEGER; { definice identifikátoru typu INTEGER }
VAR Heslo:Kod; { deklarace konkrétního objektu - proměnné Heslo}

Oddíl deklarace LABEL obsahuje návěští pro příkaz skoku.
Oddíl deklarace CONST obsahuje seznam konstant.
Teď se soustředíme na oddíl TYPE a VAR.

Datový typ, například Kod, určuje, jaké vlastnosti budou mít konkrétní proměnné typu Kod, deklarované v části VAR. Takto vypadá základní rozdělení datových typů v Pascalu:

PascalDatTypy.gif (3421 bytes)

JEDNODUCHÝ TYP

TYP INTEGER
specifikuje množinu celých čísel z intervalu ( -32768, 32767 )
pro libovolnou hodnotu N typu INTEGER platí : -MAXINT <= N <= MAXINT, kde MAXINT = 32767 je konstanta ( nemusí se deklarovat ).

Pro hodnoty typu INTEGER jsou definovány operace ( výsledek rovněž typu INTEGER )

+   sčítání
-   odečítání nebo unární operace změny znaménka
*   násobení
DIV   celočíselné dělení ( celá část podílu )
MOD   zbytek po celočíselném dělení
ABS   absolutní hodnota
SQR   druhá mocnina

TYP REAL
specifikuje konečnou podmnožinu reálných čísel z intervalu zhruba (-10 na 39,10 na 38)

Hodnoty typu REAL můžeme označit zápisem :
                123
                3.14159
                7.345E5 odpovídá hodnotł 734500
                3.77E-6 odpovídá hodnotł 0.00000377

Pro hodnoty typu real jsou definovány operace ( s výsledky rovněž typu REAL )
               + , - , *    jako u typu Integer
               /     dělení
              ABS    absolutní hodnota
              SQR    druhá mocnina
              SIN    sinus (argument v radiánech)
              COS    cosinus
              ARCTAN    arcustangens
              LN     přirozený logaritmus
              EXP    funkce inverzní k LN ( mocnina čísla e )
              SQRT    druhá odmocnina

KONVERSE typu INTEGER na REAL je v Pascalu IMPLICITNÍ ( všude tam , kde se očekává hodnota typu REAL může být typ INTEGER ).
Konverse REAL na INTEGER implicitní není , jsou pro ni zavedeny dvě funkce :

            TRUNC(x) výsledkem je celá část čísla x
            ROUND(x) výsledkem je zaokrouhlená hodnota x definovaná takto :
                      ROUND(x) = TRUNC(x+0.5) pro x >= 0
                      ROUND(x) = TRUNC(x-0.5) pro x < 0

TYP BOOLEAN
specifikuje logické hodnoty , které se označují identifikátory
           TRUE - pravda
           FALSE - nepravda
           a platí FALSE < TRUE.

Pro hodnoty typu Boolean jsou definovány operace ( výsledek opět typu BOOLEAN ):
           AND logický součin
           OR logický součet
           NOT negace

Porovnáváním hodnoty proměnných dostáváme též hodnoty BOOLEAN , například :
          a < 34
Je možné porovnávat typy INTEGER a REAL libovolně mezi sebou a typ CHAR  jen s typem CHAR.

Typu BOOLEAN je i funkce
         ODD(Integer)
která vrací TRUE, je-li Integer liché číslo, jinak vrátí FALSE.

TYP CHAR
Hodnotami typu Char jsou znaky z kódu ASCII (American Standard Code for Information Interchange).

Pro hodnoty typu CHAR jsou definovány operace :
         ORD(znak) výsledek je typu INTEGER - vrací kód znaku v ASCII
         CHR(integer) výsledek je typu CHAR - vrací znak s požadovanśm ASCII kódem
                  tedy CHR(ORD(z)) = z
         SUCC(znak) následník znaku v ASCII kódu
         PRED(znak) předchůdce znaku v ASCII kódu

Pro všechny ordinální typy platí :
        x < y právě když ORD(x) < ORD(y)
        ORD(SUCC(x)) = ORD(x) + 1
        ORD(PRED(x)) = ORD(x) - 1

Pro hodnoty typu BOOLEAN platí :
        ORD(FALSE) = 0  , ORD(TRUE) = 1
        SUCC(FALSE) = TRUE  , PRED(TRUE) = FALSE

Pro hodnoty typu INTEGER platí :
        ORD(x) = x
        SUCC(x) = x + 1 pro x < MAXINT
        PRED(x) = x - 1 pro x > -MAXINT


Domácí úkol:

   Určete hodnoty uvedené v tabulce:

hodnota výsledek
trunc(7.65)  
round(4.3)  
8 div 3  
8 mod 3  
sqr(5)  
odd(5)  
5 > 2  
ord('a')  
succ('a')  
pred('a')  
chr(35)  

On-line účast na řešení úkolu

Řešit úkol Prohlídka hodnocení úkolu Dotazy,připomínky

Pomocí volby Řešit můžete (po přihlášení) odeslat vaše řešení domácího úkolu (každý úkol smíte řešit jen jednou). Volbou Hodnocení si přečtete hodnocení a komentář od vyučujícího. Dotaz nebo připomínku můžete opakovaně zasílat pomocí tlačítka Dotazy, Komunikace (na levém okraji) zobrazuje příklad možné komunikace s vyučujícím.