Nijolė Kriščiūnienė Nijole@versme.elektrenai.lm.lt PASCAL Nijolė Kriščiūnienė Nijole@versme.elektrenai.lm.lt 2018.11.17
Baziniai paprastųjų kintamųjų tipai Pavadinimas Tipas Reikšmė Baitai Realusis skaičius real Nuo-1.7E38 iki –2.9E-39, nulis ir nuo +2.9E-39 iki +1.7E38 6 Sveikasis skaičius integer Nuo –32768 iki 32767 2 Simbolis char simbolis 1 Eilutė string n simbolių eilutė, kai 0< n<=255 n Loginė reikšmė boolean True, false
Kintamųjų tipai Sveikieji tipai Tipas Reikšmių intervalas Baitai Shortint -128..127 1 Integer -32768..32767 2 Longint -2147483648..2147483648 4 Byte 0..255 Word 0..65535
Sveikiems skaičiams taikomos operacijos Operacija Pavadinimas Pavyzdys Rezultatas := priskirimas A := 5 A=5 Read; write Nuskaityti,išvesti Read(x); write(x) + Sudėtis 5+5 10 - Atimtis 100-1 99 * Daugyba 9*9 81 / Dalyba 8/16 0.5 (real) Div Dalmuo 7 div 3 2 Mod Liekana 7 mod 3 1 =,<>,<,>,<=,>= Palyginimas 7<= 2 False (boolean) Maxint longmaxint Konstantos 32767 2147483647
Simbolinis tipas Char (character)-simbolinis tipas. Simbolių kodai surašyti ASCII lentelėje.
Simboliniam tipui taikomos operacijos Operacija Pavadinimas Pavyzdys Rezultatas := priskirimas A := ‘*’ A=* Read; write Nuskaityti,išvesti Read(x); write(x);write(‘*’) + Sudėtis ‘t’ + ‘u’ tu =,<>,<,>,<=,>= Palyginimas ‘z’ <= ‘a’ False (boolean) Pred, Succ, Chr, Ord Funkcijos Pred(‘c’) Succ(‘c’) Chr(65) Ord(a) Upcase(‘a’) B D A 65
Realieji tipai Tipas Reikšmės Tikslumas Baitai Real 2.9E-39..1.7E38 11-12 6 Single 1.5E-45..3.4E38 7-8 4 Double 5.0E-324..1.7E308 15-16 8 Extended 3.4E-4932..1.1E4932 19-20 10 comp -9.2E18..9.2E18
Realiesiems skaičiams taikomos operacijos Operacija Pavadinimas Pavyzdys Rezultatas := priskirimas A := 3.14 A=3.14 Read; write Nuskaityti,išvesti Read(x); write(x) + Sudėtis 5+5 10.0 - Atimtis 10.1-0.1 * Daugyba 9*9 81.0 / Dalyba 8/16 0.5 =,<>,<,>,<=,>= Palyginimas 7.5<= 2.3 False (boolean) Abs,arcTan, cos,exp,ln,round, sin,sqr,sqrt,trunc Funkcijos
Eilutės tipas String - eilutės ilgis nuo 0 iki 255 simbolių. String[15] – eilutės ilgis 15 simbolių. Jei eilutės ilgis nenurodytas, tai eilutė yra 255 simbolių ilgio.
Simbolių eilutėms taikomos operacijos Operacija Pavadinimas Pavyzdys Rezultatas := priskirimas A := ‘taip’ A=taip + Sudėtis ‘t’ + ‘u’ tu write išvesti Write (a) taip =,<>,<,>,<=,>= Palyginimas z <= a False (boolean) Length (eil.kin.); Concat(‘M’, ‘es’); Funkcijos Length (A); 4 Mes
Loginis tipas Boolean-loginis tipas. Loginis kintamasis gali įgyti vieną iš dviejų loginių reikšmių: True (teisingas); False (neteisigas).
Loginiams kintamiesiems taikomos operacijos Operacija Pavadinimas Pavyzdys Rezultatas := priskirimas A := true; B := false; A=true And Loginė daugyba A and b False Or Loginė suma A or b True Not Neigimas Not a xor Suma moduliu 2 (nelygiavertiškumas) A xor b true write išvesti Write(a)
Konstantos Const <konstantos vardas> = <konstanta>; const n=15; Tokių konstantų programos metu keisti negalima. Tipizuotos konstantos aprašas: Const <konstantos vardas>:<tipas>=<konstanta>; const n : integer = 15; Tipizuotas konstantas programos metu galima pakeisti.
Pagal prioritetą operacijos skirstomos: Not, @(unariosios); *, /, div, mod, and; +, -, or, xor, shl, shr; =, <>, <=, >=, in.
Kintamųjų aprašai var <kintamojo vardas>: <duomenų tipas>; program pirma; var x : real; {realiojo tipo} a : integer; {sveikojo tipo} raide : char; {simbolio tipo} sakinys : string[20]; {20 simbolių eilutė} c : boolean; {loginio tipo} begin .... end.
Duomenų išvedimo formatai WriteLn(<išraiška1>,<išraiškan>) Išvedimo procedūra Rezultatas writeLn(‘a’,5-4); a1 writeLn(‘t’+’p7 ’,5/4); tp7 1.2500000000E+00 writeLn(8 mod 3) 2 writeLn(1,2,3,4,5,6,‘a’); 123456a writeLn(‘klasė’ :4); klasė writeLn(25125.2336:5); 2.5E+04 writeLn(25.23+251.23*547:5:7); 137448.0400000
Programos struktūra program vardas; begin end. Aprašai (konstantų, tipų, kintamųjų, procedūrų, funkcijų) begin sakiniai end.
Priskyrimo sakinys Priskyrimo operacija žymima dvem simboliais := C := A; D := 15 + sin(2*C); F := `Katinas´;
Priskyrimas Program priskirti; {randamas kintamojo s kvadratas ir kūbas} Var s, kvadratas, kubas : integer; Begin s:=15; Kvadratas:=s*s; Kubas:=kvadratas*s; End. Program priskirti1; {randamas kintamojo s kvadratas ir kūbas} Var s, kvadratas, kubas : integer; Begin read (s); Kvadratas:=s*s; Kubas:=kvadratas*s; write (‘s=‘, s, ’kvadratas=‘, kvadratas, ‘kubas=‘, kubas); End.
Sąlyginis sakinys If <sąlyga> then<sakinys> Nepilnas (suprastintas) Pilnas Sudėtinis If <sąlyga> then<sakinys> then <sakinys1> else <sakinys2> then begin <sakinys1>;... <sakinys1n>; End else begin <sakinys2>;... <sakinys2n>; End;
Sąlyginis sakinys Program didesnis; {randamas didesnis skaitmuo max iš dviejų įvestų: sk1 ir sk2} Var max, sk1, sk2 : real; Begin readLn (sk1, sk2); if sk1>= sk2 then max := sk1 else max := sk2; writeLn (‘max=‘, max) End.
Išrinkimo sakinys Case <valdantis parametras> of <alternatyva>: <sakinys1>; ... <alternatyva>: <sakinysn>; [else <sakinysm>]; End;
Išrinkimo sakinys Program isrinkimas; {įvertinamas pažimys} Var x : integer; Begin readLn (x); Case x of 10: writeLn (‘puiku‘); 9: writeLn (‘labai gerai‘); 8: writeLn (‘gerai‘); 7: writeLn (‘neblogai‘); 6: writeLn (‘patenkinamai‘); 5: writeLn (‘prastai‘); 4: writeLn (‘blogai‘); 3, 2, 1,: writeLn (‘dundukas‘); else writeLn (‘tokio pazymio nebuna‘); End; End.
Ciklo sakinys (for) For <ciklo kintamasis> := <pradinė r.> to <galutinė r.> do <sakinys>; (pradinė r.<= galutinė r.) For i := 1 to 100 do S := S+i; <pradinė r.> downto <galutinė r.> (pradinė r.>= galutinė r.) For i := 100 downto 1 do begin <sakinys1>; <sakinys2>; end;
Ciklas FOR Program laipsnis; {skaičius x kėlimas n-tuoju laipsniu} Var x, laipsnis : real; i, n : integer; Begin readLn (x, n); laipsnis := 1; for i:= 1 to n do laipsnis := laipsnis * x; writeLn (laipsnis:10:10); End.
Ciklo sakinys (while) While <sąlyga> do <sakinys>; begin <sakinys1>; <sakinys2>; end;
Ciklas while Program laipsnis; {skaičius x kėlimas n-tuoju laipsniu} Var x, laipsnis : real; i, n : integer; Begin readLn (x, n); laipsnis := 1; i:=1; while i<= n do begin laipsnis := laipsnis * x; i:= i+1; end; writeLn (laipsnis:10:10); End.
Ciklo sakinys (repeat) ... <sakinysn>; Until <sąlyga>;
Ciklas repeat Program tikrinu; {slaptažodžio tikrinimo} Var zodis, slaptas : string[9]; i, n : integer; Begin slaptas := ‘miau miau’; repeat writeLn (‘Įvesk slaptažodį’) readLn (zodis); until zodis = slaptas; writeLn (‘teisingai’); End.
Paprogramės Vartotojo funkcijos; Vartotojo procedūros.
Funkcijos Function <f.Vardas>(argumentai: a.tipas) :<f.tipas>; ... Begin <sakinys1>; <sakinys2>; End; Function kvad (x: real): real ; begin kvad:= x * x; end;
Rekursinės funkcijos Function f (n : integer) : integer; {skaičiuoja skaičiaus n faktorialą} Begin If n=1 then f:=1 else f:= f(n-1) * n; End;
Vartotojo procedūros Procedure <p.vardas> (k.vardai:tipas); ... Begin <sakinys1>; <sakinys2>; End; Procedure f(n: integer; var fact: integer); If n=0 then fact :=1 else begin f(n – 1, fact); fact := fact * n; end;
Struktūriniai duomenų tipai. Masyvai. Tipas Tipo aprašas Kintamųjų aprašai Vienmatis Masyvo Type <masyvo.vardas>=array [<kons1>..<kons2>] of <tipas> Pvz.: Type mas=array [1..30] of string[8]; Var Mas1: mas; Daugiamatis Masyvas Type <masyvo.vardas>=array [<kons1>..<kons2>, [<kons3>..<kons4>, ] of <tipas> Type masyvas=array [1..3,1..4] of mas; Var Mas2: masyvas;
Program masyvai; const n=10; m=30; type atk =n..m; masyvas = array[atk] of real; Var mas ; masyvas; Procedure uzpil( var mas1: masyvas); Var I: atk; Begin Randomize; for I:= n to m do mas1[I] ;=I*1/(Random(10)+1); End; Procedure atsp(mas1 : masyvas); var I: atk; for i:=n to m do writeln(mas1[I]:5:2); uzpil(mas); atsp(mas); End.