Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Spis treści 1. Podstawowe wiadomości na temat języka programowaniaPodstawowe wiadomości na temat języka programowania 2. Polecenia w języku Turbo PascalPolecenia.

Podobne prezentacje


Prezentacja na temat: "Spis treści 1. Podstawowe wiadomości na temat języka programowaniaPodstawowe wiadomości na temat języka programowania 2. Polecenia w języku Turbo PascalPolecenia."— Zapis prezentacji:

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

2 Podstawowe wiadomości na temat języka programowania 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. 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 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 notatnikaCopy Usunięcie wyróżnionego bloku tekstu i umieszczenie go w notatniku (buforze powielania) Cut Odtworzenie ostatniego wiersza, który był poddany edyjiRestore Line

9 Zlokalizowanie błędu wykonania programuFind 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 numerzeGo 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 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 [F2] Skomplikowanie programu w trybie make, a następnie wykonanie go. Przerwanie wykonania -Break Run [F9]

11 Określenie nazwy pliku pierwotnegoPrimary File Określenie miejsca umieszczenia kodu wynikowego (z rozszerzeniem nazwy. EXE) Menory/Dysk (pamięć/dysk) Destination Przeprowadzenie komplikacji w trybie BuildBuild Przeprowadzenie komplikacji w trybie MakeMake [F9] Przeprowadzenie komplikacji tekstu zawartego w aktywnym okienku edycyjnym Compile -[F9]

12 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 -[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 Odtworzenie uprzednio zapamiętanej konfiguracjiRetrieve 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 konsolidacjiLinker Określenie rozmiarów stosu oraz minimalnego maksymalnego rozmiaru sterty Menory Size Umożliwienie ustawienia opcji komplikatoraCompiler

14 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 obserwacyjnegoWatch Zamknięcie aktualnego okienka i usunięcie go z ekranuClose Uaktywnienie poprzedniego okienkaPrevions Uaktywnienie następnego otwartego okienkaNext Wyświetlenie okienek w układzie kaskadowy,Cascade Wyświetlenie okienek w układzie kartotekowymTitle Powiększanie/zmniejszenie aktywnego okienkaZoom Zmiana pozycji i rozmiaru aktywnego okienkaSize/More

15 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 WyjaśnienieSymbolNazwa 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 WyjaśnienieSymbolNazwa 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 Przykład 1. Napisać algorytm komputerowy umożliwiający rozwiązywanie trójmianów kwadratowych w postaci: Rozwiązanie: I.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 Pisz: Podaj współczynniki równania A, B, C Algorytm programu rozwiązującego trójmian kwadratowy Czytaj: A, B, C DELTA=B*B-4*A*C DELTA < 0 Pisz: Trójmian nie ma pierwiastków w zbiorze liczb rzeczywistych STOP DELTA = 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 menuF10 kompilacja programu znajdującego się w bieżącym okienkuF9 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 programuF7 przejście do następnego otwartego okienkaF6 powiększenie/pomniejszenie aktualnego oknaF5 wykonanie programu do miejsca aktualnego położenia kursoraF4 wyświetlenie okienka dialogowego służącego do wczytania zbioruF3 zapisanie na dysku zbioru znajdującego się w okienku edycyjnymF2 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 programuAlt F8 wyświetlenie okienka, na które wyprowadzane są wyniki programów Alt F5 zamknięcie aktywnego okienkaAlt F3 wyświetlanie poprzedniego okienka zawierającego wyjaśnieniaAlt F1 powtórzenie ostatniej operacji wyszukiwania lub wyszukiwania i zmiany ciągu znaków Ctrl L skopiowanie wyróżnionego tekstu do notatnikaCtrl Ins usunięcie wyróżnionego tekstuCtrl Del kompilacja i wykonanie programuCtrl F9 ustalenie/usunięcie bieżącego wiersza jako punktu przeważania programu (pułapki programowej). Ctrl F8 dodawanie zmiennej lub wyrażenia do okienka obserwacyjnegoCtrl F7 zmiana położenia lub rozmiaru aktywnego okienkaCtrl F5 przejście do poprzednio otwartego oknaShift F9 wyświetlenie skorowidza informacji pomocniczychShift 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 odpowiedziAlt litera wyświetlenie okienka o podanym numerzeAlt nr wyświetlenie listy otwartych okienekAlt O kompilacja programu znajdującego się w aktywnym okienkuAlt F9

21 Struktura programu w języku TURBO PASCAL 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; 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..{tu należy umieścić treść procedury}.. END;

24 PROCEDURE Kreska; BEGIN WRITELN(***************) END; PROCEDURE Kreska; BEGIN WRITELN(***************) END; PROCEDURE SuperKreska(x,y,dl: BYTE;znak:CHAR); VAR k:BYTE BEGIN FOR K:=1 to dl DO BEGIN GOTOXY(x+k-l,y); WRITELN(znak) END; PROCEDURE SuperKreska(x,y,dl: BYTE;znak:CHAR); VAR k:BYTE BEGIN FOR K:=1 to dl DO BEGIN GOTOXY(x+k-l,y); WRITELN(znak) END; VI Przykłady definicji procedur i funkcji: Przykłady definicji procedur. Procedura bezparametrowa kreska spowoduje wyrysowanie w miejscu aktualnego położenia kursora linii składającej się z *. 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 PROCEDURE stop; BEGIN WRITELN(wciśnij dowolny klawisz); REPEAT UNTIL KEYPRESSED; END; PROCEDURE stop; BEGIN WRITELN(wciśnij dowolny klawisz); REPEAT UNTIL KEYPRESSED; END; PROCEDURE stoj; BEGIN WRITELN (wciśnij ENTER); READLN; END; PROCEDURE stoj; BEGIN WRITELN (wciśnij ENTER); READLN; END; = = = = = = = = = = = X Rys. Wygląd ekranu monitora po wywołaniu PROCEDURY SuperKreska Powyższe procedury mają podobne działanie i służą do zatrzymania wykonywania programu do czasu wciśnięcia odpowiedniego klawisza. 25 Y

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

28 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; PROCEDURE ODSTEP(n); VAR K :INTEGER; BEGIN FOR k:=N DOWNTO 1 DO WRITELN; END; PROCEDURE ODSTEP(n); BEGIN IF n>1 THEN ODSTEP(n-1); WRITELN; END; PROCEDURE ODSTEP(n); BEGIN IF n>1 THEN ODSTEP(n-1); WRITELN; END; 2) Definicja rekurencyjna PROCEDURY ODSTĘP.

