prezentacja Pascal

background image

Programowanie

Programowanie

strukturalne

strukturalne

w Turbo Pascalu

w Turbo Pascalu

Materiał opracowała:

Meredyk Kamil

background image

2

Programowanie

Programowanie

strukturalne

strukturalne

w Turbo Pascalu

w Turbo Pascalu

Zajęcia numer 1

Zajęcia numer 1

- wprowadzenie do Pascala

- wprowadzenie do Pascala

Zajęcia numer 2

Zajęcia numer 2

- stałe, zmienne, typy danych

- stałe, zmienne, typy danych

Zajęcia numer 3

Zajęcia numer 3

- moduł SYSTEM

- moduł SYSTEM

Zajęcia numer 4

Zajęcia numer 4

- Instrukcja warunkowa IF

- Instrukcja warunkowa IF

Zajęcia numer 5

Zajęcia numer 5

- instrukcja wyboru CASE

- instrukcja wyboru CASE

Zajęcia numer

Zajęcia numer

6

6

-

-

rodzaje pętli

rodzaje pętli

Podprogramy

Podprogramy

– procedury i funkcje

– procedury i funkcje

background image

Pascal – nowy język

Pascal – nowy język

programowania

programowania

Twórcą języka Pascal jest Nikolaus Writh, który

Twórcą języka Pascal jest Nikolaus Writh, który

w 1971 roku opublikował pierwszy raport

w 1971 roku opublikował pierwszy raport

będący szczegółowym, formalnym opisem

będący szczegółowym, formalnym opisem

Pascala. Pascal opisany w raporcie był

Pascala. Pascal opisany w raporcie był

abstrakcyjnym językiem algorytmicznym tj.

abstrakcyjnym językiem algorytmicznym tj.

systemem reguł, słów umożliwiających jasne,

systemem reguł, słów umożliwiających jasne,

jednoznaczne formułowanie algorytmów. Od

jednoznaczne formułowanie algorytmów. Od

tego czasu powstało wiele konkretnych

tego czasu powstało wiele konkretnych

realizacji języka Pascal tzn. systemów

realizacji języka Pascal tzn. systemów

umożliwiających redagowanie programów i

umożliwiających redagowanie programów i

wykonywanie ich przez komputer. Nowości

wykonywanie ich przez komputer. Nowości

polegają nie tylko na ulepszaniu środowiska

polegają nie tylko na ulepszaniu środowiska

redagowania i uruchamiania programów, które

redagowania i uruchamiania programów, które

stają się bardziej przyjazne i coraz bogatsze,

stają się bardziej przyjazne i coraz bogatsze,

wzbogacaniu listy standardowych poleceń i

wzbogacaniu listy standardowych poleceń i

funkcji języka np. o procedury programowania

funkcji języka np. o procedury programowania

grafiki, których nie było we wzorcu Writha, ale

grafiki, których nie było we wzorcu Writha, ale

także na wprowadzaniu do języka nowych idei

także na wprowadzaniu do języka nowych idei

jak np.

jak np.

programowanie obiektowe

programowanie obiektowe

.

.

background image

Ekran Turbo Pascala

Ekran Turbo Pascala

background image

5

Opis menu

Opis menu

File- pozwala na zapisywania programów
źródłowych na dyskietce bądź dysku twardym
(Save) - F2, wczytywanie ich do edytora
(Load) - F3, kończenie pracy z Turbo Pascalem
(Quit) - ALT+X.

Edit - umożliwia pisanie programu źródłowego.

Run - zawiera kilka możliwości. Na etapie
wstępnym interesuje nas przede wszystkim
uruchamianie programu realizowane przy
pomocy polecenia Run (CTRL+F9).Kombinacja
przycisków ALT+F5 pozwala obejrzeć ekran
roboczy programu.

background image

6

Podstawowe informacje

Podstawowe informacje

o Pascalu

o Pascalu

Program źródłowy -

jest tekstem, czyli określonym

zbiorem słów, cyfr i
pojedynczych znaków
zapisanym według reguł jakie
ustalili twórcy języka.

background image

7

Podstawowe informacje

Podstawowe informacje

o Pascalu

o Pascalu

Słowa kluczowe -

zastrzeżone tylko do

wydawania poleceń
składających się na program.
Nie wolno używać ich w innym
celu. W Pascalu znajduje się 51
słów kluczowych.

background image

8

Słowa kluczowe

Słowa kluczowe

AND

IMPLEMENTATION

SET

ASM

INLINE

SHL

ARRAY

INHERITED

SHR

BEGIN

INTERFACE

STRING

CASE

INTERRUPT

THEN

CONST

LABEL

DESTRUCTOR

LIBRARY

TO

DIV

MOD

TYPE

DO

NIL

UNIT

DOWNTO

NOT

UNTIL

ELSE

OBJECT

USES

END

OF

VAR

EXPORTS

OR

WHILE

FILE

PACKED

WITH

FOR

PROCEDURE

XOR

FUNCTION

PROGRAM

GOTO

RECORD

IF

REPEAT

background image

9

Podstawowe informacje

Podstawowe informacje

o Pascalu

o Pascalu

Łańcuch znaków -

wszystkie inne zestawienia

