pas3

background image

PASCAL (3)

PASCAL (3)

dr Anna Kwiatkowska

dr Anna Kwiatkowska

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


Wyszukiwarka

Podobne podstrony:
pas3
Zgarniarka pas3
cw09 pas3
Zgarniarka pas

więcej podobnych podstron