Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

PASCAL (3) dr Anna Kwiatkowska. Funkcje ujęcie pewnych działań w osobną strukturę programistyczną ujęcie pewnych działań w osobną strukturę programistyczną

Podobne prezentacje


Prezentacja na temat: "PASCAL (3) dr Anna Kwiatkowska. Funkcje ujęcie pewnych działań w osobną strukturę programistyczną ujęcie pewnych działań w osobną strukturę programistyczną"— Zapis prezentacji:

1 PASCAL (3) dr Anna Kwiatkowska

2 Funkcje ujęcie pewnych działań w osobną strukturę programistyczną ujęcie pewnych działań w osobną strukturę programistyczną stosuje się, gdy stosuje się, gdy 1. pewne czynności w algorytmie w różnych miejscach powtarzają się 2. ich wynikiem jest jedna wartość 3. chcemy zwiększyć przejrzystość programu

3 Funkcje deklaracja funkcji (segment FUNCTION): deklaracja funkcji (segment FUNCTION): FUNCTION nazwa(par_formalne):typ_wyniku; część opisowa (deklaracje zmiennych lokalnych) BEGIN część wykonawcza (musi zawierać instrukcję nazwa:=wartość;) END;

4 Funkcje gdzie nazwa jest dowolną unikalną w danym programie, poprawną nazwą w języku PASCAL, gdzie nazwa jest dowolną unikalną w danym programie, poprawną nazwą w języku PASCAL, par_formalne to wykaz zmiennych określający typ i ilość danych potrzebnych do wykonania par_formalne to wykaz zmiennych określający typ i ilość danych potrzebnych do wykonania

5 Funkcje przy deklaracji segmentu FUNCTION należy pamiętać: przy deklaracji segmentu FUNCTION należy pamiętać: 1. o zadeklarowaniu typu wyniku w nagłówku funkcji 2. o podstawieniu otrzymanego wyniku pod nazwę segmentu w treści funkcji

6 Funkcje wywołanie segmentu FUNCTION nie jest instrukcją, zatem musi wchodzić w skład innej instrukcji wywołanie segmentu FUNCTION nie jest instrukcją, zatem musi wchodzić w skład innej instrukcji wywołanie ma postać: nazwa(par_aktualne) wywołanie ma postać: nazwa(par_aktualne) par_aktualne muszą być zgodne z par_formalne co do ilości, kolejności i typu par_aktualne muszą być zgodne z par_formalne co do ilości, kolejności i typu

7 Procedury deklaracja procedury: deklaracja procedury: PROCEDURE nazwa(lista_par_formalnych); część opisowa BEGIN część wykonawcza END;

8 Procedury lista_par_formalnych zawiera zarówno dane, jak i wyniki lista_par_formalnych zawiera zarówno dane, jak i wyniki dane (w procedurze nie ulegają zmianie ich wartości) wymienione są w postaci: zm1:typ1; zm2:typ2;... dane (w procedurze nie ulegają zmianie ich wartości) wymienione są w postaci: zm1:typ1; zm2:typ2;... wyniki ( wartości tych zmiennych są określane wewnątrz procedury) poprzedzane muszą być słowem kluczowym VAR : VAR wy1:typ1;... wyniki ( wartości tych zmiennych są określane wewnątrz procedury) poprzedzane muszą być słowem kluczowym VAR : VAR wy1:typ1;...

9 Procedury wywołanie procedury jest instrukcją: wywołanie procedury jest instrukcją: nazwa_procedury(lista_par_aktualn); lista_par_aktualn musi być zgodna z lista_par_formalnych co do ilości, kolejności i typów danych oraz wyników lista_par_aktualn musi być zgodna z lista_par_formalnych co do ilości, kolejności i typów danych oraz wyników

10 Typ rekordowy rekordem nazywa się złożoną strukturę danych, której składowe zwane polami mogą należeć do różnych typów rekordem nazywa się złożoną strukturę danych, której składowe zwane polami mogą należeć do różnych typów

