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łyMożna wykonać również kolor migoczący, uzyskuje się 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.
Składnia: TextBackGround(kolor:byte); CRT
Zmienia kolor tła wyświetlanego tekstu, możliwe 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 - jasnoszaryPrzykł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 :)'); End.
Mówiąc po polsku jest to operator "I" i stosuje się 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.
Zanim dalej zaczniesz czytać, zaznajom się z nieopisaną wcześniej funkcją: ReadKey.
Mówiąc po polsku 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 więc 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.
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'. Tak więc 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
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".
Składnia: Close(var Plik:text);
Zamyka plik otwarty uprzednio przez "Reset", "Append" lub "Rewrite". Zaraz zobaczysz jak to się stosuje.
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:
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ś nieprzeczytane 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.
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żyjesz 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
Napiszemy sobie prostą bazę osobową czyli wystarczy: imię, nazwisko i telefon. Zaczniemy pisanie krok po kroku od podstaw, tak abyś wiedział skąd i dlaczego się biorą te dziwne rzeczy,
a potem z czasem będziemy ją modyfikować.
Oki zrobimy najpierw program na jedną osobę tak aby ją można 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.To już powinieneś rozumieć więc nie będę tłumaczył prosty program do wprowadzenia i wyświetlenia tylko 3 zmiennych, tylko co to za baza danych na jedną osobę ? Właśnie teraz przychodzą nam z pomocą tablice które tak wałkowałem na poprzedniej lekcji zobacz teraz jak zmienił się nasz 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 widzisz linijek doszło niewiele a ilość wpisów zwiększona została do 30. Teraz opiszę co się zmieniło:
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