logo

PASCAL (1)

  1. Osnovna struktura Pascala
  2. Tipovi podataka, konstante i varijable
  3. Pridru?ivanje i ispis vrijednosti

Ovaj dio predstavlja "Osnove Pascala". Sadr?i opis svih primitivnih tipova podataka, te strukture niza, skupa, polja, sloga i datoteke. Takoder su opisane sve primitivne naredbe, i vecina slo?enih, pa je sadr?aj ovog dijela dovoljan za programiranje vecine problema, posebno "algoritamskih" i "nebrojcanih".

Opcenito se sva poglavlja sastoje od dva dijela: dijela o jeziku (sintaksa i semantika naredbi) i dijela u kojemu su dani primjeri programa koji kroz rje?enje nekog problema ilustriraju pri-mjene naredbi.

Svako poglavlje zavr?ava pitanjima i zadacima za vje?bu.

OSNOVNA STRUKTURA PASCALA


Opis Turbo Pascala zapocinjemo definicijom njegove osnovne leksicke sintakticke strukture te semantike.

Leksicka struktura

Alfabet Pascala cine sljedeci skupovi znakova:

Skupu posebnih znakova pripada i praznina (razmak ili "blank"). U daljnjem tekstu skupove znakova Turbo Pascala oznacavat cemo kao < slovo >, < brojka > i < poseban znak >. Nad alfabetom Pascala definirane su sljedece klase rijeci:



Rezervirane rijeci, kao ?to im i ime ka?e, imaju unaprijed definirano ili "rezervirano" znacenje. Pojavljuju se kao dijelovi naredbi Pascala i nije ih dopu?teno rabiti u druge svrhe. Evo potpunog skupa rezerviranih rijeci Turbo Pascala napisanih abecednim redom:

AND ARRAY ASM BEGIN CASE CONST
CONSTRUCTOR DESTRUCTOR DIV DO DOWNTO ELSE
END EXPORTS FILE FOR FUNCTION GOTO
IF IMPLEMENTATION IN INHERITED INLINE INTERFACE
LABEL LIBRARY MOD NIL NOT OBJECT
OF OR PACKED PROCEDURE PROGRAM RECORD
REPEAT SET SHL SHR STRING THEN
TO TYPE UNIT UNTIL USES VAR
WHILE WITH XOR      


Za rezervirane rijeci vrijedi pravilo da moraju biti napisane kompaktno (bez razmaka). Rezervirana rijec, bez obzira da li je napisana velikim ili malim slovima, ili kombinacijom velikih i malih slova, ima isto znacenje. U na?im cemo programima rezervirane rijeci pisati samo velikim slovima (?to je dogovor, a ne pravilo).

Imena su klase rijeci sastavljene od samo jednog slova ili znaka "_", odnosno, to su rijeci duljine do 127 koje pocinju slovom ili znakom "_", a potom slijedi slovo, znak "_" ili brojka. Na primjer, imena su: A, _, w1, Opseg, brzina, s_l, y_22 itd, dok nizovi D-l, X.5, $, 123 i 'Ime' ne mogu biti prihvaceni kao imena. Imena sastavljena od slova ne smiju biti iz skupa rezerviranih rijeci.

Klasa rijeci nazvana standardna imena odnosi se na skup rijeci koje imaju unaprijed definirano znacenje. Oznacuju imena standardnih tipova, konstanti, varijabli, procedura i funkcija. Za razliku od rezerviranih rijeci, smije im se promijeniti znacenje, ali se to ne preporucuje. Standardna imena su, na primjer: absolute, arctan, byte, char, close, cos, eof, exit, exp, false, gotoxy, halt, integer, pi, read, write itd. Postoje dva standardna imena, PRIVATE i PUBLIC, koja se napisana na odredenim mjestima u programu smatraju rezerviranim rijecima. U programima cemo vecinu standardnih imena pisati malim slovima.

Brojevi se u Pascalu dijele na cijele i realne. Cijeli se brojevi pi?u prema pravilu:

NEDOSTAJE SLIKA

Znacenje je predznaka kao u matematici. Sljedeci nizovi znakova predstavljaju cijele brojeve:
256	-1	-666	+1000	9876	-32768	7001	+8787	12345678	$10	-$ABCD
dok nizovi znakova:
--1	+-2	'45'	pet	nula	3.14	5%	12,3
ne mogu biti prihvaceni kao cijeli brojevi. Vidimo da cijeli brojevi predstavljeni u ?esnaesticnom zapisu zapocinju znakom "$".

Realni brojevi mogu biti napisani u normalnom ili eksponencijalnom obliku, prema sljedecim pravilima:

realni__broj : normalni_oblik | eksponencijalni_oblik
normalni_oblik: predznak nepredznaceni_broj
. nepredznaceni_broj

eksponencijalni__oblik:
||cijeli broj || E eksponent
||normalni__ oblik||

eksponent: cijeli__broj