liter (poza słowami
kluczowymi). Łańcuch znaków
musi być zawsze ograniczony
przy pomocy separatorów,
którymi w Pascalu są apostrofy
(`).

background image

10

Podstawowe informacje

Podstawowe informacje

o Pascalu

o Pascalu

Symbole specjalne -

operatory arytmetyczne + - * /
(brak potęgowania)
operatory relacji< , > , = , <= ,
>=
nawiasy okrągłe, kwadratowe i
klamrowe () [] {}
operator przypisania :=
pozostałe symbole . , ; : ` # $ @ ^

background image

11

Podstawowe informacje

Podstawowe informacje

o Pascalu

o Pascalu

Spacje –

mają znaczenie separatorów

(ale nie przy łańcuchach znaków)
i można je używać tam, gdzie dwa
symbole mogłyby się połączyć w
jeden, zmieniając znaczenie tekstu.
Nie mogą natomiast dzielić słów
kluczowych. Tam gdzie może
wystąpić jedna spacja, może być
również ich więcej.

background image

12

Budowa programu

Budowa programu

Każdy algorytm, a zatem i
program operuje danymi,
posługuje się nimi, korzysta z
informacji jakie one niosą,
przetwarza je.
Dane mają określoną budowę,
którą nazywamy strukturą. W
programie musimy podać jakie
rodzaje (typy) danych program
będzie obsługiwał.

background image

13

Budowa programu

Budowa programu

NAGŁÓWEK

PROGRAM moja_nazwa;
CONST

CZĘŚĆ

definicje stałych

VAR

DEKLARACYJNA

deklaracje zmiennych
... deklaracje procedur i funkcji

CZĘŚĆ

BEGIN

GŁÓWNA

..............................
instrukcje;

END.

background image

14

Podstawowy zestaw

Podstawowy zestaw

instrukcji

instrukcji

Wczytanie danych

Read (lista_argumentów);
ReadLn (lista_argumentów);

np:

Read (a,b);
ReadLn (c);

Instrukcję ReadLn bez parametrów

można wykorzystać (chociaż nie zawsze
jest to skuteczne do zatrzymania
programu do chwili naciśnięcia ENTER
)

background image

15

Podstawowy zestaw

Podstawowy zestaw

instrukcji

instrukcji

Wyprowadzenie wyników i komunikatów

Write (lista_argumentów);
WriteLn (lista_argumentów);

np:

Write (`Podaj swoje imię`);

background image

16

Podstawowy zestaw

Podstawowy zestaw

instrukcji

instrukcji

Instrukcja skoku
(określenie położenia kursora na ekranie)

GoToXY (liczba_pozycja,l

iczba_wiersz);

np: GoToXY (20,10);

background image

17

Podstawowy zestaw

Podstawowy zestaw

instrukcji

instrukcji

Instrukcja czyszczenia ekranu
(wyczyszczenie ekranu roboczego)

ClrScr;

background image

18

Podstawowy zestaw

Podstawowy zestaw

instrukcji

instrukcji

Instrukcja zwiększenia jaskrawości koloru
wyświetlanych znaków

Highvideo;

Brak zwiększenia jaskrawości koloru
wyświetlanych znaków (biały kolor
znaków na czarnym tle)

Normvideo;

background image

19

Stałe kolorów

Stałe kolorów

Identyfikator

Wartość

Kolor

Black

0

czarny

Blue

1

niebieski

Green

2

zielony

Cyan

3

morski

Red

4

czerwony

Magenta

5

fioletowy

Brown

6

brązowy

LightGray

7

jasnoszary

DrakGray

8

ciemnoszary

LightBlue

9

jasnoniebieski

LightGreen

10

jasnozielony

LightCyan

11

jasnomorski

LightRed

12

jasnoczerwony

LightMagenta

13

jasnofioletowy

Yellow

14

żółty

White

15

biały

background image

20

Podstawowy zestaw

Podstawowy zestaw

instrukcji

instrukcji

Kolor tła

Textbackground (kolor);

Kolor tekstu

Textcolor (kolor);

background image

21

Zasady redagowania

Zasady redagowania

programu

programu

Kolejne instrukcje programu oddzielamy
średnikami.
W jednej linii programu może być umieszczonych
wiele instrukcji, ale muszą być oddzielone
średnikami.
Po nagłówku i instrukcji WRITELN należy użyć
średników, natomiast po BEGIN i END można je
opuścić.
Średnik możemy również opuścić, gdy następnym
słowem jest END (niekoniecznie z kropką).
Kropka po ostatnim END oznacza koniec
programu i należy ją postawić.
Dla czytelności programu stosuje się tzw. wcięcia.

background image

22

Uruchomienie

Uruchomienie

programu

programu

CTRL+F9

- następuje kompilacja i

konsolidacja programu oraz uruchomienie
programu.
ALT+F5 - możliwość obejrzenia ekranu
roboczego programu. Wciśnięcie dowolnego
klawisza spowoduje powrót do Pascala.

Kompilacja - tłumaczenie programu
źródłowego do postaci pośredniej.
Konsolidacja - operacja powodująca
powstanie programu wykonywalnego,
którego nazwa ma rozszerzenie EXE. Turbo
Pascal może wykonywać ją automatycznie bez
twojej wiedzy.

background image

23

Moduły programu

Moduły programu

Moduł CRT

to zbiór zgrupowanych razem

pewnych dodatkowych
(niestandardowych) procedur i
funkcji, ułatwiających komunikację
z użytkownikiem za pomocą
urządzeń wejścia/wyjścia tj.
klawiatury i monitora. Moduł ten
zawiera instrukcje np. GoTo i ClrScr.

background image

24

Początki

Początki

programowania

programowania

Definiowanie stałych

Deklarowanie zmiennych

Rodzaje typów

Wyrażenia

Zajęcia 2

Zajęcia 2

background image

25

Definiowanie stałych

Definiowanie stałych

STAŁA

to konkretna niezmienna

wartość, którą posługujemy się
używając jej symbolicznej
nazwy (np. PI). Wartością stałej
może być każda liczba zarówno
całkowita jak i ułamkowa. Stałą
może być również każdy znak
albo napis pod warunkiem, że
zostanie on ujęty w separatory.

background image

26

Zasady tworzenia

Zasady tworzenia

nazw stałych

nazw stałych

nazwa stałej może się składać z liter i cyfr, ale
na początku musi być litera

nazwa nie może zawierać spacji, niektórych
innych znaków np. kropki

długość nazwy może wynosić najwyżej 32 znaki

nazwa nie może się powtarzać

nazwa powinna określać zawartość

background image

27

Przykłady definicji

Przykłady definicji

stałych

stałych

Chęć skorzystania z wielkości stałej należy

programowi zgłosić. Zgłoszenie programowi,

że zostanie użyta stała nazywa się definicją.

CONSTANS (skrót CONST)

słowo kluczowe informujące, że występujące

obiekty są stałymi

Przykłady definicji stałych

dolny_zakres=100;
komunikat=‘Naciśnij dowolny klawisz’;
Pi=3.14;

background image

28

Deklarowanie

Deklarowanie

zmiennych

zmiennych

ZMIENNA

to twór, którym posługujemy

się korzystając z jej nazwy, zaś
jej wartość jest wielkością,
która może się zmieniać.
Zasady tworzenia nazw
zmiennych są takie same jak
stałych.

background image

29

Deklarowanie

Deklarowanie

zmiennych

zmiennych

Chęć skorzystania z wielkości zmiennej należy programowi
zgłosić. Zgłoszenie programowi, że zostanie użyta zmienna
nazywa się deklaracją zmiennej.

VAR

słowo kluczowe poprzedzające deklarację
zmiennych.

Podczas deklaracji nie nadajemy zmiennej żadnej
wartości. Zmienna musi posiadać wartość w chwili użycia.

Każda utworzona zmienna musi być określonego rodzaju
(typu).

Wartością zmiennej może być liczba, znak, łańcuch
znaków.

background image

30

Rodzaje typów

Rodzaje typów

Typy proste

są podstawowymi typami języka i
za ich pomocą powstają bardziej
złożone struktury danych.
Wszystkie typy proste składają się
ze skończonego i uporządkowanego
zbioru wartości.

background image

31

Podział typów

Podział typów

prostych

Typy proste

Porządkowe

Całkowite

Logiczny

Znakowy

Rzeczywiste

REAL

background image

32

Podział typów

Podział typów

prostych

Typy porządkowe

Całkowite

ShortInt (zawierający liczby całkowite od
-128 do 127)

Byte (zawierający liczby całkowite od 0 do
255)

Integer (zawierający liczby całkowite od
-32768 do 32767)

Word (zawierający liczby całkowite od 0 do
65535)

LongInt (zawierający liczby całkowite od
-2.147.483.648 do

2.147.483.647)

background image

33

Podział typów

Podział typów

prostych

Typy porządkowe

Logiczny

Boolean (składa się z dwóch
predefiniowanych stałych False, True)

background image

34

Podział typów

Podział typów

prostych

Typy porządkowe

Znakowy

Char (składa się z elementów będących
znakami kodu ASCII)

background image

35

Podział typów

Podział typów

prostych

Typy porządkowe

definiowane przez programistę

Wyliczeniowe

Okrojony

background image

36

Rodzaje typów

Rodzaje typów

Typy złożone (strukturalne)

Typ łańcuchowy STRING

Typ tablicowy

Typ znakowy

Typ rekordowy

Typ plikowy

Typy wskaźnikowe

background image

37

Rodzaje typów

Rodzaje typów

TYPY PROSTE

PORZĄDKOW

E

RZECZYWIST

E

REAL

CAŁKOWITE

ShortIn

t

Byte

Integer

Word

LongInt

WYLICZENIOWE

OKROJONE

TYPY

STRUKTURALNE

Łańcuchowy

Tablicowy

Znakowy

Rekordowy

Plikowy

background image

38

Przykłady deklaracji

Przykłady deklaracji

zmiennych

zmiennych

wszystkie zmienne deklarujemy po słowie:

VAR

czynnik1, czynnik2: BYTE;
wynik: REAL;
odp1, odp2: CHAR;
a, b, pole: INTEGER;

Przy deklarowaniu zmiennych tego samego typu

można je wyliczyć w postaci listy, w której są

one oddzielone przecinkami.

Przy deklarowaniu zmiennej podajemy

wymyśloną przez siebie nazwę, dwukropek i

wreszcie jej TYP.

background image

39

Przykładowy program

Przykładowy program

Program przykład;

VAR

Ocena: Byte;
WcisnietyKlawisz: Char;
PoleKola: Real;
Wynagrodzenie: Integer;
LiczbaMieszkancow: LongInt;
CzyKoniec: Boolean;
TytulKsiazki: String;
Imie, Nazwisko: String;

background image

40

Przykłady wyrażeń

Przykłady wyrażeń

Większość programów wymaga różnego rodzaju

obliczeń. Zwykle celem tych obliczeń jest
znalezienie wartości jakiejś zmiennej.

Wyrażenia

– to obliczenia zawierające

zmienne, stałe i łączące je operatory.

Poprawnie zbudowane wyrażenie to takie, w

którym każdy z operatorów działa na

składnikach odpowiedniego typu. Jeśli warunek

ten nie jest spełniony w czasie kompilacji

zostanie wykryty błąd „pomieszania typów”.

Składniki wyrażenia są odpowiedniego typu a

zatem i wyrażenie należy do jakiegoś typu.

Typem wyrażenia

jest typ wartości powstającej

w wyniku obliczenia tego wyrażenia czyli typ

wartości wynikowej.

background image

41

Priorytety operatorów

Priorytety operatorów

działania w nawiasach

(*) mnożenie i dzielenie (/)

DIV

(dzielenie całkowite) i

MOD

(reszta z

dzielenia całkowitego)

(+) dodawanie i (-) odejmowanie

w przypadku braku nawiasów i przy

operatorach o takim samym priorytecie

działania są wykonywane od lewej do

prawej

background image

42

Przykłady wyrażeń

Przykłady wyrażeń

(x+y)/(x-y)

2*sin(x/2)+3*cos(x*y)

background image

43

Instrukcja przypisania

Instrukcja przypisania

Służy do nadania wartości zmiennej.

nazwa_zmiennej:=wyrażenie_albo_warto
ść

Od tego momentu operujemy nazwą zmiennej, ale
program posługuje się jej wartością.

Jeśli zmienna posiadała jakąś wartość wcześniej
zostanie ona niestety całkowicie utracona.

Zmienna zachowuje tylko wartość aktualną.

Jeśli potrzebna jest poprzednia wartość zmiennej
należy ją zapamiętać np. przez utworzenie
zmiennej pomocniczej i przekazanie jej do
wartości.

background image

44

Przykłady instrukcji

Przykłady instrukcji

przypisania

przypisania

liczba:=5.1;

wynik:=dzielna/dzielnik;

znak:=’A’;

tekst:=’Co się gapisz?’;

background image

45

Moduł System

Zajęcia 3

Zajęcia 3

background image

46

Moduł SYSTEM

Moduł SYSTEM

Zawiera procedury i funkcje obsługi zbiorów, operacji konwersji

Zawiera procedury i funkcje obsługi zbiorów, operacji konwersji

liczb, operacji łańcuchowych, porządkowych oraz służące do

liczb, operacji łańcuchowych, porządkowych oraz służące do

dynamicznego przydziału i zwalniania pamięci.

dynamicznego przydziału i zwalniania pamięci.

Jako jedyny jest

Jako jedyny jest

dostępny automatycznie.

dostępny automatycznie.

Funkcje arytmetyczne modułu System

Abs

obliczenie wartości bezwzględnej argumentu

ArcTan

obliczenie wartości arcusa tangensa

Cos

obliczenie wartości cosinusa argumentu

Exp

obliczenie wartości stałej Eulera e

Frac

obliczenie części ułamkowej argumentu

Int

obliczenie części całkowitej liczby

Ln

obliczenie wartości logarytmu naturalnego

Pi

obliczenie wartości stałej pi

Sin

obliczenie wartości sinusa argumentu

Sqr

obliczenie wartości kwadratu argumentu

Sqrt

obliczenie wartości pierwiastka

kwadratowego

background image

47

Moduł SYSTEM

Moduł SYSTEM

Zawiera procedury i funkcje obsługi zbiorów, operacji konwersji

Zawiera procedury i funkcje obsługi zbiorów, operacji konwersji

liczb, operacji łańcuchowych, porządkowych oraz służące do

liczb, operacji łańcuchowych, porządkowych oraz służące do

dynamicznego przydziału i zwalniania pamięci.

dynamicznego przydziału i zwalniania pamięci.

Jako jedyny jest

Jako jedyny jest

dostępny automatycznie.

dostępny automatycznie.

Procedury i funkcje łańcuchowe

Concat

konkatenacja łańcuchów

Copy

Wyznaczanie podłańcucha z łańcucha

Delete

Usunięcie części łańcucha

Insert

wstawianie podłańcucha do łańcucha

Lenght

wyznaczenie długości łańcucha

Pos

wyszukanie podciągu znaków

Str

zamiana wartości numerycznej na łańcuch

Val

zamiana łańcucha znaków na jego numeryczną

reprezentację

background image

48

Moduł SYSTEM

Moduł SYSTEM

COPY

Moduł:

SYSTEM

Wywołanie:

Copy(łańcuch, nr, n)

Argumenty:

łańcuch: String

nr, n: Integer

Typ wyniku:

String

Rezultat:

Funkcja wycina z argumentu

łańcuch ciąg znaków o

długości n

począwszy od znaku

o numerze

nr.

background image

49

Moduł SYSTEM

Moduł SYSTEM

CONCAT

Moduł:

SYSTEM

Wywołanie:

Concat(S1[S2…Sn])

Argumenty:

S1[S2…Sn]: String

Typ wyniku:

String

Rezultat:

Połączenie łańcuchów

będących

argumentami

funkcji w jeden

łańcuch

background image

50

Moduł SYSTEM

Moduł SYSTEM

Zawiera procedury i funkcje obsługi zbiorów, operacji konwersji

Zawiera procedury i funkcje obsługi zbiorów, operacji konwersji

liczb, operacji łańcuchowych, porządkowych oraz służące do

liczb, operacji łańcuchowych, porządkowych oraz służące do

dynamicznego przydziału i zwalniania pamięci.

dynamicznego przydziału i zwalniania pamięci.

Jako jedyny jest

Jako jedyny jest

dostępny automatycznie.

dostępny automatycznie.

Procedury i funkcje porządkowe

Dec

utworzenie wielokrotnego poprzednika
parametru

Inc

wyznaczenie wielokrotnego następnika
parametru

Odd

badanie nieparzystości argumentu

Pred

wyznaczenie poprzednika argumentu

Succ

wyznaczenie następnika argumentu

Pozostałe procedury i funkcje

UpCase(znak) – zamiana litery na dużą

background image

51

Moduł SYSTEM

Moduł SYSTEM

SUCC

Moduł:

SYSTEM

Wywołanie:

Succ(x)

Argumenty:

x: dowolny typ porządkowy

Typ wyniku:

jak typ argumentu

Rezultat: Element występujący

bezpośrednio za argumentem x w

zadeklarowanym typie

porządkowym

background image

52

Moduł SYSTEM

Moduł SYSTEM

UpCase

Moduł:

SYSTEM

Wywołanie:

UpCase(znak)

Argumenty:

znak: CHAR

Typ wyniku:

CHAR

Rezultat:

Duża litera odpowiadająca

argumentowi będącemu

małą

literą

background image

53

Instrukcja warunkowa.

Instrukcja warunkowa.

IF <warunek> THEN instrukcja_1
ELSE instrukcja_2

JEŚLI warunek jest spełniony WYKONAJ instrukcję_1
W INNYM PRZYPADKU wykonaj instrukcję_2

Poszczególne składniki wyrażenia muszą być
wcześniej zdefiniowane (stałe) lub zadeklarowane
(zmienne) i muszą posiadać konkretną wartość.
„Instrukcja_1” oraz „instrukcja_2” to dowolne
instrukcje języka Pascal, które chcemy wykonać w
przypadku spełnienia bądź niespełnienia warunku

.

Zajęcia 4

Zajęcia 4

background image

54

Instrukcja warunkowa.

Instrukcja warunkowa.

IF <warunek> THEN instrukcja_1
ELSE instrukcja_2

Występujący po słowie If warunek może
być wyrażeniem relacyjnym: <, >, <=, >=,
=, <> lub wywołaniem funkcji o
wartościach logicznych, np.

If X>=-1 Then ...
If 4*Dlugosc<>P+1 Then ...
If X=Sqrt(Y) Then ...
If KeyPressed Then Znak:=ReadKey;

Zajęcia 4

Zajęcia 4

background image

55

Operatory logiczne

Operatory logiczne

AND

to tak zwany

„iloczyn logiczny”

określany

spójnikiem „i”. W Pascalu do

utworzenia tego

warunku używamy operatora AND, np. (X>Y) AND

(Y>0). Taki warunek jest spełniony wtedy i tylko

wtedy, gdy spełnione są jego obydwa człony.

OR

to tak zwana

„suma logiczna”

określana

spójnikiem „lub”. W Pascalu do utworzenia tego

warunku używamy operatora OR np. (X>Y) OR

(Y>0). Warunek

jest spełniony, gdy

którakolwiek z jego części będzie prawdziwa.

NOT

to po prostu zaprzeczenie, czyli negacja.
Np. Jeśli X>Y, to warunek jest prawdziwy w sytuacji

gdy X>Y. Jeśli potrzebna jest sytuacja odwrotna,

można zamiast pisać Y>X użyć postaci NOT (X>Y).

background image

56

Instrukcja warunkowa.

Instrukcja warunkowa.

Warunek logiczny może być również wyrażeniem

złożonym utworzonym z prostych wyrażeń

logicznych powiązanych operatorami logicznymi

języka np.:

{Jeśli X należy do przedziału liczbowego <10, 100> }
If (X>=10) And (X<100) Then WriteLn('Dwie cyfry');

{Jeśli A jest nieparzyste i podzielne przez 5 }
If ((A Mod 2)<>0) And ((A Mod 5)=0) Then ...

{Jeśli A nie należy do przedziału liczbowego <0, 1) }
If (A<0) Or (A>=1) Then ...
If Not ((A>=0) And (A<1)) Then ...W tym wypadku

