BORLAND PASCAL
PODSTAWOWE INSTRUKCJE I ICH SKŁADNIE Z PRZYKŁADAMI
Instrukcja program - to nagłówek programu, w którym podajemy jego nazwę (nazwa programu nie może zawierać spacji, polskich znaków diaktrycznych, cyfr na początku nazwy i oraz znaków specjalnych Pascal'a.
Instrukcja begin - to oznaczenie rozpoczęcia wykonywania bloku sekwencji instrukcji. UWAGA! Po begin NIGDY nie robimy ;
Instrukcja end - to oznaczenie zakończenia wykonywania bloku sekwencji instrukcji rozpoczętych słowem kluczowym begin gdzieś powyżej. Ogólnie, tyle ile begin
w programie tyle też musi być end (choć są i wyjątki). Obie instrukcje są niczym nawiasy otwierające (begin) i zamykające (end).
UWAGA! Z okazji tego, że end może mieć trzy znaczenia w programie kończymy go na trzy możliwe sposoby:
end; - kończy wykonywanie bloków w pętlach, warunkach itp.
end. - kończy program (zamyka pierwszy begin)
end - kończy pierwszą część w warunku if przed słowem kluczowym else
Przykład Program, który nic nie robi
program nic;
begin
end.
Funkcja write() / writeln() - służy do wypisywania na ekranie monitora tekstu czy wyniku obliczeń. Funkcja write wypisuje tekst do momentu zapełnienia wiersza po czym przechodzi do wiersza poniżej. Writeln zaczyna zawsze pisanie od nowego wiersza. Ich składnia jest różna w zależności od tego co ma wypisać:
write(`dowolny tekst'); ⇒ wypisze tekst na ekranie monitora
write(`dowolny tekst ',zmienna); ⇒ wypisze na ekranie tekst oraz wartość obliczoną w zmiennej o nazwie zmienna
write(zmienna); ⇒ wypisze na ekranie wartość zmiennej o nazwie zmienna
write(`tekst1 ',zmienna1,' tekst2 `,zmienna2); ⇒ wypisze na ekranie dwa teksty rozdzielone i zakończone wartością obliczonych zmiennych
Przykład Programy, który wypisują imię i nazwisko na ekranie monitora.
program imie; program imie2;
begin begin
write(`Imie nazwisko'); writeln(`Imie nazwisko');
end. end.
Zauważcie i zapamiętajcie różnicę w wykonaniu obu programów
Instrukcja var - służy do deklaracji (definiowania) zmiennych i ich typów. Po tej komendzie podajemy zmienne i typy, które mają przyjmować. Jeśli więcej niż jedna zmienna ma przyjąć ten sam typ to wówczas wypisujemy je wszystkie po przecinku i „podpinamy” pod odpowiedni typ zmiennej:
var a:integer;
b,c,d:real;
imie,plec:string[15];
nazwisko:string[20];
stan:char;
Instrukcja read() / readln()- służy do odczytania i przypisania zmiennej o nazwie podanej w nawiasie wartości wprowadzonej z klawiatury. Wartość wprowadzanych danych musi się zgadzać z wybranym typem danych, które ta zmienna ma przyjmować.
read(wiek);
read(imie);
read(n);
read(zakres);
read(zmienna1);
Przykład
var
a:string;
begin
writeln('Podaj swoje imię');
readln(a);
writeln(a,'-jakie ładne imię!');
end.
Przykład
var
a,b:string;
begin
writeln('Podaj swoje imię');
readln(a);
writeln(a,'-jakie ładne imię!');
writeln('Podaj imię sąsiada');
readln(b);
writeln(`Imię `,b,' jest jeszcze ładniejsze od imienia ',a);
end.
Instrukcja przypisania wartości := pozwala na wykonanie obliczenia
i podstawienia go do pewnej zmiennej. ZAWSZE jest to symbol :=
i:=1;
pole:=2*a+2*b;
objetosc:=(a*a*h)/3;
j:=j+1;
Przykład Program, który oblicza objętość i pole powierzchni bocznej sześcianu
(program na razie bez koniecznych założeń).
program szescian;
var a,poleboczne,objetosc:integer;
begin
writeln('Podaj długość boku a=?');
readln(a);
poleboczne:=4*a*a;
objetosc:=a*a*a;
writeln('Objętość sześcianu o boku ',a,' wynosi ',objetosc);
writeln('Pole powierzchni bocznej wynosi ',poleboczne);
end.
Instrukcja warunkowa składa się ze słowa kluczowego if, bezpośrednio po którym następuje wyrażenie logiczne, słowo kluczowe then i instrukcja (instrukcje). Po instrukcji (instrukcjach) może występować słowo kluczowe else
i ponownie instrukcja (instrukcje). Wyrażenia logiczne można w instrukcji warunkowej łączyć operatorami logicznymi: and, or, xor, in.
if (warunek) then if (warunek) then
instrukcja begin
else instrukcja1;
instrukcja; instrukcja2;
.....
end
UWAGA! Przed słowem else
kluczowym else begin
linia powyżej NIE instrukcja3;
kończy się [ ; ] instrukcja4;
.....
end;
Wykonanie instrukcji warunkowej rozpoczyna się od wyznaczenia wartości danej reprezentowanej przez wyrażenie logiczne.
Jeśli jest nią wartość true (warunek spełniony, PRAWDA), to wykonywana jest instrukcja (instrukcje) następująca po słowie kluczowym then.
Jeśli jest nią false (warunek niespełniony, FAŁSZ), to wykonywana jest instrukcja (instrukcje) następujące po słowie kluczowym else.
Jeśli w instrukcji warunkowej brak jest słowa kluczowego else wówczas, przy niespełnionym warunku logicznym, wykonywanie tej instrukcji jest zakończone.
Przykład Program, który oblicza objętość i pole powierzchni bocznej sześcianu
(program sprawdza konieczne założenia).
program szescian;
var a,poleboczne,objetosc:integer;
begin
write('Podaj długość boku a=? ');
read(a);
if (a>0) then
begin
poleboczne:=4*a*a;
objetosc:=a*a*a;
writeln('Objętość sześcianu o boku ',a,' wynosi ',objetosc);
writeln('Pole powierzchni bocznej wynosi ',poleboczne);
end
else
writeln('Taki sześcian nie istnieje!');
end.
Przykład Program, który oblicza pole trójkąta.
program trojkat;
var a,h:integer;
pole:real;
begin
write('Podaj długość podstawy a=? ');
read(a);
writeln;
write('Podaj długość wysokości h=? ');
read(h);
if (a=0) or (h=0) then
writeln('Trójkąt nie istnieje!!!')
else
begin
pole:=0.5*a*h;
writeln('Pole trójkąta wynosi ',pole,'[j^2]');
end;
end.
Zadanie 1.
Napisz prosty program, który zada użytkownikowi pytanie o wartość prędkości
(wyrażoną w km/s) z jaką ma z Ziemi wystartować rakieta. W zależności od wprowadzonej prędkości poinformuj użytkownika czy:
rakieta spadnie na Ziemię (dla prędkości mniejszej niż 7,9 - pierwsza prędkość kosmiczna)
rakieta zostanie satelitą i będzie krążyć po orbicie (dla prędkości od 7,9 do 11,17 - druga prędkość kosmiczna)
rakieta opuści orbitę Ziemi (dla prędkości od 11,17 do 16,7 - trzecia prędkość kosmiczna)
rakieta opuści Układ Słoneczny (dla prędkości od 16,7 do 130 - czwarta prędkość kosmiczna)
rakieta opuści galaktykę (dla prędkości większej niż 130)
Zadanie 2.
Najprostszy wzór na obliczanie prawidłowej wagi polega na odjęciu od wzrostu podanego w [cm] liczby 110. Napisz prosty program, który zada użytkownikowi pytanie o wzrost i wagę (wyrażoną w kg), a następnie:
poinformuje użytkownika czy ma nadwagę czy niedowagę czy wagę idealną.
W przypadku nadwagi czy niedowagi poda jaka jest jej wartość (w [kg]).
Załóż w programie, że wzrost i wagę podajemy tylko w liczbach całkowitych.
Zadanie 1.
program kosmos;
var v:real;
begin
write('Podaj prędkość w [km/s]. V=? ');
read(v);
if (v<7.9) then
writeln ('Pierwsza prędkość kosmiczna. Rakieta zrąbie się na ziemie!')
else
if (v<11.17) then
writeln('Druga prędkość kosmiczna. Rakieta zajmie orbitę wokół Ziemi!')
else
if (v<16.7) then
writeln('3 prędkość kosmiczna. Rakieta opuści orbitę Ziemską!');
else
if (v<=130) then
writeln('4 pr. kosm.. Rakieta wyleci poza Układ Słoneczny!');
else
if (v>130) then
writeln('Podbijemy obce planety!!!');
end.
Zadanie 2.
program test;
var wzrost,waga,dif,ile:integer;
begin
write('Podaj wzrost w [cm]. Wzrost=? ');
read(wzrost);
writeln;
write('Podaj wagę w [kg]. Waga=? ');
read(waga);
dif:=wzrost-110;
if (dif<waga) then
begin
ile:=waga-dif;
writeln('Masz nadwagę około ',ile,'[kg]');
end
else
begin
if (dif>waga) then
begin
ile:=dif-waga;
writeln('Masz niedowagę około ',ile,'[kg]');
end
else
writeln('Teeee... masz idealną wagę! Oszukujesz?');
end;
end.
Instrukcja wyboru case of służy do wykonania pewnych poleceń w zależności od wybranej opcji określonej w programie.
case (wyrażenie) of
wartość wyrażenia: instrukcja;
wartość wyrażenia: instrukcja;
wartość wyrażenia: instrukcja;
end;
Przykład Program wypisujący słownie podaną liczbę.
var
n:integer;
begin
writeln('Podaj liczbę');
readln(n);
case n of
1: writeln(`Jeden');
2: writeln(`Dwa');
3: writeln(`Trzy');
4: writeln(`Cztery');
5: writeln(`Pięć');
end;
readln;
end.
Instrukcje ITERACYJNE - służą do organizowania cykli programowych. Występują one w trzech odmianach, tzw. pętle: for, while i repeat.
instrukcja for - powoduje wykonanie zawartej w niej instrukcji lub ciągu instrukcji dla wszystkich wartości zmiennych iteracyjnych, które należą do przedziału domkniętego [a;b]. Wyrażenia a i b określające wartość początkowe i końcowe iteracji muszą należeć do tego samego typu porządkowego (najczęściej jest to typ integer). Postać instrukcji for zależy od sposobu modyfikowania zmiennej iteracyjnej:
zmienna iteracyjna przybiera wartości od najmniejszej do największej (wartośc a<b):
for nazwa_zmiennej:=wartość_początkowa to wartość _końcowa do
begin
instrukcja_1;
instrukcja_2;
...
end;
zmienna iteracyjna przybiera wartości od największej do najmniejszej (wartośc a>b):
for nazwa_zmiennej:=wartość_początkowa downto wartość _końcowa do
begin
instrukcja_1;
instrukcja_2;
...
end;
UWAGA! Jeśli w pętli mamy do wykonania tylko jedną instrukcję wówczas nie musimy poprzedzać ja słowem kluczowym begin i kończyć end.
Przykład Program wyznaczający sumę n kolejnych liczb naturalnych.
program suman;
var n,i,suma:integer;
begin
writeln('Podaj do której liczby zsumować? n=');
read(n);
for i:=1 to n do
suma:=suma+i;
writeln('Suma ',n,' kolejnych liczb naturalnych wynosi ',suma);
end.
Mała modyfikacja programu:
...
for i:=1 to n do
begin
suma:=suma+i;
writeln('Suma ',n,' kolejnych liczb naturalnych wynosi ',suma);
end;
end.
instrukcja while - ciąg instrukcji zawartych w tej pętli wykonuje się tak długo, jak długo spełniony jest warunek. W przypadku, gdy warunek nie jest spełniony, pętla przestaje być wykonywana. Składnia pętli while jest następująca:
while warunek do
begin
instrukcja_1;
instrukcja_2;
...
end;
Wykonywanie pętli przebiega według poniższego algorytmu:
Wyznaczana jest wartość wyrażenia logicznego
Jeśli wartością warunku jest false, to wykonywanie pętli uznaje się za zakończone
Jeśli wartością warunku jest true, to są wykonywane wszystkie instrukcje po słowie kluczowym do
Idź do kroku 1)
Przykład Program zmniejszający liczbę n do zera.
program zero;
var n:integer;
begin
writeln('Podaj od ilu zmniejszać? N=');
read(n);
while n<>0 do
begin
n:=n-1;
writeln(n);
end;
writeln('Masz zero. KONIEC!');
end.
instrukcja repeat ... until - ciąg instrukcji zawartych w tej pętli wykonuje się tak długo, jak długo nie jest spełniony warunek logiczny. W przypadku, gdy warunek jest spełniony, pętla przestaje być wykonywana. Składnia pętli repeat ... until jest następująca:
repeat
instrukcja_1;
instrukcja_2;
...
until warunek;
Wykonywanie pętli przebiega według poniższego algorytmu:
Wykonywane są instrukcje wykazu następujące po słowie kluczowym repeat
Wyznaczana jest wartość wyrażenia logicznego określonego po słowie kluczowym until.
Jeśli wartością warunku jest true, to wykonywanie pętli uznaje się za zakończone
Jeśli wartością warunku jest false, to idź do kroku 1)
Przykład Program zmniejszający liczbę n do zera.
program zero;
var n:integer;
begin
writeln('Podaj od ilu zmniejszać? N=');
read(n);
repeat
n:=n-1;
writeln(n);
until n=0;
writeln('Masz zero. KONIEC!');
end.
UWAGA!!!
Istotną różnicą pomiędzy pętlami while a repeat ... until jest to, że pętla
repeat ... until wykona się ZAWSZE PRZYNAJMNIEJ RAZ, bez względu na to jaka jest wartość logiczna warunku logicznego określonego w pętli.
Natomiast pętla while nie wykona się ANI RAZU jeśli zadany warunek nie jest spełniony.
Fakt ten ma bardzo istotne znaczenie w programistyce. Stosowanie
w programie pętli repeat ... until wiąże się z dość poważnym ryzykiem. Często ta pętla z okazji tego, że zawsze się wykonuje przynajmniej raz, generowała bezsensowne błędy w dobrze napisanych (oczywiście merytorycznie) programach.
6