Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Programovací jazyk PASCAL
2
1. Úvod Př. Vypočtěte součet s(n)=1 + 1/2 + 1/3 + ... + 1/n
program soucet(input,output); var n:integer; s:real; begin read(input,n); s:=0; repeat s:=s+1/n; n:=n-1; until n=0; write(output,s); end.
3
1.1 Lexikální elementy Jsou to nejmenší smysluplné jednotky pascalského programu. Jsou představovány speciálními symboly,identifikátory, rezervovanými slovy, návěštími, čísly a řetězcovými konstantami. Program je tvořen lexikálními elementy a separatory. Separátory jsou mezera, tabelátor a komentář. V případě, že dva sousední lexikální elementy jsou rezervované slovo, identifikátor, návěští nebo číslo, musí být odděleny jedním nebo více separátory. Separátory nesmějí být částí lexikálních elementů, vyjma řetězcových konstant.
4
Speciální symboly: - znaky, které mají jeden nebo více stálých významů: $,# - v TP - také páry znaků jsou speciální symboly: <=,>=,:=,..,(*,*),(.,.) Identifikátory: Označují konstanty, typy, proměnné, procedury a funkce, unity, programy. Mají libovolnou délku, v TP je prvních 63 znaků významných.Identifikátor je posloupnost písmen a číslic začínající písmenem, nesmí obsahovat mezeru. V TP muže obsahovat podtržítko pro zvýšení čitelnosti. Stejně jako u rezervovaných slov se nerozlišují malá a velká písmena.
5
Rezervovaná slova: Jsou to identifikátory se speciálním významem - if, else begin, end, for, in, nil, to,... . Návěští: Je to číslo z intervalu používa se spolu s příkazem goto. TP umožňuje použít jako návěští identifikátor odpovídajícího typu. Čísla: - typu integer - posloupnost číslic - typu real - číslo s desetinnou tečkou, případně v exponenciálním tvaru - 1e32 - hexadecimální konstanta - v TP číslo typu integer - $afb
6
Řetězce: Je to posloupnost znaků uzavřená apostrofy, musí ležet na jednom řádku - 'abc'. Prázdný řetězec - '' . Nezobrazitelné znaky je možno vkládat pomocí jejich kódu - 'abc'#14'xyz '. Komentáře: Je to text uzavřený ve složených závorkách, kompilátor tento text ignoruje. Složené závorky je možno nahradit dvojicemi znaků (*,*). Komentář, obsahující znak dolar $ bezprostředně za otevírací závorkou je v P direktiva kompilátoru.
7
1.2 Syntaxe a sémantika jazyka
Syntaxe je souhrn pravidel, udávajících přípustné tvary dílčích konstrukcí a celého programu. Sémantika je souhrn pravidel, udávajících význam jednotlivých konstrukcí. Syntaktický diagram se používá pro zápis syntaxe, definuje všechny přípustné tvary konstrukce, jejíž název je uveden v nadpise. Přípustný tvar získáme tak, že projdeme nějakou cestou vedoucí od začátku diagramu do konce.
8
Syntaktický diagram: identifikátor písmeno číslice A B Z 1 2 9
9
2. Základní pojmy 2.1 Konstanta
Deklaruje se v deklarační části za klíčovým slovem CONST. Hodnota konstanty je známa již při psaní programu, během provádění programu se nemění. Použití konstant zvyšuje čitelnost a srozumitelnost programu. Umožňuje také jeho snadnou modifikovatelnost - změna na jednom místě změní hodnoty v clem programu. Syntaktický diagram: Př.: const maxpocet = 100; pi = koncznak = '$'
10
2.2 Proměnná Deklaruje se v deklarační části za klíčovým slovem VAR. Deklarací se definuje identifikátor proměnné, pomocí kterého k ní přistupujeme, typ proměnné, který specifikuje množinu přípostných hodnot a množinu přípustných operací. Deklarací je také určena velikost paměti, kterou bude proměnná zabírat. Hodnota proměnné se mění v průběhu výpočtu, na začátku programu neni hodnota proměnné definována (neni 0!). Hodnota se proměnné přiřadí přiřazovacím příkazem nebo příkazem čtení. Př.: var i,j,k : integer; p,q,r : real; zn1,zn2 : char; test : boolean;
11
2.3 Základní typy Typ integer Specifikuje konečnou souvislou množinu hodnot. Rozsah typu neni dán jazykem ale konkrétní implementací. MAXINT je standardní identifikátor konstanty, která obsahuje největší číselnou hodnotu typu integer. Rozsah typu integer je -maxint..maxint. V TP zabírá 2 byty, maxint=2^ = Typ longint zabírá 4 byty, největší hodnota je 2^ = Operace: +,-,*,div - celočíselné dělení, mod - zbytek po celočíselném dělení Výsledek operace je roven matematickému, je-li z intervalu -maxint..maxint, jinak dochází k chybě. Př.: k:= i mod j; l:= 25 div 7;
12
Relační operace: =, <>, <, >, <=, >= - výsledek je logická hodnota true nebo false. Standardní funkce: abs(i) ... | i |, sqr(i) ... i^2, odd(i) ... logická fce, je true, je-li i liché, jinak false inc(i) ... i:=i+1, inc(i,j) ... i:=i+j, dec(i) ... i:=i-1, dec(i,j) ... i:=i-j Př.: if i mod 2 = 0 then sude := sude + 1 else liche := liche + 1 if odd(i) then inc(liche) else inc(sude);
13
Typ real Specifikuje konečnou podmnožinu reálných čísel, rozsah je definován implementací. Čísla se zobrazují v pohyblivé řádové čárce - mantisa + exponent. Rozsah je definován třemi charakteristikami: - největší absolutní hodnota, - nejmenší absolutní hodnota nenulového čísla, - počet míst mantisy. real - 6 byte, rozsah 2.9e e38, číslic Další reálné typy: single, double, extended, comp. Operace: +,-,*,/ - výsledek neni definován, jestliže matematický výsledek neleží v rozsahu zobrazitelných čísel. Relační operátory jsou stejné jako u typu integer. Standardní funkce: abs(r) ... |r|, sqr(r) ... r2, sin(r), cos(r), arctan(r), ln(r), exp(r) ... e^r, sqrt(r) ... .
14
V pascalu nejsou funkce y^x, arcsin(r), arccos(r)
V pascalu nejsou funkce y^x, arcsin(r), arccos(r). Lze pro ně použít vzorce: Konverze - převod jednoho typu na druhý: - integer na real je implicitní - standardní fce je možno volat s celočíselnými argumenty, které se před vyvoláním fce převedou na reálné, - v aritmetických a relačních výrazech je-li jedna proměnná typu real pak proměné typu integer se převedou na real - real na integer - trunc(r) - odseknutí desetinné části - round(r) - zaokrouhlení : round(r)=trunc(r+0.5) x>=0, round(r)=trunc(x-0.5) x<0
15
Typ boolean Specifikuje množinu logických hodnot {false, true}, je definováno uspořádání false<true. Jsou definovány relační operace - unární not a binární and, or, xor (negace ekvivalence), implikace (<=), ekvivalence (=). Proměnné a výrazy typu boolean se používají v příkazech cyklu a větvení. Typ char Hodnotami typu char jsou znaky. Množina používaných znaků neni dána jazykem, ale implementací. Dnes se používá množina znaků - kód ASCII (American Standard Code for Information Interchange), dříve také kód EBCDIC (Extended Binary Coded Decimal Information Code). Je definováno zobrazení, které každému znaku přiřadí celé číslo - ordinální číslo znaku. Znakovou konstantu můžeme zapsat jako znak v uvozovkách - 'a','b'.Hodnotami typu char mohou být znaky, které nemají lexikografickou reprezentaci - tzv. řídící znaky (např. #12 - znak konce stránky). Jsou definovány relační operace: =,<>,<,>,<=,>=, uspořádání je dáno ASCII kódem - '0'<'1', 'a'<'b'. Funkce ord přiřazuje znaku jeho ordinální číslo - ord('0')=48, ord('1')=49. K ní inverzní funce přiřazuje číslu znak - chr(65)='A', chr(ord(zn))=zn.
16
Př.: Sestavte algoritmus, který ze vstupních dat přečte posloupnost znaků, reprezentující zápis celého čísla bez znaménka a vytvoří odpovídající hodnotu typu integer. Před první číslicí mohou být mezery, zápis čísla bude správný a zobrazitelný. program vstup_cisla; var zn:char; hodn:integer; begin hodn:=0; read(zn); while zn=' ' do read(zn); while ('0'<=zn)and(zn<='9') do begin hodn:=10*hodn + ord(zn) - ord('0'); read(zn); end; end.
17
Ordinální typy Typy integer, boolean a char patří spolu s výčtovým typem a typem interval do skupiny jednoduchých typů, které se nazývají ordinální typy. Jsou pro ně definovány funkce ord - vrací ordinální (pořadové) číslo, succ - následovník a pred - předchůdce: ord(succ(x)=ord(x)+1, ord(pred(x)=ord(x)-1
18
2.4 Výrazy Předepisují posloupnost operací, skládají se z operandů - konstant a proměnných, operátorů a příp. kulatých závorek. Provedení všech operací se nazývá vyhodnocení výrazů, výsledkem je hodnota výrazu. Operace se provádějí zleva doprava, s ohledem na prioritu operátorů a na závorky. Priority operátorů: 1. not ... nejvyšší priorita 2. *, /, div, mod, and 3. +, -, or 4. =, <>, <, >, <=, >=
19
a + b > u*v (a + b) > (u*v)
Př.: z*4 + y mod 2 - z div 5 ((z*4) + (y mod 2) - (z div 5) x + a*y/z x + ((a*y)/z) a + b > u*v (a + b) > (u*v) p or not q and r p or ((not q) and r) Operandy každého operátoru musí být přípustného typu. Správnost výrazu ověříme zleva doprava s ohledem na prioritu a závorky. 0 <= i <= ne 0 <= i and i <= ne (0 <= i) and (i<= 10) ano ...
20
2.5 Struktura a zápis programu
Program se skládá z hlavičky, deklarační části a příkazové části. Hlavička - obsahuje identifikátor - jméno programu, který se v programu nezmí znovu vyskytnout. V TP je hlavička nepovinná. Deklarační část - obsahuje úseky deklarací: návěští, konstant, typů, proměnných, procedur a funkcí. V TP nezaleží na jejich pořadí. Příkazová část - popisuje vlastní výpočetní proces, skládá se z příkazů ukončených středníkem a je uzavřena v závorkách begin end. Příkaz za kterým následuje závorka end nemusí být ukončen středníkem. Program se zapisuje v tzv. volném formátu - příkaz může začínat v libovolném místě řádku a může jich být na řádku více. Pro zvýšení čitelnosti se každá logická úroveň v programu odsazuje o dva znaky. Na vhodných místech se program doplňuje komentáři, které je možno vložit všude tam, kde je povoleno psát mezeru.
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.