pas czesc 1d

background image

1

PS/TP

TI

TI

TI

TI----PS

PS

PS

PS----1D

1D

1D

1D

WPROWADZENIE DO

WPROWADZENIE DO

WPROWADZENIE DO

WPROWADZENIE DO

PROGRAMOWANIA

PROGRAMOWANIA

PROGRAMOWANIA

PROGRAMOWANIA

STRUKTURALNEGO W PASCALU

STRUKTURALNEGO W PASCALU

STRUKTURALNEGO W PASCALU

STRUKTURALNEGO W PASCALU

background image

2

PS/TP

PROGRAMOWANIE STRUKTURALNE

Budowa programu

“Struktury danych + Algorytmy = Program”

Program przykład;
var
x: array[1..100] of integer;
i: integer;
y: integer;

begin
for i := 1 to 100 do
begin
readln(y);
x[i] := y;
end;
end.

Dane

Algorytm

background image

3

PS/TP

PROGRAMOWANIE STRUKTURALNE

Budowa programu Pascalowego

Nag

ł

ówek programu

PROGRAM nazwa;

Cz

ęść

deklaracyjna:

USES CRT;

Deklaracje sta

ł

ych

CONST …………..;

Deklaracje typów

TYPE ……………;

Deklaracje zmiennych

VAR ……………..;

Deklaracje funkcji (procedur)

FUNCTION

nazwa_funkcji

:

typ_funkcji

;

BEGIN

…………..

END;

Cz

ęść

wykonawcza:

BEGIN

ClrScr;

…………..
…………..
…………..

ReadKey;

END.

background image

4

PS/TP

PROGRAMOWANIE STRUKTURALNE

Podstawowe operatory

Reszta z dzielenia np. reszta := x mod 3;

mod

Dzielenie całkowite np. ile := x div 3;

div

Dzielenie np. iloraz := x / 3.0;

/

Mnożenie np. iloczyn := x * 3.0;

*

Alternatywa (LUB) np. (x or y)

or

Koniunkcja (I) np. (x and y)

and

Negacja np. not z

not

Sprawdzenie warunku „mniejszy lub równy” np. (x <= 1)

<=

Sprawdzenie warunku „większy lub równy” np. (x >= 4)

>=

Sprawdzenie nierówności np. (x <> 0)

<>

Sprawdzenie równości np. (x = 0)

=

Znaczenie i przykład

Operator

background image

5

PS/TP

PROGRAMOWANIE STRUKTURALNE

Podstawowe instrukcje

Instrukcja wielokrotnego wyboru np.
Case n of
1 : writeln(‘jedynka‘);

2 : writeln(‘dwojka‘);
3 : writeln(‘trojka‘);
4 : writeln(‘czworka‘);

else writeln(‘inna liczba‘);

End;

Case

Instrukcja warunkowa np.

if ((x mod 2)=0) then writeln(‘parzysta‘);

else writeln(‘nieparzysta‘);

If… else

Instrukcja złożona np. begin

x := a*2+c;
i := i + 1;
k := k + 1;

end;

begin
…..
end;

Instrukcja podstawiania np.

wynik := a*a + 2*a*b+b*b;

:=

Instrukcja pisząca na ekran lub do pliku

WRITE lub WRITELN

Instrukcja czytająca z klawiatury lub pliku

READ lub READLN

Instrukcja kończąca część wykonawczą

END.

Instrukcja rozpoczynająca część wykonawczą

BEGIN

Znaczenie i przykład

Instrukcja

background image

6

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja pętli (iteracyjna) tzw. „w górę”, np.
For n := 1 To 5 do writeln(‘n= ‘, n);

FOR ZS := WP TO WK DO …

Uwaga:
ZS – zmienna sterująca,
WP – wartość początkowa,
WK – wartość końcowa

Instrukcja pętli (iteracyjna) tzw. „w dół”, np.
For n := 5 DownTo 1 do writeln(‘n= ‘, n);

FOR ZS := WP DOWNTO WK DO …

Uwaga:
ZS – zmienna sterująca,
WP – wartość początkowa,
WK – wartość końcowa

Instrukcja pętli (iteracyjna) np.
Repeat

writeln(‘n= ‘, n);
n := n – 1;

Until (n=0);

Repeat

……
……

Until

(warunek)

Instrukcja pętli (iteracyjna) np.
While (n>0) do
Begin

writeln(‘n= ‘, n);
n := n – 1;

End;

While

(warunek)

do begin

……
……

end;

background image

7

PS/TP

PROGRAMOWANIE STRUKTURALNE

Podstawowe funkcje standardowe

Wartość liczby REAL x zaokrąglona do najbliższej liczby INTEGER np.

x := 1.4;
n := Round(x);

{n= 1}

y := 1.5;
n := Round(y);

{n= 2}

Round(x)

Kod znaku x np.

kod := Ord(x);

Ord(x)

TRUE dla liczby x nieparzystej,
FALSE dla liczby x parzystej, np.
If odd(x) then Writeln(‘nieparzysta‘)

else Writeln(‘parzysta‘);

Odd(x)

TRUE jeśli napotkano na koniec pliku f.
W przeciwnym razie FALSE, np.
Repeat

Read(f,znak);
Writeln(znak);

Until Eof(f);

Eof(f)

Znak o kodzie x np.

znak := Chr(x);

Chr(x)

Wartość bezwzględna x np.

wynik := Abs(x);

Abs(x)

Znaczenie i przykład

Funkcja

background image

8

PS/TP

PROGRAMOWANIE STRUKTURALNE

Czeka na naciśnięcie klawisza i czyta go. Zwraca kod ASCII tego klawisza.

ReadKey;

Kwadrat liczby x np.
wynik := SQR(2);

lub

wynik := 2*2;

SQR(x)

Pierwiastek kwadratowy liczby x np.
wynik := SQRT(2);

SQRT(x)

Wartość liczby REAL x obcięta do liczby INTEGER np.

x := 1.999;
n := Trunc(x);

{n= 1}

y := – 1.111;
n := Trunc(y);

{n= – 1}

Trunc(x)

background image

9

PS/TP

PROGRAMOWANIE STRUKTURALNE

Podstawowe procedury standardowe

Ustawia kolor tekstu (kod koloru od 0 – 7)
np. TextBackground(LIGHTGRAY);
lub TextBackground (7);

TEXTBACKGROUND

Ustawia kolor tekstu (kod koloru od 0 – 15)
np. TextColor(BLUE);
lub TextColor(1);
lub TextColor(BLUE+BLINK);
(NIEBIESKI MRUGAJĄCY)

TEXTCOLOR

Wypisuje wartość zmiennej x na ekranie i ustawia kursor w nowej linii
np. Writeln(x);

WRITELN(x)

Wypisuje wartość zmiennej x na ekranie np. Write(x);

WRITE(x)

Wypisuje tekst na ekranie i ustawia kursor w nowej linii np. Writeln(‘a kuku‘);

WRITELN(‘tekst’)

Wypisuje tekst na ekranie np. Write(‘a kuku‘);

WRITE(‘tekst’)

Czyta liczbę z klawiatury do zmiennej x np. Readln(x);

READLN(x)

Kasuje ekran np. ClrScr;

CLRSCR

Znaczenie i przykład

Procedura

background image

10

PS/TP

PROGRAMOWANIE STRUKTURALNE

Jak napisa

ć

pierwszy program w Pascalu ?

program pierwszy;
uses crt;
begin

writeln('Mój pierwszy program');

end

••••

Aby napisa

ć

pierwszy program nale

ż

y uruchomi

ć

TP i wykona

ć

nast

ę

puj

ą

ce operacje:

Wpisz w edytorze poni

ż

szy tekst:

Zapisz (File









Save as...) tekst do pliku PIERWSZY,

Wyjaśnienie nr 1:
Wiersz USES CRT występujący po nagłówku programu musi być wpisany - w przeciwnym razie instrukcja WRITELN
nie będzie działać.

Większość programów w Turbo Pascalu komunikuje się z klawiaturą i ekranem, dlatego Turbo Pascal musi używać
swojej wewnętrznej biblioteki instrukcji ekranowo - klawiaturowych. Biblioteka ta nazywa się CRT.
Wyjaśnienie nr 2:
Instrukcja BEGIN to po prostu start programu - początek działania algorytmu.
Natomiast instrukcja END. to stop programu - koniec działania algorytmu.
Pomiędzy instrukcjami BEGIN oraz END. znajdują się instrukcje (rozkazy), które wykonuje komputer.

background image

11

PS/TP

PROGRAMOWANIE STRUKTURALNE

Jak sprawdzi

ć

działanie programu ?

Aby uruchomi

ć

i testowa

ć

działanie programu u

ż

ywa si

ę

polecenia

Run









Run (Ctrl+F9)

Polecenie to uruchamia redagowany program.

Program zostaje wykonany pocz

ą

wszy od instrukcji begin a

ż

do instrukcji end

,

Potem nast

ę

puje powrót do okna edytora.

Uwaga: Kropka mo

ż

e wyst

ą

pi

ć

TYLKO jeden raz w programie !!!

background image

12

PS/TP

PROGRAMOWANIE STRUKTURALNE

Jak testowa

ć

programy bez u

ż

ywania klawiszy Alt+F5 ?

W trakcie pisania programu cz

ę

sto zachodzi konieczno

ść

sprawdzenia jego zachowania w konkretnych sytuacjach
i bardzo denerwuj

ą

ce jest ci

ą

głe naciskanie Alt+F5.

W tym celu ka

ż

dy testowany program uzupełniamy dodatkow

ą

instrukcj

ą

readln;

(umieszczamy j

ą

jako ostatni

ą

przed instrukcj

ą

end

).

Instrukcja ta czeka na naci

ś

ni

ę

cie klawisza ENTER i w ten sposób mo

ż

esz

obejrze

ć

spokojnie ekran zanim powrócisz do edytora TP.

Albo u

ż

yj funkcji ReadKey

background image

13

PS/TP

PROGRAMOWANIE STRUKTURALNE

Podsumowanie

Jak zbudowany jest ten program Pascalowy ?
Ka

ż

dy program napisany w Pascalu sk

ł

ada si

ę

z 3 cz

ęś

ci – nag

ł

ówka, cz

ęś

ci deklaracyjnej oraz cz

ęś

ci wykonawczej:

program pierwszy;

uses crt;

begin
writeln(‘Mój pierwszy program’);
readln;
end.

Nagłówek
programu

Część
deklaracyjna

Część wykonawcza

background image

14

PS/TP

PROGRAMOWANIE STRUKTURALNE

Nagłówek programu zawsze musi znajdowa

ć

si

ę

na pocz

ą

tku ka

ż

dego programu.

Zawiera on słowo program, spacj

ę

oraz dowolny tzw. identyfikator.

Nagłówek ko

ń

czy si

ę

znakiem “;” (

ś

rednik).

Cz

ęść

