background image

 

 

 

 

PASCAL (3)

PASCAL (3)

background image

 

 

 

 

Funkcje

Funkcje

ujęcie pewnych działań w osobną 

ujęcie pewnych działań w osobną 

strukturę programistyczną

strukturę programistyczną

stosuje się, gdy 

stosuje się, gdy 

1.

1.

pewne czynności w algorytmie w 

pewne czynności w algorytmie w 

różnych miejscach powtarzają się

różnych miejscach powtarzają się

2.

2.

ich wynikiem jest jedna wartość

ich wynikiem jest jedna wartość

3.

3.

chcemy zwiększyć przejrzystość 

chcemy zwiększyć przejrzystość 

programu

programu

background image

 

 

 

 

Funkcje

Funkcje

deklaracja funkcji (segment 

deklaracja funkcji (segment 

FUNCTION

FUNCTION

):

):

FUNCTION

FUNCTION

 

 

nazwa

nazwa

(par_formalne):typ_wyniku;

(par_formalne):typ_wyniku;

część opisowa (deklaracje zmiennych lokalnych)

część opisowa (deklaracje zmiennych lokalnych)

BEGIN

BEGIN

część wykonawcza (musi zawierać instrukcję 

część wykonawcza (musi zawierać instrukcję 

nazwa:=wartość;

nazwa:=wartość;

)

)

END;

END;

background image

 

 

 

 

Funkcje

Funkcje

gdzie 

gdzie 

nazwa 

nazwa 

jest dowolną unikalną w 

jest dowolną unikalną w 

danym programie, poprawną nazwą 

danym programie, poprawną nazwą 

w

w

 

 

 języku PASCAL, 

 języku PASCAL, 

par_formalne 

par_formalne 

 to wykaz zmiennych 

 to wykaz zmiennych 

określający typ i ilość danych 

określający typ i ilość danych 

potrzebnych do wykonania

potrzebnych do wykonania

 

 

background image

 

 

 

 

Funkcje

Funkcje

przy deklaracji segmentu 

przy deklaracji segmentu 

FUNCTION

FUNCTION

 

 

należy pamiętać:

należy pamiętać:

1.

1.

o zadeklarowaniu typu wyniku w 

o zadeklarowaniu typu wyniku w 

nagłówku funkcji

nagłówku funkcji

2.

2.

o podstawieniu otrzymanego 

o podstawieniu otrzymanego 

wyniku pod nazwę segmentu w 

wyniku pod nazwę segmentu w 

treści funkcji

treści funkcji

background image

 

 

 

 

Funkcje

Funkcje

wywołanie segmentu 

wywołanie segmentu 

FUNCTION

FUNCTION

 nie 

 nie 

jest instrukcją, zatem musi wchodzić 

jest instrukcją, zatem musi wchodzić 

w skład innej instrukcji

w skład innej instrukcji

wywołanie ma postać: 

wywołanie ma postać: 

nazwa

nazwa

(

(

par_aktualne

par_aktualne

)

)

par_aktualne 

par_aktualne 

muszą być zgodne z 

muszą być zgodne z 

par_formalne 

par_formalne 

co do ilości, kolejności i 

co do ilości, kolejności i 

typu

typu

background image

 

 

 

 

Procedury

Procedury

deklaracja procedury:

deklaracja procedury:

PROCEDURE

PROCEDURE

 

 

nazwa

nazwa

(

(

lista

lista

_

_

par_formalnych

par_formalnych

);

);

część opisowa

część opisowa

BEGIN

BEGIN

część wykonawcza

część wykonawcza

END;

END;

background image

 

 

 

 

Procedury

Procedury

lista

lista

_

_

par_formalnych

par_formalnych

 zawiera 

 zawiera 

zarówno dane, jak i wyniki

zarówno dane, jak i wyniki

dane (w procedurze nie ulegają 

dane (w procedurze nie ulegają 

zmianie ich wartości) wymienione są 

zmianie ich wartości) wymienione są 

w postaci: 

w postaci: 

zm1:typ1; zm2:typ2;...

zm1:typ1; zm2:typ2;...

