PASCAL

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.

Środowisko Turbo Pascala

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 :

program nazwa_programu;
Słowo kluczowe oznaczające, iż dany plik zawiera program w języku Pascal.
Jednocześnie nadaje mu unikalną nazwę (nie ma to nic wspólnego z nazwą pliku w którym program jest przechowywany).
uses modul_1, modul_2, ... ;
Jest to instrukcja dołączająca zewnętrzne biblioteki zawierające dodatkowe procedury i funkcje, których można będzie użyć we własnym programie.
np.:
uses crt,graph,dos;
dołącza biblioteki zawierające kolejno funkcje tekstowe, graficzne i systemowe.
type nazwa_nowego_typu = definicja_nowego_typu;
Przy pomocy tego słowa kluczowego możemy utworzyć nowe typy danych na podstawie tych już istniejących (najczęściej są one bardziej skomplikowane).
np.:
type calkowita=integer;
przyporządkuje typowi calkowita standardowy typ integer .
const nazwa_stalej : typ_stalej = wartosc;
Deklaracje stałych.
np.:
const MAX=1000;
definiuje ciąg MAX jako zamiennik dla wartości 1000 w kodzie źródłowym.
var nazwa_zmiennej : typ;
Deklaracja zmiennych globalnych użytych w programie. Będą one widoczne (można się do nich odwoływać) w każdym miejscu programu.
procedure nazwa_podprogramu[(parametr1; parametr2;...)];
 
function nazwa_funkcji[(parametr1;parametr2;...)]:typ_zwracany;
W tym miejscu należy umieścić definicje własnych funkcji i procedur użytych w programie.
begin {początek programu głównego}
Blok programu głównego.
end. {koniec programu. - zapisywany słowem kluczowym end. z kropką na końcu}

 

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