Const jakas_stala=999; Var jakas_zmienna:Word; Begin jakas_zmienna:=448; Write(123); {1} Write('bzdura'); {2} Write(4*8); {3} Write('4*8'); {4} Write(jakas_stala); {5} Write(jakas_zmienna); {6} Write(jakas_zmienna+12); {7} Write(3/4); {8} End.Program wypisze na ekranie liczbę 123 {1}, tekst 'bzdura' {2}, wynik działania matematycznego 32 {3}, tekst '4*8' {4}, stałą o wartości 999 {5}, zmienną do której została wprowadzona liczba 448 {6}, oraz tą samą zmienną powiększoną o 12 czyli 460 {7}.
Write(3/4:8:4);Znaczy to: wyświetl liczbę ograniczając wyświetlanie do 8 znaków przed kropką i 4 po kropce, dzięki temu otrzymamy łatwo czytelny wynik 0.7500
Const jakas_stala=999; Var jakas_zmienna:Word; Begin jakas_zmienna:=448; Write(123,'bzdura',4*8,'4*8',jakas_stala,jakas_zmienna,jakas_zmienna+12,3/4:8:2); End.
Begin WriteLn(123); {1} WriteLn('bzdura'); {2} WriteLn(''); {3} WriteLn; {4} WriteLn(4*8); {5} End.W tym przypadku w KOLEJNYCH LINIACH zostaną wyświetlone wartości: liczba 123 {1} , tekst 'bzdura' {2}, pusty ciąg znaków '' {3} ( czyli niczego nie wyświetli i przejdzie do następnej linii ), kolejną pustą linię {4} ( po prostu procedura jest wykonywana podobnie jak w {3} z pustym łańcuchem znaków ) i wynik działania 32 {5}. Podobnie jak w procedurze Write parametry można podawać oddzielone przecinkami:
Begin WriteLn(123,'bzdura','',,4*8); End.Zwróć uwagę, że w tym przypadku jak pomineliśmy pusty ciąg znaków i po poprostu wpisaliśmy kolejny przecinek ( podobnie jak w {4} ) kompilator wyrzuci nam błąd. Prawidłowym zapisem natomiast jest:
Begin WriteLn(123,'bzdura','','',4*8); End.
Pozwala na wprowadzenie do zmiennej wartość podawaną z klawiatury w czasie działania programu:
Var zm1:String; zm2:Word; Begin Read(zm1); {1} Read(zm2); {2} Read; {3} End.Program czeka na wprowadzenie dwóch zmiennych, ZM1 typu STRING {1} oraz ZM2 typu WORD {2}, jeżeli natomiast wywołamy tą procedurę bez żadnych parametrów {3} to program czeka w tym momencie na wciśniecie klawisza Enter. W przypadku wprowadzania zmiennych trzeba uważać na kilka rzeczy:
Podobnie jak READ procedura ta pozwala na wprowadzenie do zmiennej wartość podawaną z klawiatury w czasie działania programu, z tym, że po przyjęciu wartości program przechodzi do następnej linii:
Var imie:String; Begin Write( 'Jak masz na imie ? : ' ); {1} ReadLn( imie ); {2} WriteLn; {3} WriteLn( 'Witaj ' , imie , '!' ); {4} Write( 'Wcisnij Enter...' ); ReadLn; {5} End.Programik ten wypisuje tekst {1} i czeka na wprowadzenie zmiennej IMIE {2}, następnie robi linijkę odstępu {3} i wypisuje tekst, zmienną i znowu tekst {4}. Na sam koniec czeka dodatkowo na wciśniecie klawisza Enter {5}.
Składnia: GotoXY(x,y:byte); [CRT]
Procedura ta pozwala na umieszczenie kursora (miejsca, od którego np. będą wyświetlane wartości przez Write), w dowolnym miejscu ekranu, procedura ta znajduje się w bibliotece CRT:
Uses CRT; Begin GotoXY(20,10); Write('Ten tekst rozpoczyna się w 20 kolumnie i 10 wersie'); End.W tym programie procedura GotoXY nakazuje przenieść kursor do 20 wiersza i 10 kolumny i wyświetlić tekst.
Przerywa ona natychmiast wykonywanie programu i powraca do DOS-a
Składnia: ClrScr; [CRT]
Usuwa wszystkie znaki z ekranu tekstowego (czyści go) i ustawia kursor w pozycji 0,0 (lewy górny róg ekranu)
Składnia: Sound(CZE:word); [CRT]
Włącza dźwięk o częstotliwości CZE ( liczba typu word ) emitowany przez głośnik komputera. Z własnych praktyk zauważyłem że dźwięk o częstotliwości 3160 jest "trochę" denerwujący :)
Składnia: NoSound; [CRT]
Wyłącza dźwięk emitowany przez głośnik komputera, włączony uprzednio przez SOUND.
Składnia: Delay(CZAS:word); [CRT]
Wstrzymuje program na określoną (zmienna CZAS) ilość milisekund (1000 milisekund=sekunda), przydatne np. przy procedurze Sound
Uses CRT; Begin Sound(2000); Delay(1000); NoSound; End.
Instrukcja ta sprawdza czy jest spełniony warunek postawiony po "IF", jeżeli tak to wykonywana jest instrukcja po słowie "THEN". Można jeszcze po THEN "coś tam", użyć słowa ELSE oznaczającego "w przeciwnym wypadku", umieszczona po ELSE instrukcja zostanie wykonana dopiero wtedy, gry warunek postawiony po "IF" NIE ZOSTAŁ SPEŁNIONY np:
Var ttt:Byte; Begin Write('Podaj liczbę z zakresu 0..255 : '); ReadLn(ttt); IF ttt=40 THEN WriteLn('Podałeś liczbę 40'); {1} IF ttt>100 THEN WriteLn('Podałeś liczbę większą niż 100') ELSE WriteLn('Podałeś liczbę równą lub mniejszą od 100'); {2} End.Ograniczę się w opisie programu tylko do rzeczy nowych, a więc:
Var ttt:Byte; Begin Write('Podaj liczbę z zakresu 0..255 : '); ReadLn(ttt); IF ttt=40 THEN {1} WriteLn('Podałeś liczbę 40'); {1} IF ttt>100 THEN {2} WriteLn('Podałeś liczbę większą niż 100') ELSE {2} WriteLn('Podałeś liczbę równą lub mniejszą od 100'); {2} End.
Instrukcję grupującą rozpoczyna słowo kluczowe BEGIN, a kończy ją END. Wszystkie instrukcje umieszczone pomiędzy tymi słowami będą traktowane jako jedna. Jest to przydatne np. przy poznanej przez chwilą instrukcji warunkowej IF THEN ELSE np.
Uses CRT; Var strona:byte; Begin Write('1-strona tytulowa 0-koniec : '); ReadLn(strona); IF strona=1 THEN Begin ClrScr; WriteLn('Program przykładowy w języku Turbo Pascal'); WriteLn('Autor: Robert Wróbel (GiGi)'); WriteLn('Napisany Dnia 20.09.97') End; End.Jak widzisz po wpisaniu cyfry "1" zostanie wyczyszczony ekran i pojawią się trzy linijki tekstu więc wykona cztery instrukcje zamiast jednej, gdyby nie było BEGIN END to program by wyglądał tak:
Uses CRT; Var strona:byte; Begin Write('1-strona tytulowa 0-koniec : '); ReadLn(strona); IF strona=1 THEN ClrScr; IF strona=1 THEN WriteLn('Program przykładowy w języku Turbo Pascal'); IF strona=1 THEN WriteLn('Autor: Robert Wróbel (GiGi)'); IF strona=1 THEN WriteLn('Napisany Dnia 20.09.97') End.Jak widać, teraz jest "trochę" bardziej naśmiecone, a co jeśli ma wykonać 50..100.. linijek ? Aż mi się włos jeży na głowie jak pomyślę :-)
Jest to również w pewnym sensie instrukcja grupująca i jest traktowana jak jedna instrukcja (podobnie jak Begin...End). Pętla zaczyna się słowem kluczowym REPEAT dalej znajdują się linie do wykonania a zakończona jest słowem UNTIL i warunkiem, który jeżeli zostanie spełniony przerywa pętlę i kontynuuje program, jeżeli nie, powraca na początek (po REPEAT) i wykonuje instrukcje pomiędzy nimi po raz kolejny i znowu dochodzi do UNTIL, znowu sprawdza warunek itd. jest to pętla która zostanie CO NAJMNIEJ RAZ WYKONANA, gdyż warunek znajduje się dopiero na końcu (jest też pętla WHILE .. DO .. w której warunek zostaje sprawdzany na początku) Przykład:
Uses CRT; Var licz:byte; Begin ClrScr; REPEAT Write('Wpisz jakąś liczbę (0-wyjscie) : '); ReadLn(licz); WriteLn('Potega liczby ',licz,' to ',licz*licz); WriteLn; UNTIL licz=0; End.Program tak długo podaje potęgi kwadratowe wpisanych liczb póki nie podamy mu cyfry 0, oczywiście te końcowe "0" również spotęguje gdyż dopiero sprawdzi warunek na końcu pętli. Ciekawą rzeczą którą można zrobić to pętla nieskończona, sam zobacz dlaczego :)
Begin REPEAT UNTIL 1=2; End.
Uses CRT; Const haslo='Pascal'; Var wprowadz:String; petla:byte; Begin REPEAT ClrScr; GotoXY(31,12); Write('Podaj haslo : '); ReadLn(wprowadz); IF petla=4 THEN REPEAT ClrScr; GotoXY(31,12); Write('Access Denied !'); Sound(3160); Delay(500); Sound(3190); Delay(500); UNTIL 1=2; petla:=petla+1; UNTIL wprowadz=haslo; { Haslo poprawne, dalsza część programu } End.