wyniki ( wartości tych zmiennych są 

wyniki ( wartości tych zmiennych są 

określane wewnątrz procedury) 

określane wewnątrz procedury) 

poprzedzane muszą być słowem 

poprzedzane muszą być słowem 

kluczowym 

kluczowym 

VAR 

VAR 

VAR

VAR

 wy1:typ1;... 

 wy1:typ1;... 

background image

 

 

 

 

Procedury

Procedury

wywołanie procedury jest instrukcją:

wywołanie procedury jest instrukcją:

nazwa_procedury

nazwa_procedury

(lista_par_aktualn);

(lista_par_aktualn);

lista_par_aktualn

lista_par_aktualn

 musi być zgodna z 

 musi być zgodna z 

lista_par_formalnych

lista_par_formalnych

 co do ilości, 

 co do ilości, 

kolejności i typów danych oraz 

kolejności i typów danych oraz 

wyników

wyników

background image

 

 

 

 

Typ rekordowy

Typ rekordowy

rekordem nazywa się złożoną 

rekordem nazywa się złożoną 

strukturę danych, której składowe 

strukturę danych, której składowe 

zwane polami mogą należeć do 

zwane polami mogą należeć do 

różnych typów

różnych typów

background image

 

 

 

 

Typ rekordowy

Typ rekordowy

definicja typu rekordowego określa 

definicja typu rekordowego określa 

typ i identyfikator dla każdego pola:

typ i identyfikator dla każdego pola:

TYPE nazwa_typu=RECORD

TYPE nazwa_typu=RECORD

lista_deklaracji_pol

lista_deklaracji_pol

END;

END;

 

 

każda z deklaracji pól ma postać:

każda z deklaracji pól ma postać:

nazwy_pol:typ;

nazwy_pol:typ;

background image

 

 

 

 

Typ rekordowy

Typ rekordowy

odwołanie się do pola rekordu:

odwołanie się do pola rekordu:

 

 

zm_rekordowa.identyf_pola

zm_rekordowa.identyf_pola

instrukcja wiążąca upraszcza sposób 

instrukcja wiążąca upraszcza sposób 

odwołania się do pola rekordu

odwołania się do pola rekordu

postać:

postać:

WITH zm_rekordowa  DO 

WITH zm_rekordowa  DO 

instrukcje

instrukcje

;

;

wewnątrz, w 

wewnątrz, w 

instrukcjach

instrukcjach

 można 

 można 

używać tylko nazw pól

używać tylko nazw pól

background image

 

 

 

 

Moduł

Moduł

podstawa programowania modularnego

podstawa programowania modularnego

służy do grupowania funkcji i procedur w  

służy do grupowania funkcji i procedur w  

biblioteki

biblioteki

nie stanowi samoistnego programu

nie stanowi samoistnego programu

jego użycie w programie wymaga 

jego użycie w programie wymaga 

deklaracji USES

deklaracji USES

po zadeklarowaniu modułu w danym 

po zadeklarowaniu modułu w danym 

programie dostępny jest każdy obiekt w 

programie dostępny jest każdy obiekt w 

nim zadeklarowany, kazda funkcja i 

nim zadeklarowany, kazda funkcja i 

procedura w nim zawarta

procedura w nim zawarta

background image

 

 

 

 

Ogólna postać modułu

Ogólna postać modułu

UNIT nazwa_modułu;

UNIT nazwa_modułu;

cześć opisowa;

cześć opisowa;

część implementacyjna;

część implementacyjna;

część inicjująca;

część inicjująca;

END.

END.

background image

 

 

 

 

Moduł

Moduł

kropka kończy moduł

kropka kończy moduł

nazwa modułu musi być unikalna

nazwa modułu musi być unikalna

obiekty zadeklarowane w module w 

obiekty zadeklarowane w module w 

części opisowej będą dostępne w 

części opisowej będą dostępne w 

programie lub innym module 

programie lub innym module 

wykorzystującym dany moduł

wykorzystującym dany moduł

background image

 

 

 

 

Postać modułu

Postać modułu

INTERFACE

INTERFACE

dekl_modulow;

dekl_modulow;

def_literalow;

def_literalow;

def_typow;

def_typow;

dekl_zmiennych;

dekl_zmiennych;