11 Typ rekordowy definicja typu rekordowego określa typ i identyfikator dla każdego pola: definicja typu rekordowego określa typ i identyfikator dla każdego pola: TYPE nazwa_typu=RECORD lista_deklaracji_polEND; każda z deklaracji pól ma postać: każda z deklaracji pól ma postać:nazwy_pol:typ;

12 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 odwołania się do pola rekordu instrukcja wiążąca upraszcza sposób odwołania się do pola rekordu postać: postać: WITH zm_rekordowa DO instrukcje; wewnątrz, w instrukcjach można używać tylko nazw pól wewnątrz, w instrukcjach można używać tylko nazw pól

13 Moduł podstawa programowania modularnego podstawa programowania modularnego służy do grupowania funkcji i procedur w biblioteki służy do grupowania funkcji i procedur w biblioteki nie stanowi samoistnego programu nie stanowi samoistnego programu jego użycie w programie wymaga deklaracji USES jego użycie w programie wymaga deklaracji USES po zadeklarowaniu modułu w danym programie dostępny jest każdy obiekt w nim zadeklarowany, kazda funkcja i procedura w nim zawarta po zadeklarowaniu modułu w danym programie dostępny jest każdy obiekt w nim zadeklarowany, kazda funkcja i procedura w nim zawarta

14 Ogólna postać modułu UNIT nazwa_modułu; cześć opisowa; część implementacyjna; część inicjująca; END.

15 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 części opisowej będą dostępne w programie lub innym module wykorzystującym dany moduł obiekty zadeklarowane w module w części opisowej będą dostępne w programie lub innym module wykorzystującym dany moduł

16 Postać modułu INTERFACEdekl_modulow;def_literalow;def_typow;dekl_zmiennych; lista_naglowkow_proc_i_fun; - wszystkie, które występują w części implementacyjnej

17 Postać modułu IMPLEMENTATION {umieszczamy tu deklaracje lokalnych obiektów, niedostępnych w programie} {opisy funkcji i procedur} {nagłówki mogą być bez parametrów} część inicjująca; END.

18 Współpraca z plikami do obsługi fizycznych zbiorów danych stosuje się pliki do obsługi fizycznych zbiorów danych stosuje się pliki plik jest logicznym modelem zbioru danych plik jest logicznym modelem zbioru danych każdy plik składa się z elementów tego samego typu każdy plik składa się z elementów tego samego typu elementy pliku posiadają swoje numery porządkowe (zaczynające się od 0) elementy pliku posiadają swoje numery porządkowe (zaczynające się od 0)

19 Współpraca z plikami pliki przetwarza się sekwencyjnie pliki przetwarza się sekwencyjnie wszelkie operacje na plikach mogą być wykonywane jedynie za pomocą procedur standardowych wszelkie operacje na plikach mogą być wykonywane jedynie za pomocą procedur standardowych dostęp do pliku uzyskuje się za pomocą zmiennej plikowej - zmiennej deklarowanej jako zmienna odpowiedniego typu plikowego dostęp do pliku uzyskuje się za pomocą zmiennej plikowej - zmiennej deklarowanej jako zmienna odpowiedniego typu plikowego

20 Typ plikowy W Turbo Pascalu rozróżniamy trzy klasy plików: zdefiniowane zdefiniowane tekstowe tekstowe niezdefiniowane niezdefiniowane

21 Zdefiniowane definicja typu dla plików zdefiniowanych: definicja typu dla plików zdefiniowanych: TYPE id_pliku = FILE OF opis_typu_el; typ elemntów nie może być typu plikowego typ elemntów nie może być typu plikowego Przykład: Przykład:TYPE liczby=FILE OF REAL;

22 Tekstowe dla plików tekstowych jest predefiniowany typ TEXT dla plików tekstowych jest predefiniowany typ TEXT elementami plików tekstowych są wiersze zakończone parą znaków sterujących CR/LF elementami plików tekstowych są wiersze zakończone parą znaków sterujących 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;

