opis programu Turbo Pascal (24 str)


1.Wstęp.

    1. Wymagania sprzętowe.

    2. Błąd ” Run-time error.

2. Podstawowe pojęcia występujące w Turbo Pascalu.

2.1 Objaśnienie pojęć: procedura, funkcja, słowo kluczowe, stała, zmienna, biblioteka.

2.2 Najważniejsze podstawowe typy zmiennych.

2.3 Stosowanie komentarzy.

2.4 Stosowanie wcięć.

3. Deklaracje i szkielet programu.

3.1 Podstawowy szkielet programu.

3.2 Deklaracja stałych.

3.3 Deklaracja zmiennych.

3.4 Deklaracja bibliotek (modułów).

3.5 Używanie średnika.

3.6 Instrukcja przypisania.

4. Podstawowe procedury.

4.1 Procedura WriteLn.

4.2 Procedura Write.

4.3 Procedura Read.

4.4 Procedura ReadLn.

4.5 Procedura GotoXY.

4.6 Procedura ClrSr.

4.7 Procedura Sound.

4.8 Procedura NoSound.

4.9 Procedura Delay.

5. Instrukcje.

5.1 Instrukcja IF...ELSE.

5.2 Instrukcja BEGIN END.

5.3 Instrukcja CASE.

5.4 Instrukcja REPEAT...UNTIL.

5.5 Instrukcja WHILE...DO.

5.6 Instrukcja FOR...TO...DO.

6. Procedury i funkcje.

6.1 Tworzenie Procedur.

6.2 Tworzenie Procedur z parametrami.

7. Tablice.

8. Bazy danych.

8.1 Procedura TextColor.

8.2 Procedura TextBackGround.

8.3 Operator AND.

8.3 Operator OR.

8.4 Procedura Assign.

8.5 Procedura Close.

8.6 Procedura Reset.

8.7 Funkcja EOF.

8.8 Procedura Rewrite.

9. Grafika w Turbo Pascalu.

9.1 Procedura InitGraph.

9.2 Procedura CloseGraph.

9.3 Procedura SetColor.

9.4 Procedura SetBkColor.

9.5 Procedura SetFillStyle.

9.6 Procedura SetLineStyle.

9.6 Procedura Line.

9.7 Procedura Circle.

9.8 Procedura Rectangle.

9.9 Procedura FloodFill.

9.10 Procedura Bar.

9.11 Procedura Bar3D.

9.12 Procedura PutPixel.

9.13 Procedura OutTextXY.

9.14 Procedura ClearDevice.

10. Klawisze rozszerzone i menu w Trybie Tekstowym.

10.1 Funkcja ReadKey.

10.2 Funkcja Chr.

10.3 Funkcja Ord.

10.4 Obsługa Klawiszy Rozszerzonych.

10.5 Funkcja Inc.

10.6 Funkcja Dec.

10.7 Menu w Trybie Tekstowym Sterowane Kursorami.

11. Dane dynamiczne.

12. Własne biblioteki i obsługa myszki.

12.1 Procedura Str.

12.2 Tworzenie bibliotek.

12.2.1 Nowa procedura WriteXY.

12.2.2 Nowa procedura Ramka.

12.3 Procedury do obsługi myszki.

12.3.1 Nowa procedura PokazMyche.

12.3.2 Nowa procedura SchowajMyche.

12.3.3 Nowa procedura UstawMyche.

12.3.4 Nowa procedura PobierzMyche.

12.3.5 Nowa procedura VgaOn.

12.4 Myszka w praktyce.

12.5 Wybieranie myszką obiektów.

2. Podstawowe pojęcia występujące w Turbo Pascalu.

2.1 Objaśnienie pojęć: procedura, funkcja, słowo kluczowe, stała, zmienna, biblioteka.

Procedura - to grupa deklaracji i instrukcji, opatrzona własną nazwą i realizująca określoną czynność; procedurę można wielokrotnie wywoływać, podając jej nazwę; wywołanie procedury spowoduje wykonanie zawartych w niej instrukcji

Prosta deklaracja procedury:

PROCEDURE nazwa; deklaracje BEGIN instrukcje END; {nazwa}

Funkcja - w Turbo Pascalu korzystamy z funkcji standardowych; można także definiować własne funkcje, charakteryzujące się tym, że zwracają jedną i tylko jedną wartość wynikową i wywołuje się je w ramach wyrażeń

Deklaracja funkcji:

FUNCTION nazwa (lista parametrów formalnych) : typ; deklaracje BEGIN instrukcje END; {nazwa}

Słowo Kluczowe - słów tych można używać w programie tylko w ściśle określonym kontekście; można je zapisywać małymi lub dużymi literami, wybór formy zapisu powinien być podporządkowany czytelności programu; słowa te to np. PROGRAM, BEGIN, to, do, then

Stała - jest to pewna wartość przypisana znakowi/wyrazowi, której nie można zmienić np. stałej PI jest przyporządkowana liczba 3.1415...

Deklaracja stałej:

CONST indentyfikator = wartość ... indentyfikator = wartość;