lista_naglowkow_proc_i_fun; - 

lista_naglowkow_proc_i_fun; - 

wszystkie, które występują w części 

wszystkie, które występują w części 

implementacyjnej

implementacyjnej

background image

 

 

 

 

Postać modułu

Postać modułu

IMPLEMENTATION

IMPLEMENTATION

{umieszczamy tu deklaracje lokalnych 

{umieszczamy tu deklaracje lokalnych 

obiektów, niedostępnych w 

obiektów, niedostępnych w 

programie}

programie}

{opisy funkcji i procedur}

{opisy funkcji i procedur}

{nagłówki mogą być bez parametrów}

{nagłówki mogą być bez parametrów}

część inicjująca;

część inicjująca;

END.

END.

background image

 

 

 

 

Współpraca z plikami

Współpraca z plikami

do obsługi fizycznych zbiorów danych 

do obsługi fizycznych zbiorów danych 

stosuje się pliki

stosuje się pliki

plik jest logicznym modelem zbioru 

plik jest logicznym modelem zbioru 

danych

danych

każdy plik składa się z elementów 

każdy plik składa się z elementów 

tego samego typu

tego samego typu

elementy pliku posiadają swoje 

elementy pliku posiadają swoje 

numery porządkowe (zaczynające się 

numery porządkowe (zaczynające się 

od 0)

od 0)

background image

 

 

 

 

Współpraca z plikami

Współpraca z plikami

pliki przetwarza się sekwencyjnie

pliki przetwarza się sekwencyjnie

wszelkie operacje na plikach mogą 

wszelkie operacje na plikach mogą 

być wykonywane jedynie za pomocą 

być wykonywane jedynie za pomocą 

procedur standardowych

procedur standardowych

dostęp do pliku uzyskuje się za 

dostęp do pliku uzyskuje się za 

pomocą zmiennej plikowej - zmiennej 

pomocą zmiennej plikowej - zmiennej 

deklarowanej jako zmienna 

deklarowanej jako zmienna 

odpowiedniego typu plikowego

odpowiedniego typu plikowego

background image

 

 

 

 

Typ plikowy

Typ plikowy

W Turbo Pascalu rozróżniamy trzy 

W Turbo Pascalu rozróżniamy trzy 

klasy plików:

klasy plików:

zdefiniowane

zdefiniowane

tekstowe

tekstowe

niezdefiniowane

niezdefiniowane

background image

 

 

 

 

Zdefiniowane

Zdefiniowane

definicja typu dla plików 

definicja typu dla plików 

zdefiniowanych:

zdefiniowanych:

TYPE id_pliku = FILE OF opis_typu_el;

TYPE id_pliku = FILE OF opis_typu_el;

typ elemntów nie może być typu 

typ elemntów nie może być typu 

plikowego

plikowego

Przykład:

Przykład:

TYPE 

TYPE 

liczby=FILE OF REAL;

liczby=FILE OF REAL;

background image

 

 

 

 

Tekstowe

Tekstowe

dla plików tekstowych jest 

dla plików tekstowych jest 

predefiniowany typ 

predefiniowany typ 

TEXT

TEXT

elementami plików tekstowych są 

elementami plików tekstowych są 

wiersze zakończone parą znaków 

wiersze zakończone parą znaków 

sterujących 

sterujących 

CR/LF

CR/LF

po ostatnim wierszu występuje

po ostatnim wierszu występuje

 

 

CTRL Z

CTRL Z

Przykład

Przykład

 

 

TYPE blog=TEXT;

TYPE blog=TEXT;

background image

 

 

 

 

Niezdefiniowane

Niezdefiniowane

dla plików niezdefiniowanych 

dla plików niezdefiniowanych 

TYPE id_pliku = FILE;

TYPE id_pliku = FILE;

background image

 

 

 

 

SKOJARZENIE PLIKU Z FIZYCZNYM 

ZBIOREM DANYCH

CZĘŚĆ 
OPISOWA

OPIS ZMIENNEJ PLIKOWEJ

OTWARCIE PLIKU

WYKONANIE OPERACJI NA PLIKU

ZAMKNIĘCIE PLIKU

CZĘŚĆ 
WYKONAWCZA