najczęściej konieczne jest ujmowanie wyrażeń

prostych w nawiasy okrągłe.

Zajęcia 4

Zajęcia 4

background image

57

Instrukcja warunkowa.

Instrukcja warunkowa.

Po słowie

Then

może wystąpić tylko jedna

instrukcja. Jeżeli chcemy w danym
przypadku wykonać więcej poleceń, to
należy utworzyć z nich blok - blok
traktowany jest bowiem jak jedna
instrukcja programu, np.

ReadLn(A);
If A<0 Then

Begin
WriteLn('Podano ujemną wartość zmiennej a!');
ReadKey;
Halt;
End;

Zajęcia 4

Zajęcia 4

background image

58

Instrukcja warunkowa.

Instrukcja warunkowa.

Instrukcja If może mieć postać rozbudowaną:

If warunek Then instrukcja1 Else instrukcja2;

Słowo Else oznacza "w przeciwnym wypadku". W tej postaci

wykonanie instrukcji polega na wykonaniu instrukcji

pierwszej lub drugiej, w zależności od wartości logicznej

podanego warunku: jeśli warunek logiczny jest prawdziwy,

wykonana zostanie instrukcja1, jeśli fałszywy, program

wykona instrukcję2

Wykonanie instrukcji

If A>=0 Then X:=Sqrt(A) Else X:=0;
spowoduje przypisanie zmiennej X wartości pierwiastka z