Zmienna - Jak sama nazwa wskazuje zmienna jest to wyraz, któremu jest przypisana pewna wartość, którą w czasie działania programu możemy swobodnie zmieniać w zakresie danego typu.

Biblioteki (moduły) - zapisane są w nich różne funkcje i procedury do użycia w programie.

2.2 Najważniejsze podstawowe typy zmiennych.

2.2.1 Typy całkowite - są to wartości liczbowe, które mieszczą się w podanych zakresach, im większy zakres to automatycznie zwiększa się zapotrzebowanie liczby na pamięć:

2.2.2 Typ logiczny - BOOLEAN - typ ten może przyjmować jedynie dwie wartości: TRUE (prawda) lub FALSE (fałsz) dzięki temu zajmuje on jedynie 1/8 bajta

2.2.3 Typ znakowy - CHAR - typ ten przyjmuje dowolny pojedynczy znak o kodach ASCII (0..255) np. znak "A" czy "!"

2.2.4Typ łańcuchowy - STRING - jest to ciąg o długości 0-255 znaków, przykładowym łańcuchem jest: 'To jest tekst', zwróć uwagę na użyte apostrofy ! Jeżeli jakiekolwiek znaki umieścisz pomiędzy apostrofami będzie to uznawane wtedy za tekst nawet jeżeli znajdować się tam będą w środku liczby !

2.3 Stosowanie komentarzy.

Komentarze w programie nie są niezbędne, ale bardzo upraszczają późniejszą poprawę/modyfikację programu i to dzięki komentarzom nasz program staje się bardziej czytelny również dla innych osób. W Pascalu ujmuje się je pomiędzy nawiasy klamrowe "{","}".

2.4 Stosowanie wcięć.

Wcięcia stosowane są do łatwiejszego zorientowania się w programie źródłowym, dla programisty jest to bardzo przydatne, ponieważ natychmiast widzi, które fragmenty programu są ze sobą bardziej powiązane, a które mniej. Przykład :

Program bez wcięć:

Var

s:string;

b:byte;

Begin

ReadLn(s);

If s='pi' Then

Begin

For b:=1 To 10 Do

Begin

WriteLn(PI);

WriteLn(b);

End;

End Else WriteLn('Pozostale');

End.


Program z wcięciami:

Var

s:string;

b:byte;

Begin

ReadLn(s);

If s='pi' Then

Begin

For b:=1 To 10 Do

Begin

WriteLn(PI);

WriteLn(b);

End;

End Else WriteLn('Pozostale');

End.

3. Deklaracje i szkielet programu.

3.1 Podstawowy szkielet programu.

Podstawowy, a zarazem najmniejszy program w Pascalu wygląda tak:

begin {1}

end. {2}

Przedstawione tutaj dwie linijki całkowicie nic nie robią, informują one jedynie kompilator gdzie zaczyna się nasz główny program {1} i gdzie kończy {2} pomiędzy tymi liniami będzie w przyszłości znajdował się nasz program, należy zwrócić uwagę, że {2} po "END" jest postawiona kropka, ponieważ "END." oznacza koniec programu, a "END;" koniec fragmentu programu.

3.2 Deklaracja stałych.

Stałe deklaruje się jeszcze przed głównym programem słowem kluczowym "Const", w programie przykładowo wygląda to tak:

Const

abc=500;

l3='tu jest tekst';

sprawdz=TRUE;

begin

end.


W tym prostym programiku, zastosowano wcięcia, dzięki temu widzimy, które linie są liniami ze stałymi a które nie. Zadeklarowano tutaj trzy stałe: "abc" - przypisana została do niej liczba 500, teraz jeżeli dalej w programie użyjemy stałej "abc" będzie ona postrzegana przez kompilator jako liczba 500, można ją dodawać, odejmować, wyświetlać itd. Stała "l3" jest ciągiem znaków 'tu jest tekst', a "sprawdz" jest postrzegane jako stała logiczna "PRAWDA".

3.3 Deklaracja zmiennych.

Zmienne deklaruje się podobnie jak stałe jeszcze przed głównym programem, słowem kluczowym "Var", w programie przykładowo wygląda to tak:

Var

abc:byte;

l3,linia,t:string; {1}

sprawdz:boolean;

begin

end.

Teraz zmienne zostały przypisane do danego typu, i ich wartość będzie można dowolnie zmieniać w zakresie tego typu. Należy zwrócić uwagę, że pomiędzy nazwą zmiennej a jej rodzajem, został użyty dwukropek zamiast znaku równości jak to miało miejsce przy stałych. Możliwe jest definiowanie wielu zmiennych tego samego typu w jednej linii, wystarczy je wtedy rozdzielić przecinkami {1}. Każda zmienna przed użyciem w programie musi być wcześniej zadeklarowana.

3.4 Deklaracja bibliotek (modułów).

Biblioteki (moduły) deklaruje się słowem kluczowym "Uses":

Uses dos,crt;

begin

end.


Od tej pory program może używać funkcji i procedur zdefiniowanych w modułach "DOS", "CRT" oraz mimo że, nie deklarowaliśmy, automatycznie ładowanego modułu "SYSTEM".