ETAPY PRZETWARZANIA PLIKU

background image

 

 

 

 

Przetwarzanie plików

Przetwarzanie plików

w części opisowej należy 

w części opisowej należy 

zadeklarować zmienna plikową jako 

zadeklarować zmienna plikową jako 

zmienną odpowiedniego typu 

zmienną odpowiedniego typu 

plikowego – tego samego jak plik, 

plikowego – tego samego jak plik, 

który ma reprezentować

który ma reprezentować

zmienna typu plikowego tekstowego 

zmienna typu plikowego tekstowego 

nie może obsługiwać pliku np.z 

nie może obsługiwać pliku np.z 

elementami typu rzeczywistego, 

elementami typu rzeczywistego, 

gdyż będą potraktowane  jako tekst

gdyż będą potraktowane  jako tekst

background image

 

 

 

 

Typ  plikowy

Typ  plikowy

Polecenia realizujące poszczególne 

Polecenia realizujące poszczególne 

etapy współpracy z plikami:

etapy współpracy z plikami:

1.

1.

ASSIGN(zm_plik, łańcuch);

ASSIGN(zm_plik, łańcuch);

zm_plik – zmienna plikowa 

zm_plik – zmienna plikowa 

odpowiedniego typu

odpowiedniego typu

łańcuch – określa fizyczny zbiór danych 

łańcuch – określa fizyczny zbiór danych 

(nie więcej niż 79 znaków)

(nie więcej niż 79 znaków)

2.

2.

Plik o podanym identyfikatorze nie 

Plik o podanym identyfikatorze nie 

może być 

może być 

otwarty

otwarty

!!!

!!!

background image

 

 

 

 

Typ plikowy

Typ plikowy

za pomocą tej procedury można 

za pomocą tej procedury można 

skojarzyć zmienną plikową z:

skojarzyć zmienną plikową z:

klawiaturą    

klawiaturą    

‘CON’,

‘CON’,

 

 

ekranem monitora   

ekranem monitora   

‘CON’,

‘CON’,

 

 

drukarkami     

drukarkami     

’LPT1’,...,’LPT3’

’LPT1’,...,’LPT3’

 

 

portami we/wy    

portami we/wy    

‘COM1’, ‘COM2’

‘COM1’, ‘COM2’

zbiorem danych znajdującym się na 

zbiorem danych znajdującym się na 

dyskach wymiennych   

dyskach wymiennych   

‘ścieżka dostępu’

‘ścieżka dostępu’

background image

 

 

 

 

Przykłady

Przykłady

TYPE plik=FILE OF INTEGER;

TYPE plik=FILE OF INTEGER;

VAR pl1:plik;

VAR pl1:plik;

BEGIN

BEGIN

ASSIGN(pl1, ‘c:\przyklady\dane.txt’);

ASSIGN(pl1, ‘c:\przyklady\dane.txt’);

END;

END;

background image

 

 

 

 

Typ plikowy

Typ plikowy

W zależności od przesyłania 

W zależności od przesyłania 

elementów do lub z pliku są trzy 

elementów do lub z pliku są trzy 

standardowe procedury jego 

standardowe procedury jego 

otwierania

otwierania

REWRITE

REWRITE

RESET

RESET

APPEND

APPEND

background image

 

 

 

 

Otwieranie pliku

Otwieranie pliku

gdy chcemy, aby plik zdefiniowany 

gdy chcemy, aby plik zdefiniowany 

lub tekstowy został stworzony 

lub tekstowy został stworzony 

używamy procedury

używamy procedury

REWRITE (zm_plik);

REWRITE (zm_plik);

dla plików niezdefiniowanych

dla plików niezdefiniowanych

REWRITE(zm_plik, rozmiar_pliku);

REWRITE(zm_plik, rozmiar_pliku);

jeśli nie podamy rozmiaru, to jest 

jeśli nie podamy rozmiaru, to jest 

przyjmowane 128 bajtów

przyjmowane 128 bajtów

background image

 

 

 

 

REWRITE

REWRITE

użycie procedury 

użycie procedury 

REWRITE

REWRITE

 powoduje:

 powoduje:

 

 