liczby A gdy jego oblicznie jest możliwe lub też liczby zero

gdy A jest liczbą ujemną.
Uwaga:

Po słowie Else może wystąpić tylko jedna instrukcja lub blok.

W przypadku rozbudowanej postaci ze słowem Else po

instrukcji pierwszej nie umieszcza się średnika!

Zajęcia 4

Zajęcia 4

background image

59

Instrukcja wyboru.

Instrukcja wyboru.

CASE -

CASE -

znaczy „przypadek” (w przypadku, w razie

znaczy „przypadek” (w przypadku, w razie

gdyby)

gdyby)

CASE <wyrażenie> OF

stała1: instrukcja_1;
stała2: instrukcja_2;

stała_n: instrukcja_n;

ELSE inna_instrukcja
END.

jeżeli <wyrażenie> przyjęło wartość ‘stała_1’,

wykonaj ‘instrukcję_1’;
jeżeli <wyrażenie> przyjęło wartość ‘stała_2’,

wykonaj ‘instrukcję_2’ itd.
W przypadku jeżeli <wyrażenie> przyjęło wartość nie

wyszczególnioną (ELSE) - wykonaj inną instrukcję.

Zajęcia 5

Zajęcia 5

background image

60

Instrukcja wyboru.

Instrukcja wyboru.