3.5 Używanie średnika.

Średnik występujący na końcach niektórych linii, oznacza zakończenie procedury, funkcji, pętli czy instrukcji warunkowych. Średnika nie stawia się po słowach kluczowych rozpoczynających pewien fragment programu, dopiero stawia się go na końcu tego fragmentu ( pomiędzy nimi mogą znajdować się jeszcze inne linie ) np. "begin...end;"

3.6 Instrukcja przypisania.

Instrukcja przypisania, służy do nadawania zmiennym wartości, wygląda ona tak: ":=" i przykładowo jeżeli zmiennej ABC typu WORD ( liczba przypisywana MUSI znajdować się w zakresie typu tej zmiennej ) chcemy nadać wartość 456 to piszemy: "ABC:=456;". Niektórych może zaintrygować dlaczego instrukcję przypisania zapisuje się tak ":=" zamiast zwykłego znaku równości "=" ? Oto przykład: operacja "kolejna:=kolejna+1" z punktu widzenia matematyki może wydawać się błędna i to wygląda jak np. "4=4+1" co jest absolutną bzdurą, to my wykonujemy tu jednak nie równanie matematyczne, a nadanie zmiennej nowej wartości, aby to wyjaśnić zobaczmy jak taką linię postrzega komputer: najpierw sumowane jest to co znajduje się po prawej stronie, a dopiero potem podstawiane jest do zmiennej po lewej np. zmienna "kolejna" ma wartość 2, wykonujemy prawą stronę "2+1" komputer zapamiętuje sobie tam gdzieś u siebie w pamięci "3" ( wynik równania ) i dopiero potem wykonuje lewą stronę "kolejna:=liczba z pamięci".

4. Podstawowe procedury.

4.1 Procedura WriteLn.

WriteLn wypisuje listę elementów i powoduje przejście do nowego wiersza. Dozwolone jest użycie WriteLn bez podawania listy elementów. W takim przypadku spowoduje to przejście do nowego wiersza.

4.2 Procedura Write.

Write działa podobnie jak WriteLn, z tym że nie powoduje przejścia do nowego wiersza.

4.3 Procedura Read.

Read przypisuje kolejnym zmiennym odpowiednie wartości z listy. Poszukując kolejnej wartości pomija spacje i puste wiersze. Nie pomija natomiast innych znaków, a zatem pomiędzy liczbami nie mogą występować jakiekolwiek dodatkowe informacje.

4.4 Procedura ReadLn.

ReadLn działa analogicznie jak Read, z tym że po przypisaniu wartości wszystkim zmiennym automatycznie przechodzi do nowego wiersza, pomijając po drodze wszystkie napotkane znaki.

4.5 Procedura GotoXY.

GotoXY umieszcza kursor tekstowy w polu o współrzędnych (x,y).Pozwala na umieszczenie pytania we właściwym wierszu.

4.6 Procedura ClrSr.

ClrSr wyczyści ekran.

4.7 Procedura Sound.

Sound powoduje włączenie głośnika wewnętrznego i wygenerowanie dźwięku o podanej częstotliwości w Hz. Czas podany w milisekundach i częstotliwość to wielkości całkowite typu Word.

4.8 Procedura NoSound.

NoSound wyłącza dźwięk.

4.9 Procedura Delay.

Delay wstrzymuje na podany czas wykonywanie programu.

5. Instrukcje.

5.1 Instrukcja IF...ELSE.

Instrukcja IF ma następującą postać ogólną:

IF warunek THEN instrukcja

ELSE instrukcja;

Najprostszy warunek to porównanie dwóch elementów lub wyrażeń tego samego typu. W porównaniach można używać następujących operatorów:

= równe

<> różne

< mniejsze

<= mniejsze lub równe

> większe

>= większe lub równe

Instrukcja IF wykonywana jest w następujący sposób. Najpierw badany jest warunek. Jeśli został on spełniony, to wykonywana jest instrukcja po słowie THEN, natomiast pomijana jest instrukcja po słowie ELSE. Jeśli warunek nie został spełniony, pomijana jest instrukcja po słowie THEN, a wykonywana - instrukcja po sowie ELSE.

5.2 Instrukcja BEGIN END.

Instrukcja BEGIN END ma następującą postać:

BEGIN

instrukcje

END;

Grupę instrukcji, ograniczoną słowami BEGIN i END, nazywa się instrukcją złożoną. Można ją umieścić wszędzie tam gdzie dozwolone jest użycie pojedynczej (prostej) instrukcji.

5.3 Instrukcja CASE.

Instrukcja CASE ma postać ogólną:

CASE wyrażenie_klucz OF

wartość_klucza : instrukcja;

wartość_klucza : instrukcja;

...

wartość_klucza : instrukcja;

ELSE instrukcja;

END;