utworzenie pustego pliku w miejscu 

utworzenie pustego pliku w miejscu 

określonym w 

określonym w 

ASSIGN

ASSIGN

otworzenie nowoutworzonego pliku 

otworzenie nowoutworzonego pliku 

do zapisu/odczytu

do zapisu/odczytu

 

 

UWAGA!!!

UWAGA!!!

 procedura zastosowana 

 procedura zastosowana 

do istniejącego pliku kasuje jego 

do istniejącego pliku kasuje jego 

zawartość

zawartość

background image

 

 

 

 

RESET

RESET

Plik już istniejący otwiera procedura

Plik już istniejący otwiera procedura

RESET(zm_plik);

RESET(zm_plik);

lub

lub

RESET(zm_plik, rozmiar);

RESET(zm_plik, rozmiar);

dla plików niezdefiniowanych

dla plików niezdefiniowanych

background image

 

 

 

 

Otwarcie pliku

Otwarcie pliku

procedura ta umieszcza wskaźnik 

procedura ta umieszcza wskaźnik 

pliku na pierwszym elemencie

pliku na pierwszym elemencie

do otwarcia pliku tekstowego, aby 

do otwarcia pliku tekstowego, aby 

dopisać do zapamiętanego tekstu 

dopisać do zapamiętanego tekstu 

ciąg dalszy służy procedura:

ciąg dalszy służy procedura:

APPEND(zm_plik);

APPEND(zm_plik);

background image

 

 

 

 

Zamknięcie pliku

Zamknięcie pliku

zamknięcie pliku powoduje procedura

zamknięcie pliku powoduje procedura

CLOSE(zm_plik);

CLOSE(zm_plik);

zamknięcie pliku jest praktycznie 

zamknięcie pliku jest praktycznie 

jedynym sposobem na bezpieczne 

jedynym sposobem na bezpieczne 

zapisanie w nim wszystkich danych

zapisanie w nim wszystkich danych

po zamknięciu pliku zmienną plikową 

po zamknięciu pliku zmienną plikową 

można skojarzyć z innym zbiorem 

można skojarzyć z innym zbiorem 

danych

danych

background image

 

 

 

 

Zapis elementów do pliku

Zapis elementów do pliku

Zapis elementów do pliku realizują 

Zapis elementów do pliku realizują 

następujące procedury:

następujące procedury:

dla plików zdefiniowanych

dla plików zdefiniowanych

WRITE(zm_plik, lista_argumentów)

WRITE(zm_plik, lista_argumentów)

dla plików tekstowych

dla plików tekstowych

WRITELN(zm_plik, lista_argumentów)

WRITELN(zm_plik, lista_argumentów)

background image

 

 

 

 

Zapis do pliku

Zapis do pliku

dla plików niezdefiniowanych

dla plików niezdefiniowanych

BLOCKWRITE(zm_plik, bufor, licznik);

BLOCKWRITE(zm_plik, bufor, licznik);

lub

lub

BLOCKWRITE(zm_plik,bufor, licznik, wynik);

BLOCKWRITE(zm_plik,bufor, licznik, wynik);

gdzie

gdzie

licznik

licznik

- max liczba zapisów

- max liczba zapisów

bufor

bufor

- nazwa zmiennej, której pierwszy bajt 

- nazwa zmiennej, której pierwszy bajt 

jest początkiem zapisu

jest początkiem zapisu

wynik –

wynik –

 zmienna zawierająca ilość 

 zmienna zawierająca ilość 

dokonanych zapisów

dokonanych zapisów

background image

 

 

 

 

Odczytywanie elementów z 

Odczytywanie elementów z 

pliku

pliku

dla plików zdefiniowanych

dla plików zdefiniowanych

READ(zm_plik, el_wejsciowe);

READ(zm_plik, el_wejsciowe);

dla plików tekstowych

dla plików tekstowych

READLN(zm-plik, el_wejsciowe);

READLN(zm-plik, el_wejsciowe);

dla plików niezdefiniowanych

dla plików niezdefiniowanych

BLOCKREAD(zm_plik, bufor, licznik);

BLOCKREAD(zm_plik, bufor, licznik);

lub

lub

