spis treści

66
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

Upload: naiya

Post on 16-Jan-2016

57 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Spis treści

Spis treści1. Podstawowe wiadomości na temat języka programowania2. Polecenia w języku Turbo Pascal3. Symbole stosowane w sieciach działań4. Klawisze funkcyje5. Struktura programu w języku TURBO PASCAL6. Zapowiedzi definicji procedury lub funkcji7. Deklaracja typów zmiennych w języku TURBO Pascal8. Pliki tekstowe w języku TURBO Pascal 9. Typy zmiennych10. Procedury11. Edycja, kompilacja i uruchamianie programów w języku TURBO PASCAL12. Moduły w języku TURBO Pascal

Page 2: Spis treści

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.

Page 3: Spis treści

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

Page 4: Spis treści

System TURBO PASCAL firmy BORLAND składa się

z :

• komplikatora języka TURBO PASCAL• zintegrowanego, systemowego,

pełnoekranowego edytora tekstu,• zintegrowanego programu

uruchomieniowego DEBAGER

Page 5: Spis treści

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

Page 6: Spis treści

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

Page 7: Spis treści

PASCAL

POLECENIA

Page 8: Spis treści

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 <Shift><Del>

Odtworzenie ostatniego wiersza, który był poddany edyji

Restore Line

Page 9: Spis treści

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 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…

Page 10: Spis treści

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]

Page 11: Spis treści

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<Alt>-[F9]

Page 12: Spis treści

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 obserwacjiModyfikacja obserwacjiUsunięcie wszystkich obserwacji

Add WatchDeleten WatchEdit WatchRemove 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

Page 13: Spis treści

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

Page 14: Spis treści

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 ekranu

Close

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

Page 15: Spis treści

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.

Page 16: Spis treści

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.

Page 17: Spis treści

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

1 2 3 … N

Page 18: Spis treści

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.

CAB 42

0 C Bx Ax2

0)1

A

Bx

21

A

Bx

22

0)2

A

Bx

2

..2,1

0)3

II. Algorytm komputerowy:START

Pisz: „Podaj współczynnikiró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 mapierwiastków w zbiorze

liczb rzeczywistych

STOP

DELTA = 0

1 22

X1=(-B-SQRT(DELTA))/2/A

X2=(-B+SQRT(DELTA))/2/A

Pisz: „Trójmian nie mapierwiastków w zbiorze

liczb rzeczywistych

STOP

Page 19: Spis treści

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 pomocniczychF1

obliczenie wartości podanych zmiennych i wyrażeńCtrl F4

wyświetlenie okienka zawierającego historię wywołań procedur i funkcji

Ctrl F3

Page 20: Spis treści

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

Page 21: Spis treści

Struktura programu w języku TURBO PASCALKaż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,14TYPE (*deklaracja typów zmiennych

Adres=recordNazwisko :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}

Page 22: Spis treści

R :RealOdp :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 }

Page 23: Spis treści

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ą FORWARDPROCEDURE 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;

Page 24: Spis treści

PROCEDURE Kreska;BEGINWRITELN(‘***************’)END;

PROCEDURE Kreska;BEGINWRITELN(‘***************’)END;

PROCEDURE SuperKreska(x,y,dl: BYTE;znak:CHAR);VAR k:BYTEBEGIN FOR K:=1 to dl DO BEGIN

GOTOXY(x+k-l,y); WRITELN(znak)END;

END;

PROCEDURE SuperKreska(x,y,dl: BYTE;znak:CHAR);VAR k:BYTEBEGIN FOR K:=1 to dl DO BEGIN

GOTOXY(x+k-l,y); WRITELN(znak)END;

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 ‘’=’’

Page 25: Spis treści

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 08 0”0

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

Page 26: Spis treści

Przykłady definicji funkcji:

FUNCTION DELTA (A,B,C:REAL):REAL;BEGINDELTA:=B*B-4*A*C;END;

Funkcja DELTA wyznacza wyróżnik równania kwadratowego.

FUNCTION POTEGA(X,Y:REAL):REAL;BEGINPOTEGA:=EXP(Y*LN(X));END;

Funkcja POTEGA oblicza X .Y

Funkcja Lg oblicza logarytm dziesiętny liczby X

FUNCTIONLg(X:REAL):REAL;BEGINLg:=Ln(X)/Ln(10)END;