Instrukcja CASE wyznacza wartość wyrażenia_klucza, a następnie próbuje dopasować ją do którejś z wartości wymienionych na liście. Jeśli obliczona wartość wyrażenia jest równa jednej z wartości na liście, to wykonywana jest odpowiadająca jej instrukcja po czym sterowanie przekazywane jest bezpośrednio za instrukcję CASE. Jeśli natomiast na liście nie uda się znaleźć wartości odpowiadającej kluczowi, to wykonywana jest instrukcja po słowie ELSE. Dopuszcza się pominięcie słowa ELSE i następującej po nim instrukcji. Wówczas - jeżeli na liście nie uda się znaleźć klucz - nie jest wykonywana żadna instrukcja, a sterowanie przechodzi bezpośrednio za instrukcję CASE.

Wyrażenie_klucz musi należeć do typu całkowitego, logicznego, znakowego lub wyliczeniowego

5.4 Instrukcja REPEAT...UNTIL.

Instrukcja REPEAT ma postać ogólną:

Ustalenie warunków początkowych

REPEAT

Instrukcje wykonujące dowolne operacje i zmieniające warunki

UNTIL warunki;

W tym przypadku pętla wykona się przynajmniej raz przed sprawdzeniem warunku.

Budując pętlę warunkową należy zwrócić uwagę na dwa warunki, niezbędne do jej prawidłowego działania:

Jeśli wartość wyrażenia warunkowego nie zostanie określona jeszcze przed wejściem do pętli, to będzie ona działać na niepoprawnych lub nawet nieokreślonych danych. Jeśli wartość warunku nie będzie się zmieniała, to pętla będzie powtarzana w nieskończoność.

5.5 Instrukcja WHILE...DO.

Ogólna postać pętli WHILE:

Ustalenie warunków początkowych

WHILE warunki DO BEGIN

Instrukcje wykonujące dowolne operacje i zmieniające warunki

END;

Po ustaleniu wartości początkowych, tj. przypisaniu odpowiednich wartości zmiennym, używanym do badania warunku, rozpoczyna się właściwa pętla. Przed każdym - nawet pierwszym - wykonaniem badany jest warunek. Jeśli jest on spełniony, to wykonywana jest główna część pętli. Po napotkaniu słowa END następuje powrót do instrukcji WHILE i ponowne sprawdzenie warunku. Proces taki powtarzany jest aż do momentu, gdy wyrażenie warunkowe wartość false. Wówczas następuje zakończenie pętli i rozpoczyna się wykonywanie kolejnych instrukcji po słowie END.

5.6 Instrukcja FOR...TO...DO.

Ogólna postać instrukcji warunkowej FOR...TO...DO:

FOR zmienna_sterująca := początek TO koniec DO BEGIN

Instrukcje

END;

Utworzenie pętli w programie wymaga zadeklarowania specjalnej zmiennej , pełniącej funkcję licznika powtórzeń.

Deklaracja zmiennej sterującej:

VAR zmienna_sterująca : początek..koniec;

Deklaracja VAR opisuje zmienną sterującą, której wartośćzmieniała się będzie w zakresie wyznaczonym przez początek i koniec. Mogą to być parametry liczbowe lub znaki ujęte w apostrofy. Oto przykłady poprawnej deklaracji zmiennej sterującej:

VAR

i : 1..10;

litera: `a'..'z';

Instrukcja FOR definiuje właściwą pętlę w programie oraz określa początkową i końcową wartość zmiennej sterującej. Blok instrukcji wykonywanych w pętli, rozpoczyna się słowami DO BEGIN, a kończy słowem END.

Instrukcje zawarte w pętli wykonywane są wielokrotnie, przy czym przy każdym wykonaniu zmienna sterująca przyjmuje kolejną wartość z zadanego zakresu.

6. Procedury i funkcje.

6.1 Tworzenie Procedur.

6.2 Tworzenie Procedur z parametrami.

7. Tablice.

Tablica to grupa powiązanych ze sobą elementów tego samego typu, do których można odwoływać się za pośrednictwem indeksu. Jest to struktura danych zawierająca uporządkowany zbiór obiektów tego samego typu i odpowiada matematycznemu pojęciu wektora, macierzy itp. . Tablice jednowymiarowe odpowiadają wektorom, natomiast dwuwymiarowe macierzom.

Dostęp do poszczególnych elementów tablicy uzyskujemy poprzez podanie nazwy tablicy oraz w nawiasach prostokątnych wyrażenia określającego wartość indeksu.

Tablice dwuwymiarowe zawierają wiersze i kolumny. Pierwszy indeks tablicy odpowiada numerowi wiersza, a drugi numerowi kolumny. Wiersz są to elementy tablicy położone w poziomie, a kolumna są to elementy położone w pionie.

Przykład tablicy dwuwymiarowej:

0x01 graphic

Definicja typu tablicowego ma następującą postać:

TYPE identyfikator = ARRAY [typ indeksów] OF typ elementu;

Zakres poszczególnego indeksu zapisywany jest w postaci dwóch stałych oddzielonych dwoma kropkami. Dany identyfikator typu tablicowego można następnie wykorzystać w deklaracji VAR w sposób następujący:

VAR zmienna : identyfikator;

Tablicę można też zdefiniować bezpośrednio w deklaracji VAR:

VAR zmienna : ARRAY [zakresy indeksów] OF typ elementu;

Typ indeksów to typ okrojony, zdefiniowany na bazie typu integer, char, boolean lub typu wyliczeniowego. Elementy tablicy mogą należeć do dowolnego typu z wyjątkiem typów plikowych. Oto przykładowe deklaracje:

TYPE

wyniki = 0..20;

zakres = 0..100;

czestosci = ARRAY[wyniki] OF zakres;

duzelitery = `A'..'Z';