<wyrażenie>

to zwykle zmienna zadeklarowana na
początku programu i posiadająca
określoną wartość w chwili wykonania
instrukcji CASE. Można oczywiście
zastosować wyrażenie złożone z wielu
zmiennych, operatorów i funkcji, ale musi
ono być typu porządkowego.

Zajęcia 5

Zajęcia 5

background image

61

Instrukcja wyboru.

Instrukcja wyboru.

<stała>

Stała_1, stała_2, stała_n są elementami listy
wyboru. Każda z tych stałych musi być tego
samego typu. Stała może być: liczbą,
znakiem (występuje wówczas w
apostrofach), listą liczb lub znaków,
zakresem liczb lub znaków.

Przykłady niektórych stałych:

lista liczb:

1,3,5,7:

lista znaków: ‘A’, ‘a’:
zakres liczb: 1..10:
zakres znaków:

‘A’..’Z’:

Zajęcia 5

Zajęcia 5

background image

62

Instrukcje pętli

Zajęcia 6

Zajęcia 6

Pętla FOR

Pętla WHILE.. DO

Pętla REPEAT..UNTIL

background image

63

Pętla For

Pętla For

Pętla -

oznacza, że jakaś grupa poleceń

będzie wykonywana wielokrotnie

(wielokrotnie powtarzana).

FOR –

jest nazywaną „pętlą liczoną”.

Programiści stosują ją w zasadzie

zawsze, gdy są w stanie określić ile

razy trzeba powtórzyć jakąś czynność.

Wobec tego pętla musi posiadać coś w

rodzaju licznika określającego ilość

powtórzeń.

background image

64

Pętla For

Pętla For

FOR

licznik_pętli:=wyrażenie_1

TO

wyrażenie_2

DO

instrukcja;

albo

FOR

licznik_pętli:=wyrażenie_1

DOWNTO

wyrażenie_2

DO

instrukcja

Przetłumaczenie pętli

DLA wartości licznika zmieniającej się od

<wyrażwnia_1> DO <wyrażwnia_2> WYKONUJ

instrukcję

background image

65

Pętla For

Pętla For

Wartość licznika obrotów zmienia się –

może rosnąć, albo maleć. Ważne, że zmienna

ta nazywana zmienną sterującą pętli, ma

określoną wartość początkową <wyrażenie_1>

i końcową <wyrażenie_2>.

Zmiana wartości zmiennej sterującej odbywa

się automatycznie: po każdym wykonaniu pętli

wzrost o jedną pozycję (gdy w instrukcji

występuje słowo TO), lub zmniejszenie o

pozycję (gdy w instrukcji występuję DOWNTO).

Zmienna sterująca może być tylko zmienną

typu porządkowego. Dla każdej wartości tego

typu istnieje bowiem wartość ją poprzedzająca

i następna.

background image

66

Pętla For

Pętla For

Przykłady

For i:=3 To 82 Do Write('*');

For i:=1 To 25 Do WriteLn('Kwadrat liczby ', i, ' = ',
i*i); {Kwadrat liczby 8 = 64}

For licznik:=10000 To 99999 Do If (licznik Mod
793)=0 Then WriteLn(licznik);

background image

67

Pętla WHILE..DO

Pętla WHILE..DO

WHILE

<warunek>

DO

instrukcja

albo

WHILE

<warunek>

DO

Begin
instrukcja_1;
instrukcja_2;
....................
instrukcja_n;
End;

Instrukcję tę rozumiemy następująco:

Jak długo warunek jest spełniony (jest prawdą)

wykonuj instrukcję występującą po słowie DO.

background image

68

Pętla WHILE..DO

Pętla WHILE..DO

Instrukcja wykonywana w pętli może być tylko

