Język programowania Pascal powstał w 1971 r. Jego autorem
jesr Niklaus Wirth. Popularność Pascal zaczął zdobywać po
1974 r. po opublikowaniu książki na ten temat. Miał służyć
do nauki programowania strukturalnego. Jest doskonałym
narzędziem do nauki programowania w systemie operacyjnym DOS.
Niejako kontynuacją rozwoju jest jezyk Delphi - 32-bitowe,
obiektowe zintegrowane środowisko RAD (Rapid Application
Development) do tworzenia aplikacji w systemie Windows.
Turbo Pascal jest zintegrowanym
pakietem składającym się z następujących części:
- edytora - służy on do pisania i poprawiania programów;
- kompilatora - zamienia on plik źródłowy na instrukcje
wykonywane przez komputer;
- debuggera - umiejscawia i usuwa on usterki w programie oraz
pozwala śledzić wykonywanie programu krok po kroku.
Uruchomienie systemu Turbo Pascal.
Kompilator języka Turbo Pascal można uruchomić na 2 sposoby: w trybie wsadowym lub wykorzystując środowisko uruchomieniowe systemu.
Do wsadowego uruchomienia najlepiej utworzyć plik wsadowy np.
tp.bat o przykłądowej azawartości:
c:\TP\utils\tpc %1
if not errorlevel 1 %1
Do napisania treści programu w wersji źródłowej niezbędny
jest edytor tekstowy (np. Edit czy edytor Nortona Commandera).
Środowisko uruchomieniowe systemu Turbo Pascal (np. wersji 6, czy Borland Pascala 7) umożliwia m.in. edycję programów, kompilację, uruchomienie.
Turbo Pascal uruchamia się przez przejście do katalogu, który go zawiera (np. c:\tp\bin ) i wydanie polecenia turbo lub uruchomienie komendy turbo, jeśli ustawiona jest ścieżka dostępu do katalogu z programem turbo.exe lub uruchomienie odpowiedniego programu batchowego (np. tp7.bat).
Po
uruchomieniu programu ekran zostanie podzielony na następujące
części:
- głównego menu - górna linijka ekranu;
- okna edytowania (Edit) - zajmuje większość ekranu;
- paska z klawiszami - dolna linijka ekranu.
Wydawanie poleceń:
myszą
- poprzez kl iknięcie na
odpowiednim wyrazie menu, a następnie na odpowiedniej komendzie;
klawiaturą - wciskamy F10 , przesuwamy strzałkami podświetlenie,
wciskamy Enter , przesuwamy w dół i ponownie naciskamy Enter ;
klawiaturą - wciskamy kombinację Alt i
pierwszą literę wyrazu w menu, następnie wciskamy
wyróżnioną literę komendy;
klawiszem skrótowym - wciskamy klawisz lub kombinację klawiszy,
która znajduje się obok komendy lub w pasku z klawiszami.
Zapamiętanie edytowanego programu
(z rozszerzeniem .pas) przez naciśniecie klawisza F2.
F3 - ściągnięcie programu
Alt-F9 - kompilacja programu
Ctrl-F9 - uruchomienie skompilowanego
programu:(z ewentualną kompilacją)
Alt-F5 - przełącza na
wirtualny ekran użytkownika
Esc lub F10 . -
wyjście
Alt-X - wyjście z systemu
Program Reset ( Ctrl + F2 ) - przerywa wykonywany program i
inicjalizuje debugger;
Go to cursor ( F4 ) - wykonuje program aż do linijki
zawierającej kursor, po czym zatrzymuje się i czeka na dalsze
polecenia;
Trace Into ( F7 ) - wykonuje bieżącą instrukcję
programu, jeśli jest to wywołanie procedury, to przechodzi do
pierwszego wiersza tej procedury;
Step Over ( F8 ) - wykonuje bieżącą instrukcję
programu, jeśli jest to wywołanie procedury, to wykonuje ją w
całości;
Make ( F9 ) - kompiluje program do pliku .EXE
kompilując tylko zmienione pliki;
Build - kompiluje program do pliku .EXE kompilując wszystkie
pliki;
Primary file - wybór pliku zawierającego program do kompilacji;
Clear primar y file - czyści
opcję wybraną za pomocą Primary file ;
Information - wyświetla informacje
o skompilowanym programie
Struktura programu
Program powinien składać się z danych,
instrukcji i komentarzy .
Dane to obiekty na których program przeprowadza operacje
(np. liczby, teksty).
Instrukcje to kolejne operacje, które program ma wykonać
na danych.
Komentarze nie wpływają na przebieg działania programu,
służą jedynie poprawieniu czytelności kodu.
Ogólna struktura programu w języku Pascal:
program nazwa;
deklaracje
begin
instrukcje
end.
Nazwa jest dowolną nazwą do zidentyfikowania programu (bez
spacji)
Deklaracje służą do określenia struktury danych programu.
Instrukcje programu oddzielamy za pomocą średnika (przed
instrukcją end nie jest średnik konieczny).
Program powinien być zapisywany z wykorzystaniem wcięć.
Podstawowymi obiektami programu są stałe i zmienne. Stałe i
zmienne mają nazwę i mogą mieć przypisaną wartość. Nazwa
jest ciągiem znaków i musi zaczynać się literą.
Zmienne mogą być różnych typów. Stałe definiuje się za
pomocą słowa kluczowego const.
Przykład:
program Stale_i_zmienne;
const
c=2.25; pi=3.142
var
i, j: integer;
begin
{instrukcje programu}
end.
Program składa się z następujących sekcji :
uses crt,graph,dos;
type calkowita=integer;
calkowita
standardowy
typ integer
. const MAX=1000;
Typy danych
Najczęściej występujące typy danych:
całkowity: integer; rzeczywisty: real do przechowywania liczb rzeczywistych; znakowy: cha do przechowywania znakur; łańcuchowy: string dla łańcuchów znaków (napisów) o podanej długości; logiczny: boolean do przechowywania wartości logicznych true (prawda) lub false (fałsz).
Do przechowywania liczb całkowitych służą w Pascalu typy
całkowite, czyli zbiory, których elementami są wyłącznie
liczby całkowite.
Do typów całkowitych zaliczamy:
Nazwa typu | Zakres | Ilość bajtów |
Byte | 0..255 | 1 |
ShortInt | -128..127 | 1 |
Word | 0..65535 | 2 |
Integer | -32768..32767 | 2 |
LongInt | -2147483648..2146483647 | 4 |
Wyrażenia
Wyrazenia są zapisami operacji, jakie mają być wykonane.
Wyrazenie składa się ze stałych, zmiennych i operatorów.
Kolejnośc wykonywania działań określają nawiasy i priorytet
operatorów.
Najważniejsze operatory:
* mnożenie
/ dzielenie
+ dodawanie
- odejmowanie
div dzielenie całkowite
mod reszta z dzielenia
Instrukcja przypisania - służy do
przypisania zmiennym wartości. Jest postaci:
zmienna:=wyrażenie;
Przykład:
a:=5; b:=2.15; c:=a+b;
Instrukcje wejścia/wyjścia
Do wczytywania danych stosuje się instrukcje rad oraz readln.
read (lista_argummentów); Np. read(a,b)
W readln po wprowadzeniu danych następuje przesuniecie
wskaźnika w pliku wejściowym do następnego wiersza.
Readln bez argumentów służy do zatrzymania pracy programu do naciśniecia Enter.
Do wyprowadzania danych stosuje się instrukcję
write(lista_arg) lub writeln(lista_arg);
np. Writeln('a=',a:3,' b=',b:3);
Instrukcja złożona
Umożliwia zgrupowanie wielu instrukcji i traktowanie jako jednej. Ma postac: begin
{ciąg_instruckji_oddzielonych_średnikami}
end;
Np. begin a:=3; b:=10; writeln(a+b); end;
Trzy instrukcje są traktowane jako jedna.
Funkcje i procedury standardowe
W Turbo Pascalu istnieje duża biblioteka funkcji i procedur standardowych, czyli dostępnych bezpośrednio w systemie. Zawarte są w tzw. modułach Moduł System jest dołączany automatycznie do każdego programu, inne moduły nalezy dołączyć przez instrukcję uses. Procedura standardowa Exit powoduje wyjście z biezącego podprogramu, Halt zatrzymuje pracę programu. Procedura ClrScr zawarta w module Crt umożliwia wyczyszczenie ekranu. Wymaga dołączenia modułu Crt. program Czysc_ekran; uses Crt; ....
Podejmowanie decyzji w programie
W Pascalu są 2 stałe logiczne: true i false. Na nich
wykonuje się operacje logiczne: not, and, or. W wyrażeniach
logicznych stosuje się też operatory relacji:
=; <>; <; >; <=; >=
Instrukcja warunkowa:
pozwala na wykonanie lub zaniechanie wykonania pewnych czynności,
w zależności od konkretnego warunku logicznego. Instrukcja ma
następującą składnię:
If warunek Then instrukcja
If warunek Then instrukcja_1 else instrukcja_2
Przykl1: ReadLn(A); If A<0 Then Halt
Przyk2: readln(x); if x< 0 then writeln('x ujemne') else writeln('x nie jest ujemne');
Program Znak_liczby; var x:REAL; Begin Write ('Podaj liczbę do przebadania: x='); Readln (x); IF x>0 THEN Writeln ('Podana licba jest wieksza od zera') ELSE IF x<0 THEN Writeln (Podana liczba jest mniejsza od zera') ELSE Writeln (Podana liczba jest równa zero'); End.
CASE - instrukcja wyboru
Instrukcja CASE jest wykorzystywana kiedy
zachodzi konieczość podjęcia kilku dezyzji, gdy wykonanie różnych
części programu jest uzależnione od stanu pewnej zmiennej.
Podstawa podjęcia dezyzji jest wyrażenie typu całkowitego,
znakowego lub logicznego
Instarukcja CASE ma postać:
case wyrażenie of wartosc_1: Instrukcja_1; .................... wartosc_n: Instrukcja_n; else Instarukcja_awaryjna; end;
Przykład: Program Miesiac; var miesiac:INTEGER; {numer miesiąca w roku} Begin Write ('Podaj numer miesiąca w roku: '); Readln (miesiac); CASE miesiac OF 1: Writeln ('Styczeń'); 2: Writeln ('Luty'); 3: Writeln ('Marzec'); 4: Writeln ('Kwiecień'); 5: Writeln ('Maj'); 6: Writeln ('Czerwiec'); 7: Writeln ('Lipiec'); 8: Writeln ('Sierpień'); 9: Writeln ('Wrzesień'); 10: Writeln ('Październik'); 11: Writeln ('Listopad'); 12: Writeln ('Grudzień') ELSE Writeln ('Numer nie poprawny') End; {case} End. {programu}
Organizacja obliczeń cyklicznych
Instrukcja while
while warunek do instrukcja;
Powoduje wykonywanie instrukcji tak długo, dopóki spełniony jest warunek
Program Suma6; {Oblicza sumę 6 podanych liczb} var I:Integer; Suma:Real; X:Real; Begin I:=1; {Nadanie wartości początkowej I - licznik} Suma:=0; {Nadanie wartości początkowej Suma} WHILE I<=6 DO Begin {while} Write ('Podaj liczbę X='); Readln(x); Suma:=Suma+X; Writeln ('aktualna suma=',Suma:6:2); I:=I+1; end; {while} Writeln ('Suma koncowa suma=',Suma:6:2); End. {program}
Instrukcja repeat
repeat instr_1; {....} instr_n; until warunek;
Wykonywane są wszystkie instrukcje między instrukcjami while
i repeat. Ciąg instrukcji wykonywany jest co najmniej 1 raz,
instrukcje nie muszą być zgrupowane przy pomocy begin end.
W instrukcji while jeśli warunek jest true to wykonywanie
instrukcji jest kontynuowane, a dla repeat przeciwnie -
wykonywanie się konczy.
Program ilosc; {aplikacja konsolowa - Delphi} {wyznacza dlugosc ciagu liczb zakonczonych 0} {$APPTYPE CONSOLE} uses SysUtils; var dlug, liczba: integer; begin writeln('Podaj liczby'); dlug:=0; repeat readln(liczba); dlug:=dlug+1; until liczba=0; writeln('Dlug. ciagu wynosi ', dlug:5); readln; end.
Instrukcja for
Instrukcja jest wygodna, gdy z góry można określić liczbę powtórzeń.
Postać instrukcji:
for zmienna:=wart_pocz to wart_konc do instrukcja;
lub
for zmienna:=wart_pocz downto wart_konc do instrukcja;
Zmienna nazywana jest zmienną sterującą instrukcji for.
Musi być typu całkowitego, znakowego lub logicznego. Instrukcja
po słowie kluczowym do wykonywana jest tyle razy ile wartości
znajdujs się w zakresie wart_pocz .. wart_konc.
W instrukcji for .. dwonto zmienna sterująca zmniejsza się
kolejno o 1, zamiast zwiększać jak w instrukcji for.. do
Przykład:
Program wydr_5liczb_rosn; {Program drukuje 5 liczb od 1 do 5} var i: integer; begin for i:=1 to 5 do writeln(i); end.
Program wydr_5liczb_malej; {Program drukuje 5 liczb od 5 do 1} var i: integer; begin for i:=5 downto 1 do writeln(i); end.
TABLICE
Tablica jest strukturą danych zawierającą uporządkowany
zbiór obiektów tego samego typu. Odpowiada pojęciu wektora czy
macierzy.
Tablice jednowymiarowe odpowiadają wektorom a tablice
2-wymiarowe macierzom. Elementy tablicy wskazuje się za pomocą
indeksów.
Dostęp do elementów uzyskuje się przez podanie nazwy tablicy
oraz w nawiasach [] wyrażenia określającego wartość indeksu,
np. t[5].
Dla tablic 2-wymiarowych (zawierających wiersze i kolumny) 1-szy indeks odpowiada numerowi wiersza, a 2-gi numerowi kolumny, np. a[4,5].
Tablicę tworzymy przy pomocy słowa kluczowego array.
Definicja typu tablicowego:
type ident_typu_tablic = array [zakresy_indeksow] of
typ_elementu;
Zdefiniowanie tablicy przy pomocy identyfikatora typu
tabliicowego:
var zmienna_tablicowa : ident_typu_tablic;
Można też zdefiniować tablicę bezpośrednio w deklaracji var:
var zmienna_tablic : array[zakres] of typ_elementu;
np. var tab1: array[1..5, 1..10] of integer;
Przykład:
program Tabl1; {nadanie wartosci elemantom tablicy i wydruk} var i: integer; tab: array[1..4] of integer; {definicja tablicy 1-wymiar} begin for i:=1 to 5 do tab[i]:=10*i; {nadanie wartosci wlemantom tablicy} for i:=1 to 5 do writeln(i,' ',test[i]); {wydruk wartosci} end.
Podprogramy
Przy pisaniu większych programów wykorzystuje się
podprogramy.
Podprogram jest to wyróżniona częśc programu komunikująca
się z pozostałą częścią programu w ściśle określony
sposób. Do komunikcaji służą parametry, w definicji
podprogramu zwane formalnymi, a przy wywołaniu podprogramu -
parametrami aktualnymi.
W Pascalu są 2 typy podprogramów: procedury i funckje.
Procedury
Ogólna postać procedury:
procedure nazwa_proced (lista_param_formalnych}
..{deklaracje stałych, zmiennych, typów}
begin {procedury}
...{treść procedury}
end; {procedury}
Lista parametrów formalnych moze wystąpić lub nie. Wywołanie procedury polega na podaniu jej nazwy wraz z listą parametrów aktualnych (jeśli są}.
Przykład procedury bez parametrów:
Procedure Stop;
Begin
WriteLn;
WriteLn('Naciśnij klawisz ENTER ...');
ReadLn;
End;
Przykład wywołania procedury:
If (x Mod 24)=0 Then Stop;
Przykład procedury bez parametrów:
Procedure Pisz(S : String; kol, wier : Byte);
Begin
GotoXY(kol, wier); Write(s);
End;
Wywołanie:
Pisz('Liczba A nie może być ujemna !', 30, 25);
Funkcje
Ogólna postać funkcji w Pascalu:
function nazwa_funkcji (lista_param_formalnych: typ_wyniku); {deklaracje} begin {funckji} .. {treść funkcji} end; {koniec funkcji - zakonczony średnikiem}
W treści funkci musi być umieszczone przypisanie:
nazwa_funkcji:=wynik;
Ponadto nagłówek funkcji musi zawierać typ wyniku.
Wywołanie funkcji:
zmienna:=nazwa_funkcji(lista_param_aktualnych);
Przykład:
Function Sqrt4(x : Real) : Real; {pierw. stopnia 4 z liczby rzecz.} Begin Sqrt4:=Sqrt(Sqrt(x)); End;
Wywołanie:
x:=10; WriteLn('Suma pierwiastków stopnia czwartego = ', Sqrt4(x)+Sqrt4(x+1));