wystapienia = ARRAY[duzelitery] OF boolean;

dnitygodnia = 1..7;

liczbywdniu = ARRAY[dnitygodnia] OF integer;

Chcąc korzystać z tablicy, musimy najpierw zadeklarować zmienną typu tablicowego. Dostęp do dowolnego elementu tablicy uzyskuje się, podając jej nazwę i wartość indeksu ujętą w nawiasy kwadratowe. Dozwolone jest użycie wyrażeń.

8. Bazy danych.

8.1 Procedura TextColor.

TextColor jest to procedura dająca w wyniku kolorowy tekst.

Składnia: TextColor(kolor:byte); CRT

Zmienia kolor wyświetlania tekstu, możliwe do wybrania jest 16 kolorów:

Black = 0 - czarny

Blue = 1 - niebieski

Green = 2 - zielony

Cyan = 3 - turkusowy

Red = 4 - czerwony

Magenta = 5 - karmazynowy

Brown = 6 - brązowy

LightGray = 7 - jasnoszary

DarkGray = 8 - ciemnoszary

LightBlue = 9 - jasnoniebieski

LightGreen = 10 - jasnozielony

LightCyan = 11 - jasnoturkusowy

LightRed = 12 - jasnoczerwony

LightMagenta = 13 - jasnokarmazynowy

Yellow = 14 - żółty

White = 15 - biały

Można wykonać również kolor migoczący, uzyskuje się go poprzez dodanie do wybranego koloru liczby 128 ( Blink ) np.

Uses CRT;

Begin

TextColor(Blue);

Write('Napis Niebieski');

TextColor(8);

Write('Napis Ciemnoszary');

TextColor(Red+Blink);

Write('Napis Czerwony mrugajacy');

TextColor(15+128); { TextColor(143); }

Write('Napis Biały mrugający');

End.

8.2 Procedura TextBackGround.

Składnia: TextBackGround(kolor:byte); CRT

Zmienia kolor tła wyświetlanego tekstu, możliwych do wybrania jest 8 kolorów:

Black = 0 - czarny

Blue = 1 - niebieski

Green = 2 - zielony

Cyan = 3 - turkusowy

Red = 4 - czerwony

Magenta = 5 - karmazynowy

Brown = 6 - brązowy

LightGray = 7 - jasnoszary

Przykład:

Uses CRT;

Begin

TextBackGround(Blue);

Write('Napis na niebieskim tle');

TextBackGround(4);

Write('Napis na czerwonym tle');

End.

Aby zmienić kolor podkładu dla całego ekranu należy wykonać tą procedurę i wyczyścić ekran np.

Uses CRT;

Begin

TextBackGround(Green);

ClrScr;

Write('Oto napis na całym zielonym ekranie :)');

8.3 Operator AND.

Jest to operator "I" i stosuje się go tam, gdzie są potrzebne spełnione dwa lub więcej warunków np. w IF..THEN.. albo w pętli REPEAT..UNTIL, warunki muszą być podane w nawiasach np.

Var

a1,a2,a3:byte;

Begin

Write('Podaj 1 liczbe : ');

ReadLn(a1);

Write('Podaj 2 liczbe : ');

ReadLn(a2);

Write('Podaj 3 liczbe : ');

ReadLn(a3);

If (a1>a2) AND (a1>a3) Then WriteLn('Liczba ',a1,' jest najwieksza z podanych');

If (a2>a1) AND (a2>a3) Then WriteLn('Liczba ',a2,' jest najwieksza z podanych');

If (a3>a1) AND (a3>a2) Then WriteLn('Liczba ',a3,' jest najwieksza z podanych');

End.

Program sprawdza, która z podanych trzech liczb jest największa i wyświetla ją na ekranie.

8.3 Operator OR.

Jest to operator "LUB" i stosuje się tam gdzie jest potrzebny spełniony co najmniej jeden z dwóch lub więcej warunków, stosuje się go np. w IF..THEN.. albo w pętli REPEAT..UNTIL, warunki te muszą być podane w nawiasach np.

Uses CRT;

Var

c:char;

Begin

Write('Czy na pewno ? (T/N) :');

Repeat

c:=ReadKey;

Until (c='t') or (c='n');

End.

Program ten czeka na wciśnięcie klawisza "t" lub "n", ale jest niedoskonały, ponieważ gdy wciśniemy duży klawisz "T" lub "N" to wtedy nie zadziała. Rozwiązaniem tego jest dodanie obsługi tych klawiszy, poprawiony program wygląda tak:

Uses CRT;

Var

c:char;

Begin

Write('Czy na pewno ? (T/N) :');

Repeat

c:=ReadKey;

Until (c='t') or (c='T') or (c='n') or (c='N');

End.