FUNCTIONLog(a,b:REAL):REAL;BEGINLog:=Ln(b)/Ln(a)END;

Funkcja Log oblicza logarytm o podstawie a z liczby b

Page 27: Spis treści

FUNCTION SILNIA(n:BYTE):LongInt;VARi:BYTEIloczyn : Longint;BEGINiloczyn:=1;IF n>1 THEN BEGIN FOR i:=2 TO n DO iloczyn:=iloczyn*i; END; SILNIA:=iloczynEND;

FUNCTION SILNIA(n:BYTE):LongInt;VARi:BYTEIloczyn : Longint;BEGINiloczyn:=1;IF n>1 THEN BEGIN FOR i:=2 TO n DO iloczyn:=iloczyn*i; END; SILNIA:=iloczynEND;

FUNCTION SILNIA(n:BYTE):LongInt;BEGINIF ( n=0) OR (n=1) THEN SILNIA:=1 ELSE SILNIA:=n*SILNIA(n-1);END;

FUNCTION SILNIA(n:BYTE):LongInt;BEGINIF ( 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

Page 28: Spis treści

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; BEGINFOR k:=N DOWNTO 1 DO WRITELN;END;

PROCEDURE ODSTEP(n);VAR K :INTEGER; BEGINFOR 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.

Page 29: Spis treści

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.

Page 30: Spis treści

Pliki tekstowePlikami 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:

TYPEPlik=TEXT;VARZBIÓR, DANE : Plik;LubVARZBIÓR, DANE : TEXT;\Wewnętrzna definicja typu tekstowego jest następująca:TYPETEXT=FILE OF CHAR;VARINPUT,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.

Page 31: Spis treści

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

Page 32: Spis treści

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])

Page 33: Spis treści

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’)

Page 34: Spis treści

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 programuna drukarkę (podłączoną do portu równoległego LTPI).

ASSIGN(INPUT,’nazwa_pliku’) - pobranie danych z pliku o podanejnazwie (nazwę pliku można poprzedzić pełną ścieżką dostępu).

Po zakończeni powyższych operacji należy przywrócić pierwotne przypisaniaplików standardowych 1NPUT OUTPUT za pomocą procedur:ASSIGN(INPUT,’ ‘) lub ASSIGN(INPUT,'CON')ASSIGN(OUTPUT,’ ‘) lub ASSIGN(OUTPUT,'CON ')

Page 35: Spis treści

TYPY ZMIENNYCH

Page 36: Spis treści

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

Page 37: Spis treści

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

Page 38: Spis treści

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.

Page 39: Spis treści

Przykłady deklaracji typu okrojonego:

TYPE

liczba=97..113; {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

Page 40: Spis treści

4 bajtyliczby całkowite

-2147483648 do 214783647LongINT

2 bajtyliczby całkowite

-32762 do 32767INTEGER

1 bajtliczby całkowite

od -128 do 127SHORTINT

2 bajtyliczby całkowite

od 0 do 65535WORD

1 bajtliczby całkowite

0 do 255BYTE

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;

Page 41: Spis treści

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

2i

Page 42: Spis treści

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;

Page 43: Spis treści

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

000100

110110

110001

111011

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

Page 44: Spis treści

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:

Page 45: Spis treści

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.

Page 46: Spis treści

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

true‘THM’,’Thm’

true‘THM’<>’Thm’

false‘THM’=‘thm’

true‘THM’=‘THM’

WynikWyrażenie

Page 47: Spis treści

prawdatrue‘Thm’>=‘THm’

fałszfalse‘187’<‘1328’

fałszfalse‘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)

Page 48: Spis treści

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ówN (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)

Page 49: Spis treści

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:BEGINFOR i:=l TO m DOFORi:=lTOnDOBEGINWRIĘLNCPodaj dane'); READLN(A[ij]>; WRITELN(A[ij]>; ENDEND

Page 50: Spis treści

Przkład tablicy dwuwymiarowej zawierającej dane typu całkowitego.

A(x,y)=

0

90

43

90

9

32

8

2122897865451121

667215006

589126775412

4879063218762343

32137878686556211

176998990893421

7654321

kolumny 1,2,3…8

wiersze 1,2,3…6

Page 51: Spis treści

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

TYPEbaza=RECORD

