Wstęp
do programowania
Wykład 2
Składnia języka, typy, struktura programu
Język programowania pascal
Cechy języka Pascal
Pascal jest językiem wysokiego poziomu; oznacza to, że użytkownik piszący
program w języku pascal nie musi znać szczegółów wewnętrznej budowy
komputera.
Pascal ma wbudowane precyzyjne mechanizmy kontroli struktur i reguł
gramatycznych; dzięki temu łatwa jest identyfikacja i poprawienie błędów.
Pascal jest językiem
algorytmicznym
, pomyślanym tak aby łatwo było w
nim zapisywać algorytmy opracowane przez użytkownika.
Pascal jest językiem
strukturalnym
;
oznacza to że poszczególne
fragmenty algorytmu można zapisać w postaci wyraźnie wyodrębnionych
struktur językowych.
Pascal jest językiem
modularnym
. Cecha ta pozwala składać program z
oddzielnych 'cegiełek' - modułów które w razie potrzeby można wymieniać
bez naruszenia pozostałej części programu.
Pascal jest językiem
publikacyjnym
co oznacza możliwość opublikowania
oryginalnego, interesującego algorytmu w notacji języka Pascal
STANDARDOWE SYMBOLE JĘZYKA PASCAL
J
ęzyki programowania służą do przedstawienia
algorytmów w takiej postaci, w której mogą być one
wykonane przez komputery.
Jedną z wygodnych form komunikacji człowiek - maszyna
jest zapis tekstowy.
Program jest więc tekstem. Ze względu na ograniczenia
praktyczne, tekst ten jest ci
ągiem znaków, tzn nie ma
indeksowania stosowanego w np.. matematyce. -
obowi
ązuje jeden poziom znaków.
Program pascalowy buduje
się z elementarnych jednostek
tekstowych j
ęzyka nazywanych symbolami.
Symbol
może być pojedynczym znakiem bądź ciągiem
znaków alfabetu języka.
Standardowe symbole
Alfabet :
– małe i duże litery alfabetu łacińskiego
- cyfry od 0 - 9
- odst
ęp (spacja)
- jednoznakowe symbole specjalne :
+ - * / = < >
[ ] ( ) { } spacja
. ,
‘ : ; ^ @ $ % & # _
- dwuznakowe symbole specjalne :
<> <=
>=
:=
..
Standardowe symbole
– słowa kluczowe
AND
DOWNTO
IF
OR
THEN
ARRAY
ELSE
IN
PACKED
TO
BEGIN
END
LABEL
TYPE
CASE
FILE
MOD PROGRAM
UNTIL
CONST
FOR
NIL
RECORD
VAR
DIV
FUNCTION
NOT
REPEAT
WHILE
DO
TYPE
OF
SET
WITH
Słowa kluczowe maja specjalne znaczenie
Są nazwami typów wbudowanych, nazwami operatorów,
elementami instrukcji, itp
Identyfikatory
-Nazwy dozwolone
Nazwy
(identyfikatory, ang.
identifiers
) mogą
odnosić się do podprogramów, zmiennych,
stałych, funkcji, tablic, klas ...
nazwą może być dowolnie długi ciąg liter (
nie
używamy polskich!
), cyfr i znaków podkreślenia.
Nazwa musi zaczynać się od litery
poprawne nazwy:
liczba_1, stala21, a, B_2_2, c
niepoprawne nazwy:
2tablica, ścieżka, dzień, cx2-1, 1@,
Pascal, Delphi nie rozróżniają małych i dużych
liter
Identyfikatory
Podobnie jak s
łowa kluczowe identyfikatory są symbolami
j
ęzyka Pascal/Delphi złożonymi z ciągu znaków.
Pewne identyfikatory maj
ą ustalone nazwy. Czyli są to
identyfikatory
standardowe.
U
żytkownik
m
oże
przedefiniowa
ć znaczenie tych identyfikatorów w sekcji
deklaracji programu i u
żywać ich w zdefiniowanym
znaczeniu. Jednak, oznacza to utrat
ę wbudowanych w
j
ęzyku ułatwień.
Natomiast
u
żytkownik
mo
że
stosować
w
łasne
identyfikatory dla nadawania nazw programom i wszelkim
obiektom niestandardowym w programach. Ka
żdy taki
identyfikator musi by
ć ciągiem liter i cyfr przy czym
pierwszy znak musi by
ć literą.
Separatory
W programie pascalowym separatory
służą do rozdzielenia
poszczególnych obiektów programu. Separatorami są:
;
średnik
, przecinek
jedna lub wi
ęcej spacji,
‘enter’
przej
ście do nowego wiersza,
{ } //
komentarz .
Obowi
ązuje przy tym zasada, że dowolne dwa słowa kluczowe,
identyfikatory lub liczby bez znaku musz
ą być rozdzielone co
najmniej jednym separatorem.
Komentarz ma posta
ć ciągu znaków zamkniętego w nawiasy
klamrowe, np. {
nowa funkcja
}
//
licznik
pętli
Wewn
ątrz pary nawiasów można umieścić dowolny ciąg znaków za
wyj
ątkiem nawiasu klamrowego.
Umieszczenie komentarzy w tych miejscach programu w
których
mog
ą być pomocne w zrozumieniu jego konstrukcji należy do
dobrej praktyki programistycznej.
Typy
Zasad
ą jest, że każda stała, zmienna, wyrażenie lub funkcja jest
pewnego typu.
Ogólnie typ określa :
a)
zbiór wartości do którego należy stała, bądź jakie może
przyjmowa
ć zmienna czy wyrażenie, lub jakie mogą być generowane
przez funkcj
ę;
b)
zbiór operacji, które można wykonywać na zmiennych, stałych,...
•W język pascal oferuje użytkownikowi pięć różnych typów :
- standardowe typy proste
- standardowy typ strukturalny (-
łańcuch)
- niestandardowe, tj definiowane przez u
żytkownika, np. okrojony
- niestandardowe typy strukturalne
(również definiowane przez
u
żytkownika) : tablicowy, zbiorowy, rekordowy i plikowy;
- niestandardowy typ wska
źnikowy.
Typy
Standardowym lub wbudowanym, nazywamy taki typ,
którego
identyfikator,
zbiór wartości oraz dopuszczalne operacje zostały
okre
ślone standardowo w języku.
Typy
proste s
ą podstawowymi jednostkami typu w języku
Pascal/Delphi. Na ich podstawie mo
żna utworzyć inne, bardziej
rozbudowane struktury danych - typy strukturalne.
Typy strukturalne wprowadzono w zwi
ązku z dążeniem do możliwie
szerokiego zakresu zastosowa
ń języka.
Typ zmiennej okre
śla jednoznacznie zbiór
z
którego zmienna
przybiera warto
ści.
Typy
TYP
strukturalny
łańcuchowy
prosty
wskaźnikowy proceduralny
porządkowy
rzeczywisty
wyliczeniowy okrojony
całkowity
logiczny
znakowy
Byte
ShortInt
Word
Integer
LongInt
porządkowy:
całkowity
Typy
Typ
Zakres
B
Integer
–2 147 483 648 ..
2 147 483 647
4B
Cardinal
0 .. 4 294 967 295
4B
Shortint
–128 .. 127
1B
Smallint
–32 768 .. 32 767
2B
Longint
jak integer
4B
Int64
–2^63 .. 2^63–1
8B
Byte
0 .. 255 (tj. 0..$FF)
1B
Word
0 .. 65 535
(0..$FFFF)
2B
Longword
jak cardinal
4B
Przykład :
var a,c : SmallInt ;
b : Byte;
prosty:
rzeczywisty
Typy
Typ
Zakres
il. cyfr
B
Real48
2.9e
–39 .. 1.7e38
11
–12
6B
Single
1.5e
–45 .. 3.4e38
7
–8
4B
Real
=Double
5.0e
–324 .. 1.7e308
15
–16
8B
Extended
3.6e
–4951 .. 1.1e4932
19
–20
10
B
Comp
jak int64 (nie
zalecane)
19
–20
8B
Currency
–
922337203685477.5808
..
922337203685477.5807
19
–20
8B
Przykład :
var x : Double ;
y,z : Single;
porządkowy:
logiczny
znakowy
Typy
Boolean
(false, true)
1B
(ByteBool 1B, WordBool 2B, LongBool 4B)
Zmienna typu logicznego mo
że przyjmować dwie
warto
ści : true (prawda) lub false (fałsz) Obie
stałe logiczne są predefiniowane.
Char
=AnsiChar
#0..#255
1B
(WideChar 2B),
‘A’ ≡ #65, ^G ≡ #7,
Chr(65) ≡ ’A’, Ord(‘A’) ≡ 65
Zmienna typu znakowego jest jednym znakiem ze
zbioru wszystkich znaków ASCII
Przykład :
var decyzja : boolean;
Przykład :
var jeden_znak : char;
porządkowy:
wyliczeniowy
Typy
·
wyliczeniowe
(identf1, identyf2, ident3f, ...
np. (pon, wt, sr, czw, pt, sob, ndz)
Przykład :
var dzien =(pon, wt, sr, cz, pt, so, ndz)
liczby =(1,7,13);
Greckie=(alfa, beta, gamma, delta)
porządkowy:
okrojon
Typy
const1 .. const2
1 .. 100,
-15 .. MaxN-1,
‘A’ .. ’F’
Ord, Pred, Succ, High, Low, SizeOf, Inc, Dec
np.
Ord(false)
≡ 0,
Succ(2)
≡ 3,
Low(Shortint)
≡ -128,
High(Byte)
≡ 255;
SizeOf(int64)
≡ 8,
inc(i)
≡ i=i+1,
inc(k,3)
Dec(i)=i-1
Pred(5)=4
Przykład :
var zakres : 10..100;
Litery1 :
‘c’..’k’
cyfry: 0..9;
łańcuchowy
Typy
string[n], np. string[40]
– 1..40 znaków
var s :string
s :=
’’; {brak spacji pomiędzy apostrofami};
s :=
’ ’ {1 spacja pomiędzy apostrofami};
s :=
‘Witaj';
s[1]
≡ ‘W’, s[4] ≡ ‘a’, s[1] := ‘w’; {s ≡ ‘witaj’}
Length, SetLength, np. Length(s)
≡ 5
s[0]=5
– długość łańcucha jest umieszczona w zerowej komórce
Typ
il.
znakow
B
ShortString
= string gdy {$H-}
0 .. 255
2B ..
256B
string = AnsiString
0 ..
~2^31
4B ..
2GB
WideString
0 ..
~2^30
4B ..
2GB
łańcuchowy
Typy
Deklaracja typu string:
• type nazwa_typu=string
•type nazwa_typu=string [ stała ]
var s1,s2,s3,s4 :string
s1 :=
’Liczba’;
s2 :=
’Pierwsza’ ;
s1<s2; // łańcuchy można porównywać ‘A’<‘a’
s3:=s1+s2; //LiczbaPierwsza
s4:=s2+’ ‘+s1; //Pierwsza Liczba
s2<s4 ?
s1[0]<s2[0] ?
5
N
A
P
I
S
0
1
2
3
4
5
6
7
łańcuchowy
Typy
- do poszczególnych elementów łańcucha można się odnosić tak
jak do elementów tablicy - poprzez indeks:
s[1], s[2], s[10]
trzeba pamiętać, że te elementy są już typu char a nie string
- string jest jedynym typem tablicowym, na którym dopuszczalne są
operacje agregujące np. '+'; oraz wartości tego typu mogą być
parametrami procedur write i read
Różnice pomiędzy łańcuchami i tablicami o elementach znakowych:
- tablica znakowa może mieć dowolną długość,
- liczba znaków wpisanych do tablicy nie jest nigdzie zapamiętywana,
- elementy tablicy nie są w żaden sposób powiązane ze sobą
i dlatego można się do nich odwoływać pojedynczo lub w całości
jako tablicy (nie można odwoływać się do podzbiorów)
- łańcuch może być traktowany jako jednowymiarowa tablica znaków
natomiast tablica może mieć wiele wymiarów.
Tablicowy
(strukturalny)
Typy
Do przechowywania jednorodnego w sensie typu ciągu (zestawu)
wielkości służy typ tablicowy,
Type
Identyfikator_typy
array
[TypIndeksu] of
TypElementu
Gdzie:
Typindeksu
jest dowolnym typem porządkowym za wyjątkiem Longint,
TypElementu
jest dowolnym typem
type IntList = array[1..100] of Integer; {tablice jednowymiarowe}
CharCode = array['A'..'Z'] of Byte;
var A :IntList;
C :CharCode;
//użycie A[10] := 14;
C[
‘Z’] := 255
Tablicowy
Typy
type Matrix = array[0..10, -5..5 ] of Real; {tablice 2 -wymiarowe}
Matrix = array[0..10] of array[-5..5] of Real;
//inny sposób
Type Tab= array[1..100 ] of Single; // tablica 1 -wymiarowa}
wynik= array[1..50 ] of Tab;
// tablice 2 -wymiarowa}
var M :Matrix;
W :Wynik;
//użycie M[1,0] := -1.043;
// Matrix[1,1]:=5 -
błąd- nazw.typu
W[2,35] := 21.25
W[2][35] := 21.25
Aby móc efektywnie korzystać z tych zmiennych należy poznać sposób
odwoływania się do poszczególnych elementów tablicy. W opisie tego
mechanizmu posłużymy się pojęciem selektora, który służy do wyboru
odpowiedniego elementu składowego zmiennej złożonej. W typie
tablicowym, podobnie jak napisowym, selektorem są nawiasy
kwadratowe, w których podajemy indeks(y) elementu, do którego
odwołujemy się.
Tablicowy z wartościami początkowymi
Typy
type Tabz = array[0..5] of char;
Dane = array[1..4] of SmallInt;
var znaki :Tabz=('a','z','A','X','3','|') ;
wyniki : Dane=(1,2,100,5);
writeln(znaki[2]);
writeln(wyniki[3]);
Rekordowy
Typy
record
pole1:typ1
pole2:typ2
...
poleN :typN
end;
Type
Tdane=
record
Imie : string[20];
Plec : char;
Wiek : byte
Praca : array[1..10] of string
End;
var D :TDane;
begin
D.imie
:=’Teodor’;
D.plec:=
‘M’;
D.wiek:=23;
D.praca[1]=
’Zakłady energetyczny’;
Tablicowy
Typy
Tablice dynamiczne:
Identyfikator array of TypElementu
var A : array of integer;
begin ...
SetLength(A , 10);
{High(A)
≡ 9}
A[0]:=15; A[9]:=-24;
A:=nil;
M
nogościowe
Typy
set of typ
type
CharSet = set of Char;
Digits = set of 0..9;
Day = (Sun, Mon, Tue, Wed, Thu, Fri);
Days = set of Day;
-typ porządkowy zwany jest typem bazowym zbioru,
-typ bazowy nie może mieć więcej niż 256 możliwych wartości - dlatego typem
bazowym nie może być np.: integer, word...
-wartości porządkowe granic zbioru muszą się mieścić w granicach od 0 do 255
- złym typem jest zatem set of [-5..5],
-wartości typu zbiorowego wypisuje się przy pomocy konstruktora zbiorów [ ],
-kolejność wypisywania elementów wewnątrz nawiasów kwadratowych jest
dowolna,
-element umieszczony na liście wielokrotnie interpretowany jest jak jeden
element.
type znaki = set of char;
var
a,b,c:znaki;
z:char;
begin
....
a:=['0'..'9', 'a'..'z', 'A'..'Z'];
b:=[];
z:=#27;
c:=[z];
.....
end.
Zakresy typów
Zakresy poszczególnych typów mogą
być albo ściśle określone, albo zależeć
od implementacji (czyli od kompilatora)
ZAWSZE istnieje w każdym typie wartość
największa i najmniejsza
Stałe
Definicje stałych
W programie mo
żna zdefiniować pewne obiekty (tzw. stałe),
których wartość w czasie działania programu się nie zmienia
Przypisanie
stałej wartości identyfikatorowi następuje za
pomocą instrukcji :
const
nazwa =
stała
;
const
e = 2.71;
const
kierunek
= ‘telekomunikacja'
(sta
ła nie musi być liczbą; może być np. łańcuchem znaków)
Typowy b
łąd definicji: const mc:=110
(zamiast = u
żyto znaku z
instrukcji przyp. :=)
Zmienne
Na deklaracj
ę zmiennej składają się trzy elementy:
var
nazwa zmiennej
:
typ
.
var
słowo kluczowe ozanczjącą zmienną
nazwa zmiennej
(określona przez identyfikator),
Typ
zmiennej (określa zbiór wartości jaki może przyjmować
zmienna),
Wartość zmiennej (typ określa dopuszczalne wartości),
Położenie (alokacja) zmiennej w pamięci operacyjnej (tym
zajmuje się najczęściej kompilator).
Ważną rolą zmiennej jest to, że może ona opisywać pewien stan
maszyny cyfrowej (np. zawartość jednej lub kilku komórek
pamięci operacyjnej).
123
wartość
(byte)
typ
zmienna
delta
identyfikator
Zmienne
Zmienne – zmienne przechowują pewne informacje
o stanie maszyny cyfrowej:
Zmienne s
ą wielkościami zmieniającymi swoją wartość w trakcie
wykonywania programu.
Ka
żda zmienna wykorzystana w programie jest całkowicie
okre
ślona przez swoją nazwę, którą nadaje się jej zgodnie z
przyj
ętymi regułami.
D
ługość identyfikatora zmiennej jest dowolna, z tym że tylko
pierwsze 63 znaki s
ą znaczące. Nazwa zmiennej powinna
sugerować rolę tej zmiennej w programie
Wszystkie zmienne
używane w programie muszą być wcześniej
zadeklarowane.
W momencie deklaracji zmiennej nie przypisywane s
ą im żadne
warto
ści liczbowe. Deklaracje sygnalizują tylko komputerowi
konieczno
ść zarezerwowania dla nich odpowiedniej jednostki
pami
ęci
Deklaracje zmiennych
W programie musimy określić, jakiego typu będą
używane zmienne w programie oraz spowodować,
żeby została zarezerwowana pamięć na ich
przechowanie
deklaracje zmiennych poprzedzamy słowem kluczowym
var
var
nazwa_zmiennej 1
: typ;
nazwa_zmiennej 2
: typ;
var
clkowita:byte;
rzecz :Double;
znak: char;
napis: string;
A: array[1..3]of 0..1;
Deklaracje zmiennych
Podczas deklaracji zmiennym można nadać wartości
początkowe
var
clkowita : byte=1;
rzecz :Double=1.55;
znak: char=
’a’;
napis: string=
’trwają obliczenia’;
A: array[1..3]of 0..1=(0,1,0);
Operatory
W języku pascal zdefiniowane są pewne operatory,
których można używać do konstruowania wyrażeń
(arytmetycznych, logicznych...)
operatory arytmetyczne:
+ - * /
możemy przy konstruowaniu wyrażeń
arytmetycznych używać nawiasów
a * b / c * d
Np..
1+5 / 2
1+(a-3) / (4+x)
d
c
b
a
d
c
b
a
pewne specyficzne operatory arytmetyczne
zdefiniowane są dla liczb całkowitych, jak:
div – dzielenie całkowite bez reszty,
mod – reszta z dzielenia całkowitego;
Np. 7 div 3 (równa się 2)
7 mod 2 (równa się 1)
Typ zwracanego wyniku zależy
zazwyczaj od typu argumentów operacji
Operatory relacyjne (porównania)
mniejszy nie większy większy nie mniejszy jest elementem
<
<=
>
>= in
(np. a>2;
B <= a-5;
var znak: char;
zank in [’a’..’z’] )
„różne” i „równe”
<> =
np..
a
=b
B=2
x<>10
operatory logiczne
koniunkcji , alternatywy, negacji, różnicy symetrycznej
and
or not xor
a > 2 and a < 9 ...
//źle
(a > 2) and (a < 9) ... //dobrze
(a=2) or (d<c)
not a in [’1..5’]
if (zn in [‘0’..’9’, ‘A’,’C’..’H’]) then ....
Operacja przypisania
Do przypisania zmiennej wartości innej zmiennej lub
wyrażenia służy operator przypisania
:=
liczba:=10;
Nowe_pi:=3.2;
s:=’Komentarz’
A[1,1]:=22;
Priorytet operatorów
WARTOŚCIOWANIE WYRAŻEŃ
- wyrażenia obliczane są od strony
lewej do prawej zachowując priorytety operatorów w kolejności:
operatory multiplikatywne a następnie addytywne; zmiana tych
priorytetów może nastąpić w wyniku użycia nawiasów.
ZGODNOŚĆ TYPÓW
-
wartość wyrażenia występującego w instrukcji
przypisania powinna być takiego samego typu jak zmienna, do której
następuje przypisanie
operator
priorytet
kategoria
+,
–
, @, not, ()
1
(najwyższy)
jednoargumentowe
*, /, div, mod, and
2
multiplikatywne
+,
–, or, xor
3
addytywne
=, <>, <, >, <=, >=, in
4
relacyjne
Konwersja typów
Konwersja typu
- zachodzi podczas operacji na zmiennych różnego typu
var
c: Integer;
x, d: double
x:=c+d zachodzi konwersja niejawna zmiennej c (typy całkowitego ) na
zmienną typu rzeczywistego
Var zn : byte
lok : boolean
// konwrsje jawne
if not lok and boolean(zn) then zn:=char(102);
zank := char(65);
c := byte(’z’) + 5;
Składnia języka
Każdy język ma swoją
składnię:
słowa kluczowe
instrukcje
itd ....
Struktura programu
Program w języku Pascal ma pewną
ustaloną strukturę:
program
nazwa_programu
;
część deklaracyjna
begin
część wykonywalna
end
.
Struktura programu
nagłówek
programu
end
.
begin
ciąg instrukcji
Część
deklaracyjna
Blok
programu
program
wyklad02;
const max=10;
var liczba:byte;
begin
writeln(‘początek');
liczba:=5+max;
writeln('liczba=‘, liczba);
writeln (’Koniec’);
Readln;
end.
Instrukcje programu kończą się zazwyczaj
średnikami
wyjątkowo instrukcję zakończone są innymi
znakami: np. kropką - ostatnia linia programu
Zazwyczaj układ tekstu w linii czy też
rozłożenia go na kilka linii nie ma znaczenia
Część deklaracyjna
zawiera deklaracje
typów, stałych, zmiennych, opis funkcji
Część wykonywalna
– instrukcje do
wykonania
program Wyrazy;
{$APPTYPE CONSOLE}
//indentyfikator
n1
_1n
wst_do_progr
WstDoProgr
wstDoProgr
begin1
//litera│
-123
5.6e10
'Jakiś apis'
//słowo kluczowe
begin
if
repeat
begin
readln;
end.
program Zdanie1; //nagłówek
//cz. deklaracyjna
{$APPTYPE CONSOLE}
uses SysUtils;
//deklar. sta│ych
const
// indent = wartość
MaxN = 100;
MaxN1 = MaxN+1;
//deklar. typˇw
Type
//ident = typ;
int = Integer;
TIndeksTabl = Integer;
//deklaracja zmiennych
var
// ident : typ;
I :Integer;
// ciąg dalszy programu
var
IndeksTabl, N :
TIndeksTabl;
x :Integer = 1;//ale nie w
podprogr.
//deklaracja podprogramów
//dek. Funkcji
//cz. wykonawcza
begin
I := 1;
I := I + 1;
N := MaxN;
//....
I := MaxN;
{ komentarz}
end.
program TypyProsteNieporz;
{$APPTYPE CONSOLE} {$O-,Q+,R+}
uses SysUtils;
var
s :string;
ok :Boolean;
begin
s := 'Pierwszy wiersz'#13#10'Drugi'^G;
writeln(s);
s := 'Apostrof '' pojedynczy';
writeln(s);
writeln(s[2]);
writeln(s[length(s)]);
readln;
end.
program TypyProsteNieporz;
{$APPTYPE CONSOLE} {$O-,Q+,R+}
uses SysUtils;
var
s :string;
ok :Boolean;
i: real;
z:char;
Begin
//cz. Wykonawcza
writeln(ord(z));
s := 'Pierwszy wiersz'#13#10'Drugi'^G;
writeln(s);
s := 'Apostrof '+' pojedynczy';
writeln(s);
writeln(s[2]);
writeln(s[length(s)]);
writeln(length(s));
writeln(ok);
ok:=boolean(1);
writeln(ok);
readln; end.
program Operatory2;
{$APPTYPE CONSOLE} {$O-,Q+,R+}
uses
SysUtils;
var
zn :char;
int :Integer;
type
T = array[1..4] of byte;
begin
zn := 'Z';
writeln(char(byte(zn)-byte('A')+byte('a')));
int:=-3;
writeln(T(int)[1]);
writeln(T(int)[2]);
writeln(T(int)[3]);
writeln(T(int)[4]);
writeln(int64(15));
readln;
end.
program TypyProstePorz;
{$APPTYPE CONSOLE}
uses SysUtils;
var
ok :Boolean;
x :1..4;
dzień : (pon, wt, śr);
begin
writeln(SizeOf(int64));
writeln(low(int64));
writeln($11);
ok := FALSE;
x := 4;
ok := x > 1;
writeln(ok);
dzień := wt;
writeln(ord(dzień));
inc(dzień);
writeln(ord(dzień));
// Ciąg dalszy
dec(x);
// Ciąg dalszy
dec(x);
writeln(x);
writeln(high(x));
writeln(low(x));
readln;
end.
// program obliczajacy trzecia potege liczby
program
prog01
;
{$APPTYPE CONSOLE}
uses SysUtils;
var
a
,
p2
,
p3
: integer;
begin
writeln
('program oblicza trzecia potege podanej
liczby');
write
('podaj a:');
readln
(
a
);
p2
:=
a
*
a
;
p3
:=
p2
*
a
;
write('wynik wynosi ',
p3
);
Readln;
end.
Instrukcje sterujące
W programie używamy instrukcji sterujących,
umożliwiających warunkowe lub iteracyjne
wykonywanie pewnych fragmentów kodu
Instrukcje
proste:
strukturalne:
przypisania złożona
procedury warunkowa
iteracyjna
pusta wiążąca
Instrukcja wywołania procedury
Nazwa procedury
przykłady
Writeln; //wypisuje pusty wiersz (pustą linię)
Write; //wypisuje pusty znak
Write(’a’); //wypisuje znak a
Write(a); //wypisuje wartość zmiennej a
Writeln(x,2,y);
//wypisuje wartość zmiennej x,liczbę 2,
// war. zmiennej y i przechodzi do następnej lini
Read; //czyta pusty znak z klawiatury
Readln;
//czyta znak „Enter” - przechodzi na następnej linii
Read(a);
//czyta z klawiatury wartość zmiennej a
Readln(a);
//czyta z klawiatury wartość zmiennej a i przechodzi
// do następnej linii
Instrukcja przypisania
:= (operator przypisania)
identyfikator zmiennej
:=
wyrażenie
przykłady
Liczba := 3;
Napis:= ’dowolny tekst!’;
znak:=’h’ ;
Wiek:= 20;
B[i] :=2.3;
Blok instrukcji
begin
Ciąg Instrukcji
end;
Begin
przykłady
Begin
x := 3;
y:=x+b;
z:=x+y+z ;
writeln(z);
end;
Instrukcja_1
Instrukcja_2
Instrukcja_N
end;
program Typy_zbiorowy;
{$APPTYPE CONSOLE}
uses SysUtils;
type cyfry = set of 0..9;
var
x,y,z:cyfry;
i:integer;
begin
x:=[1,9,100,9,9]; { wartość 9 wystąpi w zbiorze
tylko raz, a 100 zostanie zignorowane }
i:=9;
y:=[i+2,3]; {wartość 11 zostaniezignorowana}
z:=[2,4,6,8];
end.