8.3.1 Funkcja UpCase

Składnia: duza:=UpCase(literka:char):char;

Funkcja zamienia małą literkę na dużą, w przypadku podania już dużej litery lub cyfry nie następuje zamiana. np: UpCase('a') = 'A', UpCase('B') = 'B', UpCase('6') = '6'. Program z opisanego operatora OR można zapisać tak:

Uses CRT;

Var

c:char;

Begin

Write('Czy na pewno ? (T/N) :');

Repeat

c:=UpCase(ReadKey); {1}

Until (c='T') or (c='N'); {2}

End.

{1} Po wciśnięciu jakiegokolwiek znaku jest on zamieniany na dużą literę i podstawiany do zmiennej C
{2} Sprawdzenie czy zmienna C zawiera dużą literę T lub N

8.4 Procedura Assign.

Składnia: Assign(var Plik:text; nazwapliku:string);

Procedura kojarzy identyfikator "Plik" z plikiem dyskowym o nazwie "nazwapliku" , w której może mieścić się jeszcze ścieżka dostępu. Bardziej jasne stanie to się przy następnych procedurach "Reset" i "Rewrite".

8.5 Procedura Close.

Składnia: Close(var Plik:text);

Zamyka plik otwarty uprzednio przez "Reset", "Append" lub "Rewrite".

8.6 Procedura Reset.

Składnia: Reset(var Plik:text);

Otwiera plik "Plik" skojarzony uprzednio przez "Assign". Od tego momentu poprzez identyfikator "Plik" będzie można czytać dane poprzez Read i ReadLn z dysku np.

Var

przyklad:text; {1}

linia:string;

Begin

Assign(przyklad,'C:\AUTOEXEC.BAT'); {2}

Reset(przyklad); {3}

ReadLn(przyklad,linia); {4}

WriteLn(linia); {5}

Close(przyklad); {6}

End.

Program otwiera plik "C:\AUTOEXEC.BAT" i wyświetla z niego pierwszą linię. W kolejnych linijkach program wykonuje:
{1} Deklarujemy zmienną "przyklad" jako typ TEXT (plik textowy)
;
{2} Kojarzymy zmienną "przyklad" z plikiem "C:\AUTOEXEC.BAT"
;
{3} Otwieramy plik "przyklad" do odczytu
;
{4} Wczytujemy kolejną linię ( ponieważ nie czytaliśmy z niego wcześniej czyta pierwszą ) z pliku "przyklad" i wstawiamy ją do zmiennej "linia" typu String
;
{5} Wyświetlamy zmienną "linia"
;
{6} Zamykamy plik
;

8.7 Funkcja EOF.

Składnia: EOF(var Plik:text):boolean

Jest to funkcja zwracająca dwie wartości: prawdę (TRUE) lub fałsz (FALSE) i określa czy plik "PLIK" znajduje się w pozycji końcowej ( FALSE - są w nim jeszcze jakieś nie przeczytane dane, TRUE - tak, to koniec pliku, nic więcej w nim nie ma ). Np.:

Var

przyklad:text;

linia:string;

Begin

Assign(przyklad,'C:\AUTOEXEC.BAT');

Reset(przyklad);

REPEAT {1}

ReadLn(przyklad,linia); {2}

WriteLn(linia); {3}

UNTIL EOF(przyklad); {4}

Close(przyklad);

End.

Program podobnie jak poprzednio otwiera plik, ale odczytuje z niego wszystkie linie zaczynając od pierwszej a kończąc na ostatniej.
{1} roz
cznij pętlę;
{2} odczytaj kolejną linię z pliku "przyklad"
;
{3} wyświetl ją na ekranie
;
{4} sprawdź czy to już koniec pliku, jeśli nie to powróć do {2} i wyświetl kolejną li
nię, a jeśli tak to opuść pętlę;

8.8 Procedura Rewrite.

Składnia: Rewrite(var Plik:text);

Procedura ta tworzy nowy plik o nazwie skojarzonej ze zmienną "Plik" i udostępnia go do zapisu w nim danych ( poprzez Write i WriteLn ). UWAGA ! Jeżeli użyjemy tej procedury na istniejącym już pliku zostanie on usunięty i na jego miejsce utworzony nowy, np.:

Var

przyklad:text; {1}

Begin

Assign(przyklad,'C:\PLIKTEST.TXT'); {2}

Rewrite(przyklad); {3}

WriteLn(przyklad,'Taki sobie głupi napis zapiszemy w pliku :)'); {4}

Close(przyklad); {5}

End.

{1} definiujemy zmienną "przyklad" jako typ TEXT;
{2} kojarzymy zmienną "przyklad" z plikiem "C:\PLIKTEST.TXT" ale nie musi on wcale istnieć ponieważ:
{3} tworzymy plik i otwieramy go do zapisu
;
{4} wpisujemy do pliku linię z tekstem
;
{5} zamykamy plik
;

Jeżeli nie zamkniemy pliku i opuścimy program, to jakiś fragment ostatnio zapisywanych danych ulegnie skasowaniu. Czasami może się zdarzyć, że plik nie został do końca zapisany, więc w pierwszej kolejności należy sprawdzić, czy został on prawidłowo zamknięty.