23 Niezdefiniowane dla plików niezdefiniowanych dla plików niezdefiniowanych TYPE id_pliku = FILE;

24 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

25 Przetwarzanie plików w części opisowej należy zadeklarować zmienna plikową jako zmienną odpowiedniego typu plikowego – tego samego jak plik, który ma reprezentować w części opisowej należy zadeklarować zmienna plikową jako zmienną odpowiedniego typu plikowego – tego samego jak plik, który ma reprezentować zmienna typu plikowego tekstowego nie może obsługiwać pliku np.z elementami typu rzeczywistego, gdyż będą potraktowane jako tekst zmienna typu plikowego tekstowego nie może obsługiwać pliku np.z elementami typu rzeczywistego, gdyż będą potraktowane jako tekst

26 Typ plikowy Polecenia realizujące poszczególne etapy współpracy z plikami: 1. ASSIGN(zm_plik, łańcuch); zm_plik – zmienna plikowa odpowiedniego typu zm_plik – zmienna plikowa odpowiedniego typu łańcuch – określa fizyczny zbiór danych (nie więcej niż 79 znaków) łańcuch – określa fizyczny zbiór danych (nie więcej niż 79 znaków) 2. Plik o podanym identyfikatorze nie może być otwarty!!!

27 Typ plikowy za pomocą tej procedury można skojarzyć zmienną plikową z: za pomocą tej procedury można skojarzyć zmienną plikową z: –klawiaturą CON, –ekranem monitora CON, –drukarkami LPT1,...,LPT3 –portami we/wy COM1, COM2 –zbiorem danych znajdującym się na dyskach wymiennych ścieżka dostępu

28 Przykłady TYPE plik=FILE OF INTEGER; VAR pl1:plik; BEGIN ASSIGN(pl1, c:\przyklady\dane.txt); …END;

29 Typ plikowy W zależności od przesyłania elementów do lub z pliku są trzy standardowe procedury jego otwierania W zależności od przesyłania elementów do lub z pliku są trzy standardowe procedury jego otwierania –REWRITE –RESET –APPEND

30 Otwieranie pliku gdy chcemy, aby plik zdefiniowany lub tekstowy został stworzony używamy procedury gdy chcemy, aby plik zdefiniowany lub tekstowy został stworzony używamy procedury REWRITE (zm_plik); dla plików niezdefiniowanych dla plików niezdefiniowanych REWRITE(zm_plik, rozmiar_pliku); –jeśli nie podamy rozmiaru, to jest przyjmowane 128 bajtów

31 REWRITE użycie procedury REWRITE powoduje: utworzenie pustego pliku w miejscu określonym w ASSIGN utworzenie pustego pliku w miejscu określonym w ASSIGN otworzenie nowoutworzonego pliku do zapisu/odczytu otworzenie nowoutworzonego pliku do zapisu/odczytu UWAGA!!! procedura zastosowana do istniejącego pliku kasuje jego zawartość UWAGA!!! procedura zastosowana do istniejącego pliku kasuje jego zawartość

32 RESET Plik już istniejący otwiera procedura Plik już istniejący otwiera proceduraRESET(zm_plik);lub RESET(zm_plik, rozmiar); dla plików niezdefiniowanych

33 Otwarcie pliku procedura ta umieszcza wskaźnik pliku na pierwszym elemencie procedura ta umieszcza wskaźnik pliku na pierwszym elemencie do otwarcia pliku tekstowego, aby dopisać do zapamiętanego tekstu ciąg dalszy służy procedura: do otwarcia pliku tekstowego, aby dopisać do zapamiętanego tekstu ciąg dalszy służy procedura:APPEND(zm_plik);

34 Zamknięcie pliku zamknięcie pliku powoduje procedura zamknięcie pliku powoduje proceduraCLOSE(zm_plik); zamknięcie pliku jest praktycznie jedynym sposobem na bezpieczne zapisanie w nim wszystkich danych zamknięcie pliku jest praktycznie jedynym sposobem na bezpieczne zapisanie w nim wszystkich danych po zamknięciu pliku zmienną plikową można skojarzyć z innym zbiorem danych po zamknięciu pliku zmienną plikową można skojarzyć z innym zbiorem danych