deklaracyjna zawiera tzw. deklaracj

ę

, która informuje

jaka standardowa biblioteka Turbo Pascal b

ę

dzie potrzebna.

Deklaracja ta składa si

ę

ze słowa uses, spacji oraz nazwy biblioteki.

Deklaracj

ę

nale

ż

y zako

ń

czy

ć

znakiem “;” (

ś

rednik).

Standardowa biblioteka CRT zawiera m.in. procedur

ę

writeln

oraz readln których u

ż

yto w cz

ęś

ci wykonawczej.

Cz

ęść

wykonawcza składa si

ę

z nast

ę

puj

ą

cych instrukcji,

czyli rozkazów dla komputera:
begin – rozpoczyna działanie programu,
writeln – wy

ś

wietla na ekranie tekst Mój pierwszy program,

readln – czeka na naci

ś

niecie klawisza ENTER,

end

••••

– ko

ń

czy działanie programu

background image

15

PS/TP

PROGRAMOWANIE STRUKTURALNE

Co to jest identyfikator?

Identyfikatorem nazywamy ci

ą

g znaków bez spacji

(liter, cyfr dziesi

ę

tnych , znaków ”_”),

który rozpoczyna si

ę

od znaku podkre

ś

lenia lub litery.

background image

16

PS/TP

PROGRAMOWANIE STRUKTURALNE

Do czego u

ż

ywamy identyfikatorów ?

Identyfikatory u

ż

ywane s

ą

do nazywania stałych, zmiennych, procedur, funkcji,

programów, pól w rekordach.

Identyfikatory mog

ą

by

ć

o dowolnej długo

ś

ci, lecz TP rozró

ż

nia jedynie

pierwsze 63 znaki.
Identyfikator musi rozpoczyna

ć

si

ę

od litery lub znaku podkre

ś

lenia.

Identyfikator nie mo

ż

e zawiera

ć

spacji. Znaki słu

żą

ce do tworzenia

identyfikatora to: znak podkre

ś

lenia “_” oraz litery i cyfry dziesi

ę

tne.

background image

17

PS/TP

PROGRAMOWANIE STRUKTURALNE

Uwaga dotycz

ą

ca wielko

ś

ci liter

TURBO Pascal nie rozró

ż

nia wielko

ś

ci liter. Oznacza to,

ż

e

w j

ę

zyku TP nast

ę

puj

ą

ce

identyfikatory s

ą

tymi samymi identyfikatorami - s

ą

identyczne:

proces, PROCES, PrOcEs, ProceS, pROCEs.

background image

18

PS/TP

PROGRAMOWANIE STRUKTURALNE

Jakie nazwy nie s

ą

identyfikatorami ?

Poni

ż

sze nazwy nie s

ą

identyfikatorami

i
dlatego Pascal ich nie zrozumie - s

ą

to bł

ę

dne nazwy:

9Alfa
Chrz

ą

szcz

Mój Proces
Nr(Zestawu)
$Beta&Date

background image

19

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ć

wiczenia

Ć

wiczenie cw1.pas.

Napisz program wy

ś

wietlaj

ą

cy tekst „Witaj w Ogolnopolskiej Meczarni

Programistow”.

Ć

wiczenie cw2.pas.

Napisz program sumuj

ą

cy dwie liczby rzeczywiste i pokazuj

ą

cy ich sum

ę

.

Ć

wiczenie cw3.pas.

Napisz program obliczaj

ą

cy pierwiastek kwadratowy z liczby rzeczywistej.

Ć

wiczenie cw4.pas.

Napisz program czyszcz

ą

cy ekran, a potem:

wy

ś

wietlaj

ą

cy tekst „Czekam na nacisniecie dowolnego klawisza”

a po naci

ś

ni

ę

ciu tekst „Program zakonczyl dzialanie”

background image

20

PS/TP

PROGRAMOWANIE STRUKTURALNE

Co to jest identyfikator?

Ć

wiczenie cw5.pas.

Napisz program zawieraj

ą

cy jedn

ą

instrukcj

ę

warunkow

ą

i

czytaj

ą

cy dowoln

ą

liczb

ę

rzeczywist

ą

sprawdzaj

ą

cy, czy podana liczba jest nieujemna

je

ś

li tak, to ma obliczy

ć

i wy

ś

wietli

ć

warto

ść

pierwiastka kwadratowego podanej

liczby je

ś

li nie, to ma wy

ś

wietli

ć

komunikat „Wprowadziles liczbe ujemna”

Ć

wiczenie cw6.pas.

Napisz program zawieraj

ą

cy instrukcje warunkowe zagnie

ż

d

ż

one i

czytaj

ą

cy 3 liczby rzeczywiste

sprawdzaj

ą

cy, która z podanych liczb jest najmniejsza

wy

ś

wietlaj

ą

cy warto

ść

najmniejszej liczby

Ć

wiczenie cw7.pas.

Usprawnij program z poprzedniego

ć

wiczenia tak aby u

ż

ywał mniejszej liczby

instrukcji.

background image

21

PS/TP

PROGRAMOWANIE STRUKTURALNE

Co to jest identyfikator?

Ć

wiczenie cw8.pas.

Napisz program zawieraj

ą

cy instrukcj

ę

p

ę

tli for wczytuj

ą

cy ci

ą

g znaków i

wy

ś

wietlaj

ą

cy kolejno wczytane znaki, ka

ż

dy znak w oddzielnej linii

Ć

wiczenie cw9.pas.

Napisz program zawieraj

ą

cy instrukcj

ę

p

ę

tli for wczytuj

ą

cy ci

ą

g znaków i

zamieniaj

ą

cy wszystkie znaki na du

ż

e oraz,

wy

ś

wietlaj

ą

cy zmieniony ci

ą

g

Ć

wiczenie cw10.pas.

Napisz program zawieraj

ą

cy 2 instrukcje p

ę

tli for (zagnie

ż

d

ż

one)

wczytuj

ą

cy wysoko

ść

n prostok

ą

ta i jego szeroko

ść

m

wy

ś

wietlaj

ą

cy prostok

ą

t utworzony ze znaków ‘x

background image

22

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ć

wiczenie cw11.pas.

Napisz program instrukcj

ę

p

ę

tli for

wczytuj

ą

cy liczb

ę

całkowit

ą

k i

wy

ś

wietlaj

ą

cy kolejno liczby całkowite od 1 do k, ka

ż

d

ą

w osobnej linii

background image

23

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ć

wiczenie cw12.pas. (dla zaawansowanych)

Jeste

ś

sprzedawc

ą

komputerów. Cena komputera (cena_k) zale

ż

y m.in. od ceny

płyty głównej.
Je

ś

li cena płyty wzro

ś

nie o k%, to i cen

ę

komputera musisz podnie

ść

.

Przyj

ą

łe

ś

nast

ę

puj

ą

cy algorytm kalkulacji ceny komputera:

je

ś

li k mie

ś

ci si

ę

w zakresie <0%; 10%>, to cena komputera pozostaje bez zmian.

je

ś

li k mie

ś

ci si

ę

