Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Spis treści 1. Podstawowe wiadomości na temat języka programowania

Podobne prezentacje


Prezentacja na temat: "Spis treści 1. Podstawowe wiadomości na temat języka programowania"— Zapis prezentacji:

1 Spis treści 1. Podstawowe wiadomości na temat języka programowania
2. Polecenia w języku Turbo Pascal 3. Symbole stosowane w sieciach działań 4. Klawisze funkcyje 5. Struktura programu w języku TURBO PASCAL 6. Zapowiedzi definicji procedury lub funkcji 7. Deklaracja typów zmiennych w języku TURBO Pascal 8. Pliki tekstowe w języku TURBO Pascal 9. Typy zmiennych 10. Procedury 11. Edycja, kompilacja i uruchamianie programów w języku TURBO PASCAL 12. Moduły w języku TURBO Pascal

2 Podstawowe wiadomości na temat języka programowania
PASCAL Język programowana Pascal (nazwa na cześć francuskiego matematyka, fizyka i filozofa Blaise Pascala) należy aktualnie do najpopularniejszych języków programowania komputerów. Powstał w 1971 roku, kiedy to NIKLOUS WIRTH zgłosił pierwszy raport tego języka. Z czasem język Pascal i wzorowana na nim notacja zaczął pełnić role języka uniwersalnego służącego nie tylko do nauki programowania, samego programowania, ale tak że do zapisywania na nim algorytmów i porozumiewania się pomiędzy specjalistami z zakresu inżynierii programowania. Wraz z powstaniem i rozwojem techniki mikrokomputerowej powstały liczne wersje języka Pascal przeznaczone specjalnie do mikrokomputerów.

3 Najpopularniejszą implementacją języka PASCAL la mikrokomputerów klasy IBM PC jest TURBO PASCAL wprowadzony na rynek w 1983 roku przez amerykańską firmę BORLAND INC. Obecnie ukazała się wersja TURBO PASCAL ver. 7,0

4 System TURBO PASCAL firmy BORLAND składa się z :
komplikatora języka TURBO PASCAL zintegrowanego, systemowego, pełnoekranowego edytora tekstu, zintegrowanego programu uruchomieniowego DEBAGER