jedna. Do wykonania większej liczby instrukcji

należy użyć klamry BEGIN..END.

Pętla instrukcji WHILE może nie zostać

wykonana ani raz, gdyż warunek jest

sprawdzany na początku.

Przykład

WHILE (wybor<>’k’) AND (wybor<>’p’) AND

(wybor<>’o’) DO Readln (wybor)

Przedstawiona pętla będzie realizować instrukcję Readln dotąd,

dopóki zawartość zmiennej wybor nie będzie równa jednej z

wymienionych liter. Jej zastosowanie pozwala wyeliminować

komunikat o błędnym wyborze.

background image

69

Pętla REPEAT..UNTIL

Pętla REPEAT..UNTIL

REPEAT

instrukcja_1;
instrukcja_2;
...

{instrukcje, które mają być wykonywane}

instrukcja_n;

UNTIL

<warunek>

{warunek, którego spełnienie oznacza wyjście z pętli}

Przetłumaczenie:

Powtarzaj grupę instrukcji do momentu aż warunek

zostanie spełniony (stanie się prawdą).
Liczba instrukcji pomiędzy REPEAT a UNTIL nie jest

ograniczona i nie trzeba tu używać instrukcji złożonej,

jak w FOR...TO.

background image

70

Pętla REPEAT..UNTIL

Pętla REPEAT..UNTIL

Instrukcja REPEAT...UNTIL charakteryzuje

się tym, że występujący wewnątrz niej ciąg

instrukcji musi być wykonany przynajmniej

jeden raz, gdyż warunek jest sprawdzany

dopiero po ich wykonaniu.

Przykład

REPEAT Readln (liczba);
UNTIL liczba=0;

Wykonując polecenie podane w powyższym

przykładzie komputer będzie wczytywał kolejne

liczby z klawiatury. Jeśli któraś z nich okaże się

równa 0, to przejdzie do następnej po pętli

instrukcji.

background image

71

Pętla REPEAT..UNTIL

Pętla REPEAT..UNTIL

Instrukcję REPEAT wykorzystujemy do chwilowego

zatrzymania programu w celu oczekiwania na

naciśnięcie:

dowolnego przycisku

Repeat until keypressed

określonej litery

Tak_Nie:CHAR;
REPEAT

Instrukcja_1;
Instrukcja_2;
...........
Instrukcja_n;
Writeln (‘Jeszcze raz? T(ak)’);
Tak_Nie:=UpCase(ReadKey);

UNTIL NOT (Tak_Nie=’T’)

{jeśli naciśnięto T wykonuj petlę - warunek wyjścia z pętli}

background image

72

Pętla REPEAT..UNTIL

Pętla REPEAT..UNTIL

Instrukcję REPEAT wykorzystujemy do chwilowego

zatrzymania programu w celu oczekiwania na

naciśnięcie:

Konkretnego klawisza

odp:CHAR;
REPEAT

Instrukcja_1;
Instrukcja_2;
...........
Instrukcja_n;

Writeln (‘Cz chcesz zakończyć pracę z programem?

T/N’);

UNTIL (odp=’T’) OR (odp=’t’)

{jeśli nie naciśnięto T wykonuj pętlę - warunek wyjścia z pętli}

background image

73

Podprogramy

Podprogramy

Rozwiązując złożony problem w języku strukturalnym

programowania dzielimy go na podproblemy, co ułatwia

rozwiązanie. W ten sposób unikamy powtórzeń. Czynność

powtarzającą się wielokrotnie można opisać tylko raz, a

później wystarczy wskazać, którą sekwencję poleceń

należy wykonać.

Sekwencje poleceń rozwiązujące poszczególne

podproblemy nazywamy podprogramami .

Podprogramy muszą mieć nazwy pozwalające je

zidentyfikować.

Powinno się je stosować zawsze w przypadku powtarzania

się problemów, a nawet w przypadkach pojedynczego ich

występowania, jeśli poprawia to czytelność programów.

Stosując tę zasadę tworzymy prostsze algorytmy dla

podprogramów. W języku Pascal istnieją dwa rodzaje

podprogramów: procedury i funkcje.

background image

74

Podprogramy

Podprogramy

PROCEDURA lub FUNKCJA - to wyróżniona część

programu stanowiąca pewną dającą się

wyodrębnić całość i zaopatrzona w

jednoznaczną nazwę.
FUNKCJA jest tworzona dla obliczenia pewnej

wartości, którą powinna zwrócić (np.

przekazać do zmiennej).
PROCEDURA ma na celu wykonanie określonej

czynności.
W programie Pascalowskim po definicji stałych i

deklaracji zmiennych musi nastąpić deklaracja

procedur i funkcji, a dopiero po tym część główna

programu. O ile deklaracja zmiennych wymagała

słowa kluczowego VAR, o tyle sekcja deklaracji

podprogramów nie potrzebuje żadnego wyróżnienia.

background image

75

Procedury

Procedury

Procedurą nazywamy wyodrębnioną

część programu, która posiada swoją

nazwę, realizuje określone zadania i

w ustalony sposób komunikuje się z

pozostałymi częściami programu.

Procedury stosuje się do

wykonywania czynności wielokrotnie

powtarzanych w programie lub

takich, które mogą być wykorzystane

w innych programach.

background image

76

Definicja procedury

Definicja procedury

Procedure nazwa_procedury[(lista_argumentów)];
[część opisowa procedury]
blok zakończony średnikiem

Lista argumentów ma charakter opcjonalny - procedurę bez
argumentów nazywa się bezparametrową.
Wszystkie argumenty procedury muszą mieć określone typy,
przy czym mogą to być typy standardowe lub zdefiniowane
przez programistę.
Część opisowa procedury może zawierać takie same elementy
jak część opisowa programu z wyjątkiem deklaracji modułów.
Wszystkie zmienne zadeklarowane w części opisowej
procedury mają zasięg lokalny - są dostępne tylko w
definiowanej procedurze.

background image

77

Przykłady procedur

Przykłady procedur

Procedure Stop;
Begin

WriteLn;
WriteLn('Naciśnij klawisz ENTER ...');
ReadLn;

End;

Zdefiniowana procedura jest bezargumentowa i wywołuje
się ją tak jak każdą inną bezargumentową procedurę języka
(np. ClrScr) wpisując jako instrukcję jej nazwę:

np.
If (x Mod 24)=0 Then Stop;

background image

78

Funkcje

Funkcje