Zaczynamy pisać prostą bazę danych

Napiszemy prostą bazę osobową, wystarczy: imię, nazwisko i telefon. Zaczniemy pisanie krok po kroku od podstaw, a potem będziemy ją modyfikować.

Zrobimy najpierw program na jedną osobę, tak aby można ją wprowadzić i wyświetlić:

Uses CRT;

Var

Imie,nazwisko,telefon:string;

c,c2:char;

PROCEDURE Wprowadz;

Begin

ClrScr;

Write('Imie : ');

ReadLn(imie);

Write('Nazwisko : ');

ReadLn(nazwisko);

Write('Telefon : ');

ReadLn(telefon);

End;

PROCEDURE Wyswietl;

Begin

ClrScr;

WriteLn('Imie : ',imie);

WriteLn('Nazwisko : ',nazwisko);

WriteLn('Telefon : ',telefon);

WriteLn;

Write('Wcisnij jakis klawisz...');

c2:=readkey;

End;

Begin

Repeat

ClrScr;

Write('1. Nowy wpis 2. Wyswietlenie wpisu 3.Koniec programu : ');

Repeat

c:=readkey;

Until (c='1') OR (c='2') OR (c='3');

If c='1' Then Wprowadz;

If c='2' Then Wyswietl;

Until c='3';

End.

Teraz użyjemy tablic i zobaczymy jak teraz zmienił się program:

Uses CRT;

Var

Imie,nazwisko,telefon:array[1..30] of string; {1}

c,c2:char;

iloscosob:byte; {2}

t1:byte; {3}

PROCEDURE Wprowadz;

Begin

ClrScr;

Iloscosob:=iloscosob+1; {4}

Write('Imie : ');

ReadLn( imie[iloscosob] ); {5}

Write('Nazwisko : ');

ReadLn( nazwisko[iloscosob] ); {6}

Write('Telefon : ');

ReadLn( telefon[iloscosob] ); {7}

End;

PROCEDURE Wyswietl;

Begin

ClrScr;

Write('Numer wpisu ? (1..', iloscosob ,') :'); {8}

ReadLn(t1); {9}

WriteLn('Imie : ',imie[t1] ); {10}

WriteLn('Nazwisko : ',nazwisko[t1] ); {11}

WriteLn('Telefon : ',telefon[t1] ); {12}

WriteLn;

Write('Wcisnij jakis klawisz...');

c2:=readkey;

End;

Begin

Iloscosob:=0; {13}

Repeat

ClrScr;