5 Profesjonalna wersja programu systemu TURBO PASCAL ( od ver
Profesjonalna wersja programu systemu TURBO PASCAL ( od ver. 7,0 wprowadzona na rynek jako BORLAND PASCAL) zawiera dodatkowo uniwersalne systemy wspomagające programowanie w dowolnym języku firmy Borland (TURBO Pascal, Turbo C++, TURBO Asembler): TURBO DEBAGER- do śledzenia przebiegu wykonywania programów oraz lokalizacji i poprawiania błędów programowych. TURBO PROFILER- do optymalizacji (analizy efektywności) programów

6 System BORLAND PASCAL umożliwia programowanie w trzech trybach:
w systemie operacyjnym DOS w trybie adresowania rzeczywistego, w systemie operacyjnym DOS w trybie adresowania wirtualnego z ochroną, w środowisku graficznym WINDOWS

7 PASCAL POLECENIA

8 EDIT Wstawienie przed pozycją kursora tekstu ostatnio umieszczonego w notatniku Paste Usunięcie zaznaczonego bloku tekstu bez umieszczania go w notatniku Clear Wyświetlenie okienka zawierającego teksty umieszczone w notatniku Show Clipboard Skopiowanie przykład z okienka wyjaśniającego do notatnika (przykład może być zmodyfikowany i umieszczany w tekście źródłowym programu) Copy Example Skopiowanie wyróżnionego bloku tekstu do notatnika Copy Usunięcie wyróżnionego bloku tekstu i umieszczenie go w notatniku (buforze powielania) Cut <Shift><Del> Odtworzenie ostatniego wiersza, który był poddany edyji Restore Line

9 SEARCH Zlokalizowanie błędu wykonania programu Find terror…
Wyświetlenie tekstu procedury o podanej nazwie (polecenie może być wykonane tylko podczas uruchamiania programu) Find procedure… Przeniesienie kursora do wiersza o podanym numerze Go to line numer… Powtórzenie ostatnio wykonywanego polecenia Find lub Replice Serach Again… Wyświetlenie okienka dialogowego umożliwiającego odszukanie i zamianę podanego tekstu na inny Replice… Wyświetlenie okienka dialogowego umożliwiającego odszukanie podanego tekstu Find…

10 RUN Umożliwienie podania argumentów wykonywania programów takich jakie podaje się gdy jest on aktywny w systemie DOS Parameters Wykonanie najbliższej instrukcji programu. Jeśli instrukcja ta jest wywołaniem procedury, to zostanie ona wykonana w jednym kroku Steo oper [F8] Wykonanie najbliższej instrukcji programu lub wykonanie procedury Trace [F7] Zastawienie tymczasowej pułapki w wierszu wyróżnionym przez kursor, a następnie podjęcie wykonywania programu aż do wpadnięcia w pułapkę lub zakończenia Go to kursor [F4] Zakończenie uruchomienia programu, zwolnienie przydzielonej mu pamięci i zamknięcie aktywnych plików Program reset <Ctrl>[F2] Skomplikowanie programu w trybie make, a następnie wykonanie go. Przerwanie wykonania <Ctrl>-Break Run <Ctrl>[F9]

11 COMPILE Określenie nazwy pliku pierwotnego Primary File
Określenie miejsca umieszczenia kodu wynikowego (z rozszerzeniem nazwy . EXE) Menory/Dysk (pamięć/dysk) Destination Przeprowadzenie komplikacji w trybie Build Build Przeprowadzenie komplikacji w trybie Make Make [F9] Przeprowadzenie komplikacji tekstu zawartego w aktywnym okienku edycyjnym Compile <Alt>-[F9]

12 DEBUG Wyświetlenie okienka dialogowego umożliwiającego zastawienie i usuwanie pułapek warunkowych i bezwarunkowych Breakpoints Zastawienie (program będzie bezwarunkowo przerwany w wierszu w którym znajduje się kursor) lub usunięcie pułapki Toggle Breakpoint Ustawienia obserwacji <Ctrl>-[F7] Usunięcie obserwacji Modyfikacja obserwacji Usunięcie wszystkich obserwacji Add Watch Deleten Watch Edit Watch Remove All Watches Wyświetlanie menu umożliwiającego zarządzanie obserwacją wyrażeń i zmiennych Watches Wyświetlenie okienka dialogowego umożliwiającego określenie aktualnej wartości zmiennej lub wyrażenia z możliwością przypisania zmiennej nowej wartości (okienko dialogowe może być także wykorzystane jako kalkulator) Evalute/Modify

13 OPTIONS Odtworzenie uprzednio zapamiętanej konfiguracji
Retrieve Options Zapamiętanie ustalonej konfiguracji w pliku o podanej nazwie (standardowa konfiguracja zapisana jest w pliku TURBO.TP) Save Options Określenie parameró pracy zintegrowanej systemu TURBO Pascal Environment Określenie nazw katalogów,w których znajdują się pliki wynikowe , dołączane i biblioteczne. Nazwy są oddzielane średnikami Directories Określenie warunków uruchmiania programów w tym włączania do programu wykonywanego symbolicznych informacji uruchomieniowych Debugger Określenie sposobu wykonywania konsolidacji Linker Określenie rozmiarów stosu oraz minimalnego maksymalnego rozmiaru sterty Menory Size Umożliwienie ustawienia opcji komplikatora Compiler

14 WINDOWS Otwarcie specjalnego okienka zawierającego liste odwołań do procedur i funkcji Call Stack Otwarcie i uaktywnienie okienka wyjściowego do którego są kierowane wyniki dziania programów (nie dotyczy to programów graficznych) Output Otwarcie i uaktywnienie okienka rejestrów. W okienku ty, podawany jest stan rejestrów procesora istotny podczas wykonywania rozkazów maszynowych wstawianych do programu za pomocą instrukcjiasemblerowych. Register Otwarcie i uaktywnienie okienka obserwacyjnego Watch Zamknięcie aktualnego okienka i usunięcie go z ekranu Close Uaktywnienie poprzedniego okienka Previons Uaktywnienie następnego otwartego okienka Next Wyświetlenie okienek w układzie kaskadowy, Cascade Wyświetlenie okienek w układzie kartotekowym Title Powiększanie/zmniejszenie aktywnego okienka Zoom Zmiana pozycji i rozmiaru aktywnego okienka Size/More

15 Programowanie systemu komputerowego
Programowanie systemu komputerowego. Symbole stosowane w sieciach działań. Algorytmem – nazywamy zbiór reguł postępowania, mający na celu w skończonej liczbie kroków przetwarzania informacji wejściowych (danych) w informacje wyjściowe (wyniki). Raz opracowany algorytm dla danego problemu powinien służyć do rozwiązywania wszystkich problemów tej klasy, dla której został opracowany. Algorytm powinien uwzględniać wszystkie możliwe teoretyczne warianty przebiegu obliczeń zaistniałych z powodu różnego doboru danych wejściowych. Rozwiązywanie algorytmu powinno być poprzedzone analizą matematyczną zadania w oparciu o metody numeryczne. Na podstawie algorytmu układa się programy. Programem – nazywamy algorytm przetwarzania informacji zapisany w języku programowania. W praktyce programistycznej stosowane są zasadniczo dwie metody projektowania algorytmów: - metoda analityczna (zstępująca) (ang. top-down programming) – stosowana jest głównie przy projektowaniu nowych algorytmów i polega na podziale postawionego zadania na podzadania, które następnie dekomponuje się na mniejsze podzadania, aż do momentu gdy zadania cząstkowe będą na tyle małe, że ich rozwiązanie nie będzie sprawiało trudności metoda syntetyczna (wstępująca) (ang. bottom-up-programming) – stosowana jest głównie przy projektowaniu istniejących algorytmów i polega na zaprojektowaniu wszystkich potrzebnych podprogramów w celu ich późniejszej syntezy. Po zaprojektowaniu algorytmu należy udowodnić, że jest on poprawny. Przeprowadzenie dowodu poprawności algorytmu często może sprawić wiele trudności i w takim przypadku poprzestajemy na testowaniu algorytmu dla różnych danych wejściowych. Należy pamiętać, że przetestowanie algorytmu nie jest dowodem na jego poprawność za pomocą testowania można natomiast wykazać niepoprawność algorytmu.

16 Wiążąca operacja pomiędzy poszczególnymi procesami przetwarzania.
Wyjaśnienie Symbol Nazwa operacji Wiążąca operacja pomiędzy poszczególnymi procesami przetwarzania. Droga przepływu informacji. Wywołanie programu lub procesu zdefiniowanego jako program. Podprogram, proces zdefiniowany. Modyfikacja rozkazu lub grupy rozkazów powodująca zmianę w przebiegu procesu przetwarzania. Przygotowanie. Operacja określająca wybór jednej z alternatywnych dróg działania. Decyzja. Operacja, lub grupa operacji w wyniku której ulegną zmianie wartości postaci lub miejsca zapisu informacji. Przetwarzanie. Wprowadzenie lub wyprowadzenie danych. Wprowadzenie, wyprowadzenie. Oznaczenie miejsca rozpoczęcia lub przerwania działania programu. Początek, koniec lub przerwa.

17 Łącznik międzystronicowy.
Wyjaśnienie Symbol Nazwa operacji Operacja określająca wybór jednej z alternatywnych dróg (1..n) działania w zależności od wartości k={1..n} Decyzja. Wejście lub wyjście z wyodrębnionych fragmentów schematów znajdujących się na różnych stronach. Łącznik międzystronicowy. Wejście lub wyjście z wyodrębnionych fragmentów schematów znajdujących się na tej samej stronie. Łącznik stronicowy. Oznaczenie miejsca na komentarz. Komentarz. Łączenie przepływu dróg informacji Skrzyżowanie dróg przepływu informacji bez powiązania między nimi. Droga przepływu informacji ze wskazaniem kierunku. Komentarz K … N

18 Analiza matematyczna problemu:
Przykład 1. Napisać algorytm komputerowy umożliwiający rozwiązywanie trójmianów kwadratowych w postaci: Rozwiązanie: Analiza matematyczna problemu: Równanie ma dwa pierwiastki w zbiorze liczb rzeczywistych: Równanie ma jeden pierwiastek podwójny: Równanie nie ma pierwiastków w zbiorze liczb rzeczywistych. II. Algorytm komputerowy: START Algorytm programu rozwiązującego trójmian kwadratowy Pisz: „Podaj współczynniki równania A, B, C” Czytaj: A, B, C DELTA=B*B-4*A*C DELTA < 0 DELTA = 0 Pisz: „Trójmian nie ma pierwiastków w zbiorze liczb rzeczywistych 1 2 2 STOP X1=(-B-SQRT(DELTA))/2/A X2=(-B+SQRT(DELTA))/2/A Pisz: „Trójmian nie ma pierwiastków w zbiorze liczb rzeczywistych STOP

19 Klawisze Funkcyjne zakończenie sesji debuggera (usunięcie punktów kontrolnych) Ctrl F2 wyświetlenie informacji o identyfikatorze wyróżnionym przez kursor (uruchamianie pomocy kontekstowej) Ctrl F1 uaktywnienie górnego menu F10 kompilacja programu znajdującego się w bieżącym okienku F9 wykonanie bieżącej instrukcji programu. Jeśli tą instrukcją będzie wywoływanie procedury, to będzie ona wykonana w jednym kroku F8 wykonanie bieżącej instrukcji programu F7 przejście do następnego otwartego okienka F6 powiększenie/pomniejszenie aktualnego okna F5 wykonanie programu do miejsca aktualnego położenia kursora F4 wyświetlenie okienka dialogowego służącego do wczytania zbioru F3 zapisanie na dysku zbioru znajdującego się w okienku edycyjnym F2 wyświetlenie informacji pomocniczych F1 obliczenie wartości podanych zmiennych i wyrażeń Ctrl F4 wyświetlenie okienka zawierającego historię wywołań procedur i funkcji Ctrl F3

20 zlokalizowanie błędu wykonania programu
Alt F8 wyświetlenie okienka, na które wyprowadzane są wyniki programów Alt F5 zamknięcie aktywnego okienka Alt F3 wyświetlanie poprzedniego okienka zawierającego wyjaśnienia Alt F1 powtórzenie ostatniej operacji wyszukiwania lub wyszukiwania i zmiany ciągu znaków Ctrl L skopiowanie wyróżnionego tekstu do notatnika Ctrl Ins usunięcie wyróżnionego tekstu Ctrl Del kompilacja i wykonanie programu Ctrl F9 ustalenie/usunięcie bieżącego wiersza jako punktu przeważania programu (pułapki programowej). Ctrl F8 dodawanie zmiennej lub wyrażenia do okienka obserwacyjnego Ctrl F7 zmiana położenia lub rozmiaru aktywnego okienka Ctrl F5 przejście do poprzednio otwartego okna Shift F9 wyświetlenie skorowidza informacji pomocniczych Shift F1 powielenie zawartości bufora powielania w miejscu aktualnego położenia kursora w aktywnym okienku Shift Ins usunięcie zaznaczonego bloku tekstu i umieszczenie go w buforze powielania Shift Del uaktywnienie odpowiedzi Alt litera wyświetlenie okienka o podanym numerze Alt nr wyświetlenie listy otwartych okienek Alt O kompilacja programu znajdującego się w aktywnym okienku Alt F9

21 Struktura programu w języku TURBO PASCAL pod uwagę poprzez kompilator
Każdy program w języku TURBO Pascal ma następującą strukturę : (Nie wszystkie podane poniżej elementy składowe muszą wystąpić w każdym programie.) Tekst umieszczony w znakach (* *) lub { } oznacza komentarz i nie jest brany pod uwagę poprzez kompilator PROGRAM przykład; (*nagłówek ; przykład jest nazwą programu*) USES crt; (dołączenie modułów standardowych *) CONST (*deklaracja stałych*) C=’C’; L=’L’; R=500; {w tym przypadku zadeklarowano stałe C,L,R,PI} PI=3,14 TYPE (*deklaracja typów zmiennych Adres=record Nazwisko :string[16]; Imię :string[12]; Ulica :string[20]; Kod :string[6]; Miejscowość:string[20]; End; {zadeklarowano typ adres} VAR (*deklaracja zmiennych globalnych*) Plik :file of adres; L,k :Integer; {zadeklarowano zmienne plik,l,k,r,odp}

22 R :Real Odp :Char; BEGIN … END;
PROCEDURE przykładowa; (*deklaracja procedur*) VAR Zn : char; {deklaracja zmiennych lokalnych obowiązujących } {tylko wewnątrz procedury } BEGIN END; BEGIN {początek programu głównego} … {tu należy umieścić instrukcje stanowiące} … {program główny} END. {koniec programu głównego }

23 V Zapowiedzi definicji procedury lub funkcji.
Z poziomu procedury lub funkcji można wywołać inne procedury i funkcie. Definicje wywołanych podprogramów powinny się znajdować przed procedurą lub funkcjią ich wywołującą . Jeśli z różnych powodów jest to niemożliwe lub podprogramy wywołują sie nawzajem, należy zastosować deklaracje z dyrektywą standardową FORWARD. Podprogram z FORWARD uważa się za zadeklarowany, choć jego treść zostanie podana póżniej. Definicja procedury lub funkcji zadekladrowanej wcześniej jako FORWARD nie wymaga powtórnego wyszczegółowania paramatrów foramlnych ani typu wyniku funkcji (choć powtórne wyszczególnienie nie jest błędem). Przykład deklaracji funkcji z dyrektywą FORWARD PROCEDURE Nic(a,b,c:INTEGER) FORWARD; PROCEDURE SuperNic(a,b,c:INTEGER); Begin .. {tu należy umieścić treść procedury} .. END; PROCEDURE Nic; BEGIN

24 VI Przykłady definicji procedur i funkcji:
PROCEDURE Kreska; BEGIN WRITELN(‘***************’) END; Procedura bezparametrowa kreska spowoduje wyrysowanie w miejscu aktualnego położenia kursora linii składającej się z ‘’ * ‘’. PROCEDURE SuperKreska(x,y,dl: BYTE;znak:CHAR); VAR k:BYTE BEGIN FOR K:=1 to dl DO GOTOXY(x+k-l,y); WRITELN(znak) END; Procedura SuprerKreska spowoduje w rysowanie w miejscu wskazanym przez współrzędne X,Y dwoch rzędów znaków o długości dl, np. wywołanie procedury SuperKreska z parametrami : BEGIN {początek programu głównego} SuperKreska(10,12,55,’=’); END. {koniec programu głównego} spowoduje wrysowanie na ekranie monitora w punkcie początkowym o współrzędnych 10,12 lini skłądającej się z 55 znaków ‘’=’’

25 X ”0 = = = = = = = = = = = 25 Y Rys. Wygląd ekranu monitora po wywołaniu PROCEDURY SuperKreska PROCEDURE stop; BEGIN WRITELN(‘wciśnij dowolny klawisz’); REPEAT UNTIL KEYPRESSED; END; PROCEDURE stoj; BEGIN WRITELN (‘wciśnij ENTER’); READLN; END; Powyższe procedury mają podobne działanie i służą do zatrzymania wykonywania programu do czasu wciśnięcia odpowiedniego klawisza.

26 Przykłady definicji funkcji:
FUNCTION DELTA (A,B,C:REAL):REAL; BEGIN DELTA:=B*B-4*A*C; END; Funkcja DELTA wyznacza wyróżnik równania kwadratowego. FUNCTION POTEGA(X,Y:REAL):REAL; BEGIN POTEGA:=EXP(Y*LN(X)); END; Y Funkcja POTEGA oblicza X . Funkcja Lg oblicza logarytm dziesiętny liczby X FUNCTION Lg(X:REAL):REAL; BEGIN Lg:=Ln(X)/Ln(10) END; FUNCTION Log(a,b:REAL):REAL; BEGIN Log:=Ln(b)/Ln(a) END; Funkcja Log oblicza logarytm o podstawie a z liczby b

27 lub pośrednie wywoływanie tego samego podprogramu
VII. Definicjie funkcji i procedur rekurencyjne i iteracyjne. obliczanie silni metodą iteracyjną: FUNCTION SILNIA(n:BYTE):LongInt; VAR i:BYTE Iloczyn : Longint; BEGIN iloczyn:=1; IF n>1 THEN FOR i:=2 TO n DO iloczyn:=iloczyn*i; END; SILNIA:=iloczyn b) obliczanie silni metodą rekurencyjną; W procedurach i funkcjach zdefiniowanych rekurencyjnie występuje bezpośrednie lub pośrednie wywoływanie tego samego podprogramu FUNCTION SILNIA(n:BYTE):LongInt; BEGIN IF ( n=0) OR (n=1) THEN SILNIA:=1 ELSE SILNIA:=n*SILNIA(n-1); END;

28 1)Definicja iteracyjna PROCEDURY odstęp.
Poniżej przedstawiona zostanie prosta procedura służąca do wyświetlania n pustych wierszy zrealizowana w postaci iteracyjnej i rekurencyjnej. 1)Definicja iteracyjna PROCEDURY odstęp. PROCEDURE ODSTEP(n); VAR K :INTEGER; BEGIN FOR k:=N DOWNTO 1 DO WRITELN; END; 2) Definicja rekurencyjna PROCEDURY ODSTĘP. PROCEDURE ODSTEP(n); BEGIN IF n>1 THEN ODSTEP(n-1); WRITELN; END;