Funkcja stanowi rozszerzenie procedury o możliwość
przekazywania jednej wartości ustalonego typu, zgodnego
z typem zadeklarowanym w nagłówku funkcji. Może on
należeć do typów prostych lub wskaźnikowych. Funkcje
podobnie jak procedury definiuje się w części opisowej
programu:

FUNCTION nazwa_funkcji (lista_parametrów):

typ_wyniku;

{deklaracja stałych i zmiennych}

BEGIN

{treść funkcji}

END;

Wewnątrz bloku definiującego funkcję musi wystąpić instrukcja
przypisania nadająca wartość definiowanej funkcji w postaci:

nazwa_funkcji:=wartość

wartość nadawana funkcji musi być zgodna z zadeklarowanym
typem wyniku funkcji.

background image

79

Przykłady funkcji

Przykłady funkcji

Definicja funkcji, wartością której będzie pierwiastek stopnia

czwartego z liczby rzeczywistej mogłaby mieć postać:

Function Sqrt4(x : Real) : Real;
Begin

Sqrt4:=Sqrt(Sqrt(x));

End;

Tak zdefiniowanej funkcji używa się w taki sam sposób w jaki

używamy funkcji standardowych - wywołanie funkcji polega

na podaniu jej nazwy oraz argumentu typu rzeczywistego, np.

WriteLn('Suma pierwiastków stopnia czwartego = ', Sqrt4(x)

+Sqrt4(x+1));

background image

80

Przykłady funkcji

Przykłady funkcji

Funkcja Min, której wartością jest mniejsza z dwóch liczb a i

b

Function Min(a, b : LongInt) : LongInt;
Begin

If a<a Then Min:=a Else Min:=b;

End;

Funkcja Min3, która będzie zwracać najmniejszą z trzech
liczb.

Function Min3(a, b, c : LongInt) : LongInt;
Begin

Min3:=Min(a, Min(b, c));

End;

background image

81

Przykłady funkcji

Przykłady funkcji

Obliczając często potęgi o całkowitych wykładnikach
wygodnie jest zdefiniować sobie funkcję obliczającą taką
potęgę:

Function Pot(podst : Integer; wykl : Byte) : LongInt;
Var

i : Byte;
wynik : LongInt;

Begin

wynik:=1;
For i:=1 To wykl Do wynik:=wynik*podst;
Pot:=wynik;

End;

background image

82

Uwagi do funkcji i

Uwagi do funkcji i

procedur

procedur

Używając w programach funkcji lub procedur należy pamiętać, że:

Zdefiniowaną funkcję lub procedurę można wywoływać wielokrotnie.

Funkcje lub procedury bezparametrowe wywołujemy wpisując wyłącznie ich

nazwy, podobnie jak w przypadku procedury ClrScr lub funkcji ReadKey.

Jeżeli funkcja lub procedura posiada argumenty, to w wywołaniu należy podać

wartości wszystkich argumentów, przy czym muszą to być wartości takich

typów, które będą zgodne z typami zadeklarowanymi w definicji funkcji lub

procedury - jeżeli argumentem funkcji jest liczba typy Real, to w wywołaniu

możemy podać np. zmienną typu Byte, ale nie na odwrót.

Zmienne zadeklarowane w części opisowej funkcji lub procedury mają

charakter lokalny - są "własnością" danej funkcji lub procedury i mogą być

używane wyłącznie w definicji funkcji lub procedury.

Definiowana funkcja lub procedura może korzystać ze wszystkich funkcji i

procedur, które zostały zdefiniowane wcześniej.

Funkcja lub procedura może odwoływać się do zmiennych globalnych

programu pod warunkiem, że zmienne te zostaną zadeklarowane wcześniej

(powyżej). Postępowanie takie jest dopuszczalne, aczkolwiek nie jest

polecane - można w ten sposób popełnić trudne do wykrycia błędy.

background image

83

Przekazywanie argumentów funkcji i

Przekazywanie argumentów funkcji i

procedur

procedur

Sposób przekazania argumentu do funkcji lub procedurze zależy od sposobu w jaki

zdefiniowana została funkcja lub procedura, mówiąc bardziej szczegółowo, od sposobu

deklaracji jej argumentów. Istnieją dwie zasadnicze metody: przekazanie przez wartość

oraz przekazanie przez zmienną.

Procedure P(a : Integer);
Begin a:=a*a+1;
WriteLn(a);
End;

Tak zdefiniowaną procedurę program móże wywołać z argumentem w postaci zmiennej

P(x), P(dlugosc), w postaci stałej P(1), P(1024) oraz w postaci dowolnego wyrażenia

P(Sqr(12)+x-12) - wszystkie chwyty są tu dozwolone - jedyny warunek jaki musi spełnić

argument podany w wywołaniu nazywa się typ, który musi być zgodny z typem

argumentu wskazanym w deklaracji procedury.

Wewnątrz definicji procedury P dostępna jest zmienna a : Integer, występująca na liście

argumentów. Zmienna ta jest zmienną lokalną, dostępną tylko wewnątrz bloku

definiującego procedurę i nie można się do niej odwołać z żadnego innego miejsca

programu, bo w żadnym innym miejscu, czy to w innej procedurze, czy też w bloku

programu, zmiennej tej po prostu nie ma. Jak w znanym przeboju: "pojawia się", gdy

program rozpoczyna wykonywanie procedury, "i znika", gdy sterowanie opuszcza

procedurę.

background image

84

Przekazywanie argumentów funkcji i

Przekazywanie argumentów funkcji i

procedur

procedur

O przekazaniu argumentu procedurze przez zmienną mówimy

wówczas, gdy na liście argumentów identyfikator zmiennej

poprzedzono słowem kluczowym Var:

Procedure Czytaj(Var a : Word);
Begin

Repeat
Write('Podaj dodatnią liczbę naturalną A = ');
ReadLn(a);
Until a>0;

End;

Wywołanie tak zadeklarowanej procedury jest możliwe tylko

wówczas, gdy jako argument podana zostanie zmienna typu Word

(nie może to być zmienna żadnego typu zgodnego). Przy

przekazaniu argumentu przez zmienną na stosie (w pamięci) nie

tworzy się żadnych zmiennych tymczasowych - procedura pracuje

bezpośrednio na przekazanej jej zmienej.

background image

85

Przekazywanie argumentów funkcji i

Przekazywanie argumentów funkcji i

procedur

procedur

Jeśli tak zdefiniowaną procedurę wywołamy w programie ze zmienną

ilosc:

...
Var