Write('1. Nowy wpis 2. Wyswietlenie wpisu 3.Koniec programu `);

Repeat

c:=readkey;

Until (c='1') OR (c='2') OR (c='3');

If c='1' Then Wprowadz;

If c='2' Then Wyswietl;

Until c='3';

End.

Jak widać linijek doszło niewiele, a ilość wpisów zwiększona została do 30.

Co się zmieniło:

Deklaracje:
{1} zmodyfikowaliśmy
3 zmienne z pojedynczych na tablice
{2} dodaliśmy
zmienną "iloscosob" określającą, ile mamy wpisów w bazie
{3} dodaliśmy
zmienną pomocniczą "t1", która będzie nam później potrzebna

Główny program:
{13} wyze
rowaliśmy zmienną "iloscosob", ponieważ nie mamy jeszcze żadnego wpisu

Procedury:
{4} ponieważ procedura ma za zadanie dopisywanie nowych danych musimy zwiększyć zmienną "iloscosob" będącą równocześnie ilością wpisów w bazie o jeden
{5} {6} {7} wprowadzenie danych do zmiennych tablicowych do elementów o numerze "iloscosob"
{8} wyświetlenie informacji o ilości dostępnych do uzyskania danych
{9} wprowadzenie zmiennej pomocniczej będącej numerem rekordu danych do wyświetlenia
{10} {11} {12} wyświetlenie danych z tablic o elementach numer "t1"


Do tamte
go programu dodamy jeszcze dwie procedury do zapisu i odczytu z dysku.

Uses CRT;

Var

Imie,nazwisko,telefon:array[1..30] of string;

c,c2:char;

iloscosob:byte;

t1:byte;

plik:text; {1}

PROCEDURE Wprowadz; { taka jak poprzednio }

[...]

PROCEDURE Wyswietl; { taka jak poprzednio }

[...]

PROCEDURE Zapisz; {2}

Begin

Assign(plik,'BAZA.DAN'); {3}

ReWrite(plik); {4}

WriteLn(plik,iloscosob); {5}

t1:=0; {6}

Repeat

t1:=t1+1; {7}

WriteLn(plik,imie[t1] ); {8}

WriteLn(plik,nazwisko[t1] ); {9}

WriteLn(plik,telefon[t1] ); {10}

Until t1=iloscosob; {11}

Close(plik); {12}

End;

PROCEDURE Czytaj; {13}

Begin

Assign(plik,'BAZA.DAN'); {14}

Reset(plik); {15}

ReadLn(plik,iloscosob); {16}

t1:=0; {17}

Repeat

t1:=t1+1; {18}

ReadLn(plik,imie[t1] ); {19}

ReadLn(plik,nazwisko[t1] ); {20}

ReadLn(plik,telefon[t1] ); {21}

Until t1=iloscosob; {22}

Close(plik); {23}

End;

Begin

Iloscosob:=0;

Repeat

ClrScr;

WriteLn('1. Nowy wpis'); {24}

WriteLn('2. Wyswietlenie wpisu'); {25}

WriteLn('3. Odczyt z pliku'); {26}

WriteLn('4. Zapis do pliku'); {27}

WriteLn('5. Koniec programu'); {28}

Repeat

c:=readkey;

Until (c>='1') AND (c<='5'); {29}

If c='1' Then Wprowadz;

If c='2' Then Wyswietl;

If c='3' Then Czytaj; {30}

If c='4' Then Zapisz; {31}

Until c='5'; {32}

End.

{1} Definiujemy zmienną PLIK jako typ TEXT
{2} Tworzymy nową procedurę ZAPISZ
, która będzie odpowiedzialna za zapis utworzonej bazy na dysku
{3-4} Otwieramy do zapisu plik o nazwie 'BAZA.DAN'
{5} Zapisujemy ilość wpisów na dysku
{6} Zerujmy zmienną pomocniczą T1
, będzie ona potrzebna do odliczania ilości zapisanych wpisów
{7} Zwiększamy zmienną T1 o jeden
{8-10} Zapisujemy IMIE NAZWISKO i TELEFON osoby numer T1
{11} Jeżeli zapisane zostało już "ILOSCOSOB" wpisów ( tzn. wszystkie )
, to przechodzimy dalej, jeśli nie wracamy do {18}
{12} Zamykamy plik, gdybyśmy tego nie zrobili to stracilibyśmy część danych
{13} Tworzymy nową procedurę CZYTAJ
, która będzie odpowiedzialna za odczytanie bazy z dysku
{14-15} Otwieramy do odczytu plik o nazwie 'BAZA.DAN'
{16} Odczytujemy pierwszą linię
, będącą liczbą z informacją o ilości wpisów
{17} Zerujmy zmienną pomocniczą T1
, będzie ona potrzebna do odliczania ilości odczytanych wpisów
{18} Zwiększamy zmienną T1 o jeden
{19-21} Odczytujemy IMIE NAZWISKO i TELEFON osoby numer T1
{22} Jeżeli odczytane zostało już "ILOSCOSOB" wpis
ów ( tzn. wszystkie ) to przechodzimy dalej, jeśli nie wracamy do {7}
{23} Zamykamy pli
k
{24-28} Nowe ulepszone menu
{29} Czekamy
na wciśnięcie 1,2,3,4 lub 5
{30-31} Wywołujemy nowe funkcje ( odczyt i zapis )
{32} Jeżeli wci
śnięty został klawisz 5 to opuszczamy program


I oto mamy najprostszą
bazę danych, teraz możemy udoskonalać:

9. Grafika w Turbo Pascalu.

9.1 Procedura InitGraph.

9.2 Procedura CloseGraph.

9.3 Procedura SetColor.

9.4 Procedura SetBkColor.

9.5 Procedura SetFillStyle.

9.6 Procedura SetLineStyle.

9.6 Procedura Line.

9.7 Procedura Circle.

9.8 Procedura Rectangle.

9.9 Procedura FloodFill.

9.10 Procedura Bar.

9.11 Procedura Bar3D.

9.12 Procedura PutPixel.

9.13 Procedura OutTextXY.

9.14 Procedura ClearDevice.

Praca pochodzi z serwisu www.e-sciagi.pl



Wyszukiwarka

Podobne podstrony:
Na czym polega programowanie w TURBO Pascalu, INFORMATYKA
Zadania z programowania w Turbo Pascalu na ocenę 5, Informatyka
Opisz i omów język programowania Turbo Pascal
Opisz i omów język programowania Turbo Pascal 2
Budowa i opis menu edytora Turbo Pascal 7
Budowa i opis menu edytora Turbo Pascal 7
Opis programów w Pascalu
Turbo Pascal kurs, Technik Informatyk, Programowanie strukturalne i obiektowe Turbo Pascal
Grafika w Turbo Pascal'u 1, informatyka, Programowanie - Pascal
Tp w 10 Programowanie modularne w Turbo Pascalu, INFORMATYKA, PROGRAMOWANIE, wykłady
Grafika w Turbo Pascal'u 2, informatyka, Programowanie - Pascal
Budowa i Opis Menu Edytora Turbo Pascal
Budowa i opis menu edytora Turbo Pascal 7
Turbo Pascal Zadania z programowania z przykladowymi rozwiazaniami
Turbo Pascal Zadania z programowania z przykladowymi rozwiazaniami tpzada
Budowa i opis menu edytora Turbo Pascal 7
Turbo Pascal Zadania z programowania z przykladowymi rozwiazaniami tpzada
Norbert Kilen Programowanie Kart Dzwiekowych w Turbo Pascalu

więcej podobnych podstron