35 Zapis elementów do pliku Zapis elementów do pliku realizują następujące procedury: dla plików zdefiniowanych dla plików zdefiniowanych WRITE(zm_plik, lista_argumentów) dla plików tekstowych dla plików tekstowych WRITELN(zm_plik, lista_argumentów)

36 Zapis do pliku dla plików niezdefiniowanych dla plików niezdefiniowanych BLOCKWRITE(zm_plik, bufor, licznik); lub BLOCKWRITE(zm_plik,bufor, licznik, wynik); gdzie licznik- max liczba zapisów bufor- nazwa zmiennej, której pierwszy bajt jest początkiem zapisu wynik – zmienna zawierająca ilość dokonanych zapisów

37 Odczytywanie elementów z pliku dla plików zdefiniowanych dla plików zdefiniowanych READ(zm_plik, el_wejsciowe); dla plików tekstowych dla plików tekstowych READLN(zm-plik, el_wejsciowe); dla plików niezdefiniowanych dla plików niezdefiniowanych BLOCKREAD(zm_plik, bufor, licznik); lub BLOCKREAD(zm_plik, bufor, licznik, wynik)

38 Przykład Zapisanie tekstu wprowadzanego z klawiatury na dyskietkę PROGRAM pliki1; VAR txt:STRING; pl:TEXT; BEGINASSIGN(pl,A:teksty.TXT);REWRITE(pl); WRITE(NAPISZ TEKST MAX 256 ZNAKÓW); WRITELN; READLN(txt); WRITELN(pl,txt); CLOSE(pl): END.

39 Przykład Wydrukować na drukarce tekst zapisany w pliku poprzednim PROGRAM PLIKI2; VAR txt:STRING; pl:TEXT; BEGIN ASSIGN(pl,A:tekst.txt); RESET(PL); READLN(PL,txt); CLOSE(PL); ASSIGN(pl,LPT1); REWRITE(pl); WRITELN(pl,txt); CLOSE(pl);END.

40 Procedury współpracujące z systemem operacyjnym ChDir(łańcuch); - zmiana katalogu aktualnego ChDir(łańcuch); - zmiana katalogu aktualnego MkDir(łańcuch); - utworzenie katalogu MkDir(łańcuch); - utworzenie katalogu RmDir(łańcuch);- skasowanie katalogu RmDir(łańcuch);- skasowanie katalogu

41 Procedury współpracujące z systemem operacyjnym Po procedurze CLOSE(zm_plik); Erase(zm_plik); - skasowanie pliku skojarzonego ze zmienną plikową Erase(zm_plik); - skasowanie pliku skojarzonego ze zmienną plikową Rename(zm_plik, łańcuch); - zmiana nazwy skojarzonej ze zmienną plikową na podaną w łańcuch Rename(zm_plik, łańcuch); - zmiana nazwy skojarzonej ze zmienną plikową na podaną w łańcuch

42 Procedury współpracujące z 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 wiersza Eoln(zm_plik); - TRUE gdy na znaku końca wiersza FilePos(zm_plik); - pozycja wskaźnika w pliku FilePos(zm_plik); - pozycja wskaźnika w pliku FileSize(zm_plik); - ilość element.ów w pliku FileSize(zm_plik); - ilość element.ów w pliku Seek(zm_plik, numer); - określa nr elementu, na którym ma być wskaźnik Seek(zm_plik, numer); - określa nr elementu, na którym ma być wskaźnik


Pobierz ppt "PASCAL (3) dr Anna Kwiatkowska. Funkcje ujęcie pewnych działań w osobną strukturę programistyczną ujęcie pewnych działań w osobną strukturę programistyczną"

Podobne prezentacje


Reklamy Google