w zakresie (10%; 20%>, to cen

ę

sprzedawanego komputera

zwi

ę

kszasz o 5% warto

ś

ci płyty.

je

ś

li k > 20 %, to nie ustalasz ceny tego komputera i wyprowadzasz komunikat

Cena za wysoka”.
Wprowadzaj cen

ę

komputera cena_k, cen

ę

płyty głównej cena_p oraz warto

ść

k

procent o jaki wzrosła cena płyty.
Obliczaj i wyprowadzaj aktualn

ą

cen

ę

komputera.

Napisz specyfikacj

ę

zadania.

Narysuj schemat blokowy algorytmu ustalania ceny komputera.
Napisz program realizuj

ą

cy w/w algorytm

background image

24

PS/TP

PROGRAMOWANIE STRUKTURALNE

Podstawowe elementy j

ę

zyka Pascal

Co to jest identyfikator ?

Identyfikatorem nazywamy ci

ą

g znaków bez spacji (liter, cyfr dziesi

ę

tnych ,

znaków ”_”), który rozpoczyna si

ę

od znaku podkre

ś

lenia lub litery.

Do czego u

ż

ywamy identyfikatorów ?

Identyfikatory u

ż

ywane s

ą

do nazywania stałych, zmiennych, procedur,

funkcji, programów, pól w rekordach. Identyfikatory mog

ą

by

ć

o dowolnej

długo

ś

ci, lecz TP rozró

ż

nia jedynie pierwsze 63 znaki. Identyfikator musi

rozpoczyna

ć

si

ę

od litery lub znaku podkre

ś

lenia. Identyfikator nie mo

ż

e

zawiera

ć

spacji. Znaki słu

żą

ce do tworzenia identyfikatora to: znak podkre

ś

lenia “_

oraz litery i cyfry dziesi

ę

tne.

background image

25

PS/TP

PROGRAMOWANIE STRUKTURALNE

Uwaga:
TURBO Pascal nie rozró

ż

nia wielko

ś

ci liter. Oznacza to,

ż

e

w j

ę

zyku TP nast

ę

puj

ą

ce identyfikatory s

ą

tymi samymi identyfikatorami –

s

ą

identyczne: proces, PROCES, PrOcEs, ProceS, pROCEs.

Jakie nazwy nie s

ą

identyfikatorami ?

Poni

ż

sze nazwy nie s

ą

identyfikatorami i dlatego Pascal ich nie

zrozumie - s

ą

to bł

ę

dne nazwy:

9Alfa
Chrz

ą

szcz

Mój Proces
Nr(Zestawu)
$Beta&Date

background image

26

PS/TP

PROGRAMOWANIE STRUKTURALNE

Co to s

ą

znaki i symbole specjalne dla Pascala ?

Znaki i symbole u

ż

ywane przez j

ę

zyk Pascal ograniczaj

ą

si

ę

do

nast

ę

puj

ą

cych zestawów:

Litery – Alfabet angielski, od A do Z i od a do z.

Cyfry dziesi

ę

tne – Cyfry arabskie od 0 do 9.

Cyfry szesnastkowe - Cyfry arabskie od 0 do 9 oraz litery od A do Z i od a do z.

Spacja – Znak o kodzie ASCII 32.

Nast

ę

puj

ą

ce symbole maj

ą

specjalne znaczenie:

+ - * / = < > [ ] . , ( ) : ; ^ @ { } $ #

background image

27

PS/TP

PROGRAMOWANIE STRUKTURALNE

Nast

ę

puj

ą

ce pary znaków tak

ż

e maj

ą

specjalne znaczenie:

<= >= := .. { } (* *)
<=
oznacza “mniejszy lub równy”
<> oznacza “nierówny”
= oznacza “równy”
:= oznacza “podstaw” lub “przypisz”
.. oznacza “od do” (zakres indeksów w tablicach)
{ } oznacza “komentarz” (kompilator go nie tłumaczy)
(* *) oznacza “komentarz” (kompilator go nie tłumaczy)

background image

28

PS/TP

PROGRAMOWANIE STRUKTURALNE

Co to s

ą

słowa zarezerwowane?

Słowa zarezerwowane zwane tak

ż

e słowami kluczowymi to słowa słu

żą

ce

w Pascalu do okre

ś

lonych celów

takich jak n.p. operacje logiczne, definicje i deklaracje typów, zmiennych,
procedur, funkcji, jako nazwy komend i ich cz

ęś

ci składowych.

Dlatego nie mo

ż

na ich u

ż

ywa

ć

jako identyfikatorów, na przykład: do

oznaczania zmiennych, nazw funkcji i procedur.

Przykłady:
begin, end, function, if, procedure
program, repeat, string, then, uses
var, while.

background image

29

PS/TP

PROGRAMOWANIE STRUKTURALNE

Wy

ś

wietlanie tekstów

Jak napisa

ć

program wy

ś

wietlaj

ą

cy kilka wierszy tekstu ?

Wystarczy wczyta

ć

poprzedni program PIERWSZY.PAS

i w cz

ęś

ci wykonawczej dopisa

ć

kilka

nowych instrukcji – jak w poni

ż

szym przykładzie.

program pierwszy;
uses crt;
begin

writeln('Mój pierwszy program');
writeln('wy

ś

wietlaj

ą

cy kilka');

writeln('wierszy tekstu');
readln;

end

••••

background image

30

PS/TP

PROGRAMOWANIE STRUKTURALNE

Jak nauczy

ć

program wczytywa

ć

tekst z klawiatury?

Aby program mógł wczytywa

ć

jaki

ś

tekst nale

ż

y napisa

ć

nast

ę

pny program,

który wygl

ą

da nast

ę

puj

ą

co (zapisz go w pliku DRUGI.PAS):

program drugi;
uses crt;
var tekst : string;
begin

readln(tekst);
writeln('Wpisałe

ś

', tekst);

readln;

end

••••

background image

31

PS/TP

PROGRAMOWANIE STRUKTURALNE

Do czego słu

ż

y deklaracja ?

Deklaracje umieszczane w cz

ęś

ci deklaracyjnej programu słu

żą

do rezerwowania

okre

ś

lonego obszaru

w pami

ę

ci operacyjnej RAM po to aby przechowywa

ć

tam dane.

W ko

ń

cu gdzie

ś

te dane program musi przechowywa

ć

!

Obszary pami

ę

ci tworzone przez Pascal nazywamy zmiennymi

(tutaj nasz

ą

zmienn

ą

jest nazwa tekst).

Ka

ż

da deklaracja zmiennej rozpoczyna si

ę

od słowa zarezerwowanego var.

Po tym słowie musi nast

ę

powa

ć

spacja, nazwa zmiennej, dwukropek,

typ zmiennej oraz

ś

rednik.

Przykład:
var x: string;

background image

32

PS/TP

PROGRAMOWANIE STRUKTURALNE

Cały zapis deklaracji var tekst : string; mo

ż

na odczytywa

ć

w taki sposób:

“Zmienna (ang. variable) tekst jest typu ła

ń

cuchowego”,

ale poprawny programista powie inaczej: “identyfikator tekst jest zmienn

ą

typu ła

ń

cuchowego”.

Słowo var oznacza “zmienna”, a dwukropek czytamy jako “jest typu”.

Słowo string jest najcz

ęś

ciej u

ż

ywanym słowem przez programistów, bowiem

u

ż

ytkownicy cz

ę

sto wpisuj

ą

tekst za pomoc

ą

klawiatury - trzeba wi

ę

c

go gdzie

ś

przechowywa

ć

.

Przykład:
Do zmiennej tekst mo

ż

emy wstawia

ć

dowolny tekst.

background image

33

PS/TP

PROGRAMOWANIE STRUKTURALNE

Co to jest typ ła

ń

cuchowy ?

Typ ła

ń

cuchowy to po prostu rodzaj danych składaj

ą

cych si

ę

z ci

ą

gu

znaków – mo

ż

na powiedzie

ć ż

e dane te s

ą

przewa

ż

nie tekstami.

Długo

ść

takich danych nie mo

ż

e przekroczy

ć

255 znaków.

Przykład:
...
var s: string;
begin
...
s := ‘mój kot cz

ę

sto buszuje po klawiaturze’;

...
end.

background image

34

PS/TP

PROGRAMOWANIE STRUKTURALNE

Jak działa program DRUGI.PAS ?

program drugi;
uses crt;
var tekst : string;
begin

readln(tekst);
writeln('Wpisałe

ś

', tekst);

readln;

end

••••

background image

35

PS/TP

PROGRAMOWANIE STRUKTURALNE

Działanie programu rozpoczyna si

ę

od instrukcji begin.

Instrukcja readln(tekst); czeka a

ż

z klawiatury kto

ś

wprowadzi jakie

ś

znaki –

nie musi to by

ś

sensowny tekst,

na przykład:

„mój kot cz

ę

sto buszuje po klawiaturze”.

Po naci

ś

ni

ę

ciu klawisza ENTER wprowadzony tekst jest zapami

ę

tany

w zmiennej tekst. Nast

ę

pna instrukcja zawiera dwa parametry:

konkretny tekst oraz nazw

ę

zmiennej.

Instrukcja writeln wy

ś

wietla najpierw tekst “Wpisałe

ś

”,

a potem zawarto

ść

zmiennej tekst.

Kursor przechodzi do nowego wiersza.

Instrukcja readln zatrzymuje program a

ż

do naci

ś

ni

ę

cia klawisza ENTER.

Instrukcja end

••••

ko

ń

czy działanie programu i sterowanie

komputerem wraca do systemu operacyjnego.

background image

36

PS/TP

PROGRAMOWANIE STRUKTURALNE

Je

ś

li uruchomiłe(a)

ś

ten program, to na pewno dziwisz si

ę ż

e na ekranie

nic si

ę

nie dzieje.

WYJA

Ś

NIENIE: po prostu program czeka na podanie jakiego

ś

ci

ą

gu

znaków i naci

ś

ni

ę

cie klawisza ENTER (bo tak działa procedura readln(tekst)).

Wpisujesz n.p. „Mam do

ść

” i naciskasz ENTER.

Dopiero teraz na ekranie pojawi si

ę

nast

ę

puj

ą

cy tekst

Wpisałe

ś

Mam do

ść

” – zadziałała wła

ś

nie procedura writeln.

background image

37

PS/TP

PROGRAMOWANIE STRUKTURALNE

Jak skasowa

ć

zawarto

ść

ekranu ?

W trakcie poprzednich prób uruchamiania programu na ekranie pozostały teksty,
które teraz nie s

ą

Ci potrzebne –

s

ą

to tzw. “

ś

mieci komputerowe”. Jak mo

ż

na ich si

ę

pozby

ć

?

Rozwi

ą

zanie jest bardzo proste – dobrym zwyczajem programistów jest

umieszczanie na pocz

ą

tku

cz

ęś

ci wykonawczej instrukcji clrscr.

Instrukcja clrscr (ang. clear screen) kasuje zawarto

ść

całego ekranu

i ustawia kursor w pierwszej
kolumnie pierwszej linii ekranu.

background image

38

PS/TP

PROGRAMOWANIE STRUKTURALNE

program trzeci;
uses crt;
var tekst : string;
begin

clrscr;
writeln('Podaj swoje imi

ę

:');

readln(tekst);
writeln('Cze

ść

', tekst);

readln;

end

••••

background image

39

PS/TP

PROGRAMOWANIE STRUKTURALNE

TYPY DANYCH

Klasyfikacja typów w Turbo Pascalu

Trudne ale konieczne

background image

40

PS/TP

Typ

jest to określenie:

zbioru wartości

, do którego może

należeć stała, zmienna, wyrażenie
albo może być generowany przez
funkcję

zbioru operacji

, które można

wykonywać na ww. obiektach

background image

41

PS/TP

background image

42

PS/TP

Typami prostymi
typy porządkowe, rzeczywiste,
łańcuchowe i wskazujące

a typami strukturalnymi (złożonymi)
są typy tablicowe, rekordowe,
mnogościowe i plikowe

.

background image

43

PS/TP

Typ porządkowy charakteryzuje się tym, że jest związany z
przeliczalnym zbiorem danych tj. reprezentuje skończony zbiór
wartości. Najważniejsze typy porządkowe to: wyliczeniowy,
całkowity, logiczny.
Typ wyliczeniowy to np. zbiór wartości (

wiosna

,

lato

,

jesien

,

zima

)

Typ całkowity INTEGER to zbiór wartości liczb od (

-32 768

do

+32 767

)

Typ całkowity SHORTINT to zbiór wartości liczb od (

-128

do

+127

)

Typ całkowity LONGINT to zbiór wartości liczb od (

-2 147 483

648

do

+2 147 483 647

)

Typ całkowity BYTE to zbiór wartości liczb od (

0

do

255

)

Typ całkowity WORD to zbiór wartości liczb od (

0

do

65 535

)

Typ logiczny BOOLEAN to zbiór wartości logicznych:

FALSE

,

TRUE

background image

44

PS/TP

PROGRAMOWANIE STRUKTURALNE

W j

ę

zyku Pascal poj

ę

cie typu danych jest szczególnie wyrazi

ś

cie okre

ś

lone.

Wszelkie stałe, zmienne lub wyra

ż

enia

musz

ą

by

ć

okre

ś

lonego typu i programista zawsze powinien zdawa

ć

spraw

ę

z ogranicze

ń

reprezentacji danego typu i zwi

ą

zanych z tym problemów.

Mo

ż

liwe s

ą

zmiany typu (przej

ś

cie od jednego typu do drugiego),

ale mog

ą

one by

ć

zwi

ą

zane ze zmian

ą

warto

ś

ci danego wyra

ż

enia lub zmiennej.

Ka

ż

dy typ ma okre

ś

lony zestaw operacji, które mo

ż

na wykonywa

ć

na jego elementach.

background image

45

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy danych dzielimy przede wszystkim na
typy proste (skalarne) i zło

ż

one.

Przykładem typu prostego jest typ integer (liczby całkowite), za

ś

typu zło

ż

onego-tablice, zbiory, pliki i rekordy. Elementami typów prostych

s

ą

pojedyncze liczby, znaki lub identyfikatory, natomiast elementami typów

zło

ż

onych s

ą

struktury danych, na które składaj

ą

si

ę

elementy typów prostych

lub innych typów zło

ż

onych.

Programista mo

ż

e tworzy

ć

własne typy danych, prawie bez

ż

adnych ogranicze

ń

.

Mo

ż

na tak

ż

e tworzy

ć

dynamiczne struktury

danych, to jest takie struktury, których posta

ć

mo

ż

e zmienia

ć

si

ę

w trakcie

wykonania programu.

background image

46

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ jest to okre

ś

lenie:

zbioru warto

ś

ci, do którego mo

ż

e nale

ż

e

ć

stała, zmienna,

wyra

ż

enie albo mo

ż

e by

ć

generowany przez funkcj

ę

zbioru operacji, które mo

ż

na wykonywa

ć

na ww. obiektach

background image

47

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typami prostymi s

ą

:

typy porz

ą

dkowe, rzeczywiste, ła

ń

cuchowe i wskazuj

ą

ce

a typami strukturalnymi (zło

ż

onymi) s

ą

:

typy tablicowe, rekordowe, mnogo

ś

ciowe i plikowe.

background image

48

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy: wyliczeniowy, całkowity, logiczny
Typ porz

ą

dkowy charakteryzuje si

ę

tym,

ż

e jest zwi

ą

zany z przeliczalnym

zbiorem danych tj.
reprezentuje sko

ń

czony zbiór warto

ś

ci. Najwa

ż

niejsze typy porz

ą

dkowe to:

wyliczeniowy, całkowity, logiczny.

Typ wyliczeniowy to np. zbiór warto

ś

ci (wiosna, lato, jesien, zima)

Typ całkowity INTEGER to zbiór warto

ś

ci liczb od (-32 768 do +32 767)

Typ całkowity SHORTINT to zbiór warto

ś

ci liczb od (-128 do +127)

Typ całkowity LONGINT to zbiór warto

ś

ci liczb od (-2 147 483 648 do +2 147 483 647)

Typ całkowity BYTE to zbiór warto

ś

ci liczb od (0 do 255)

Typ całkowity WORD to zbiór warto

ś

ci liczb od (0 do 65 535)

Typ logiczny BOOLEAN to zbiór warto

ś

ci logicznych: FALSE, TRUE

background image

49

PS/TP

PROGRAMOWANIE STRUKTURALNE

Standardowe typy proste
W j

ę

zyku Pascal istniej

ą

4 podstawowe typy proste „wbudowane”

w standard j

ę

zyka:

Integer, Boolean, Char, Real

W komercyjnych implementacjach j

ę

zyka Pascal, jak np.

w Turbo Pascalu lub Borland Pascalu istnieje znaczenie wi

ę

cej typów

wbudowanych. Omówmy je przy okazji przedstawiania
poszczególnych typów prostych.

background image

50

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ integer
Ten typ reprezentuje liczby ca

ł

kowite. Warto

ść

tego typu zajmuje

2 bajty w pami

ę

ci komputera, co pozwala na zakres ich

warto

ś

ci od –32768 do 32767.

Problemy: Ile jest możliwych wartości liczb
całkowitych?
Dlaczego dwubajtowa reprezentacja pozwala na w

ł

aśnie

taki zakres wartości?

W praktycznych zastosowaniach cz

ę

sto korzysta si

ę

równie

ż

z innych typów ca

ł

kowitych

do jednobajtowych do czterobajtowych. Oto lista wszystkich typów ca

ł

kowitych:

shortint

– jednobajtowa liczba ca

ł

kowita z zakresu od –128 do 127,

longint

czterobajtowa liczba ca

ł

kowita z zakresu od –2147483648 do 2147483647,

byte

– jednobajtowa liczba ca

ł

kowita z zakresu od 0 do 255,

word

– dwubajtowa liczba ca

ł

kowita z zakresu od 0 do 65535.

background image

51

PS/TP

PROGRAMOWANIE STRUKTURALNE

Na liczbach wszystkich wymienionych wy

ż

ej typów okre

ś

lone s

ą

operacje dodawania ( + ), odejmowania ( - ), mno

ż

enia ( * ),

dzielenia całkowitego ( div ) i reszty z dzielenia ( mod ).

Rezultat takiego działania jest równie

ż

liczb

ą

całkowit

ą

.

Dodatkowo jest okre

ś

lone tak

ż

e zwykłe dzielenie ( / ),

którego rezultat jest zawsze liczb

ą

rzeczywist

ą

(zmiennoprzecinkow

ą

),

nawet je

ś

li cz

ęść

ułamkowa wyniku wynosi zero.

background image

52

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ Boolean

Jest to zbiór warto

ś

ci logicznych. Nazwa pochodzi od nazwiska George’a

Boole’a, angielskiego matematyka, który stworzy

ł

podstawy wspó

ł

czesnej

logiki matematycznej (algebra Boole’a).
Typ ten ma dwie warto

ś

ci: true oraz false. Warto

ś

ci takie mog

ą

by

ć

rezultatem

dzia

ł

ania jednego z operatorów porównania(=, >, <,<>, >=, <=).

Na obiektach
tego typu okre

ś

lone s

ą

takie operacje jak koniunkcja (and),

negacja (not) alternatywa zwyk

ł

a (or) oraz alternatywa wykluczaj

ą

ca (xor).

Problem:

Co jest więcej warte: prawda czy fałsz?

background image

53

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ Char
Jest to zbiór znaków drukarki lub terminalu tekstowego
(char to skrót od słowa character). Zbiór ten odpowiada zwykle jednemu ze
standardów ISO lub ameryka

ń

skiemu standardowi ASCII. W Polsce – jak wiadomo –

mamy odwieczny problem kodowania polskich znaków diakrytycznych, wi

ę

c graficzna

posta

ć

pewnych znaków b

ę

dzie zale

ż

ała od

ś

rodowiska, w jakim pracuje programista.

background image

54

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ Real
S

ą

to liczby rzeczywiste, zwane te

ż

zmiennoprzecinkowymi

(ang. floating point numbers). Liczby takie mog

ą

posiada

ć

cz

ęść

ułamkow

ą

,

mog

ą

te

ż

by

ć

zapisywane w postaci wykładniczej, np. 1 , 2E-03.

Zakres warto

ś

ci typu real to liczby od 2.9 x 10-39 do 1.7 x 1038

Jedna liczba tego typu zajmuje 6 bajtów i posiada od 11 do 12 cyfr znacz

ą

cych.

Inne typy zmiennoprzecinkowe to:

single

- czterobajtowa liczba rzeczywista z przedziału

od 1.5 x 10-45 do 3.4 x 1038, posiadaj

ą

ca od 7 do 8 cyfr

znacz

ą

cych,

double

- o

ś

miobajtowa liczba rzeczywista z przedziału

od 5.0 x 10-324 do 1.7 x 10308, posiadaj

ą

ca od 15 do 16 cyfr znacz

ą

cych,

extended

- dziesi

ę

ciobajtowa liczba rzeczywista z przedziału

od 3.4 x 10-4932 do 1.1 x 104932, posiadaj

ą

ca od 19 do 20 cyfr znacz

ą

cych.

background image

55

PS/TP

PROGRAMOWANIE STRUKTURALNE

Oczywi

ś

cie, wszystkie powy

ż

sze zakresy dotycz

ą

warto

ś

ci

bezwzgl

ę

dnej danych liczb.

Nale

ż

y podkre

ś

li

ć

,

ż

e wszystkie działania na liczbach

rzeczywistych s

ą

przybli

ż

one ( wyst

ę

puj

ą

ę

dy zaokr

ą

gle

ń

),

co mo

ż

e sprawia

ć

problemy przy wyodr

ę

bnianiu przypadków w

rodzaju 0 dla równania kwadratowego.

background image

56

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy wyliczeniowe

W pewnych przypadkach przydaje si

ę

typ wyliczeniowy ( ang. enumerated type).

Przy jego definicji podajemy
wszystkie mo

ż

liwe jego warto

ś

ci, np.

TYPE

sex = (male, female) ;

dayofweek = (Mon, Tue, Wed, Thu, Fri, Sat, Sun) ;

Warto

ś

ciami mog

ą

by

ć

identyfikatory (utworzone na ogólnych zasadach, jak

identyfikatory zmiennych). Oto przykłady deklaracji i u

ż

ycia zmiennych takich typów:

VAR

s: sex;
d: dayofweek;

...

s : = male;
d : = Mon;

Nie zmiennych tego typu nie mo

ż

na wykona

ć

operacji arytmetycznych,

ale jedynie operacje typowe dla typów uporz

ą

dkowanych.

background image

57

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy okrojone

Je

ś

li zmienna przyjmie warto

ś

ci tylko z pewnego przedziału, wtedy mo

ż

na

zdefiniowa

ć

jej typ jako typ okrojony (ang. subrange type). Oto przykłady:

TYPE

year = 1900 . . 2000;

letter = ‘a’ . . ‘z’ ;

workday = Mon . . Fri

Zmienne powy

ż

szych typów nie mog

ą

otrzymywa

ć

warto

ś

ci spoza

wyznaczonego zakresu, co pozwala na lepsz

ą

kontrol

ę

ę

dów wykonania

programów. Uwaga: typów okrojonych nie mo

ż

na tworzy

ć

w oparciu o zakres

liczb rzeczywistych, np. zakres 1 . 5 . . 2 . 5 jest niepoprawny.

background image

58

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy porz

ą

dkowe

Typy porz

ą

dkowe (z ang. ordinal types) - s

ą

to typy, w których mo

ż

na

wprowadzi

ć

relacj

ę

uporz

ą

dkowania, co jest równowa

ż

ne przypisaniu ka

ż

dej

warto

ś

ci pewnej nieujemnej liczby całkowitej, która oznacza liczb

ę

porz

ą

dkow

ą

danej warto

ś

ci w całym zbiorze warto

ś

ci danego typu. Mówi

ą

c prosto: wszystkie

liczby tego typu mo

ż

na ustawi

ć

w uporz

ą

dkowany ci

ą

g , na przykład:

typ dayofweek:

Mon, Tue, Wed, Thu, Fri, Sat, Sun

0 1 2 3 4 5 6

typ Boolean:

false, true

1

typ: letter:

‘a’ , ‘b’ , ‘c’ , . . . , ‘z’

0 1 2 25

background image

59

PS/TP

PROGRAMOWANIE STRUKTURALNE

Tabela podstawowych typów danych w Turbo Pascalu

TYP – identyfikator typu
ZAKRES – zbiór warto

ś

ci jakie mog

ą

przyjmowa

ć

zmienne danego typu

ROZMIAR W BAJTACH – ilo

ść

pami

ę

ci operacyjnej zajmowanej przez zmienn

ą

danego typu

1

False, True

Boolean

256

Dowolny łańcuch znaków o długości do 255

String

1 + n

Łańcuch znaków np. napisy: ‘Ala ma kota’

String[n]

1

Wszystkie znaki ASCII (np. ‘1’, ‘2’, ’@’, ‘a’,
’z’)

Char

6

2.9 x 10

–39

.. 1.7 x 10

38

Real

4

-2 147 483 648 .. 2 147 483 647

Longint

2

0 .. 65 535

Word

2

-32 768 ... 32 767

Integer

1

-128 .. 127

Shortint

1

0 .. 255

Byte

ROZMIAR

W

BAJTACH

ZAKRES

TYP

Uwaga: n – liczba znaków w

ł

a

ń

cuchu.

background image

60

PS/TP

PROGRAMOWANIE STRUKTURALNE

Kompilacja programu – powtórzenie

Załó

ż

my,

ż

e mamy ju

ż

gotowy algorytm programu w postaci

schematu blokowego. Aby móc wyprodukowa

ć

gotowy do działania

program komputerowy nale

ż

y go najpierw napisa

ć

w wersji

ź

ródłowej

i zapisa

ć

do pliku. W przypadku j

ę

zyka PASCAL pliki

ź

ródłowe

zawieraj

ą

ce tekst programu b

ę

d

ą

miały rozszerzenie PAS.

Po napisaniu i przetestowaniu programu nale

ż

y go przetłumaczy

ć

na program wynikowy binarny. Wynikowy program binarny b

ę

dzie

zapisany do pliku takiej samej nazwie głównej o rozszerzeniu EXE.
Czynno

ść

polegaj

ą

c

ą

na tłumaczeniu programu

ź

ródłowego

na program binarny (wykonywalny) nazywamy kompilacj

ą

.

Do kompilacji programów słu

żą

specjalne systemy nazywane

kompilatorami. W naszym przypadku kompilator do j

ę

zyka PASCAL

nazywa si

ę

Turbo-Pascal (wersja 6.0 lub 7.0).

background image

61

PS/TP

PROGRAMOWANIE STRUKTURALNE

TYPY DANYCH

Klasyfikacja typów w Turbo Pascalu

Trudne ale konieczne

background image

62

PS/TP

PROGRAMOWANIE STRUKTURALNE

W j

ę

zyku Pascal poj

ę

cie typu danych jest szczególnie wyrazi

ś

cie okre

ś

lone.

Wszelkie stałe, zmienne lub wyra

ż

enia

musz

ą

by

ć

okre

ś

lonego typu i programista zawsze powinien zdawa

ć

spraw

ę

z ogranicze

ń

reprezentacji danego typu i zwi

ą

zanych z tym problemów.

Mo

ż

liwe s

ą

zmiany typu (przej

ś

cie od jednego typu do drugiego),

ale mog

ą

one by

ć

zwi

ą

zane ze zmian

ą

warto

ś

ci danego wyra

ż

enia lub zmiennej.

Ka

ż

dy typ ma okre

ś

lony zestaw operacji, które mo

ż

na wykonywa

ć

na jego elementach.

background image

63

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy danych dzielimy przede wszystkim na
typy proste (skalarne) i zło

ż

one.

Przykładem typu prostego jest typ integer (liczby całkowite), za

ś

typu zło

ż

onego-tablice, zbiory, pliki i rekordy. Elementami typów prostych

s

ą

pojedyncze liczby, znaki lub identyfikatory, natomiast elementami typów

zło

ż

onych s

ą

struktury danych, na które składaj

ą

si

ę

elementy typów prostych

lub innych typów zło

ż

onych.

Programista mo

ż

e tworzy

ć

własne typy danych, prawie bez

ż

adnych ogranicze

ń

.

Mo

ż

na tak

ż

e tworzy

ć

dynamiczne struktury

danych, to jest takie struktury, których posta

ć

mo

ż

e zmienia

ć

si

ę

w trakcie

wykonania programu.

background image

64

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ jest to okre

ś

lenie:

zbioru warto

ś

ci, do którego mo

ż

e nale

ż

e

ć

stała, zmienna,

wyra

ż

enie albo mo

ż

e by

ć

generowany przez funkcj

ę

zbioru operacji, które mo

ż

na wykonywa

ć

na ww. obiektach

background image

65

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typami prostymi s

ą

:

typy porz

ą

dkowe, rzeczywiste, ła

ń

cuchowe i wskazuj

ą

ce

a typami strukturalnymi (zło

ż

onymi) s

ą

:

typy tablicowe, rekordowe, mnogo

ś

ciowe i plikowe.

background image

66

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy: wyliczeniowy, całkowity, logiczny
Typ porz

ą

dkowy charakteryzuje si

ę

tym,

ż

e jest zwi

ą

zany z przeliczalnym

zbiorem danych tj.
reprezentuje sko

ń

czony zbiór warto

ś

ci. Najwa

ż

niejsze typy porz

ą

dkowe to:

wyliczeniowy, całkowity, logiczny.

Typ wyliczeniowy to np. zbiór warto

ś

ci (wiosna, lato, jesien, zima)

Typ całkowity INTEGER to zbiór warto

ś

ci liczb od (-32 768 do +32 767)

Typ całkowity SHORTINT to zbiór warto

ś

ci liczb od (-128 do +127)

Typ całkowity LONGINT to zbiór warto

ś

ci liczb od (-2 147 483 648 do +2 147 483 647)

Typ całkowity BYTE to zbiór warto

ś

ci liczb od (0 do 255)

Typ całkowity WORD to zbiór warto

ś

ci liczb od (0 do 65 535)

Typ logiczny BOOLEAN to zbiór warto

ś

ci logicznych: FALSE, TRUE

background image

67

PS/TP

PROGRAMOWANIE STRUKTURALNE

Standardowe typy proste
W j

ę

zyku Pascal istniej

ą

4 podstawowe typy proste „wbudowane”

w standard j

ę

zyka:

Integer, Boolean, Char, Real

W komercyjnych implementacjach j

ę

zyka Pascal, jak np.

w Turbo Pascalu lub Borland Pascalu istnieje znaczenie wi

ę

cej typów

wbudowanych. Omówmy je przy okazji przedstawiania
poszczególnych typów prostych.

background image

68

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ integer
Ten typ reprezentuje liczby ca

ł

kowite. Warto

ść

tego typu zajmuje

2 bajty w pami

ę

ci komputera, co pozwala na zakres ich

warto

ś

ci od –32768 do 32767.

Problemy: Ile jest możliwych wartości liczb
całkowitych?
Dlaczego dwubajtowa reprezentacja pozwala na w

ł

aśnie

taki zakres wartości?

W praktycznych zastosowaniach cz

ę

sto korzysta si

ę

równie

ż

z innych typów ca

ł

kowitych

do jednobajtowych do czterobajtowych. Oto lista wszystkich typów ca

ł

kowitych:

shortint

– jednobajtowa liczba ca

ł

kowita z zakresu od –128 do 127,

longint

czterobajtowa liczba ca

ł

kowita z zakresu od –2147483648 do 2147483647,

byte

– jednobajtowa liczba ca

ł

kowita z zakresu od 0 do 255,

word

– dwubajtowa liczba ca

ł

kowita z zakresu od 0 do 65535.

background image

69

PS/TP

PROGRAMOWANIE STRUKTURALNE

Na liczbach wszystkich wymienionych wy

ż

ej typów okre

ś

lone s

ą

operacje dodawania ( + ), odejmowania ( - ), mno

ż

enia ( * ),

dzielenia całkowitego ( div ) i reszty z dzielenia ( mod ).

Rezultat takiego działania jest równie

ż

liczb

ą

całkowit

ą

.

Dodatkowo jest okre

ś

lone tak

ż

e zwykłe dzielenie ( / ),

którego rezultat jest zawsze liczb

ą

rzeczywist

ą

(zmiennoprzecinkow

ą

),

nawet je

ś

li cz

ęść

ułamkowa wyniku wynosi zero.

background image

70

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ Boolean

Jest to zbiór warto

ś

ci logicznych. Nazwa pochodzi od nazwiska George’a

Boole’a, angielskiego matematyka, który stworzy

ł

podstawy wspó

ł

czesnej

logiki matematycznej (algebra Boole’a).
Typ ten ma dwie warto

ś

ci: true oraz false. Warto

ś

ci takie mog

ą

by

ć

rezultatem

dzia

ł

ania jednego z operatorów porównania(=, >, <,<>, >=, <=).

Na obiektach
tego typu okre

ś

lone s

ą

takie operacje jak koniunkcja (and),

negacja (not) alternatywa zwyk

ł

a (or) oraz alternatywa wykluczaj

ą

ca (xor).

Problem:

Co jest więcej warte: prawda czy fałsz?

background image

71

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ Char
Jest to zbiór znaków drukarki lub terminalu tekstowego
(char to skrót od słowa character). Zbiór ten odpowiada zwykle jednemu ze
standardów ISO lub ameryka

ń

skiemu standardowi ASCII. W Polsce – jak wiadomo –

mamy odwieczny problem kodowania polskich znaków diakrytycznych, wi

ę

c graficzna

posta

ć

pewnych znaków b

ę

dzie zale

ż

ała od

ś

rodowiska, w jakim pracuje programista.

background image

72

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typ Real
S

ą

to liczby rzeczywiste, zwane te

ż

zmiennoprzecinkowymi

(ang. floating point numbers). Liczby takie mog

ą

posiada

ć

cz

ęść

ułamkow

ą

,

mog

ą

te

ż

by

ć

zapisywane w postaci wykładniczej, np. 1 , 2E-03.

Zakres warto

ś

ci typu real to liczby od 2.9 x 10-39 do 1.7 x 1038

Jedna liczba tego typu zajmuje 6 bajtów i posiada od 11 do 12 cyfr znacz

ą

cych.

Inne typy zmiennoprzecinkowe to:

single

- czterobajtowa liczba rzeczywista z przedziału

od 1.5 x 10-45 do 3.4 x 1038, posiadaj

ą

ca od 7 do 8 cyfr

znacz

ą

cych,

double

- o

ś

miobajtowa liczba rzeczywista z przedziału

od 5.0 x 10-324 do 1.7 x 10308, posiadaj

ą

ca od 15 do 16 cyfr znacz

ą

cych,

extended

- dziesi

ę

ciobajtowa liczba rzeczywista z przedziału

od 3.4 x 10-4932 do 1.1 x 104932, posiadaj

ą

ca od 19 do 20 cyfr znacz

ą

cych.

background image

73

PS/TP

PROGRAMOWANIE STRUKTURALNE

Oczywi

ś

cie, wszystkie powy

ż

sze zakresy dotycz

ą

warto

ś

ci

bezwzgl

ę

dnej danych liczb.

Nale

ż

y podkre

ś

li

ć

,

ż

e wszystkie działania na liczbach

rzeczywistych s

ą

przybli

ż

one ( wyst

ę

puj

ą

ę

dy zaokr

ą

gle

ń

),

co mo

ż

e sprawia

ć

problemy przy wyodr

ę

bnianiu przypadków w

rodzaju 0 dla równania kwadratowego.

background image

74

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy wyliczeniowe

W pewnych przypadkach przydaje si

ę

typ wyliczeniowy ( ang. enumerated type).

Przy jego definicji podajemy
wszystkie mo

ż

liwe jego warto

ś

ci, np.

TYPE

sex = (male, female) ;

dayofweek = (Mon, Tue, Wed, Thu, Fri, Sat, Sun) ;

Warto

ś

ciami mog

ą

by

ć

identyfikatory (utworzone na ogólnych zasadach, jak

identyfikatory zmiennych). Oto przykłady deklaracji i u

ż

ycia zmiennych takich typów:

VAR

s: sex;
d: dayofweek;

...

s : = male;
d : = Mon;

Nie zmiennych tego typu nie mo

ż

na wykona

ć

operacji arytmetycznych,

ale jedynie operacje typowe dla typów uporz

ą

dkowanych.

background image

75

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy okrojone

Je

ś

li zmienna przyjmie warto

ś

ci tylko z pewnego przedziału, wtedy mo

ż

na

zdefiniowa

ć

jej typ jako typ okrojony (ang. subrange type). Oto przykłady:

TYPE

year = 1900 . . 2000;

letter = ‘a’ . . ‘z’ ;

workday = Mon . . Fri

Zmienne powy

ż

szych typów nie mog

ą

otrzymywa

ć

warto

ś

ci spoza

wyznaczonego zakresu, co pozwala na lepsz

ą

kontrol

ę

ę

dów wykonania

programów. Uwaga: typów okrojonych nie mo

ż

na tworzy

ć

w oparciu o zakres

liczb rzeczywistych, np. zakres 1 . 5 . . 2 . 5 jest niepoprawny.

background image

76

PS/TP

PROGRAMOWANIE STRUKTURALNE

Typy porz

ą

dkowe

Typy porz

ą

dkowe (z ang. ordinal types) - s

ą

to typy, w których mo

ż

na

wprowadzi

ć

relacj

ę

uporz

ą

dkowania, co jest równowa

ż

ne przypisaniu ka

ż

dej

warto

ś

ci pewnej nieujemnej liczby całkowitej, która oznacza liczb

ę

porz

ą

dkow

ą

danej warto

ś

ci w całym zbiorze warto

ś

ci danego typu. Mówi

ą

c prosto: wszystkie

liczby tego typu mo

ż

na ustawi

ć

w uporz

ą

dkowany ci

ą

g , na przykład:

typ dayofweek:

Mon, Tue, Wed, Thu, Fri, Sat, Sun

0 1 2 3 4 5 6

typ Boolean:

false, true

1

typ: letter:

‘a’ , ‘b’ , ‘c’ , . . . , ‘z’

0 1 2 25

background image

77

PS/TP

PROGRAMOWANIE STRUKTURALNE

Tabela podstawowych typów danych w Turbo Pascalu

TYP – identyfikator typu
ZAKRES – zbiór warto

ś

ci jakie mog

ą

przyjmowa

ć

zmienne danego typu

ROZMIAR W BAJTACH – ilo

ść

pami

ę

ci operacyjnej zajmowanej przez zmienn

ą

danego typu

1

False, True

Boolean

256

Dowolny łańcuch znaków o długości do 255

String

1 + n

Łańcuch znaków np. napisy: ‘Ala ma kota’

String[n]

1

Wszystkie znaki ASCII (np. ‘1’, ‘2’, ’@’, ‘a’,
’z’)

Char

6

2.9 x 10

–39

.. 1.7 x 10

38

Real

4

-2 147 483 648 .. 2 147 483 647

Longint

2

0 .. 65 535

Word

2

-32 768 ... 32 767

Integer

1

-128 .. 127

Shortint

1

0 .. 255

Byte

ROZMIAR

W

BAJTACH

ZAKRES

TYP

Uwaga: n – liczba znaków w

ł

a

ń

cuchu.

background image

78

PS/TP

PROGRAMOWANIE STRUKTURALNE

Kompilacja programu – powtórzenie

Załó

ż

my,

ż

e mamy ju

ż

gotowy algorytm programu w postaci

schematu blokowego. Aby móc wyprodukowa

ć

gotowy do działania

program komputerowy nale

ż

y go najpierw napisa

ć

w wersji

ź

ródłowej

i zapisa

ć

do pliku. W przypadku j

ę

zyka PASCAL pliki

ź

ródłowe

zawieraj

ą

ce tekst programu b

ę

d

ą

miały rozszerzenie PAS.

Po napisaniu i przetestowaniu programu nale

ż

y go przetłumaczy

ć

na program wynikowy binarny. Wynikowy program binarny b

ę

dzie

zapisany do pliku takiej samej nazwie głównej o rozszerzeniu EXE.
Czynno

ść

polegaj

ą

c

ą

na tłumaczeniu programu

ź

ródłowego

na program binarny (wykonywalny) nazywamy kompilacj

ą

.

Do kompilacji programów słu

żą

specjalne systemy nazywane

kompilatorami. W naszym przypadku kompilator do j

ę

zyka PASCAL

nazywa si

ę

Turbo-Pascal (wersja 6.0 lub 7.0).

background image

79

PS/TP

PROGRAMOWANIE STRUKTURALNE

Struktura programu w j

ę

zyku Turbo Pascalu

background image

80

PS/TP

PROGRAMOWANIE STRUKTURALNE

UWAGA: nazwy słów kluczowych (zarezerwowanych) b

ę

d

ą

pisane

DU

ś

YMI literami, w celu zwi

ę

kszenia przejrzysto

ś

ci programów.

Ka

ż

da instrukcja lub deklaracja musi ko

ń

czy

ć

si

ę ś

rednikiem.

Ka

ż

dy program w TURBO Pascalu składa si

ę

z nast

ę

puj

ą

cych cz

ęś

ci:

Nagłówek programu
Cz

ęść

deklaracyjna

Cz

ęść

główna

Kropka

background image

81

PS/TP

PROGRAMOWANIE STRUKTURALNE

Nagłówek programu

Nagłówek programu składa si

ę

ze słowa kluczowego PROGRAM, spacji,

identyfikatora oraz

ś

rednika.

Przykłady:
PROGRAM Obsluga_Klawiatury;
PROGRAM Rownanie_Kwadratowe;
PROGRAM ProgramNr120;

background image

82

PS/TP

PROGRAMOWANIE STRUKTURALNE

Cz

ęść

deklaracyjna

Cz

ęść

deklaracyjna programu składa si

ę

z wielu ró

ż

nych słów kluczowych, a w

szczególnym przypadku mo

ż

e nie wyst

ę

powa

ć

.

W przypadku deklarowania zmiennych stosujemy
słowo zarezerwowane VAR po którym wymieniamy
identyfikatory zmiennych oddzielone przecinkami.
Nast

ę

pnie umieszczamy znak dwukropka po

którym wpisujemy nazw

ę

typu.

Przykłady:
VAR
z, y, z , p, q : REAL;
bajt1, bajt1 : BYTE;
i, j, k : INTEGER;
line, kolumn, row : LONGINT;
nazwa, imie : STRING[30];

background image

83

PS/TP

PROGRAMOWANIE STRUKTURALNE

W przypadku deklarowania stałej stosujemy słowo zarezerwowane
CONST po którym wymieniamy identyfikator stałej.

Nast

ę

pnie umieszczamy znak „=” po którym wpisujemy warto

ść

stałej.

Przykłady:
CONST
Z_stala = 1234.56;
Count = -1000;
miasto = ‘Koszalin’;

background image

84

PS/TP

PROGRAMOWANIE STRUKTURALNE

Cz

ęść

główna

Cz

ęść

główna programu składa si

ę

ze słowa zarezerwowanego BEGIN i END.

Pomi

ę

dzy tymi słowami umieszczamy instrukcje Pascala, czyli rozkazy

wykonywane przez komputer.

Program rozpoczyna działanie od słowa BEGIN, a ko

ń

czy

na słowie END (z kropk

ą

). W szczególnym przypadku cz

ęść

główna programu mo

ż

e nie mie

ć

instrukcji – program który nie b

ę

dzie nic robi

PROGRAM nic;
BEGIN
END.

background image

85

PS/TP

PROGRAMOWANIE STRUKTURALNE

Przykłady:

BEGIN

READLN(a, b) ;
x := ( a*a*3 + b * b ) / 3.4 ;
y := SQRT ( x ) ;
WRITELN( x ,y ) ;

END.

Koniec programu oznaczamy słowem END. (nie zapomnij o kropce).

background image

86

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcje operacji wej

ś

cia / wyj

ś

cia

Instrukcje czytania danych

Instrukcje czytania danych READ oraz READLN słu

żą

do wczytywania

danych wpisywanych z klawiatury. Instrukcja READ wczytuje dane z klawiatury
i podstawia je do zmiennych wymienionych w nawiasach okr

ą

głych. Instrukcja

READLN wykonuje t

ą

sam

ą

czynno

ść

co READ oraz przesuwa kursor na ekranie

do pocz

ą

tku nowego wiersza.

Posta

ć

instrukcji:

READ(<lista zmiennych>);
READLN(<lista zmiennych
>);

Przykład:
READ(z, y, z);

background image

87

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcje operacji wej

ś

cia / wyj

ś

cia

Instrukcje wypisywania wyników

Instrukcje wypisywania wyników WRITE oraz WRITELN
słu

żą

do wy

ś

wietlania wyników na ekranie monitora.

Instrukcja WRITE wy

ś

wietla zmienne lub teksty na ekranie – nazwy zmiennych

nale

ż

y poda

ć

w nawiasach okr

ą

głych. Aby instrukcja wy

ś

wietliła tekst, musi

on by

ć

podany w pojedynczych apostrofach. Instrukcja WRITEN wykonuje

t

ą

sam

ą

czynno

ść

co WRITE oraz przesuwa kursor na ekranie do

pocz

ą

tku nowego wiersza.

Posta

ć

instrukcji:

WRITE(<lista zmiennych>);
WRITELN(<lista zmiennych
>);

Przykład:
WRITELN(‘To jest tekst.’ , z , y , z);

background image

88

PS/TP

PROGRAMOWANIE STRUKTURALNE

Deklaracje zmiennych i stałych

Deklaracje zmiennych

VAR

x, y, w, odpowiedz, kod_znaku : BYTE;
wspolrzedna, K, numer : INTEGER;
nr_kroku, dlugosc : LONGINT;
waga, wartosc, indukcja, pojemnosc, opornosc : REAL;
rezystancja, reaktancja, impedancja, napiecie : EXTENDED;
R, X, Z, U, I : SHORTINT;
czy_koniec, ok, juz_taka_jest, powtorka : BOOLEAN;
R1, R2, R3 : SINGLE;
Z1, Z2 ,Z3 : DOUBLE;
S : SEX;
D : DAYOFWEEK;

background image

89

PS/TP

PROGRAMOWANIE STRUKTURALNE

VAR

key : char;
quit : boolean;
color, x , y : byte;

screen : array [MIN_X..MAX_X, MIN_Y..MAX_Y] of char;

score : byte;

time0, time : word;

f : file of word;

min_time : word;

background image

90

PS/TP

PROGRAMOWANIE STRUKTURALNE

CONST

POINT_CHAR = #219; { znak zbijany }
MAX_SCORE = 15; { liczba znakow zbijanych }
VISUAL_CHAR = '*'; { znak zbijajacy }
BACKGROUND_CHAR = '.'; { znak tla }
{ kody klawiszy }
ESC_KEY = #27;
ZERO_KEY = #0;
HOME_KEY = #71;
END_KEY = #79;
LEFT_KEY = #75;
RIGHT_KEY = #77;

Deklaracje stałych

background image

91

PS/TP

PROGRAMOWANIE STRUKTURALNE

CONST

UP_KEY

= #72;

DOWN_KEY = #80;

START_COLOR = GREEN;
LEFT_COLOR = WHITE;
RIGHT_COLOR = YELLOW;
UP_COLOR

= RED;

DOWN_COLOR = BLUE;

CENTER_X

= 40;

CENTER_Y

= 12;

MIN_X

= 1;

MAX_X

= 80;

MIN_Y

= 1;

MAX_Y

= 24;

CONFIG_FILE = 'gra1.cfg';

background image

92

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja przypisania

Instrukcja przypisania ma nast

ę

puj

ą

c

ą

posta

ć

<Nazwa zmiennej> := <wyra

ż

enie>;

Przykład

Wynik := a * x + b – c / 2;

background image

93

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja przypisania

Przykłady:

col := random(MAX_X)+1;
time0 := h*3600+m*60+s;
Delta := b*b-4*a*c;
X1 := (-b-delta) / (2*a);
X2 := (-b+delta) / (2*a);

Wyliczana jest warto

ść

po prawej stronie

znaku :=

i podstawiana do zmiennej po lewej

stronie znaku :=

background image

94

PS/TP

PROGRAMOWANIE STRUKTURALNE

Wyra

ż

enia i operatory

To jest wyra

ż

enie:

a * x + b – c / 2;

To s

ą

operatory:

* + - /

background image

95

PS/TP

PROGRAMOWANIE STRUKTURALNE

Wyra

ż

enie

Wyra

ż

enie pascalowe jest konstrukcj

ą

j

ę

zykow

ą

, która słu

ż

y

do wyznaczania warto

ś

ci okre

ś

lonego typu

background image

96

PS/TP

PROGRAMOWANIE STRUKTURALNE

Wyra

ż

enie arytmetyczne

składa si

ę

z

argumentów

typu Integer lub Real,

poł

ą

czonych ze sob

ą

za pomoc

ą

operatorów

arytmetycznych

+ - / * mod div

n.p. ( 38 + 125 ) / 3.0

background image

97

PS/TP

PROGRAMOWANIE STRUKTURALNE

Operatory arytmetyczne

To

symbole

pascalowe, które wykonuj

ą

działania

na argumentach

typu Integer lub Real, w kolejno

ś

ci okre

ś

lonej

przez priorytet tych operatorów

n.p. + - / * mod div

background image

98

PS/TP

PROGRAMOWANIE STRUKTURALNE

Priorytety

* DIV / MOD

Wysoki

+ -

Niski

Operatory

Poziom priorytetu

Operacje arytmetyczne wykonywane s

ą

w kolejno

ś

ci

od lewej do prawej

strony zapisu wyra

ż

enia

W pierwszej kolejno

ś

ci s

ą

wykonywane operacje

w nawiasach

, oraz

te które maj

ą

wy

ż

szy priorytet,

np.

38 + 39 div 6 * 6 – 66 mod 8

______

38 + 6 * 6 – 66 mod 8

________

38 + 36 – 66 mod 8

_______

38 + 36 –

2

____________

74 –

2 = 72

background image

99

PS/TP

PROGRAMOWANIE STRUKTURALNE

inne przykłady:

(38 + 39) div (6 * 6) – 66 mod 8
_______ _____

77 div 36 – 66 mod 8

________________

5 – 66 mod 8

_________

5 –

2 = 3

(a + b) * (a + b)
_____ _____

a+b * a+b

_____________

(a+b)

2

_____________

a

2

+2ab+b

2

Tutaj kto

ś

zapomniał o nawiasach:

a + b * a + b

____

a + b*a + b
___________

a+ab+b

W rezultacie mamy zupełnie inne wyra

ż

enie

Porównaj!!!

background image

100

PS/TP

PROGRAMOWANIE STRUKTURALNE

Wyra

ż

enie zawieraj

ą

ce funkcj

ę

standardow

ą

Trunc( Sqr(2.5) + 8.3 ) div 4

_______

Trunc( 6.25 + 8.3 ) div 4

___________

Trunc( 14.55 ) div 4
_________________

14 div 4

_________________________

3

background image

101

PS/TP

PROGRAMOWANIE STRUKTURALNE

Wyra

ż

enie logiczne

Wyra

ż

enie logiczne

to wyra

ż

enie, którego warto

ś

ciowanie (wyliczenie) daje wynik

typu Boolean

.

Wyra

ż

enie to składa si

ę

z

argumentów

typu Integer lub Real lub Boolean,

poł

ą

czonych ze sob

ą

za pomoc

ą

operatorów

logicznych, relacji i arytmetycznych

+ - / * mod div = < > <> <= >= and or not xor

n.p. ( (38+125)>0 ) and ( ((12 – 13 )/ 3.0)<0.0 )

background image

102

PS/TP

PROGRAMOWANIE STRUKTURALNE

Priorytety

Wyra

ż

enie w nawiasach

0 (najwy

ż

szy)

not

1

* / div mod and

2

< <= > >= = <>

4 (najni

ż

szy)

+ -

or

3

Operatory

Poziom priorytetu

W pierwszej kolejno

ś

ci s

ą

wykonywane operacje

w nawiasach

, oraz

te które maj

ą

wy

ż

szy priorytet,

np.

(110 > 78) and (3.1 < -12.5)
________ __________

TRUE and

FALSE

__________________

FALSE

background image

103

PS/TP

PROGRAMOWANIE STRUKTURALNE

Operator OR

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

TRUE

TRUE

FALSE

FALSE

FALSE

FALSE

Warto

ść

wyra

ż

enia

argument 1 OR argument 2

Warto

ść

argumentu 2

Warto

ść

argumentu 1

background image

104

PS/TP

PROGRAMOWANIE STRUKTURALNE

Operator AND

TRUE

TRUE

TRUE

FALSE

FALSE

TRUE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

Warto

ść

wyra

ż

enia

argument 1 AND argument 2

Warto

ść

argumentu 2

Warto

ść

argumentu 1

background image

105

PS/TP

PROGRAMOWANIE STRUKTURALNE

Operator EXOR

FALSE

TRUE

TRUE

TRUE

FALSE

TRUE

TRUE

TRUE

FALSE

FALSE

FALSE

FALSE

Warto

ść

wyra

ż

enia

argument 1 EXOR argument 2

Warto

ść

argumentu 2

Warto

ść

argumentu 1

background image

106

PS/TP

PROGRAMOWANIE STRUKTURALNE

Operator NOT

FALSE

TRUE

TRUE

FALSE

Warto

ść

wyra

ż

enia

NOT argument 1

Warto

ść

argumentu 1

background image

107

PS/TP

PROGRAMOWANIE STRUKTURALNE

Standardowe funkcje i procedury

background image

108

PS/TP

PROGRAMOWANIE STRUKTURALNE

Standardowe funkcje

background image

109

PS/TP

PROGRAMOWANIE STRUKTURALNE

Kod znaku x np.

kod := Ord(x);

Ord(x)

TRUE dla liczby x nieparzystej,
FALSE dla liczby x parzystej, np.
If odd(x) then Writeln(‘nieparzysta‘)

else Writeln(‘parzysta‘);

Odd(x)

TRUE jeśli napotkano na koniec pliku f.
W przeciwnym razie FALSE, np.
Repeat

Read(f,znak);
Writeln(znak);

Until Eof(f);

Eof(f)

Znak o kodzie x np.

znak := Chr(x);

Chr(x)

Wartość bezwzględna x np.

wynik := Abs(x);

Abs(x)

Znaczenie i przykład

Funkcja

background image

110

PS/TP

PROGRAMOWANIE STRUKTURALNE

Kwadrat liczby x np.
wynik := SQR(2);

lub

wynik := 2*2;

SQR(x)

Pierwiastek kwadratowy liczby x np.
wynik := SQRT(2);

SQRT(x)

Wartość liczby REAL x obcięta do liczby INTEGER np.

x := 1.999;
n := Trunc(x);

{n= 1}

y := – 1.111;
n := Trunc(y);

{n= – 1}

Trunc(x)

Wartość liczby REAL x zaokrąglona do najbliższej
liczby INTEGER np.

x := 1.4;
n := Round(x);

{n= 1}

y := 1.5;
n := Round(y);

{n= 2}

Round(x)

Znaczenie i przykład

Funkcja

background image

111

PS/TP

PROGRAMOWANIE STRUKTURALNE

Znaczenie i przykład

Funkcja

Czeka na naciśnięcie klawisza i czyta go. Zwraca kod
ASCII tego klawisza.

ReadKey;

Zwraca współrzędną x kursora.

WhereX;

Zwraca współrzędną y kursora.

WhereY;

background image

112

PS/TP

PROGRAMOWANIE STRUKTURALNE

Standardowe procedury

background image

113

PS/TP

PROGRAMOWANIE STRUKTURALNE

Wypisuje wartość zmiennej x na ekranie i ustawia kursor
w nowej linii np.

Writeln(x);

WRITELN(x)

Wypisuje wartość zmiennej x na ekranie np.

Write(x);

WRITE(x)

Wypisuje tekst na ekranie i ustawia kursor w nowej linii
np.

Writeln(‘a kuku‘);

WRITELN(‘tekst’)

Wypisuje tekst na ekranie np.

Write(‘a kuku‘);

WRITE(‘tekst’)

Czyta liczbę z klawiatury do zmiennej x np.

Readln(x);

READLN(x)

Kasuje ekran np.

ClrScr;

CLRSCR

Znaczenie i przykład

Procedura

background image

114

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ustawia kolor tekstu (kod koloru od 0 – 7)
np.
TextBackground(LIGHTGRAY);
lub

TextBackground (7);

TEXTBACKGROUND

Ustawia kolor tekstu (kod koloru od 0 – 15)
np.
TextColor(BLUE);
lub
TextColor(1);
lub
TextColor(BLUE+BLINK);
(NIEBIESKI MRUGAJĄCY)

TEXTCOLOR

Znaczenie i przykład

Procedura

Ustawia kursor na pozycji x, y.

GoToXY( x , y )

background image

115

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcje warunkowe

background image

116

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja warunkowa IF ma nast

ę

puj

ą

c

ą

posta

ć

IF <warunek logiczny>
THEN <instrukcja1>
ELSE <instrukcja2>

background image

117

PS/TP

PROGRAMOWANIE STRUKTURALNE

Działanie instrukcji IF przedstawia nast

ę

puj

ą

cy algorytm:

warunek

logiczny

Instrukcja1

Instrukcja2

TAK

NIE

background image

118

PS/TP

PROGRAMOWANIE STRUKTURALNE

Przykład:

IF (delta >= 0 )
THEN x1 := -b / (2 * c)
ELSE WRITELN(‘Brak pierwiastkow’);

background image

119

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja procedury

background image

120

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja procedury ma nast

ę

puj

ą

c

ą

posta

ć

<Nazwa procedury> [ (<lista parametrów>) ] ;

Przykład:
Display_Points;

Instrukcja procedury

Przykład:
Obl_Sume ( a, b, sum ) ;

background image

121

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcje -

ć

wiczenia

background image

122

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ć

wiczenie nr 1

Napisz program wy

ś

wietlaj

ą

cy wizytówk

ę

.

Dane wej

ś

ciowe: brak

Dane wyj

ś

ciowe: poni

ż

sza wizytówka

********************************
* Jan Kowalski *
* ul. Piwna 31 m. 5 *
* 80-110 GDANSK *
********************************
PROGRAM Cwicz01;
BEGIN

WRITELN('********************************');
WRITELN('* Jan Kowalski *');
WRITELN('* ul. Piwna 31 m. 5 *');
WRITELN('* 80-110 GDANSK *');
WRITELN('********************************');

END.

background image

123

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ć

wiczenie nr 2

Napisz program obliczaj

ą

cy iloczyn dwóch liczb.

Dane wej

ś

ciowe: Liczby a, b typu REAL

Dane wyj

ś

ciowe: Iloczyn y typu REAL

Iloczyn powinien by

ć

wy

ś

wietlany w formacie 22 cyfr,

w tym 2 po kropce dziesi

ę

tnej

PROGRAM Cwicz02;
VAR

a, b, y : REAL;

BEGIN {of main}

WRITE('a=');
READ(a);
WRITE('b=');
READ(b);
y := a * b;
WRITELN('y=',y:22:2);
READLN;
READLN;

END. {of main}

background image

124

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ć

wiczenie nr 3

Napisz program obliczaj

ą

cy iloraz dwóch liczb.

Dane wej

ś

ciowe: Liczby a, b typu REAL

Dane wyj

ś

ciowe: Iloraz y typu REAL

Iloczyn powinien by

ć

wy

ś

wietlany w formacie 10 cyfr, w tym 5 po kropce dziesi

ę

tnej

PROGRAM Cwicz03;
VAR

a, b, y : REAL;

BEGIN {of main}

WRITE('a=');
READ(a);
WRITE('b=');
READ(b);
y := a / b;
WRITELN('y=',y:10:5);
READLN;
READLN;

END. {of main}

background image

125

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ć

wiczenie nr 4

Napisz program sprawdzaj

ą

cy ucznia w zakresie znajomo

ś

ci

podstawowej tabliczki mno

ż

enia.

Dane wej

ś

ciowe: liczby x i y z zakresu od 0 do 255.

Dane wyj

ś

ciowe: odpowiedni komunikat oraz poprawny wynik w := x * y

background image

126

PS/TP

PROGRAMOWANIE STRUKTURALNE

PROGRAM Cwicz04;
USES CRT;
VAR

x, y, w, odp : BYTE;

BEGIN

CLRSCR;
WRITELN('Program sprawdzajacy ucznia w zakresie znajomosci');
WRITELN('podstawowej tabliczki mnozenia.');
WRITELN;
WRITE('Podaj pierwsza liczbe: ');
READLN(x);
WRITE('Podaj druga liczbe: ');
READLN(y);
WRITE('Ile jest: ',x,' x ',y,' = ');
READLN(odp);
w := x * y;
WRITELN;
IF odp = w THEN WRITELN('Brawo! Odpowiedz jest poprawna.')
ELSE WRITELN('Kiepsko z Toba! Odpowiedz poprawna brzmi: ',x,' x ',y,' = ',w);
READLN;

END.

background image

127

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ć

wiczenie nr 5

Napisz program wy

ś

wietlaj

ą

cy choink

ę

.

Dane wej

ś

ciowe: wysoko

ść

choinki (nie mo

ż

e by

ć

wy

ż

sza ni

ż

24 wiersze)

Dane wyj

ś

ciowe: choinka

*

**

***

****

*****

******

background image

128

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcje iteracyjne

background image

129

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja powtarzania (p

ę

tli)

Instrukcja WHILE

Instrukcja powtarzania WHILE ma nast

ę

puj

ą

c

ą

posta

ć

WHILE <warunek logiczny>

BEGIN

<instrukcja1>

...

<instrukcjaN>

END;

background image

130

PS/TP

PROGRAMOWANIE STRUKTURALNE

Działanie instrukcji WHILE przedstawia nast

ę

puj

ą

cy algorytm:

warunek

logiczny

Instrukcja1

InstrukcjaN

TAK

NIE

background image

131

PS/TP

PROGRAMOWANIE STRUKTURALNE

Przykład:

WHILE (b > 0 AND c <> 0)

BEGIN

x1 := -b / (2 * c);
WRITE(‘x1=’,x1);

END;

background image

132

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja REPEAT

Instrukcja powtarzania REPEAT ma nast

ę

puj

ą

c

ą

posta

ć

REPEAT <warunek logiczny>

<instrukcja1> ...
<instrukcjaN
>

UNTIL <warunek logiczny>

background image

133

PS/TP

PROGRAMOWANIE STRUKTURALNE

Działanie instrukcji REPEAT przedstawia nast

ę

puj

ą

cy algorytm:

warunek

logiczny

Instrukcja1

InstrukcjaN

NIE

TAK

background image

134

PS/TP

PROGRAMOWANIE STRUKTURALNE

Przykład:

REPEAT

x1 := -b / (2 * c);
WRITE(‘x1=’,x1);

UNTIL (b <= 0 OR c == 0);

background image

135

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja FOR

FOR <licznik> := <wart. pocz.> TO < wart. ko

ń

c.> DO

BEGIN

<instrukcja1> ...
<instrukcjaN
>

END;

<licznik>

- zmienna, która jest licznikiem p

ę

tli

<wart. pocz.>

- warto

ść

pocz

ą

tkowa licznika

< wart. ko

ń

c.>

- warto

ść

ko

ń

cowa licznika

background image

136

PS/TP

PROGRAMOWANIE STRUKTURALNE

Działanie instrukcji FOR przedstawia nast

ę

puj

ą

cy algorytm:

licznik > wart. końc.

Instrukcja1

InstrukcjaN

NIE

TAK

licznik := wart. pocz.

licznik := licznik +1

background image

137

PS/TP

PROGRAMOWANIE STRUKTURALNE

Przykład:

FOR k := 1 TO 20 DO

BEGIN
x := Alfa[k] + Beta[k+1];
suma := suma + x;
END;

background image

138

PS/TP

PROGRAMOWANIE STRUKTURALNE

Lista wa

ż

niejszych bł

ę

dów kompilacji

background image

139

PS/TP

PROGRAMOWANIE STRUKTURALNE

Komunikat

Numer

błędu

Type identifier expected (oczekiwany identyfikator typu)

12

Line too long (linia jest za długa)

11

Unexpected end of file (nieoczekiwany koniec pliku)

10

String constant exceeds line (stała tekstowa jest za długa)

8

Error in integer constant (błąd w stałej typu INTEGER)

7

Error in real constant (błąd w stałej typu REAL)

6

Syntax error (błąd składniowy)

5

Duplicate identifier (identyfikator został powtórzony)

4

Unknown identifier (nieznany identyfikator)

3

Identifier expected (wymagany identyfikator)

2

Out of memory (za mało wolnej pamięci operacyjnej)

1

background image

140

PS/TP

PROGRAMOWANIE STRUKTURALNE

Komunikat

Numer

błędu

Integer constant expected (oczekiwana stała typu INTEGER)

30

Ordinal type expected ( oczekiwany typ porządkowy)

29

Lower bound greater than upper bound (dolna wartość większa od górnej)

28

Invalid subrange base type (niewłaściwy typ bazowy podzakresu)

27

Type mismatch (niezgodność typów)

26

Invalid string length (niewłaściwa długość łańcucha znakowego)

25

Set base type out of range (bazowy typ zbioru poza zakresem)

23

Structure too large (struktura za długa)

22

Error in type (błąd typu)

21

Variable identifier expected (oczekiwany identyfikator zmiennej)

20

Disk full (brak wolnej przestrzeni na dysku)

16

File not found (brak pliku)

15

Invalid file name (niepoprawna nazwa pliku)

14

background image

141

PS/TP

PROGRAMOWANIE STRUKTURALNE

Komunikat

Numer

błędu

Error in statement. (błąd w instrukcji)

113

";" expected. (oczekiwany znak „;”)

85

Illegal assignment (nielegalne przypisanie)

43

Error in expression (błąd w wyrażeniu)

42

Operand types do not match (niezgodne typy operandów)

41

Boolean expression expected (oczekiwane wyrażenie typu BOOLEAN)

40

Ordinal expression expected (oczekiwane wyrażenie typu porządkowego)

39

Integer expression expected (oczekiwane wyrażenie typu INTEGER)

38

END expected(oczekiwane słowo kluczowe END)

37

BEGIN expected. (oczekiwane słowo kluczowe BEGIN)

36

Label identifier expected (oczekiwany identyfikator etykiety)

35

Invalid function result type (niewłaściwy typ rezultatu funkcji)

34

Integer or real constant expected (ma być stała typu INTEGER lub REAL)

32

Constant expected (oczekiwana stała)

31

background image

142

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja zło

ż

ona

background image

143

PS/TP

PROGRAMOWANIE STRUKTURALNE

Instrukcja zło

ż

ona ma posta

ć

:

BEGIN

<instrukcja1>
<instrukcja2>
<instrukcja3>

………….

<instrukcja n>

END;

Jest to tzw.

blok instrukcji

wykonywanych od słowa

BEGIN do słowa END

background image

144

PS/TP

PROGRAMOWANIE STRUKTURALNE

BEGIN

repeat

col := random(MAX_X)+1;

until (col<>CENTER_X);
repeat

row := random(MAX_Y)+1;

until (row<>CENTER_Y);
screen[col,row] := POINT_CHAR;

END;

Przykład:

background image

145

PS/TP

PROGRAMOWANIE STRUKTURALNE

Przykład:

BEGIN

x := WhereX;
y := WhereY;
for col := MIN_X to MAX_X do

for row := MIN_Y to MAX_Y do

begin
GoToXY(col,row);
write(screen[col,row]);
end;

GoToXY(x,y);

END;


Wyszukiwarka

Podobne podstrony:
pas czesc 1b
pas czesc 4a
pas czesc 1c
pas czesc 0
pas czesc 4b id 349723 Nieznany
pas czesc 3
pas czesc 1a
88 Leki przeciwreumatyczne część 2
guzy część szczegółowa rzadsze
Stomatologia czesc wykl 12

więcej podobnych podstron