29 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 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. 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, - False w przeciwnym przypadku -Eoln(nazwa_pliku) (ang. End of line) 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 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 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) działa jak wyżej, z tym że dotyczyczy standardowego pliku wejściowego INPUT -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 1)Typy porządkowe a)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! 1)Dwa różne typy wyliczeniowe nie mogą mieć wspólnych elementów składowych. 2)Identyfikatory elementów w obrębie jednego typu muszą być różne. 3)Na elementach typu wyliczeniowego nie można wykonywać żadnych operacji arytmetycznych. 4)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. TYPE liczba=Integer; VAR wynik: liczba

40 4 bajtyliczby całkowite do LongINT 2 bajtyliczby całkowite do INTEGER 1 bajtliczby całkowite od -128 do 127 SHORTINT 2 bajtyliczby całkowite od 0 do WORD 1 bajtliczby całkowite 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: AlternatywaORNegacjaNOT Różnica symetrycznaXORkoniunkcjaAND Przesunięcie w prawoshrDzielenie/ Przesunięcie w lewoshlMnożenie* Reszta z dzielenia całkowitegomodOdejmowanie- Część całkowita z dzieleniadivDodawanie+ 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 a)o argumencie typu całkowitego poprzednik następnik kwadrat wartość bezwzględna Opis pred(12)=11i-1pred(i) succ(13)=14i+1succ(i) sqr(4)=16sqr(i) abs(-4)=4|i|abs(i) PrzykładFunkcja

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ładOpisFunkacje 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 qróżnica symetrycznaXOR p OR qalternatywaOR p AND qkoniunkcjaAND NOT pnegacjaNOT p XOR qp OR qp AND qNOT pqp 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ładOpisFunkcja

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. TYPEznak=Char; lubVAR odp: Char VARodp: 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 prawda trueTHM,Thm trueTHM<>Thm falseTHM=thm trueTHM=THM WynikWyrażenie

47 prawdatrueThm>=THm fałszfalse187<1328 fałszfalseOstrowiec 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. a)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 BEGIN WRIĘLNCPodaj dane'); READLN(A[ij]>; WRITELN(A[ij]>; END END

50 Przkład tablicy dwuwymiarowej zawierającej dane typu całkowitego. 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 VAR dane:RECORD imie:string[12] nazwisko:strong[18] miejsce_ur:REKORD miasto:STRING[20] panstwo:STRING[15] END; Dzień_ur :1,31; Rok_ur: ; Czy_łobuz:Boolean; END;

52 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 BEGIN WHIT DANE DO BEGIN READ(imie); READ(nazwisko); WRITE(czy_lobuz); miejsce_ur.miasto: ^'Ostrowiec1; miejsce _ur. państwo :=' Polska END: END Rok_ur N28FrancjaParyżZawadaKlaudyna Czy_łobuzDzien_urDzień urodzenia Miejsce_urnazwiskoimie

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

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); END

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 CRTRezygnacja z podwyższonej jasności znaków-LowVideo CRT Zwiększenie jasności znaków (przez ustawienie bitu jasność zmiennej TextAttr) -HighVideo CRT Zmiana trybu tekstowego na tryb wyspecyfikowany przez predefiniowaną stałą tryb -TextMode(tryb) CRT 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 CRT 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 CRTWstrzymanie wykonywania programu na okres ms milisekund-Delay(ms) CRT 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 CRT 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. 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) CRT Przypisanie zmiennej TextAttr atrybutu koloru tła. Zmienna koloru może być nazwą koloru lub jego numerem - TextBackgrund(kol or) CRT 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) CRTWyłączenie głośnika-NoSound

58 Edycja, kompilacja i uruchamianie programów w języku TURBO PASCAL. 1.Na podstawie algorytmu blokowego napisać program rozwiązujący trójmiany kwadratowe Ax 2 +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 IF Delta >0 THEN 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 3 cyfr po przecinku} END; END{Koniec programu}

60 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 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. ONStack checking{$S+} Przyjmowane standardowo – sprawdzanie w/w błędów nie jest wykonywane. OFF 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. ON Range checking {SR+} OpisStan Parametr pracy Dyrektywa

62 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 ONEmulation{$E+} Umożliwia użycie tylko typu REAL8087/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 wykonaneRelaxedVar-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. StricteVar-string checking{$V+} Umożliwia wykonywanie dalekich wywołań procedur i funkcji ( procedury i funkcje mogą być parametrami innych procedur i funkcji) ONForce 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 OFFI/O Checking{$I-}

63 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) OFFEmulation{$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 programowaniaPodstawowe wiadomości na temat języka programowania 2. Polecenia w języku Turbo PascalPolecenia."

Podobne prezentacje


Reklamy Google