gdje je < eksponent > cijeli broj u intervalu od -4932 do 4932. Evo nekoliko primjera realnih brojeva napisanih u normalnom ili eksponencijalnom obliku:
0.0	6.28	1E-6	1.62E-31	-303.00123	5e5	-6E-6
Ako broj u eksponencijalnom obliku opcenito napi?emo kao mEn, znacenje mu je m x 10n.

Nizovi znakova su rijeci koje se pi?u prema sljedecem pravilu:

niz znakova: ' { znak } '

gdje je < znak > bilo koji znak. Evo nekoliko primjera nizova znakova:

'1234321'	'Ovo je niz znakova'	'Koliki je polumjer?'	'***'	'Vrijeme Put Brzina'
Polunavodnik oznacuje pocetak i kraj niza i ne smatra se njegovim dijelom. Ako niz znakova treba sadr?ati polunavodnik, to se posti?e pisanjem dvaju takvih znakova jedan do drugog. Na primjer, niz 'C" est la vie, mon amour!' predstavlja niz "C'est la vie, mon amour!".

Duljina niza znakova jest broj znakova koji ga cine (bez polunavodnika koji oznacuju pocetak i kraj niza). Niz " je prazan niz i ima duljinu 0. Dopu?teno je pisanje nizova znakova maksimalne duljine 124. Niz mora biti napisan u jednom redu.

Posebni simboli (rijeci) su posebni znakovi ili kombinacije od po dva posebna znaka. Posebni znakovi dani su u opisu alfabeta, a posebni simboli sacinjeni od kombinacije posebnih znakova jesu:
:=	<=	<>	>=	..	(.	.)	(*	*)

Posebni simboli komponirani od dva znaka moraju se pisati kompaktno, bez razmaka izmedu znakova. Simboli (., .), (* i *) imaju isto znacenje kao uglate i viticaste zagrade. Simboli (. i .) su otvorena i zatvorena uglata, a (* i *) viticata zagrada.

LEKSICKA PRAVILA



U tvorbi rijeci vrijede sljedeca pravila:

Osnovna sintakticka struktura

Osnovna sintakticka struktura Turbo Pascala dana je sljedecim pravilima:
program:                     [ zaglavlje_programa; ] blok.
zaglavlje_programa:          PROGRAM ime_programa
  

ime_programa:                ime  
   
   
blok:                       [ lista_modula ]
                { deklaracija | potprogram }
              niz_naredbi  
   
deklaracija:        deklariranje_labela               |
            definiranje_konstanti             |
             inicijalizacija_varijabli         |
            definiranje_tipova                | 
            deklariranje_varijabli

potprogram:       [ procedura | funkcijski_potprogram ]

niz_naredbi:       BEGIN
                 [ labela: ] naredba 
                 {; [labela: ] naredba }  
                 END

naredba:       primitivna__naredba | slo?ena_naredba  
   
primitivna_naredba:          prazna_naredba   |
         naredba__za__ispis   |
         naredba_za_dodjeljivanje   |
         naredba__za__unos    |
         naredba_GOTO | HALT | EXIT  | 
         poziv_procedure

slo?ena_naredba:       naredba__za_odabir |
        FOR_petlja | 
        WHILE_petlja | 
        REPEAT_petlja | naredba_CASE | niz_naredbi
Uocimo da je poseban slucaj primitivne naredbe, odnosno naredbe, tzv. "prazna naredba" dana sintaksom:

prazna_naredba: --------?

Iz osnovne sintakticke strukture, koristeci upravo praznu naredbu na mjestu pojavljivanja naredbe, slijedi da je minimalni program u Turbo Pascalu:

BEGIN END.

Ovo je ujedno i na? prvi program napisan u Turbo Pascalu! Treba primijetiti da bi "niz" praznih naredbi dao program koji ima ekvivalentno znacenje:

BEGIN ;;;;;;;;;;;;; END.

DODATNA SINTAKTICKA PRAVILA



U svim pravilima pisanja naredbi Pascala pojavljuje se razmak izmedu odredenih klasa rijeci. Medutim, njegovim prikazom pravila bi postala slo?enija i nepreglednija. Zbog toga cemo pravilima pisanja dodati:

Na primjer, program:

PROGRAM A_ 1 ; BEGIN END.
mo?e se napisati i kao

PROGRAM A_1 ; BEGIN END
U prvome primjeru rezervirana rijec PROGRAM i ime A_l, te rezervirane rijeci BEGIN i END razdvojeni su razmakom. Ime A_l i tocka-zarez, odnosno tocka-zarez i rijec BEGIN napisani su bez razmaka. U drugom su primjeru sve rijeci razdvojene.

Komentari

Osim razmaka, izmedu bilo koje dvije rijeci u programu smije se pisati i komentar. Pravilo pisanja komentara dano je sa

NEDOSTAJE SLIKA

Vidimo da se pod komentarom podrazumijeva niz znakova omeden viticastim zagradama ili umjesto njih specijalnim simbolima "(*" i "*)", bez ogranicenja duljine (smije biti napisan, na primjer, u nekoliko redaka). Primjeri komentara: