background image

Pierwsze programy w Turbo Pascal'u 

 

Jak "myśli" komputer 

 

Komputer wykonuje zawsze dokładnie to co mu każesz. Nie myli się. Zaczyna w określonej 
kolejności -od linijki kodu, która jest u góry bloku programu, do następnej linii i następnej... 
Jeśli go nie zaprogramujesz inaczej, sam nie zmieni tej kolejności. Świadomość ta ułatwia 
wykrywanie błędów i analizowanie programów. Gdy coś programujesz, masz pewność, że 
wszystko będzie się działo w sposób uporządkowany. W tym samym czasie w Pascalu 
wykonuje się tylko jedno polecenie. 

 

Estetyka 

 

Zanim zaczniesz programować postanów sobie zachowywać pewne normy estetyczne. Nie są 
one wymagane aby program działał poprawnie, ale naprawdę ułatwiają życie. Ułatwią pracę 
nie tylko nauczycielowi, czy innym osobom, które będą oglądały Twoją pracę, ale i Tobie. 
Pokażę Tobie przykład estetyki kodów z historii uczącego się programisty. 

 
 
Początki: 

procedure plot; 
begin 
tlo(nx,ny); 
if GetPixel(nx,ny)<>k then 
begin 
if sp=0 then begin 
punkt(nx,ny,k); 
Writeln(F,'punkt'); 
r:=r+15; 
Str(nx,t); 
Writeln(F,t); 
r:=r+Length(t); 
Str(ny,t); 
Writeln(F,t); 
r:=r+Length(t); 
Str(k,t); 
Writeln(F,t); 
r:=r+Length(t); 
end; 

background image

end; 
if ((sp=1) and (roznice)) then 
begin 
linia(sx,sy,ex,ey,k); 
Writeln(F,'linia'); 
Str(sx,t); 
r:=r+17; 
Writeln(F,t); 
r:=r+Length(t); 
Str(sy,t); 
Writeln(F,t); 
r:=r+Length(t); 
Str(ex,t); 
Writeln(F,t); 
r:=r+Length(t); 
Str(ey,t); 
Writeln(F,t); 
r:=r+Length(t); 
Str(k,t); 
Writeln(F,t); 
r:=r+Length(t); 
end; 
status3; 
kursor(nx,ny); 
end; 
 
Kilka lat później: 

 
unit Doors; 
 
{**********************************************************} 
 
interface 
 
uses Errors,        {OBSLUGA I KODY BLEDOW} 
    Graph10E,      {GRAFIKA W VESA, TRYB 10Eh} 
    Standard,      {STANDARDOWE POLECENIA} 
    Fonts;         {OBSLUGA CZCIONEK} 
 
 
{**********************************************************} 
 
const 
     MaxEvents=15;           {WSZYSTKICH ROZNYCH ZDARZEN} 
     MINI_BUTTON_SIZE   =10; {ROZMIAR PRZYCISKU NA OKNIE} 
 
     MAX_OBJECTS        =10; 
 
{**********************************************************} 

background image

 
     {NAZWY OBIEKTOW SYSTEMU SKKS DOORS} 
 
     DOORS_FORM         = 1; {OKNO, NA KTORYM USTAWIA SIE OBIEKTY} 
     DOORS_BUTTON       = 2; {PRZYCISK} 
     DOORS_EDIT         = 3; {POLE TEKSTOWE} 
     DOORS_PANEL        = 4; {PANEL NA KTORYM BEDA INNE OBIEKTY} 
     DOORS_ICON         = 5; 
     DOORS_LABEL        = 6; {NAPIS OBIEKTOWY} 

 

Ty nie musisz tracić kilku lat na wypracowanie u siebie własnego stylu programowania. 
Wystarczy, że od początku będziesz zachowywał estetyczny kod. Proponuję wcinać go po 
każdym rozpoczęciu bloku instrukcji i powracać w lewo po jego zakończeniu. Jeśli masz 
bałagan w kodzie zajrzyj do skrótów klawiszowych opisanych we wstępie i uporządkuj swoje 
źródła. 

 

Dobrze jest pisać słowa kluczowe, takie jak: unit, begin, end, const małymi literami. 
Dlaczego? Prawdopodobnie zetkniesz się w przyszłości z Delphi. Delphi sam dopisuje 
znaczną część kodu. Gdy tworzysz w Delphi blok instrukcji, on tworzy kod, gdzie słowa 
kluczowe są napisane małymi literami. Żeby nie bałaganić w jego kodzie pisanego małymi 
literami swoim -dużymi, do którego się przyzwyczaisz -pisz słowa kluczowe małymi literami. 

 

Warto czasem stosować komentarze, czyli swoje opisy, co robi dany kod. W praktyce nie ma 
czasu na pisanie komentarzy przy każdej instrukcji dlatego nie wpadaj w skrajności. Opisuj to 
co naprawdę potrzebne i ułatwi Tobie pracę, a nie zbierze dużo czasu. 

 

Napisy na ekranie, WriteLn 

 

Żeby napisać prosty program trzeba wiedzieć jak wygląda jego ogólna budowa w Pascalu. 
Pisanie kodu zaczynamy od słowa begin, a kończymy słowem end z kropką. 

 
 

program nazwa; {nagłówek programu – nie jest konieczny} 
begin 
{cały kod źródłowy kończymy słowem } 
end. 
 

background image

Jeśli chcesz nazwać swój program warto napisać słowo program a za nim jakąś nazwę. 
Niestety nazwa nie może zawierać polskich znaków. Słowo program nie jest konieczne. 
Niektórzy nauczyciele mogą wymagać wpisywania słowa program dla odróżnienia od innej 
wersji kodu źródłowego -modułu: unit. 

 
  

Przypuśćmy, że chcesz napisać coś na ekranie, wystarczy wpisać: 

 
 

begin 
WriteLn(‘napis na ekranie’); 
end. 
 
 
  

Aby uruchomić program wciśnij CTRL+F9 lub wybierz z menu górnego polecenia Run-
>Run. Prawdopodobnie obraz tylko raz mignie, bo program się zakończył. Aby zrobić 
podgląd tego co było na ekranie wciśnij ALT+F5. Teraz zobaczysz: 

 
 

napis na ekranie 
 

Do programu została użyta instrukcja WriteLn, która wypisuje tekst. Tekst musi się znaleźć 
między apostrofami. WriteLn jest odpowiedzialne za przesłanie danych na tzw. Standardowe 
wyjście. Standardowo wyjściem tym jest ekran. Użytkownik w dosie może przy uruchamianiu 
przekierować standardowe wyjście np. na jakiś plik lub na drukarkę, a wtedy dane z programu 
trafiają do odpowiedniego miejsca -mogą zostać zapisane do pliku, być wczytane przez inny 
program lub zostać wydrukowane. 

 

Można też bardziej urozmaicić program, napisać kilka linii kodu 

 

begin 
  WriteLn(‘WITAMY W PIERWSZYM PROGRAMIE’); 
  WriteLn(‘NAPISANYM W PASCALU 7.0’); 
  WriteLn(‘------------’); 
  WriteLn; 
  WriteLn('koniec.’); 
end. 
 

background image

Uruchomienie CTRL+F9 

Podgląd (Alt+F5) 
WITAMY W PIERWSZYM PROGRAMIE 
NAPISANYM W PASCALU 7.0 
------------ 
 
koniec. 
 

Można też użyć Write bez Ln. Ln oznacza, że po napisaniu tekstu komputer przejdzie do 
kolejnej linii, więc 

 

begin 
  Write(‘Ten napis będzie ’); 
  WriteLn(‘w pierwszej linii’); 
  WriteLn(‘a ten w następnej’); 
end. 
 

Podgląd (Alt+F5) 

 
Ten napis będzie w pierwszej linii 
a ten w następnej 
 

Operacje matematyczne 

 

Za pomocą WriteLn można wyświetlać rozwiązania operacji matematycznych, nawet tych 
skomplikowanych. Przykład: 

 
Proste dodawanie 
begin 
  WriteLn(‘2 + 2 = ’, 2 + 2); 
end. 
 

Podgląd (Alt+F5) 

 
2 + 2 = 4 
 
 

background image

 
Proste mnożenie 
begin 
  WriteLn(‘2 * 2 = ’, 2 * 2); 
end. 
 

Podgląd (Alt+F5) 

 
2 * 2 = 4 
 
 

Z nawiasami 

 
begin 
  WriteLn(‘2 * (2 – 3) = ’, 2 * (2 – 3)); 
end. 
 

Podgląd (Alt+F5) 

 
2 * (2 – 3) = -2 
 

Dzielić można na dwa sposoby. Dzielenie całkowite „DIV” z resztą „MOD” oraz zwykłe 
dzielenie znakiem „/” 

 
begin 
  WriteLn(‘25 div 4  = ’, 25 div 4); 
end. 
 

Podgląd (Alt+F5) 

 
25 div 4  = 6 
 

A zwykłe, ułamkowe 

 

begin 
  WriteLn(‘25 / 4  = ’, 25 / 4); 
end. 

background image

 

Da wynik: 

 

25 / 4  = 6.2500000000E+00 
 
 

Inne podstawowe operacje matematyczne: 
Sqrt(x) – Pierwiastek kwadratowy 
Sqr(x) – Potęga kwadratowa 
x div y – dzielenie x / y bez reszty 
x mod y – reszta z dzielenia x / y 
Sin(x) – funkcja Sinus -gdzie x to kąt podany w radianach (180° = π [rad]) 
Cos(x) – funkcja Cosinus -gdzie x to kąt podany w radianach (180° = π [rad]) 

 

Formatowanie liczb 

 

Mało kto chciałby otrzymywać wyniki z dzielenia z wieloma miejscami po przecinku. Do 
formatowania liczb służą pewne operatory. Przykład: 

 

begin 
  WriteLn(‘25 / 4  = ’, 25 / 4 : 4 : 3); 
end. 
 

Da wynik: 

 

25 / 4  = 6.250 
 
 

Dlaczego? „: 4” oznacza, że poświęcamy miejsce na 4 znaki cyfr, „: 3” oznacza, że 3 z nich 
będą miejscami po przecinku. Gdy damy :10 : 3, znaczy to, że aż 10 znaków będzie 
poświęconych na wyświetlenie tej liczby. Jeśli liczba cyfr jest krótsza liczba zostanie 
wyrównana do prawej. 

 

Kompilacja, tworzenie exe 

background image

 

Żeby użytkownicy komputera mogli bez edytora Pascala używać Twojego programu musisz 
go skompilować, czyli zamienić kod źródłowy na program wykonywalny. Trzeba zbudować 
plik .exe. Do budowy exe służy część menu Compile. Znajduje się tu ważny parametr 
Destination. Oznacza on miejsce docelowe kompilacji. Inaczej mówiąc gdy testujesz 
program, pascal nie musi za każdym razem tworzyć na dysku pliku exe. Standardowo 
Destination jest ustawione na memory. Twój program jest więc kompilowany i uruchamiany z 
pamięci RAM. 

 

Jeśli chcesz zbudować plik .exe na dysku twardym zmień Destination na Disk. Teraz, gdy 
potrzebujesz, skompiluj wszystkie moduły (Build), potem uruchom program. Wystarczy. 
Program zostanie utworzony w lokalizacji podanej w 'Options->Directories->EXE & TPU'. 
Jeśli nie ustawiłeś tych ścieżek, polecam zajrzeć do pierwszego rozdziału tego kursu. 

 

Zmienne, ReadLn 

 

Zmienne są pewnym obszarem pamięci do którego możemy wstawiać różne dane. W 
zmiennej możemy przechowywać imię lub nazwisko jakiejś osoby, która aktualnie obsługuje 
nasz program, jej wiek, adres zamieszkania -cokolwiek wymyślimy. Dzięki temu możemy się 
do użytkownika zwracać po imieniu kiedy tylko nam się podoba. 

 

Zawartość zmiennej można wyświetlać metodą WriteLn. Niestety żebyśmy mieli dostęp do 
jakiejś zmiennej musimy poinformować o tym komputer. Służy do tego instrukcja (słowo 
kluczowe) VAR (Variables). Zmienne można deklarować tylko przed częścią wykonywalną 
programu. 

 

Każda zmienna musi mieć swoją nazwę. Możesz wymyślić co Ci się tylko podoba, 
najważniejsze żeby nie zawierała w sobie spacji ani polskich znaków, itp. Zmienna powinna 
się także kojarzyć z wartością, którą zawiera. Np. jeśli przechowuje imię dobrze jest ją 
nazwać Imie, jeśli nazwisko -Nazwisko, itp… Programiści dość często przed nazwą zmiennej 
dodają małą literkę, która oznacza jej typ. Jeśli byłaby to zmienna tekstowa nazwisko (typ: 
string)  -nazwaliby ją sNazwisko lub s_nazwisko. 

 

Zmiennymi mogą być liczby, napisy, nawet miejsce w pamięci gdzie są rysunki, dźwięki itp. 
My zajmiemy się napisami i liczbami. Każda zmienna ma swoje przeznaczenie. W zależności 
od przeznaczenia komputer wie, ile pamięci jej przydzielić i co z nią można zrobić. Musimy 
więc podczas deklaracji zmiennej podać jej typ (np. czy liczba czy napis). 

background image

 

Żeby zdać jakikolwiek egzamin, napisać program bezbłędnie, musisz zapamiętać podstawowe 
typy zmiennych. Najczęściej stosowane to INTEGER (liczba) oraz STRING (łańcuch znaków 
–inaczej napis). Każdy typ zmiennej ma swoje właściwości, np. zakres jaki obejmuje liczba 
lub ilość znaków w napisie. Tabelka będzie przedstawiała czym dokładnie się różnią. 

 

 
Typ 

 
Zajmowana 
pamięć w 
bajtach 

 
Zakres 

 
Opis 

 
Byte 

 

 
0..255 

 
Liczba o małym zakresie wykorzystywana 
np. do wczytywania wieku 

 
ShortInt 

 

 
-128..127 

 
Liczba o małym zakresie z możliwością 
wpisywania liczb ujemnych, np. do 
szybkości przesuwania piłki w grze 

 
Word 

 

 
0..65535 

 
Liczba o średnim zakresie stosowana np. 
do obliczania liczby punktów, prostych 
działań na liczbach dodatnich 

 
Integer 

 

 
-32768..32767 

 
Liczba o średnim zakresie, bardzo często 
stosowana do operacji matematycznych 

 
LongInt 

 

 
-2^31..2^31-1 

 
Liczba o dużym zakresie, wiele 
zastosowań, np. przechowująca rozmiar 
pliku 

 
Char 

 

 
Wszystkie znaki 

 
Pojedynczy znak np. litera „a”; może 
przechowywać informacje o płci 
użytkownika (m lub k) 

 
String 

 
256 

 
Wszystkie znaki 

 
Napis, przechowuje np. Imię, nazwisko, 
tekst, który ma wyświetlić na ekranie 

 
Real 

 

 
Liczby rzeczywiste 

 
Przechowuje liczby z możliwością operacji 
na częściach dziesiętnych, można stosować 
w miejscach gdzie duża prędkość 
programu nie jest wymagana (wolniejsze 

background image

od single). Stosowane do obliczeń 
matematycznych, np. Obliczanie pola koła 

 
Single 

 

 
Liczba 
zmiennoprzecinkowa 

 
Możliwa ilość miejsc po przecinku zależy 
od jej wielkości (dla małych liczb więcej 
miejsc, dla dużych w ogóle) 
Stosowana przy operacjach na grafice 
trójwymiarowej, dużo szybsza od Real 

 
Double 

 

 
Liczba 
zmiennoprzecinkowa 

 
Podobne do Single, jednak większa 
dokładność 

 

Pascal ma pewne ograniczenia. Gdy mamy zmienną typu string, która przechowuje jakąś 
liczbę np. wpisaną przez użytkownika, nie możemy do niej dodawać innej liczby. Komputer 
nie będzie wiedział o co chodzi. Tylko do zmiennej typu integer, można dodać inny integer, 
do zmiennej typu string nie da się dodać zmiennej typu integer (można natomiast 
przekonwertować string na integer i odwrotnie -służą do tego polecenia val i str). 

 

Dla Pascala  próba dodania zmiennej Integer do string to tak jakbyś w matematyce na 
sprawdzianie pisał: "dwa razy dwa równa się cztery". Nawet gdyby wynik był dobry, 
nauczycielka zwróciła by Ci uwagę, że nie stosujesz matematycznych opisów. Pascal 
wyświetli błąd: "Error 26: Type mismatch". 

 

Przykład będzie demonstrował w jaki sposób zadeklarować zmienną typu tekstowego, 
wczytać imię do zmiennej a następnie ją wyświetlić. 

 

var imie: string; 
begin 
 WriteLn(‘Podaj swoje imie: ’); 
 ReadLn(imie); 
 WriteLn(‘Nazywasz sie ’,imie); 
end. 
 

Łatwo zauważyć, że do wczytywania danych sluży polecenie ReadLn. Aby wypisać jakiś 
napis, a po nim zmienną można zamknąć apostrof i po przecinku wpisać nazwę zmiennej. 
Warto przypomnieć, że istnieją podobne instrukcje do WriteLn i ReadLn. Są nimi Write i 
Read, które również wypisują coś na ekranie, różnica polega na tym że WriteLn i ReadLn 
przenosi kursor piszący do następnej lini, a bez Ln nie. 

 

background image

Przypuśmy, że chcesz podstawić do zmiennej konkretną liczbę, lub wartość innej zmiennej, 
możesz to zrobić tak: 

 

var a, b: integer; 
begin 
 a:= 10; 
 b:= 5; {Podstawienie liczby 5 do zmiennej b} 
 a:= b; {Podstawienie wartości b do zmiennej a} 
end.  {Wyniki: a=5, b=5} 
 

Poeksperymentuj trochę, spróbuj wczytać imię i nazwisko, może wiek i wyświetlić wszystko. 
Nie zapomnij o ALT+F5 aby zobaczyć wynik. Sposobem na uniknięcie wciskania Alt+F5 jest 
np. wpisanie na końcu ReadLn; Teraz program będzie czekał na wciśnięcie klawisza ENTER. 

 

Co można zrobić ze zmiennymi? 

 

var a, b: integer; 
   s : string; 
begin 
 a := 1; b := a; s := 'Ala ';   {wolno podstawiać} 
 a : = a + 1;           {wolno dodawać do samej siebie} 
 s := s + 'ma kota';    {napisy można łączyć} 
 
 {NIE WOLNO s := s + a;} 
 {NIE WOLNO TEŻ s:='1'; s := s + 2;} 
 
  {wolno eksperymentować :) } 
end. 
 

Przykłady eksperymentów: 

 
 
Prosty kalkulator mnożący 

var a, b: integer; 
begin 
 WriteLn(‘Program mnożący a*b’); 
 Write(‘Podaj liczbę a: ’); 
 ReadLn(a); 
 Write(‘Podaj liczbę b: ’); 
 ReadLn(b); 
 WriteLn(a, ‘ * ’, b, ' = ', a * b); 

background image

 ReadLn; 
end. 
 

Wynik działania: 

 
Program mnożący a*b 
Podaj liczbę a: 3 
Podaj liczbę b: 5 
3 * 5 = 15 
 
 

Stałe (const) 

 

Stałe to komórki pamięci, które mają takie same wartości przez cały czas działania programu. 
Najczęściej programiści nadają im nazwy dużymi literami -w odróżnieniu od zmiennych. 
Stałe są wygodne przy podstawianiu pewnych wartości, któe będą miały wpływ na działanie 
całego programu. 

 

Definiuje się je na początku kodu programu. Stalą jest np. liczba π – stała nazywa się PI, stałe 
możesz tworzyć samemu, może to być prędkość światła c, stała grawitacji g, itd. 

 

const 
 STALA_G = 9.81; 
 
var t, s : Real; 
 
begin 
 WriteLn(‘Ile czasu spadało na ziemię ciało?’); 
 ReadLn(t); 
 
 s :=  STALA_G * sqr(t) / 2; 
 
 WriteLn('Ciało pokonało drogę ',s : 10 : 3, 'm'); 
 ReadLn; 
end. 
 

Program oblicza drogę spadania dowolnego ciała w podanym przez użytkownika czasie. 
Gdyby programista zmienił stałą, może np. obliczać drogę spadania ciała na Księżycu. 
Zmiana stałej w nagłówku kodu źródłowego jest znacznie łatwiejsza niż poszukiwanie i wiele 
zmian konkretnych liczb wewnątrz kodu. 


Document Outline