ilosc : Word;

Begin

Czytaj(ilosc);
WriteLn('Wczytano liczbę = ', ilosc);

End.

to występująca w definicji zmienna a podczas wykonania

procedury będzie tożsama ze zmienną globalną programu

ilosc.

background image

86

Przekazywanie argumentów funkcji i

Przekazywanie argumentów funkcji i

procedur

procedur

Przez zmienną przekazuje się do funkcji i

procedur takie argumenty, których zmiany

wykonane przez procedurę powinny być

trwałe, jak np. odczyt wartości z

klawiatury.

Również duże struktury danych jak tablice

należy w miarę możliwości przekazywać

przez zmienną, gdyż w przeciwnym

wypadku na stosie tworzone są ich kopie i

znaczne

zagłębienie

wykonywania

procedur

może

doprowadzić

do

wyczerpania miejsca na stosie, a tym

samym do błędu wykonania programu.

background image

87

Definicja typu

Definicja typu

W Pascalu można definiować własne typy.
Określenie typu polega na podaniu jego nazwy i
opisu zbioru dopuszczalnych wartości.

TYPE nazwa=opis_typu;

Mając określony nowy zbiór wartości, możemy dalej
deklarować zmienne tego typu. W wyniku tego
postępowania otrzymamy:

Typ wyliczeniowy
Typ okrojony

background image

88

Typ wyliczeniowy

Typ wyliczeniowy

Typ wyliczeniowy jest to zbiór wartości wyliczonych w definicji. Stosuje się go do

zbioru o niewielkiej liczbie elementów, na których nie wykonuje się operacji
arytmetycznych.

TYPE

Kolory=(trefl, karo, kier, pik);

VAR
Karta: Kolory;

TYPE

Tydzien=(pn, wt, sr, czw, pt, sob, nie);

VAR
Dzien: Tydzien;

TYPE

Figury=(kwadrat, prostokąt, trojkąt, kolo);

VAR
Figura: Figury;

Nie można zdefiniować w programie różnych typów wyliczeniowych
zawierających taką samą stałą.

background image

89

Typ okrojony

Typ okrojony

Typ okrojony jest to zbiór wartości będących podzbiorem
pewnego typu porządkowego. Służy on do ograniczenia zakresu
wartości dla zmiennej tego typu. W tym sensie zdefiniowany typ
BYTE powstaje przez okrojenie typu INTEGER.

TYPE

Totolotek=1..49;

VAR
Liczby: Totolotek;

TYPE

Literki=’a’..’k’;
Wielokaty=kwadrat..trojkąt;
Dzien_roku=1..365;

background image

90

Typ okrojony

Typ okrojony

Okroić można tylko typy

INTEGER, CHAR, BOOLEAN i WYLICZENIOWE.

Typy okrojone wprowadzono dla zwiększenia

możliwości kontroli programisty nad przebiegiem

programu.

Operacje na wartościach typu okrojonego nie mogą

wykraczać poza ten typ.

Funkcje standardowe SUCC, PRED, ORD nie mogą

mieć zastosowania do tych typów.
SUCC - wyznaczenie następnika argumentu
PRED – wyznaczenie poprzednika argumentu
ORD – wyznaczenie numeru porządkowego argumentu

odpowiadającego znakowi z tabeli kodów ASCII

background image

91

Typy strukturalne (złożone)

Typy strukturalne (złożone)

Tablicowy
Rekordowy
Plikowy
Znakowy
Łańcuchowy

background image

92

Typy strukturalne - tablice

Typy strukturalne - tablice

TABLICĄ nazywamy złożoną

strukturę danych, która zawiera
zbiór elementów tego samego typu.

Wyróżniamy:

Tablice jednowymiarowe, które odpowiadają
matematycznemu pojęciu wektora,

np.

[2 3 4 5 6] - tablica jednowymiarowa zawierająca 5
elementów typu całkowitego.

2 3 4 5 6

1

2 3 4 5

Indeks elementu

Elementy tablicy

background image

93

Typy strukturalne - tablice

Typy strukturalne - tablice

Tablice wielowymiarowe, które odpowiadają
matematycznemu pojęciu macierzy (matrycy),

np.

1 2 3

Kolumny

Elementy tablicy

a d

g

z f

k

1

2

Wiersze

W tablicy dwuwymiarowej pierwszy indeks odpowiada numerowi wiersza,

a drugi numerowi kolumny.

np.: B[2, 3] – oznacza w drugim wierszu trzeci element (w tym wypadku k)

background image

94

Deklaracja tablic

Deklaracja tablic

W deklaracji TABLIC używa się słowa kluczowego ARRAY, po

którym w nawiasie kwadratowym określamy rozmiar tablicy
(od..do), a po kolejnym słowie kluczowym typ elementów:

TYPE Nazwa=ARRAY [zakres_indeksów] OF typ_elementu;

W przypadku gdy chcemy bezpośrednio skorzystać z deklaracji
VAR, zapiszemy instrukcję w następujący sposób:

VAR zmienna: ARRAY [zakres_indeksów] OF typ_elementu;

background image

95

Deklaracja tablic - przykłady

Deklaracja tablic - przykłady

TYPE

Wektor=ARRAY [1..5] OF Byte;
Macierz=ARRAY [1..2, 1..3] OF Char;
Pole=(puste, pion, goniec, skoczek, wieża, hetman, król);
Szachownica: ARRAY [1..8, ‘a’..’h’] OF Pole;

VAR

Dzien: ARRAY [1..12, 1..31] OF Byte;
El_wektora: Wektor;
El_macierzy: Macierz;
Ruch: Szachownica;

Z tablicami współpracuje instrukcja FOR. Pozwala ona
wprowadzać dane do tablicy, wybierać elementy tablicy,
wyświetlać je na ekranie.

background image

96

Koniec prezentacji

Koniec prezentacji


Document Outline


Wyszukiwarka

Podobne podstrony:
Prezentacja trójkątów Pascala
Prezentacja trójkątów Pascala
prezentacja finanse ludnosci
prezentacja mikro Kubska 2
Religia Mezopotamii prezentacja
Prezentacja konsument ostateczna
Strategie marketingowe prezentacje wykład
motumbo www prezentacje org
lab5 prezentacja
Prezentacja 18
Materialy pomocnicze prezentacja maturalna
Prezentacja na seminarium
Lato prezentacja 3
Prezentacja1
Prezentacja 2 analiza akcji zadania dla studentow

więcej podobnych podstron