29 Deklaracja typów zmiennych w języku TURBO Pascal
Deklaracja typów zmiennych w języku TURBO Pascal. Każdą zmienną występującą w programie należy zadeklarować, tzn. określić jej identyfikator (nazwę) i zbiór wartości, do którego należy. Ten zbiór wartości nazywa się typem zmiennej. W języku TURBO PASCAL część typów zmiennej jest przedefiniowanych przez tworców kompilatora i wtedy ich deklaracje można umieszczać po słowie kluczowym VAR, a część musi być zdefiniowana przez użytkownika. Deklaracje typów zmiennych umieszcza się po słowie kluczowym TYPE (=>patrz struktura programu). W języku TURBO Pascal zmienne wszystkich typów z wyjątkiem typu wskaźnikowego są zmiennymi statycznymi. Dla zmiennych typu statycznego miejsce w pamięci komputera jest przydzielane podczas kompilacji deklaracji tych zmiennych. Dla zmiennych typu wskaźnikowego miejsce w pamięci komputera jest przydzielane i zwalniane w trakcie wykonywania programu, gdy jest to potrzebne. Tego typu zmienne nazywają się zmiennymi dynamicznymi.

30 Pliki tekstowe Plikami tekstowymi nazywamy pliki o strukturze wierszowej. Pod pojęciem wiersza rozumie się dowolną sekwencje znaków zakończoną znacznikiem końca wiersza EOL(ang. End Of Line), któremu odpowiada sekwencja znaków CR/LF (ang.carriage return/line feed) (#13/#10). Plik tekstowy w języku TURBO Pascal typem standardowym o nazwie TEXT. Pliki tekstowe można przeglądać za pomocą dowolnego edytora standardowego. Dostęp do pliku tekstowego jest wyłącznie dostępem sekwencyjnym. Aby odczytać określony fragment tekstu należy odczytać wszystko co się przed nim znajduje. Dla plików tekstowych można stosować procedury WRITELN i READLN. Możliwe jest otwarcie pliku tekstowego do dopisywania za pomocą procedury APPEND(plik). Przykład deklaracji pliku tekstowego: TYPE Plik=TEXT; VAR ZBIÓR, DANE : Plik; Lub VAR ZBIÓR, DANE : TEXT; \Wewnętrzna definicja typu tekstowego jest następująca: TYPE TEXT=FILE OF CHAR; VAR INPUT,OUTPUT :TEXT; INPUT – jest standardowym plikiem wejścia skojarzonym standardowo z klawiaturą ( plik ten jest automatycznie otwierany przed wykonaniem każdego programu w języku Turbo Pascal ). OUTPUT – jest standardowym plikiem wyjścia skojarzonym standardowo z monitorem ( plik jest automatycznie otwierany przed wykonaniem każdego programu w języku Turbo Pascal) Dowolny plik tekstowy można kojarzyć z fizycznym zbiorem danych (plikiem) lub urządzeniem zewnętrznym ( klawiaturą, konsolą, terminalem, drukarką, portami we/wy). Wcześniej opisane procedury i funkcje dotyczące operacji na plikach można stosować także dla plików tekstowych.

31 Procedury dotyczące operacji na plikach
Otwarcie pliku o podanej nazwie. Jeśli plik nie był pusty, to jego zawartość będzie skasowana. Wcześniej należy wykonać procedurę Assign() - REWRITE(nazwa_pliku) Otwarcie pliku dane (dane nie może być plikiem standardowym input lub output) i ustawienie wskaźnika na pierwszym elemencie pliku. Wcześniej musi być wywołana procedura Assign(). Jeśli plik tekstowy skojarzony został z urządzeniem zewnętrznym, to jest automatycznie otwierany i wywołane procedury nie powoduje żadnego skutku. RESET(dane) Skojarzenie pliku tekstowego dane z urządzeniem zewnętrznym. Dozwolone są następujące nazwy urządzeń: CON - konsola TRM – terminal KBD – klawiatura LST – drukarka PRN – drukarka (LPT1) LTP1 – port równoległy LTP2 – port równoległy AUX – port szeregowy COM1 – port szeregowy we/wy COM2 – port szeregowy we/wy NUL – urządzenie puste ASSIGN(dane,’nazwa_urządz’) Skojarzenie pliku tekstowego dane z fizycznym zbiorem (plikiem wynik.TXT który znajduje się na dysku B:) ASSIGN(dane,’B:\wynik.TXT’) Opis procedury Procedury dotyczące operacji na plikach

32 Zamknięcie wcześniej otwartego pliku
Zamknięcie wcześniej otwartego pliku. Jeśli plik nie był otwarty, to po wywołaniu procedury Clone(nazwa_pliku) jego stan nie ulega zmianie. - CLOSE(nazwa_pliku) Dopisanie do pliku tekstowego o podanej nazwie jednego wiersza. Jeśli nie wyspecyfikowano nazwy pliku to operacja dotyczy pliku standardowego OUTPUT. WRITELN(nazwa_pliku) Dopisanie do pliku tekstowego dane jednego wiersza zawierającego wartość zmiennych x1,x2,..xn. Zmienne x1..xn mogą być typu INTEGER, REAL, CHAR, lub STRING. Składnia wprowadzanych znaków musi być zgodna z typem zmiennych x1..xn. Jeśli nie podano nazwy pliku to procedura dotyczy pliku standardowego OUTPUT. WRITELN(dane,x1[,x2,x3,…xn]) Dopisanie do pliku tekstowego dane wartości zmiennych x1,x2,..xn. Zmienne x1..xn mogą być typu INTEGER, REAL, CHAR, lub STRING. Składnia wprowadzonych znaków musi być zgodna z typem zmiennych x1..xn. Jeśli nie podano nazwy pliku to procedura dotyczy pliku standardowego OUTPUT. WRITE(dane,x1[,x2,x3,…xn]) Odczytanie z pliku tekstowego dane jednego wiersza przypisanie wartości kolejnych elementów zmiennym x1,x2,..xn. Zmienne x1..xn mogą byćtypu INTEGER, REAL, CHER, lub STRING. READLN(dane,x1[,x2,x3,…xn]) Wprowadzenie jednego wiersza z pliku o podanej nazwie. Jeśli nie wyspespecyfikowano nazwy pliku to operacja dotyczyczy pliku standardowego INPUT. READLN(nazwa_pliku) Odczytanie z pliku dane kolejnych elementów i przypisanie ich wartości zmiennym x1,x2,…xn. Zmienne x1…xn mogą być typu INTEGER, REAL, CHAR, lub STRING. Składnia wprowadzanych znaków musi być zgodna z typem zmiennej x1..xn. READ(dane,x1[,x2,x3,….xn])

33 Funkcja logiczna przyjmująca wartości:
-True jeśli zmienna wskazująca wskazuje na koniec pliku (znajduje się przed znakiem Ctr-Z (^Z) lub zbiór jest pusty, - False w przeciwnym przypadku Funkcia SeekEof pomiia znaki spacji, tabulacji i znaczniki końca wiersza ieśli znaiduia sie w pozycji bieżącej otwartego pliku. Wywołanie funkcji SeekEof zamiast Eof może być użyteczne przy odczytywaniu z pliku wartości numerycznych. - SeekEof(nazwa_pliku) działa jak wyżej, z tym że dotyczyczy standardowego pliku wejściowego INPUT Eof funkcja logiczna przyjmująca wartości: -True jeśli zmienna wskazujcfca wskazuje na koniec wiersza (znajduje się przed znakiem końca wiersza LF/CR) ,lub koniec pliku (znajduje się przed znakiem Ctr-Z (^Z), lub plik jest pusty, Eoln(nazwa_pliku) (ang. End of line) -True jeśli zmienna wskazująca wskazuje na koniec pliku (znajduje się przed znakiem Ctr-Z (^Z) lub zbiór jest pusty -False w przeciwnym wypadku Eof(nazwa_pliku) Skasowanie zbioru danych skojarzonego z plikiem dane. Zaleca się aby przed wywołaniem procedury Erase plik dane nie był otwarty. ERASE(dane) Zmiana nazwy zbioru skojarzonego z plikiem dane na zbior.txt znajdujący się na dysku A:. W chwili wywołania procedury renami() plik dane musi być zamknięty. Nowa nazwa nie może być nazwą zbioru już istniejącego. RENAME(dane,’A:\zbior.txt’)

34 ASSIGN(OUTPUT,’PRN') - skierowanie wyników działania programu
działa jak wyżej, z tym że dotyczyczy standardowego pliku wejściowego INPUT - SeekEoln funkcja logiczna przyjmująca wartości: -True jeśli zmienna wskazująca wskazuje na koniec wiersza (znajduje się przed znakiem końca wiersza LF/CR) ,lub koniec pliku (znajduje się przed znakiem Ctr-Z (^Z)), lub plik jest pusty, -False w przeciwnym przypadku Funkcja SeekEoln pomija znaki spacii. tabulacji i znaczniki końca wiersza jeśli znajdują się w pozycji bieżącej otwartego pliku. Wywołanie funkcji SeekEoln zamiast Eoln może być użyteczne przy odczytywaniu z pliku wartości numerycznych. SeekEoln(nazwa_pliku) SeekEof Standardowe zmienne plikowe INPUT i OUTPUT można wykorzystać do wysłania wyników działania programu do pliku lub na urządzenie zewnętrzne i pobrania danych z pliku lub urządzenia zewnętrznego. W tym celu należy w odpowiednim miejscu programu umieścić procedurę ASSIGN() np.: ASSIGN(OUTPUT,'nazwapliku') skierowanie wyników działania programu do pliku o podanej nazwie (nazwę pliku można poprzedzić pełną ścieżką dostępu ) ASSIGN(OUTPUT,’PRN') skierowanie wyników działania programu na drukarkę (podłączoną do portu równoległego LTPI). ASSIGN(INPUT,’nazwa_pliku’) pobranie danych z pliku o podanej nazwie (nazwę pliku można poprzedzić pełną ścieżką dostępu). Po zakończeni powyższych operacji należy przywrócić pierwotne przypisania plików standardowych 1NPUT OUTPUT za pomocą procedur: ASSIGN(INPUT,’ ‘) lub ASSIGN(INPUT,'CON') ASSIGN(OUTPUT,’ ‘) lub ASSIGN(OUTPUT,'CON ')

35 TYPY ZMIENNYCH

36 W języku TURBO PASCAL zdefiniowane są następujące typy zmiennych:
wyliczeniowy okrojony całkowity prosty porządkowy logiczny łańcuchowy rzeczywisty znakowy Typ tablicowy strukturalny rekordowy obiektowy zbiorowy wskaźnikowy plikowy

37 Typy porządkowe typ wyliczeniowy Typ wyliczeniowy definiujemy wyliczając jego elementy składowe, które muszą być unikalnymi nazwami. Każdy element składowy ma nadawany numer porządkowy. Typ wyliczeniowy stosuje się zwykle dla zbiorów o niewielkiej liczbie elementów, na których nie wykonuje się operacji arytmetycznych. UWAGA! Dwa różne typy wyliczeniowe nie mogą mieć wspólnych elementów składowych. Identyfikatory elementów w obrębie jednego typu muszą być różne. Na elementach typu wyliczeniowego nie można wykonywać żadnych operacji arytmetycznych. Wartości typu wyliczeniowego nie można wczytywać, wprowadzać na ekran i drukarkę Przykład deklaracji typu wyliczeniowego. TYPE identyfikator_typu=(lista_identyfikatorów);

38 Przykłady deklaracji typu wyliczeniowego.
TYPE tydzień = (pn, wt, śr, czw, pt, sob, niedz ); pora_roku = (zima, wiosna, lato, jesień ); kolor = (czerwony, zielony, niebieski) VAR dzień : tydzień; pora :pora_roku; barwa :kolor; b) typ okrojony; Typ okrojony jest niepustym podzbiorem dowolnego typu porządkowego (całkowitego, logicznego, znakowego, wyliczeniowego). Ogólna deklaracja typu okrojonego: TYPE identyfikator_typu=stała..stała; Obie stałe muszą być tego samego typu bazowego.

39 Przykłady deklaracji typu okrojonego:
TYPE liczba= ; {typ okrojony typu całkowitego} pozytywna=3..6; litera=‘G’..’R’ {typ okrojony typu znakowego} wolne=pt..niedz {typ okrojony typu wyliczeniowego} VAR licznik :liczba; ocena :pozytywna; znak, hasło :litera; weekend :wolne; c) całkowity; Typ całkowity zawiera liczby całkowite z określonego przedziału. liczba=Integer; wynik: liczba

40 LongINT INTEGER SHORTINT WORD BYTE
4 bajty liczby całkowite do LongINT 2 bajty do 32767 INTEGER 1 bajt od -128 do 127 SHORTINT od 0 do 65535 WORD 0 do 255 BYTE Wielkość Zawartość Nazwa typu Typ całkowity jest predefiniowany i nie wymaga deklaracji. Deklaracja zmiennych typu całkowitego może mieć postać: VAR liczba :INTEGER; a,b,c :WORD;

41 Dla zmiennych typu całkowitego określone są następujące operacje:
Alternatywa OR Negacja NOT Różnica symetryczna XOR koniunkcja AND Przesunięcie w prawo shr Dzielenie / Przesunięcie w lewo shl Mnożenie * Reszta z dzielenia całkowitego mod Odejmowanie - Część całkowita z dzielenia div Dodawanie + Liczby typu całkowitego można zapisywać w kodzie hexadecymalnym. Wtedy tak zapisaną liczbę należy poprzedzić znakiem ‘$’, np $E12A Funkcje standardowe o wartościach typu całkowitego o argumencie typu całkowitego poprzednik następnik kwadrat wartość bezwzględna Opis pred(12)=11 i-1 pred(i) succ(13)=14 i+1 succ(i) sqr(4)=16 sqr(i) abs(-4)=4 |i| abs(i) Przykład Funkcja

42 b) o argumencie typu rzeczywistego
Trunc(9.6)=9 Trunc(-9.6)=-9 Zaokrąglenie lczby rzeczywistej r do najbliższej liczby całkowitej w kierunku zera Trunc(r) Round(4.8)=5 Round(4.4)=4 Zaokrąglenie liczby rzeczywistej r do najbliższej liczby całkowitej Round(r) Przykład Opis Funkacje d) typ logiczny; Typ logiczny (Boolean) jest określony tylk przez dwie wartości: False- fałsz (wartośćporządkowa 0) true- prawda (wartość porządkowa 1) TYPE znak=BOOLEAN; VAR odp:znak Lub Var odp: BOOLEAN;

43 Dla zmiennych typu logicznego określone są następujące operatory logiczne:
p OXR q różnica symetryczna XOR p OR q alternatywa OR p AND q koniunkcja AND NOT p negacja NOT 1 p XOR q p OR q p AND q NOT p q p Funkcje standardowe o wartościach typu logicznego Odd(17)=true Odd(24)=false Funkcja badająca nieparzystość argumentu, który musi być typu całkowitego odd(i) Przykład Opis Funkcja

44 e) Typ znakowy; Typ znakowy obejmuje zbiór znaków alfanumerycznych: cyfr od 1…9, liter a…z A…Z, znaków specjalnych np. Wartości typu znakowego zapisujemy w apostrofach, np. ‘A’, ‘a’, ‘$’. Każda dam typu znakowego zapamiętywana jest w 1 bajcie pamięci. TYPE znak=Char; lub VAR odp: Char VAR odp: znak; Dla wartości typu znakowego są określone następujące funkcje standardowe:

45 PROGRAM wizytówka; USES Printer; VAR imie,nazwisko :string[20] kod_miejscowosc :string[30] ulica_nr :string[25] telefon :string[8] Begin WRITE(‘imie : ’); READLN(imie) WRITE(‘nazwisko’) REALDLN(nazwisko) WRITELN(‘telefon :’); READLN(telefon); WRITE(‘podaj kod i miejscowość’); READLN(kod_miejscowości) WRITE(‘podaj ulice i numer mieszkania’); READLN(ulica_nr); WRITELN(Lst,imie,’ ‘,nazwisko); WRITELN(Lst,’ ‘.’ulica ‘,ulica_nr); WRITELN(Lst,kod_miejscowość); WRITELN(Lst,’telefon ‘,telefon); WRITELN(Lst) {przesunięcie papieru o jedne wiersz} END.

46 Na zmiennych typu łańcuchowego można wykonywać operacje konkatynacji (dodawania), porównanie, kopiowanie, usuwania. Przykłady konkatenacji łańcuchów napis1 :=‘Technikum ’; napis2 :=‘Hutniczo’ napis3 :=‘Mechaniczne’; Napis4 :=napis1+napis2+’-’+napis3 { napis4=‘Techniikum Hutniczo Mechaniczne’ } Łańcuchy można porównywać za pomocą operatorów relacji (porównywane są kody ASCII poszczególnych znaków łańcucha) : >,<,=,<>,<=,>= Przykłady użycia operatorów realcji: prawda Prawda fałsz true ‘THM’,’Thm’ ‘THM’<>’Thm’ false ‘THM’=‘thm’ ‘THM’=‘THM’ Wynik Wyrażenie

47 Funkcje łańcuchowe (moduł systemu):
prawda true ‘Thm’>=‘THm’ fałsz false ‘187’<‘1328’ ‘Ostrowiec w’,’Ostrowiec’ Funkcje łańcuchowe (moduł systemu): Wynikiem funkcji najmniejszy numer pozycji w łańcuchu Ł2, od której rozpoczyna się podciąg identyczny z łańcuchem Ł1. Jeśli łańcuch Ł2 nie zawiera podciągu określonego łańcuchem Ł1, to funkcja zwraca wartość 0. POS(Ł1,Ł2) Wartością funkcji jest liczba znaków łańcucha LENGHT(Łańcuch) Wartość funkcji jest łańcuch o k elementach pobrany z łańcucha Ł począwszy od n znaku COPY(Ł,n,k) Wynikiem działaniafunkcji jest łańcuch Ł1+Ł2+Ł3+…Łn CONCAT(Ł1,Ł2,Ł3,…ŁN)

48 Procedury łańcuchowe STR(wyrL:m:n,Ł) SRT(wyrL:m,Ł)
Znaki łańcucha Ł są traktowane jako zapis liczby, która zostaje przypisana znanej x typu INTEGER lub REAL. Jeśli przypisanie, zostało zrealizowane prawidłowo to k=0, jeśli nie to k określa numer znaku w łańcuchu Ł, który umożliwił wykonanie przepisania. Val(Ł,x,k) Przekształcenie danej reprezentowanej przez wyrażenie liczbowe wtrL w ciągu znaków, który będzie przypisany zmiennej łańcuchowej Ł. M (typy INTEGER) określa długość cg znaków N (typy INTEGER) określa liczbę cyfr ułamkowych STR(wyrL,Ł1) Wstawienie do łańcucha Ł2 przed znak znajdujący się na pozycji n znaków łańcucha Ł1. Uwaga! n musi należeć do przedziału [1,255] Jeśli n>LENGHT(Ł2), to n:=LENGTH(Ł2)+1 Jeśli wartość wyrażenia LENGHT(Ł1)+LENGHT(Ł2) jest większe od zadeklarowanej max. Długość łańcucha Ł2, to przypisuje się znaki od lewej do prawej odrzucając znaki nadmiarowe INSERT(Ł1,Ł2,n) Usuniecie k znaków z łańcucha Ł począwszy od znaku znajdującego się na pozycji n DELETE(Ł,n,k)

49 4. Typy strukturalne. Tablicowy Typ tablicowy służy do opisu obiektów złożonych, których składowe są tego samego typu. Typ tablicowy w języku programowania wywodzi się z pojęć matematycznych i odpowiada pojęciu wektora n- wymiarowego lub macierzy n-wymiarowej. Przykłady deklaracji typu tablicoweg: Deklaracja tablicy jednowymiarowej Tablica i tablicy dwuwymiarowej Duża_Tablica. TYPE Tablica=ARRAY[1..10] OFBYTE; Duza_TabŁica=ARRAY[1..8] OF ARRAY[1..12] OF CHAR; (* lub Duza_Tablica=ARRAY[1..8,L.12] OF CHAR; *) VAR A: Tablica; B:Duża_Tablica; Dostęp do poszczególnych elementów tablicy uzyskuje się przez użycie indeksów, np. A[23J ,A[kl, B[23,2], B[lt+ik]. Czas dostępu do każdego elementu tablicy jest taki sam. Typ tablicowy jest typem strukturalnym o dostępie bezpośrednim. Przykład odwołania do zmiennej tablicowej: BEGIN FOR i:=l TO m DO FORi:=lTOnDO WRIĘLNCPodaj dane'); READLN(A[ij]>; WRITELN(A[ij]>; END END

50 Przkład tablicy dwuwymiarowej zawierającej dane typu całkowitego.
90 43 9 32 8 2 122 89 78 65 45 11 21 6 67 1 5 677 54 4 87 321 876 23 3 786 865 56 211 76 99 34 7 A(x,y)= kolumny 1,2,3…8 wiersze 1,2,3…6

51 b) rekordowy Typ rekordowy służy do opisywania obiektów złożonych, których elementy składowe są różnych typów. Przykłady deklaracji typu rekordowego TYPE baza=RECORD imie :STRING[12]; nazwisko :STRING[18] miej_ur :STRING[20]; dzień_u :1,31; rok_ur : ; czy_łobuz :Boolean; END; VAR dane:baza; Lub dane :RECORD imie :string[12] nazwisko :strong[18] miejsce_ur :REKORD miasto :STRING[20] panstwo :STRING[15] Dzień_ur :1,31; Rok_ur : ; Czy_łobuz :Boolean;

52 1975 Rok_ur N 28 Francja Paryż Zawada Klaudyna Czy_łobuz Dzien_ur Dzień urodzenia Miejsce_ur nazwisko imie Rys. Graficzna prezentacja zmiennej rekordowej zawierającej przykładowe dane. Do zmiennych typu rekordowego odwołujemy się następująco: BEGIN READ(dane.imie); READ(dane.nazwisko): WRITE(dane.czyJobuz); dane. miejsce_ur.miasto :=‘Ostrowiec‘ END. W celu odwołania się do zmiennej typu rekordowego można użyć instrukcji wiążącej WITH WHIT DANE DO BEGIN READ(imie); READ(nazwisko); WRITE(czy_lobuz); miejsce_ur.miasto: ^'Ostrowiec1; miejsce _ur . państwo :=' Polska‘ END:

53 Instrukcje wiążącą WITH można zagnieżdżać :
BEGIN WITH DANE DO WITH miejsce_ur DO READ(imie); READ(nazwisko); WRITE(czyJobuz); miasto:-Ostrowiec'; państwo :=ToIska' END: END. dopuszczalny jest także zapis: BEGIN WITH DANE, mieisce ar DO

54 READ(imie}; READ(nazwisko); WRITE(czyJobuz); miasto :='0strowiec'; panstwo:-'Polska‘ END: END. Mając zdefiniowany typ rekordowy można zdefiniowć typ tablicowy zawierający dane typu rekordowego, np.: TYPE BAZA=ARRAY[10] of dane; VAR KATALOG :BAZA BEGIN READ(katalog[5].dzien_ur); katalog[8]. czyjobuz:=true; katalog[10].miejsce_ur.panstwo:-Polska'; WRITE(katalog[10].miejsce_ur.panstwo); 8 7 6 5 4 3 2 1

55 PROCEDURY

56 Włączenie głośnika i wygenerowanie ciągłego dźwięku o częstotliwości n [Hz]
- Sound(n) CRT Przywrócenie takiego sposobu wyświetlania jaki obowiązywał w chwili rozpoczynania wykonywania programu. NormVideo Rezygnacja z podwyższonej jasności znaków LowVideo Zwiększenie jasności znaków (przez ustawienie bitu jasność zmiennej TextAttr) HighVideo Zmiana trybu tekstowego na tryb wyspecyfikowany przez predefiniowaną stałą tryb TextMode(tryb) Wstawianie wiersza pod wierszem, w którym znajduje się aktualnie kursor i przesuniecie wierszy znajdujących się poniżej o jeden wiersz w dół. InsLine Usunięcie wiersza w którym znajduje się aktualnie kursor i przesunięcie wierszy znajdujących się poniżej o jeden wiersz do góry DelLine Wstrzymanie wykonywania programu na okres ms milisekund Delay(ms) Wyczyszczenie linii okna tekstowego od miejsca wskazywanego przez kursor do końca wiersza. Gdy kolorem tła nie jest kolor czarny ,to kolor tła będzie określony za pomocą procedury TextBacgrund ClrEol Wyczyszczenie aktualnego okna tekstowego gdy kolorem tła nie jest kolor czarny ,to kolor tła będzie określony za pomocą TextBacground ClrScr Moduł Opis działania Nazwa procedury

57 Przemieszczenie kursora do punktu o podanych współrzędnych X,Y
Przemieszczenie kursora do punktu o podanych współrzędnych X,Y. Współrzędne dotyczą aktualnego okienka - GotoXY(XY) CRT Zdefiniowanie prostokątnego okna tekstowego o współrzędnych przeciwległych narożników (X1,Y1),(x2,y2) Największe okno można zdefiniować: Window(WindMin,WindMax) , co w trybie 80 kolumnowym oznacza Window(1,1,80,25).Jeśli podano błędne argumenty funkcja jest ignorowana. Jeśli nie zdefiniowano okienka to oknem domyślnym jest cały ekran. Window(X1,Y1,X2, Y2) Przypisanie zmiennej TextAttr atrybutu koloru tła. Zmienna koloru może być nazwą koloru lub jego numerem TextBackgrund(kol or) Przypisanie zmiennej textalert atrybutu koloru znaku. Zmienna koloru może być nazwą koloru lub jego numerem od 0 do 15 lub {i} 128 TextColor(kolor) Wyłączenie głośnika NoSound

58 Edycja, kompilacja i uruchamianie programów w języku TURBO PASCAL.
Na podstawie algorytmu blokowego napisać program rozwiązujący trójmiany kwadratowe Ax2+bx+c=0 Program Trójmian; (*Program rozwiązywania trójmianów kwadratowych*) VAR A, B, C, Delta, X1, X2, X12 : Real; {deklaracja zmiennych} BEGIN { początek programu głównego} WRITE(‘Podaj współczynnik A=‘); {wyprowadzenie info. Na ekran} READLN(A); {wprowadzenie danych z klawiatury} WRITE(‘Podaj współczynnik B=‘); READLN(B) {LN na końcu READ lub WRITE powoduje dodatkowo przesunięcie kursora do początku następnego wiersza} WRITE(‘Podaj współczynnik B=‘) READLN(C); DELTA:=B*B-4*A*C; {:= instrukcja przypisana. Pod zmienną Delta będzie przypisana wartość wynikająca z obliczenia wyrażenia stojacego po prawej stronie} IF Delta >0 THEN WRITELN(‘Trójmian nie ma rozwiązania w R’) ELSE BEGIN WRITELN(‘ Trójmian ma dwa pierwiastki ‘); X1:=(-B-SQRT(DELTA))/(2*A);

59 X2:=(-B+SQRT(DELTA))/(2*A);
WRITELN(‘X1=X1) {wprowadzenie wyniku} WRITELN(X2=X2) {pierwiastki będą zapisane w postaci wykładniczej} END ELSE BEGIN WRITELN(‘Trójmian ma jedne pierwiastek podwójny) X12:=-B/(2*A) WRITELN(‘X12=X12:7:3); {Pierwiastek będzie zapisany za pomocą 7 cyfr z dokładnością do cyfr po przecinku} END; END {Koniec programu}

60 Kompilacja programu zapisanego w języku TURBO PASCAL
Kompilacja programu zapisanego w języku TURBO PASCAL. Dyrektywy kompilatora. Po napisaniu programu przy pomocy edytora ( najczęściej w tym celu wykorzystujemy edytor zintegrowany systemu TURBO PASCAL ) należy dokonać jego translacji na język wewnętrzny mikroprocesora. W tym celu wykorzystywany jest kompilator zintegrowany z edytorem TP lub kompilator zewnętrzny. Kompilator zewnętrzny wykorzystujemy zwykle do kompilacji dużych programów ,które nie mieszczą się w pamięci przy kompilacji translatorem wbudowanym. W trakcie kompilacji badana jest poprawność skłądnikowa programu i w przypadku niezgodności składni z wymogami odpowiedniej wersji TP sygnalizowany jest błą kompilacji wraz ze wskazaniem miejsca jego występowania w programie. W wyniku pomyślnie przebiegającej kompilacji programu ostrzymujemy w pamięci komputera kod gotowy do wykonania lub plik dyskowy o takiej samej nazwie jak nazwa programu .PAS i rozszerzeniu .EXE przeznaczony do późniejszego uruchamiania z poziomu systemu operacyjnego. Podobnie należy skompilować moduły. Podczas kompilacji modułu, zostanie utworzony plik dyskowy o takiej samej nazwie jak program źródłowy modułu i rozszerzeniu .TPU . Aby uruchomić kompilację programu lub modułu należy górnego menu wybrać opcje Compile, a w niej podopcje Compile lub wcisnąć ALT F9. W przypadku kompilacji programu korzystającego z modułu, którego tekst źródłowy wygodnie jest wybrać z menu z górnego menu opcje Compile, a w niej podopcje Make lub wcisnąć klawisz F9. Wtedy zostanie wykonana kompilacja programu i wszystkich modułów z których on korzysta, a były one modyfikowane od czasu ostatniej kompilacji. Podopcja Build opcji Compile spowoduje kompilacje programu głównego i wszystkich potrzebnych modułów niezależnie od tego czy były one wcześniej kompilowane, czy nie. UWAGA!! W systemie TURBO Pascal podczas kompilacji programu następuje automatycznie jego konsolidacja. Kompilator systemu TURBO Pascal ma możliwość zmiany parametrów jego pracy. Do ustalenia parametrów pracy kompilatora służy podopcja Compiler, który znajduje się w opcji Options górnego menu. Dyrektywy kompilatora można także umieścić w kodzie źródłowym programu. Dyrektywy kompilatora umieszczone w programie mają postać {$ nazwa} i mają one wyższy priorytet niż parametry ustalone w opcji Compiler. Najważniejsze dyrektywy i parametry pracy kompilatora systemu TURBO Pascal. (dyrektywy standardowe zacieniowało)

61 Przyjmowane standardowo – sprawdzanie w/w błędów nie jest wykonywane.
Kompilator dokonuje sprawdzenia poprawności operacji wejścia/wyjścia (np. nie drukarka nie gotowy do pracy…). W przypadku błędu wykonywanie programu jest przerywane z odpowiednim komunikatem. ON I/O Checking {$I+} Kontrola miejsca na stosie nie jest dokonywana , co możne doprowadzić do niekontrolowanego zawieszenia się systemu. Ustalenie takiego parametru jest zalecane po bardzo dobrym przetestowaniu programu. OFF Stack checking {$S-} Kompilator generuje kod sprawdzający przed każdym wywołaniem procedury lub funkcji czy na stosie jest wystarczająco duża ilość miejsca na zmianę tej procedury lub funkcji. W przypadku braku generowany jest odpowiedni komunikat i działanie programu jest przerywane. {$S+} Przyjmowane standardowo – sprawdzanie w/w błędów nie jest wykonywane. Range checking {SR-} Kompilator wygeneruje kod sprawdzający, czy indeksy tablicy, łańcuchów i zakresy liczb są zgodne z deklaracjami. W przypadku niezgodności w trakcie wykonywania programu generowany jest komunikat o błędzie. Dyrektywa ta powoduje wygenerowanie dłuższego kodu wynikowego, dlatego zalecane jest jej użycie tylko podczas testowania programu. {SR+} Opis Stan Parametr pracy Dyrektywa

62 Umożliwia użycie tylko typu REAL 8087/80287 {$N-}
Umożliwia dołączenie do programu użytkownika biblioteki emulującej koprocesora arytmetyczny, co umożliwia uruchomienie programu wynikowego(*.EXE) wymagającego użycia koprocesora na komputerach nie wyposażonych w koprocesor ON Emulation {$E+} Umożliwia użycie tylko typu REAL 8087/80287 {$N-} Umożliwia stosowanie typów liczb wymagających uzycia koprocesora arytmetycznego lub jego emulatora Numeric processing {$N+} Ścisłe sprawdzanie długości łańcuchów nie jest wykonane Relaxed Var-string checking {$V-} Powoduje ścisłe sprawdzanie długości łańcuchów. W przypadku gdy długość łańcucha jest większa od zadeklarowanej następuje przerwanie wykonywania programu. Stricte {$V+} Umożliwia wykonywanie dalekich wywołań procedur i funkcji ( procedury i funkcje mogą być parametrami innych procedur i funkcji) Force for calls {$F+} Kontrola operacji we/wy nie jest przeprowadzana. W praktyce zaleca się wybranie tej opcji i sprawdzanie poprawności wykonywania operacji we/wy za pomocą standardowej funkcji IOResult OFF I/O Checking {$I-}

63 DYREKTYWY PARAMETRYCZNE
Ustalenie wielkości stosu oraz segmentów na zmienne dynamiczne. Memory SIze {$M wielkość_stosu, Mini_wielkość_seg mętu, Max_wielkość_seg mętu Umozliwia dołączenie w trakcie kompilacji pliku .OBJ o podanej nazwie. {$L nazwa_pliku} Umozliwia dołączenie w trakcie kompilacji pliku o podanej nawie. {$I nazwa_pliku} DYREKTYWY PARAMETRYCZNE Uruchamia tworzenie informacji dla debuggera umożliwiających śledzenie wartości zmiennych podczas wykonywania programu, co ułatwia lokalizację błędów podczas testowania programu ON Debug Information {$D+} Programy winikowe wymagające użycia koprocesora będą mogły być uruchamiane na komputerach wyposażonych w koprocesor arytmetyczny (zewnętrzny lub zintegrowany z procesorem głównym) OFF Emulation {$E-}

64 Moduły w języku Turbo Pascal Moduły w języku Turbo Pascal są podstawą programowania modularnego i służą przede wszystkim do grupowania procedur i funkcji biblioteki, a także do dzielenia dużych programów na powiązane logicznie części. Po zadeklarowaniu modułu w danym programie dostępne są wszystkie procedury i funkcje zdefiniowane w danym module, jak również zadeklarowane w nim stałe, zmienne, procedury i typy zmiennych. Zasoby modułu sądostępne po zadeklarowaniu go w programie przed wszystkimi innymi deklaracjami za pomocą klauzuli: USES nazwa_modułu Lub USES nazwa_modułu_1[,nazwa_modułu2,…,nazwa_modułu_n] Użytkownik może posługiwać się , modułami zaoferowanymi przez firmę Borland, inne firmy lub napisanymi przeez siebie. Moduły po skomplikowaniu otrzymują rozszerzenie *.TPU (ang. Turbo Pascal Unit). Wszystkie moduły standardowe z wyjątkiem modułu Graph, tworzą plik biblioteczny TURBO.TPL. Moduły napisane prze użytkownika można dołączyć do tej biblioteki za pomocą programu TPUMOVER>EXE.

65 Język Turbo Pascal wyposażony jest w następujące moduły standardowe: SYSTEM –dołączany jest do programu standardowo i nie wymaga deklaracji. DOS- umożliwia wykonanie wybranych operacji systemu operacyjnego, własną obsługę przerwań i wywołanie funkcji systemowych. CRT- organizuje współprace z klawiaturą i ekranem w trybie tekstowym, OVERLAY- zapewnia zarządzanie programami nakładkowymi, PRINTER- kojarzy plik z drukarką GRAPH- obsługuje operacje graficzne GRAPH3- umożliwia zgodność z TP ver 3,0 TURBO3- umożliwia zgodność z TP ver 3,0 Wszystkie zadeklarowane moduły, z wyjątkiem modułu GRAPH są ładowane do pamięci z chwilą uruchomienia programu. Moduł GRAPH jest ładowany do pamięci z chwilą jego inicjalizacji i zwalniany z pamięci po zamknięciu jego trybu.

66 Ogólna postać modułu jest następująca: UNIT nazwa_modułu; INTERFACE { część opisowa modułu} deklaracje_modułów; deklaracje_literałów; {typy public} deklaracje_typów { deklaracje części opisowej modułu} deklaracje_zmiennych; { mogą występować opcjonalnie} deklaracje_nagłóków_funkcji; deklaracje_nagłówków_procedur IMPLEMENTATION {część implementacyjna} Deklaracje_typu_private: Treści procedur_zadeklarowanych_w_części_opisowej; Treści_funkcji_ zadeklarowanych_w_części_opisowej; BEGIN Część inicjująca; END Część implementacyjna składa się z definicji procedur, funkcji, których nagłówki podano w części opisowej modułu oraz deklaracje etykiety, literałów, zmiennych, typów, funkcji i procedur wewnętrznych. Część inicjująca składa się albo ze słowa kluczowego END, albo instrukcji, która będzie w wykonywana w celu zadeklarowania modułu.


Pobierz ppt "Spis treści 1. Podstawowe wiadomości na temat języka programowania"

Podobne prezentacje


Reklamy Google