PASCAL
PASCAL
Podstawowe pojęcia
Podstawowe pojęcia
Programowanie strukturalne –
Programowanie strukturalne –
rozwiązywanie problemów metodą
rozwiązywanie problemów metodą
„top-down” (od szczegółu do ogółu)
„top-down” (od szczegółu do ogółu)
Program strukturalny
Program strukturalny
a)konstruowany bez instrukcji skoku
a)konstruowany bez instrukcji skoku
b)instrukcje wykonują się
b)instrukcje wykonują się
sekwencyjnie
sekwencyjnie
Język PASCAL
Język PASCAL
Specjalny język do nauki programowania
Specjalny język do nauki programowania
strukturalnego
strukturalnego
Pakiet programowy zawierający
Pakiet programowy zawierający
interakcyjny system programowania
interakcyjny system programowania
zawierający:
zawierający:
a)
a)
kompilator języka TURBO PASCAL
kompilator języka TURBO PASCAL
b)
b)
złączony z nim ekranowy edytor tekstu
złączony z nim ekranowy edytor tekstu
c)
c)
program lokalizowania i usuwania
program lokalizowania i usuwania
usterek (debugger)
usterek (debugger)
Alfabet języka PASCAL
Alfabet języka PASCAL
Alfabet języka:
Alfabet języka:
a)
a)
litery małe i duże alfabetu
litery małe i duże alfabetu
angielskiego oraz znak _
angielskiego oraz znak _
b)
b)
cyfry od 0 do 9
cyfry od 0 do 9
c)
c)
znaki specjalne (pozostałe znaki
znaki specjalne (pozostałe znaki
dostępne z klawiatury)
dostępne z klawiatury)
d)
d)
znaki sterujące (tablica ASCII)
znaki sterujące (tablica ASCII)
Słowa kluczowe języka PASCAL
Słowa kluczowe języka PASCAL
Słowa kluczowe:
Słowa kluczowe:
absolute
absolute
and
and
array
array
begin
begin
case
case
const
const
costructor
costructor
destructor
destructor
div
div
do
do
downto
downto
else
else
end
end
external
external
file
file
for
for
forward
forward
function
function
goto
goto
if
if
implementation
implementation
in
in
inline
inline
interface
interface
interrupt
interrupt
label
label
mod
mod
nil
nil
Słowa kluczowe języka PASCAL
Słowa kluczowe języka PASCAL
Słowa kluczowe (c.d.)
Słowa kluczowe (c.d.)
not
not
object
object
of
of
or
or
packed
packed
procedure
procedure
program
program
record
record
repeat
repeat
set
set
shl
shl
shr
shr
string
string
then
then
to
to
type
type
unit
unit
until
until
uses
uses
var
var
virtual
virtual
while
while
with
with
xor
xor
Literały
Literały
W języku PASCAL występują następujące stałe:
W języku PASCAL występują następujące stałe:
1.
1.
liczbowe
liczbowe
a)
a)
całkowite -
całkowite -
ciąg cyfr ze znakiem lub bez
ciąg cyfr ze znakiem lub bez
(np. –123)
(np. –123)
b)
b)
rzeczywiste
rzeczywiste
i.
i.
w postaci
w postaci
z kropką dziesiętną
z kropką dziesiętną
(część całkowita
(część całkowita
zawsze musi wystąpić, np. –0.5)
zawsze musi wystąpić, np. –0.5)
ii.
ii.
w postaci
w postaci
wykładniczej
wykładniczej
mEc
mEc
(
(
wartosc = m 10
wartosc = m 10
c
c
)
)
,
,
gdzie
gdzie
m –
m –
mantysa (liczba rzeczywista w postaci z
mantysa (liczba rzeczywista w postaci z
kropką dziesiętną, zawsze musi wystąpić) oraz
kropką dziesiętną, zawsze musi wystąpić) oraz
c
c
–
–
cecha liczby ( liczba całkowita)(np. 1E-1, 0e2)
cecha liczby ( liczba całkowita)(np. 1E-1, 0e2)
c)
c)
szesnastkowe – poprzedzone znakiem
szesnastkowe – poprzedzone znakiem
$
$
najwyżej
najwyżej
osiem cyfr szesnastkowych
osiem cyfr szesnastkowych
Literały
Literały
2.
2.
znakowe – pojedyncze znaki ujęte w apostrofy
znakowe – pojedyncze znaki ujęte w apostrofy
(
(
‘‘
‘‘
) lub poprzedzony znakiem
) lub poprzedzony znakiem
# kod ASCII
# kod ASCII
3.
3.
tekstowe (łańcuchy) – ujęte w apostrofy ciągi
tekstowe (łańcuchy) – ujęte w apostrofy ciągi
maksymalnie 255 znaków
maksymalnie 255 znaków
4.
4.
logiczne – dwie wartości
logiczne – dwie wartości
TRUE
TRUE
oraz
oraz
FALSE
FALSE
5.
5.
komentarz – ciągi znaków ujęte w nawiasy
komentarz – ciągi znaków ujęte w nawiasy
klamrowe
klamrowe
{}
{}
lub
lub
(* *)
(* *)
( są ignorowane przez
( są ignorowane przez
PASCAL)
PASCAL)
Nazwa
Nazwa
W TURBO PASCALU poprawna nazwa
W TURBO PASCALU poprawna nazwa
dowolnego obiektu to
dowolnego obiektu to
ciąg liter i cyfr
ciąg liter i cyfr
zaczynający się od litery zakończony
zaczynający się od litery zakończony
spacją
spacją
(znak _ jest uważany za literę)
(znak _ jest uważany za literę)
Priorytety działań
Priorytety działań
Ustalone są następujące priorytety dla działań
Ustalone są następujące priorytety dla działań
(począwszy od największego)
(począwszy od największego)
1.
1.
operacje w nawiasach
operacje w nawiasach
2.
2.
operatory zmiany znaku i logiczne NOT
operatory zmiany znaku i logiczne NOT
3.
3.
*, /, div, mod, AND
*, /, div, mod, AND
4.
4.
+, -, OR
+, -, OR
5.
5.
=,<>,<,>,<=,>=
=,<>,<,>,<=,>=
Jeżeli na danym poziomie występują operatory o
Jeżeli na danym poziomie występują operatory o
takim samym priorytecie, to są wykonywane w
takim samym priorytecie, to są wykonywane w
kolejności od lewej do prawej
kolejności od lewej do prawej
Podstawowe funkcje
Podstawowe funkcje
arytmetyczne
arytmetyczne
SQRT(x)
SQRT(x)
x
x
SQR(x)
SQR(x)
x
x
2
2
ABS(x)
ABS(x)
|x|
|x|
LN(X)
LN(X)
ln x
ln x
EXP(X)
EXP(X)
e
e
x
x
SIN(x)
SIN(x)
sin x
sin x
COS(x)
COS(x)
cos x
cos x
Klasyfikacja typów danych
Klasyfikacja typów danych
w y lic z e n io w y
o k r o jo n y
c a łk o w ity
lo g ic z n y
z n a k o w y
p o r z ą d k o w y
r z e c z y w is ty
p r o s ty
ła ń c u c h o w y
ta b lic o w y
r e k o r d o w y
z b io r o w y
p lik o w y
s tr u k tu r a ln y
o b ie k to w y
w s k a ź n ik o w y
p r o c e d u r a ln y
ty p y d a n y c h w P A S C A L u
Typ wyliczeniowy
Typ wyliczeniowy
Stosuje się dla zbiorów o
Stosuje się dla zbiorów o
niewielkiej
niewielkiej
liczbie
liczbie
elementów
elementów
Definicja:
Definicja:
TYPE
TYPE
nazwa_typu=(lista_elementów)
nazwa_typu=(lista_elementów)
np.
np.
TYPE
TYPE
pora=(wiosna, lato, jesien, zima);
pora=(wiosna, lato, jesien, zima);
Ten sam element nie może
Ten sam element nie może
występować w
występować w
dwóch typach
dwóch typach
wyliczeniowych
wyliczeniowych
W obrębie jednego typu elementy
W obrębie jednego typu elementy
muszą
muszą
być różne
być różne
Typ okrojony
Typ okrojony
służy do ograniczania zakresów
służy do ograniczania zakresów
wartości dowolnego typu
wartości dowolnego typu
porządkowego
porządkowego
definicja:
definicja:
TYPE
TYPE
nazwa_typu=ogr_dolne..ogr_gorne;
nazwa_typu=ogr_dolne..ogr_gorne;
np.
np.
TYPE
TYPE
duza=‘A’..’Z’;
duza=‘A’..’Z’;
ogr_dolne i ogr_gorne może być opisane
ogr_dolne i ogr_gorne może być opisane
wyrażeniem, ale nie może zaczynać się od
wyrażeniem, ale nie może zaczynać się od
nawiasu
nawiasu
i wartość wyrażenia musi być
i wartość wyrażenia musi być
typu
typu
przeliczeniowego
przeliczeniowego
Typy całkowite
Typy całkowite
nazwa
nazwa
zakres
zakres
zajętość
zajętość
pamięci
pamięci
SHORTINT
SHORTINT
-128..127
-128..127
1 bajt
1 bajt
BYTE
BYTE
+0..255
+0..255
1 bajt
1 bajt
INTEGER
INTEGER
-32768..32767
-32768..32767
2 bajty
2 bajty
WORD
WORD
+0..65535
+0..65535
2 bajty
2 bajty
LONGINT
LONGINT
-21474833648..2147483647
-21474833648..2147483647
4 bajty
4 bajty
Pozostałe typy porządkowe
Pozostałe typy porządkowe
typ logiczny
typ logiczny
BOOLEAN
BOOLEAN
, wartości
, wartości
TRUE
TRUE
oraz
oraz
FALSE
FALSE
typ znakowy
typ znakowy
CHAR
CHAR
elementami są
elementami są
znaki ASCII
znaki ASCII
Typy rzeczywiste
Typy rzeczywiste
standardowy
standardowy
REAL
REAL
:
:
najmniejsza liczba dodatnia 2.9 e-39
najmniejsza liczba dodatnia 2.9 e-39
największa wartość 1.7 e38
największa wartość 1.7 e38
zajętość pamięci 6 bajtów
zajętość pamięci 6 bajtów
mantysa 11 lub 12 cyfr znaczących
mantysa 11 lub 12 cyfr znaczących
Typy rzeczywiste (c.d.)
Typy rzeczywiste (c.d.)
jeśli włączona jest opcja korzystania z
jeśli włączona jest opcja korzystania z
koprocesora, lub jego emulacja wtedy
koprocesora, lub jego emulacja wtedy
dostępne są dodatkowe typy rzeczywiste
dostępne są dodatkowe typy rzeczywiste
nazwa
nazwa
zajętość
zajętość
pamięci
pamięci
najmniejsza
najmniejsza
wartość
wartość
dodatnia
dodatnia
największa
największa
wartość
wartość
mantysa
mantysa
(ilość cyfr
(ilość cyfr
znaczących)
znaczących)
SINGLE
SINGLE
4 bajty
4 bajty
1.5 e-45
1.5 e-45
3.4 e38
3.4 e38
7 lub 8
7 lub 8
DOUBLE
DOUBLE
8 bajtów
8 bajtów
5.0 e-324
5.0 e-324
1.7 e308
1.7 e308
15 lub 16
15 lub 16
EXTENDED
EXTENDED
10 bajtów
10 bajtów
3.4 e-4932
3.4 e-4932
1.1 e4932
1.1 e4932
19 lub 20
19 lub 20
Typ łańcuchowy
Typ łańcuchowy
służy do reprezentowania tekstów
służy do reprezentowania tekstów
deklaracja
deklaracja
TYPE
TYPE
nazwa=
nazwa=
STRING
STRING
[
[
rozmiar
rozmiar
];
];
gdzie
gdzie
rozmiar
rozmiar
to liczba typu BYTE
to liczba typu BYTE
brak wartości
brak wartości
rozmiar
rozmiar
powoduje
powoduje
domyślne przyjęcie
domyślne przyjęcie
rozmiar
rozmiar
=255
=255
Struktura programu
Struktura programu
PROGRAM nazwa;
PROGRAM nazwa;
część opisowa (deklaracje)
część opisowa (deklaracje)
BEGIN
BEGIN
część wykonawcza (instrukcje)
część wykonawcza (instrukcje)
END.
END.
Deklaracje
Deklaracje
USES
USES
wykaz modułów - deklaracja
wykaz modułów - deklaracja
modułów (bibliotek funkcji i procedur) np.
modułów (bibliotek funkcji i procedur) np.
USES CRT;
USES CRT;
CONST
CONST
– definicje stałych programu, np.
– definicje stałych programu, np.
CONST tekst=‘TURBO’;
CONST tekst=‘TURBO’;
TYPE
TYPE
– deklaracja typów użytkownika
– deklaracja typów użytkownika
VAR
VAR
– deklaracja zmiennych
– deklaracja zmiennych
występujących w programie
występujących w programie
FUNCTION
FUNCTION
,
,
PROCEDURE
PROCEDURE
– deklaracja
– deklaracja
funkcji i procedur
funkcji i procedur
Instrukcje
Instrukcje
in s t r u k c ja p r z y p is a n ia
in s t r u k c ja p u s t a
w y w o ła n ie p r o c e d u r y
o p e r a c je w e / w y
p r o s t e
in s t r u k c ja z ło ż o n a
p o s t a ć s k r ó c o n a
p o s t a ć p e łn a
in s t r u k c ja w a r u n k o w a
in s t r u k c ja 'd o p ó k i'
in s tr u k c ja 'p o w t a r z a j'
in s tr u k c ja 'fo r '
in s t r u k c je it e r a c y jn e
s t r u k t u r a ln e
in s tr u k c je
Wprowadzanie danych
Wprowadzanie danych
READ
READ
(
(
lista_we
lista_we
); - powoduje wprowadzenie
); - powoduje wprowadzenie
znaków z klawiatury i przypisanie danych do
znaków z klawiatury i przypisanie danych do
zmiennych wymienionych jako
zmiennych wymienionych jako
lista_we
lista_we
READLN
READLN
(
(
lista_we
lista_we
); - dodatkowo przechodzi do
); - dodatkowo przechodzi do
następnego wiersza, bez
następnego wiersza, bez
lista_we
lista_we
oczekuje na
oczekuje na
wciśnięcie klawisza <ENTER>
wciśnięcie klawisza <ENTER>
lista_we
lista_we
to wykaz zmiennych oddzielonych
to wykaz zmiennych oddzielonych
przecinkami, których wartości należy wprowadzić
przecinkami, których wartości należy wprowadzić
Wyprowadzanie wyników
Wyprowadzanie wyników
WRITE
WRITE
(
(
lista_wy
lista_wy
); - wyprowadza na ekran
); - wyprowadza na ekran
po kolei elementy z
po kolei elementy z
lista_wy
lista_wy
WRITELN
WRITELN
(
(
lista_wy
lista_wy
); - dodatkowo przesuwa
); - dodatkowo przesuwa
kursor do nowego wiersza
kursor do nowego wiersza
lista_wy
lista_wy
może zawierać stałe, zmienne i
może zawierać stałe, zmienne i
wyrażenia
wyrażenia
np. WRITE(‘DLA N=’,n,’ wynik =‘,2*n+1);
np. WRITE(‘DLA N=’,n,’ wynik =‘,2*n+1);
Wyprowadzanie wyników
Wyprowadzanie wyników
(c.d)
(c.d)
wartość rzeczywista jest standardowo
wartość rzeczywista jest standardowo
wyprowadzana w postaci wykładniczej
wyprowadzana w postaci wykładniczej
wyświetlenie wartości rzeczywistej w
wyświetlenie wartości rzeczywistej w
postaci ‘z kropką dziesiętną’ można
postaci ‘z kropką dziesiętną’ można
uzyskać dając format dla wyświetlanej
uzyskać dając format dla wyświetlanej
wartości:
wartości:
WRITE
WRITE
(X:n:m) – n to ilość miejsc dla całej
(X:n:m) – n to ilość miejsc dla całej
wyświetlanej liczby, m to ilość miejsc po
wyświetlanej liczby, m to ilość miejsc po
przecinku np.
przecinku np.
WRITE
WRITE
(X:12:2)
(X:12:2)
Instrukcja podstawienia
Instrukcja podstawienia
pozwala nadać zmiennej wartość
pozwala nadać zmiennej wartość
postać ogólna
postać ogólna
zmienna
zmienna
:=
:=
wyrażenie;
wyrażenie;
po lewej stronie instrukcji może stać tylko
po lewej stronie instrukcji może stać tylko
jedna zmienna
jedna zmienna
wartość wyrażenia musi być zgodna z
wartość wyrażenia musi być zgodna z
typem zmiennej
typem zmiennej
wyjątki: zmienna rzeczywista, wartość
wyjątki: zmienna rzeczywista, wartość
wyrażenia całkowita oraz zmienna
wyrażenia całkowita oraz zmienna
łańcuchowa i wartość wyrażenia znakowa
łańcuchowa i wartość wyrażenia znakowa
Instrukcja złożona
Instrukcja złożona
powoduje, że grupa instrukcji jest
powoduje, że grupa instrukcji jest
uznawana przez PASCAL za jedną
uznawana przez PASCAL za jedną
postać ogólna
postać ogólna
BEGIN
BEGIN
instrukcja1; instrukcja2;..instrukcja n;
instrukcja1; instrukcja2;..instrukcja n;
END;
END;
Instrukcja warunkowa
Instrukcja warunkowa
pozwala podejmować w programie decyzje
pozwala podejmować w programie decyzje
postać skrócona
postać skrócona
IF
IF
warunek
warunek
THEN
THEN
instrukcja;
instrukcja;
warunek
warunek
– wyrażenie typu BOOLEAN
– wyrażenie typu BOOLEAN
instrukcja – dowolna instrukcja języka
instrukcja – dowolna instrukcja języka
PASCAL (tylko jedna!)
PASCAL (tylko jedna!)
Jeżeli
Jeżeli
warunek
warunek
ma wartość TRUE, to wykona
ma wartość TRUE, to wykona
się instrukcja, w przeciwnym razie
się instrukcja, w przeciwnym razie
instrukcja zostanie pominięta
instrukcja zostanie pominięta
Instrukcja warunkowa
Instrukcja warunkowa
postać pełna
postać pełna
IF warunek THEN instr1 ELSE instr2;
IF warunek THEN instr1 ELSE instr2;
Jeżeli
Jeżeli
warunek
warunek
ma wartość TRUE, to
ma wartość TRUE, to
wykona się instr1, w przeciwnym
wykona się instr1, w przeciwnym
wypadku wykona się instr2
wypadku wykona się instr2