BLOCKREAD(zm_plik, bufor, licznik, wynik)

BLOCKREAD(zm_plik, bufor, licznik, wynik)

background image

 

 

 

 

Przykład

Przykład

Zapisanie tekstu wprowadzanego z 

Zapisanie tekstu wprowadzanego z 

klawiatury na dyskietkę

klawiatury na dyskietkę

PROGRAM pliki1;

PROGRAM pliki1;

VAR txt:STRING;     pl:TEXT;

VAR txt:STRING;     pl:TEXT;

BEGIN

BEGIN

ASSIGN(pl,’A:teksty.TXT’);

ASSIGN(pl,’A:teksty.TXT’);

REWRITE(pl); 

REWRITE(pl); 

WRITE(‘NAPISZ TEKST MAX 256 ZNAKÓW’);

WRITE(‘NAPISZ TEKST MAX 256 ZNAKÓW’);

WRITELN;

WRITELN;

READLN(txt);      WRITELN(pl,txt);

READLN(txt);      WRITELN(pl,txt);

CLOSE(pl):

CLOSE(pl):

END.

END.

background image

 

 

 

 

Przykład

Przykład

Wydrukować na drukarce tekst zapisany w pliku 

Wydrukować na drukarce tekst zapisany w pliku 

poprzednim

poprzednim

PROGRAM PLIKI2;

PROGRAM PLIKI2;

VAR txt:STRING;

VAR txt:STRING;

pl:TEXT;

pl:TEXT;

BEGIN  ASSIGN(pl,’A:tekst.txt’);

BEGIN  ASSIGN(pl,’A:tekst.txt’);

RESET(PL);  READLN(PL,txt);

RESET(PL);  READLN(PL,txt);

CLOSE(PL);  ASSIGN(pl,’LPT1’);

CLOSE(PL);  ASSIGN(pl,’LPT1’);

REWRITE(pl);  WRITELN(pl,txt);

REWRITE(pl);  WRITELN(pl,txt);

CLOSE(pl);

CLOSE(pl);

END.

END.

background image

 

 

 

 

Procedury współpracujące z 

Procedury współpracujące z 

systemem operacyjnym

systemem operacyjnym

ChDir(łańcuch);  - zmiana katalogu 

ChDir(łańcuch);  - zmiana katalogu 

aktualnego

aktualnego

MkDir(łańcuch); - utworzenie 

MkDir(łańcuch); - utworzenie 

katalogu

katalogu

RmDir(łańcuch);-  skasowanie 

RmDir(łańcuch);-  skasowanie 

katalogu

katalogu

background image

 

 

 

 

Procedury współpracujące z 

Procedury współpracujące z 

systemem operacyjnym

systemem operacyjnym

Po procedurze CLOSE(zm_plik);

Po procedurze CLOSE(zm_plik);

Erase(zm_plik); - skasowanie pliku 

Erase(zm_plik); - skasowanie pliku 

skojarzonego ze zmienną plikową

skojarzonego ze zmienną plikową

Rename(zm_plik, łańcuch); - zmiana 

Rename(zm_plik, łańcuch); - zmiana 

nazwy skojarzonej ze zmienną 

nazwy skojarzonej ze zmienną 

plikową na podaną w ‘łańcuch’

plikową na podaną w ‘łańcuch’

background image

 

 

 

 

Procedury współpracujące z 

Procedury współpracujące z 

systemem operacyjnym

systemem operacyjnym

Eof(zm_plik); - TRUE gdy koniec pliku

Eof(zm_plik); - TRUE gdy koniec pliku

Eoln(zm_plik); - TRUE gdy na znaku końca 

Eoln(zm_plik); - TRUE gdy na znaku końca 

wiersza

wiersza

FilePos(zm_plik); - pozycja wskaźnika w 

FilePos(zm_plik); - pozycja wskaźnika w 

pliku

pliku

FileSize(zm_plik); - ilość element.ów w 

FileSize(zm_plik); - ilość element.ów w 

pliku

pliku

Seek(zm_plik, numer); - określa nr 

Seek(zm_plik, numer); - określa nr 

elementu, na którym ma być wskaźnik

elementu, na którym ma być wskaźnik


Document Outline