imie :STRING[12];nazwisko :STRING[18]miej_ur :STRING[20];dzień_u :1,31;rok_ur :1962..1978;czy_łobuz :Boolean;

END;VAR

dane:baza;

Lub

VARdane :RECORDimie :string[12]nazwisko :strong[18]miejsce_ur :REKORD

miasto :STRING[20] panstwo :STRING[15]END;

Dzień_ur :1,31;Rok_ur :1962..1978;Czy_łobuz :Boolean;END;

Page 52: Spis treści

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

BEGINWHIT DANE DO

BEGIN READ(imie); READ(nazwisko); WRITE(czy_lobuz); miejsce_ur.miasto: ^'Ostrowiec1; miejsce _ur . państwo :=' Polska‘ END:

END.

1975

Rok_ur

N28FrancjaParyżZawadaKlaudyna

Czy_łobuzDzien_urDzień urodzenia

Miejsce_urnazwiskoimie

Page 53: Spis treści

Instrukcje wiążącą WITH można zagnieżdżać : BEGINWITH 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

Page 54: Spis treści

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.:

TYPEBAZA=ARRAY[10] of dane;

VARKATALOG :BAZA BEGIN

READ(katalog[5].dzien_ur); katalog[8]. czyjobuz:=true; katalog[10].miejsce_ur.panstwo:-Polska'; WRITE(katalog[10].miejsce_ur.panstwo); END.

8

7

6

5

4

3

2

1

Page 55: Spis treści

PROCEDURY

Page 56: Spis treści

Włączenie głośnika i wygenerowanie ciągłego dźwięku o częstotliwości n [Hz] -Sound(n)

CRTPrzywrócenie takiego sposobu wyświetlania jaki obowiązywał w chwili rozpoczynania wykonywania programu. -NormVideo

CRTRezygnacja z podwyższonej jasności znaków-LowVideo

CRTZwiększenie jasności znaków (przez ustawienie bitu jasność zmiennej TextAttr)-HighVideo

CRTZmiana trybu tekstowego na tryb wyspecyfikowany przez predefiniowaną stałą tryb-TextMode(tryb)

CRTWstawianie wiersza pod wierszem, w którym znajduje się aktualnie kursor i przesuniecie wierszy znajdujących się poniżej o jeden wiersz w dół.-InsLine

CRTUsunię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)

CRTWyczyszczenie 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

CRTWyczyszczenie 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łaniaNazwa procedury

Page 57: Spis treści

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)

CRTPrzypisanie zmiennej TextAttr atrybutu koloru tła. Zmienna koloru może być nazwą koloru lub jego numerem

-TextBackgrund(kolor)

CRTPrzypisanie 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

Page 58: Spis treści

Edycja, kompilacja i uruchamianie programów w języku TURBO PASCAL.

1. Na podstawie algorytmu blokowego napisać program rozwiązujący trójmiany kwadratowe

Ax2+bx+c=0Program 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 prawejstronie}

IF Delta >0 THENWRITELN(‘Trójmian nie ma rozwiązania w R’)

ELSEIF Delta >0 THEN

BEGINWRITELN(‘ Trójmian ma dwa pierwiastki ‘);X1:=(-B-SQRT(DELTA))/(2*A);

Page 59: Spis treści

X2:=(-B+SQRT(DELTA))/(2*A);WRITELN(‘X1=X1) {wprowadzenie wyniku}

WRITELN(X2=X2) {pierwiastki będą zapisane w postaci wykładniczej}

ENDELSEBEGIN

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}

Page 60: Spis treści

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)

Page 61: Spis treści

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. ON Stack 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+}

Opis Stan Parametr pracy Dyrektywa

Page 62: Spis treści

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.

Stricte Var-string checking{$V+}

Umożliwia wykonywanie dalekich wywołań procedur i funkcji ( procedury i funkcje mogą być parametrami innych procedur i funkcji)

ON 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-}

Page 63: Spis treści

Ustalenie wielkości stosu oraz segmentów na zmienne dynamiczne. Memory SIze

{$M wielkość_stosu,Mini_wielkość_segmętu,Max_wielkość_segmę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

ONDebug 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-}

Page 64: Spis treści

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łuLub 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.

Page 65: Spis treści

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 graficzneGRAPH3- umożliwia zgodność z TP ver 3,0TURBO3- 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.

Page 66: Spis treści

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;

BEGINCzęść inicjująca;ENDCzęść 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.