Programowanie w
języku
TURBO
PASCAL
TEMAT:
Prezentacja algorytmu
w języku
programowania.
Programowanie to inaczej
rozwiązywanie problemów przy użyciu
komputera. Zanim przejdziemy do
tajników języka programowania,
przedstawię pokrótce etapy
programowania wyjaśniając przy okazji
podstawowe pojęcia
Problem
Program źródłowy
Algorytm
Wykonanie programu
Dane
Wyniki
Etapy
programowania
Kompilacja
Program wynikowy
Podstawowe pojęcia
Kod źródłowy
– programu w Pascalu
składa się z części opisowej oraz
części wykonawczej. Część opisowa
to nagłówek programu (
program
nazwa
;), deklaracja modułów (po
słowie
uses
), definicje stałych (po
słowie
const
), definicje typów (po
type
) oraz deklaracje zmiennych (po
var
). Część wykonawcza zaczyna się
po słowie
begin
i kończy
end
.
• Słowo Kluczowe
- samo w sobie nie robi nic,
ale w połączeniu z innymi pozwala nam na
grupowanie procedur i funkcji w jedną całość,
używanie pętli... a z resztą sami później
zobaczycie to w praktyce ;-)
• Stała
- jest to pewna wartość przypisana
znakowi/wyrazowi której nie można zmienić
np: stałej PI jest przyporządkowana liczba
3.1415...
• Zmienna
- Jak sama nazwa wskazuje zmienna
jest to wyraz, któremu jest przypisana pewna
wartość, którą w czasie działania programu
możemy swobodnie zmieniać w zakresie
danego typu.
Podstawowe pojęcia
PROGRAM
nazwa_programu;
NAGŁÓWEK
PROGRAMU
VAR
........; {nie występuje zawsze}
BLOK
DEKLARACYJNY
BEGIN
........; {instrukcja do wykonania}
........; {instrukcja do wykonania}
BLOK
WYKONAWCZY
........; {instrukcja do wykonania}
END
.
Budowa programu w języku
TURBO PASCAL:
Budowa programu w
języku
TURBO PASCAL:
• W części wykonawczej programu
używamy poleceń-instrukcji języka. Do
podstawowych poleceń zaliczamy
instrukcję wejścia (readln(zmienna)),
instrukcję wyjścia (writeln(zmienna)),
oraz
instrukcję przypisania
(zmienna:=wartość lub
zmienna:=wyrażenie).
Każda instrukcja
kończy się znakiem średnika.
•nazwa programu nie może rozpoczynać się od
liczby;
•spacja w tekście traktowana jest jak każdy inny
znak;
•w treści programu nie używamy polskich
znaków;
•po każdej instrukcji jest umieszczony
separator w postaci średnika;
•po słowach kluczowych BEGIN i END nie
stawiamy średnika;
•objaśnienia i komentarze ujmujemy w
{ }.
Zasady pisania programu.
• Stosowanie Komentarzy
Komentarze w programie nie są niezbędne, ale
bardzo upraszczają późniejszą poprawę/modyfikację
programu i to dzięki komentarzom nasz program
staje się bardziej czytelny również dla innych osób.
W Pascalu ujmuje się je pomiędzy nawiasy klamrowe
"{","}"
• Stosowanie Wcięć
Wcięcia stosowane są do łatwiejszego zorientowania
się w programie źródłowym, dla programisty jest to
bardzo przydatne gdyż natychmiast widzi, które
fragmenty programu są ze sobą bardziej powiązane
a które mniej.
Zasady pisania programu.
Przykład
Program bez wcięć:
Var
s:string;
b:byte;
Begin
ReadLn(s);
If s='pi' Then
Begin
For b:=1 To 10 Do
Begin
WriteLn(PI);
WriteLn(b);
End;
End Else
WriteLn('Pozostale');
End.
Program z wcięciami:
Var
s:string;
b:byte;
Begin
ReadLn(s);
If s='pi' Then
Begin
For b:=1 To 10 Do
Begin
WriteLn(PI);
WriteLn(b);
End;
End Else
WriteLn('Pozostale');
End.
Naprawdę gorąco zachęcam do stosowania
wcięć od początku nauki gdyż później o
wiele trudniej się przestawić na taki zapis, a
jak program ma na dodatek kilka tysięcy
linii to bez tego naprawdę można się
pogubić uwierzcie mi :)
Błędy pojawiające się podczas wykonywania
programu powodują przerwanie działania
programu i wyświetlenie komunikatu:
Run-time error nnn at xxxx:yyyy gdzie nnn
przedstawia numer błędu, natomiast
xxxx:yyyy adres wystąpienia błędu ( adres
segmentu : offset )
WRITELN
– instrukcja służąca do wypisywania
informacji na ekranie. Po wykonaniu tej
instrukcji kursor zostaje przeniesiony do
następnej linii. Samotna instrukcja writeln
powoduje przejście do nowego wiersza.
Przykład:
writeln (‘
Jak się masz?
’)
;
WRITE
- instrukcja służąca do wypisywania
informacji na ekranie. Po wykonaniu tej
instrukcji kursor nie zostaje przeniesiony do
następnej linii.
Przykład:
write (‘
Jak się masz?
’)
;
Tekst, który ma być wypisany na ekranie należy
ująć w nawiasy i apostrofy.
Instrukcje wyjścia.
•skompilować (przetłumaczyć) program -
F9
•uruchomić program - Ctrl+F9
•podgląd wyników działania programu -
Alt+F5
•koniec pracy i wyjście z programu -
Alt+x.
W celu uruchomienia
programu należy:
Skróty klawiszowe
program
cytat;
begin
writeln
(‘Doprawdy, jak to miło coś umieć.’);
writeln
(‘ Molier. ’);
end
.
Efekt na monitorze:
Doprawdy, jak to miło coś umieć.
Molier.
program
cytat;
begin
write
(‘Doprawdy, jak to miło coś umieć.’);
writeln
(‘Molier.’);
end
.
Efekt na monitorze:
Doprawdy, jak to miło coś umieć. Molier.
PRZYKŁAD
ClrScr
-
powoduje skasowanie z ekranu
wyników działania poprzednio uruchamianych
programów.
Umieszczamy ją posłowie kluczowym
BEGIN
.
W bloku deklaracyjnym trzeba zadeklarować
moduł
Crt
odpowiedzialny za obsługę
klawiatury i ekranu.
Do deklaracji modułów służy słowo kluczowe
USES
, np.
program
cytat;
USES crt
;
Begin
Clrscr
;
writeln
(‘Doprawdy, jak to miło coś umieć.’);
writeln
(‘Molier.’);
end
.
Instrukcja czyszczenia ekranu.
Napisać program wyświetlający napisy:
ZAGRANICZNA FIRMA HANDLOWA
EURO – 2012
Zadanie 1.
Napisz program, który będzie wyświetlał na
monitorze następujący rysunek:
xxxxxxxxxxxx
xx
xx
x x x x
x
x
x xxxx
x
x
x
xxxx
Zadanie 2.
TEMAT:
Podstawowe operacje
arytmetyczne.
Formatowanie liczb.
W instrukcjach
write
i
writeln
:
• liczby do wypisania możemy podawać bez
apostrofów
writeln ( 34 );
• zamiast liczby można podać wyrażenie, którego
wynik zostanie obliczony i wypisany
writeln ( 3 + 4 );
W ramach jednej instrukcji
write
lub
writeln
można
podawać zarówno tekst, jak i liczby oraz wyrażenia.
writeln
(
‘3 + 4 = ‘
,
3 + 4
)
;
jest ujęte w
apostrofy, czyli
zostanie dosłownie
wypisane na
monitorze.
w miejsce wyrażenia 3
+ 4 komputer wstawi
obliczony wynik
Efekt na monitorze:
3 + 4 = 7
W liczbie zawierającej części dziesiętne, oddzielamy
je kropką, np. 4.78
Podstawowe operacje arytmetyczne:
+
dodawanie
-
odejmowanie
*
mnożenie
/
dzielenie
SQRT
pierwiastek kwadratowy, np. SQRT
(4) = 2
SQR
kwadrat, np. SQR (3) = 9
DIV
dzielenie całkowite bez reszty, np. 5 DIV
2 = 2
MOD
reszta z całkowitego dzielenia, np. 5
MOD 2 = 1
ABS
wartość bezwzględna, np. ABS (-54) =
54
CHR
zwraca znak ASCII na podstawie jego
kodu, np:
CHR(109)=‘g’
ORD
zwraca numer porządkowy elementu
w swoim
typie (np.
ORD(g)=109)
Zadanie
Podane wyrażenia zapisz w postaci zrozumiałej dla
TP:
8
4
4
3
8
4
4
:
3
8
4
3
7
)
8
5
(
)
7
4
(
4
2
6
3
2
2
)
6
5
(
)
3
(
x
x
4
y
x
5
4
x
y
x
2
2
3
6
5
7
:
3
5
2
x
4
3
:
5
,
1
2
x
z
2
)
2
(
y
y
x
x
5
,
6
:
5
,
1
4
z
Formatowanie liczb:
W celu określenia sposobu wypisywania
liczby na monitorze należy podać szerokość
pola, a w nim liczbę miejsc po kropce.
: szerokość pola: liczba miejsc po kropce
np. write (-4567.378912
:12:4
)
efekt na monitorze: -4567.3789
UWAGA:
W skład pola wchodzi znak i kropka dziesiętna.
Przykład
Napisać program obliczający wyrażenie
algebraiczne:
Dla obliczanego wyniku przyjąć format:
4 cyfry po kropce dziesiętnej w polu 7- znakowym.
Program ma tytuł „Dzielenie”. Program po
uruchomieniu ma wyświetlić zapis działania oraz
przedstawić obliczony wynik.
Rozwiązanie:
PROGRAM Dzielenie;
USES Crt;
BEGIN
ClrScr;
Write (‘
(2*3+17) / 9 =
’
,
(2*3+17)/9
:7:4 )
;
END.
9
17
3
2
Zadanie 1.
Napisz program obliczający wyrażenie
algebraiczne:
Dla obliczanego wyniku przyjmij format:
4 cyfry po kropce dziesiętnej w polu 12-
znakowym.
Program ma mieć tytuł „Oblicz”.
Program po uruchomieniu ma wyświetlić
zapis działania oraz przedstawić obliczony
wynik.
4
:
37
5
7
7
4
2
4
2
2
Zadanie 2.
Napisz program obliczający powierzchnię całkowitą
i objętość
sześcianu o boku 5.875 cm.
Dla obliczanego wyniku przyjmij format:
3 cyfry po kropce dziesiętnej w polu 8- znakowym.
Program ma mieć tytuł „Szesc_1”.
Program po uruchomieniu ma wyświetlić napisy:
Sześcian ma bok 5.875 cm
Obliczone pole powierzchni całkowitej =
……
Obliczona objętość = …….
rozmieszczone w kolejnych wierszach, a w każdym
z nich odpowiednie wyniki obliczeń.
Zapisz program na dysku w pliku o nazwie
szesc_1.pas.
TEMAT:
Zmienne i wprowadzanie
danych
.
Zmienna
- wyrażenie wprowadzone z zewnątrz, np. z
klawiatury.
Zmienna
ma dwie podstawowe cechy:
nazwę
i
typ
.
Nazwa
pozwala odróżnić jedna zmienną od drugiej.
Typ
określa, jakiego rodzaju informację ma
przechowywać zmienna – czy liczbę, czy znak ...
Jeżeli chcemy w programie użyć zmiennych, należy je
zadeklarować
. Oznacza to, że zaraz po nagłówku
programu, przed częścią główną podajemy jakich
zmiennych użyjemy w programie – nazwę i typ.
Do zadeklarowania zmiennych służy słowo VAR .
Przykładowe
typy zmiennych:
string
: łańcuch znaków;
char
: pojedynczy znak;
integer
: liczba całkowita z przedziału <-
32768;32767>
byte
: liczba całkowita z przedziału <0;255>
real
: liczba wymierna z przedziału <-2.9e-
39;1.7e38>.
Uwaga!
Duża i mała litera to dla komputera dwa różne znaki.
READ oraz READLN
– instrukcje służące do
wczytywania z klawiatury wartości zmiennych.
Wykonując tę instrukcję komputer wstrzyma
realizację programu i będzie czekał na znaki
wpisane przez użytkownika. Po wykonaniu
readln
lub
read
zmienna otrzymuje wartość, do której
można się wielokrotnie odwoływać w programie,
podając jej nazwę.
Read - nie powoduje przejścia kursora do nowej
linii
Readln - powoduje przejście kursora do nowej
linii
PRZYKŁAD 1:
program powitanie;
uses crt;
var
imie
: string;
begin
clrscr;
writeln (‘Jak masz na imię? ’);
readln
(
imie
);
writeln (‘Cześć ‘, imie);
writeln (‘Jak się czujesz ‘, imie);
readkey;
end.
Polecenie z modułu obsługi
ekranu. Powoduje zatrzymanie
wykonywania programu do
chwili naciśnięcia dowolnego
klawisza.
PRZYKŁAD 2:
program kwadrat;
uses crt;
var
a
: real;
begin
clrscr;
writeln (‘Podaj długość boku kwadratu’);
readln
(
a
);
writeln (‘Pole kwadratu wynosi ‘,a*a:10:2);
readkey;
end.
PROGRAM
TEMAT:
Instrukcja przypisania.
Zmiennej można nadać wartość wprost w
programie. Służy do tego instrukcja przypisania
:=
(Symbol przypisania piszemy bez spacji.)
PRZYKŁAD:
program kwadrat;
uses crt;
var
a,
P
: real;
begin
clrscr;
writeln (‘Podaj długość boku kwadratu’);
readln (
a
);
P :=
a*a ;
writeln (‘Pole kwadratu wynosi ‘,
P
:10:2);
readkey;
end.
Wykonanie tej instrukcji powoduje przypisanie
(podstawienie) wartości wyrażenia zapisanego po
prawej stronie symbolu
:=
zmiennej stojącej po
lewej jego stronie.
Wyrażenie musi być tego samego typu co zmienna.
PRZYKŁAD:
Napisz program obliczający obwód trójkąta,
którego długości boków są liczbami naturalnymi.
program trojkat;
uses crt;
var
a, b, c, O
: integer;
begin
clrscr;
writeln (‘Podaj długości boków trójkąta’);
readln (
a,b,c
);
O :=
a+b+c ;
writeln (‘Obwód = ‘,
O
:6);
readkey;
end.
Zadanie 1.
Napisz program obliczający pole trapezu.
Długości boków i wysokość trapezu mają
długości, będące liczbami naturalnymi.
Zadanie 2.
Napisz program obliczający pole trójkąta.
Długości boków i wysokość trójkąta mają
długości, będące liczbami naturalnymi.
TEMAT:
Instrukcja warunkowa.
Jeśli
zachodzi warunek,
to
wykonaj instrukcję.
IF
…
THEN
…
Zamiast pojedynczej instrukcji, wolno po
THEN
wstawić ciąg instrukcji. Wówczas wstawiamy je
pomiędzy słowa
BEGIN
i
END
W wyrażeniach logicznych używamy operatory
relacji:
= równa się
> większy
< mniejszy
>= większy lub równy
<= mniejszy lub równy
<> różny
Warunek jest wyrażeniem logicznym, przyjmującym
wartość
PRAWDA
lub
FAŁSZ
.
Na zmiennych typu logicznego można wykonywać
następujące operacje:
and
(iloczyn logiczny)
or
(suma logiczna)
Iloczyn logiczny
ma wartość prawda, jeśli oba
wyrażenia logiczne są prawdziwe.
Suma logiczna
ma wartość prawda, jeśli
przynajmniej jedno wyrażenie logiczne jest
prawdziwe.
program dorosly;
uses crt;
var
a: integer;
begin
clrscr;
writeln (‘Podaj (liczbą naturalną) ile masz lat.’);
readln (a);
if
a>= 18
then
writeln (‘ Jesteś pełnoletni’);
writeln (‘Fajnie jest mieć’, a, ’lat’);
readkey;
end.
program dorosly2;
uses crt;
var
a: integer;
begin
clrscr;
writeln (‘Podaj (liczbą naturalną) ile masz lat.’);
readln (a);
if
(a>= 7) and (a<= 18)
then
writeln (‘ Chodzisz
już do szkoły’);
if
(a>= 14) and (a<= 16)
then
writeln (‘ Jesteś
gimnazjalistą’);
writeln (‘Fajnie jest mieć’, a, ’lat’);
readkey;
end.
Instrukcja warunkowa może mieć również postać:
Jeśli
zachodzi warunek,
to
wykonaj instrukcję 1,
w
przeciwnym wypadku
wykonaj instrukcję 2
IF
warunek
THEN
instrukcja 1
ELSE
instrukcja
2
Zamiast pojedynczej instrukcji, wolno po
THEN
i po
ELSE
wstawić ciąg instrukcji. Wówczas wstawiamy
je pomiędzy słowa
BEGIN
i
END
Program rownanie;
uses crt;
var
a,b,x: real;
begin
clrscr;
writeln (‘Podaj parametry a i b. ‘);
readln (a,b);
if
a<> 0
then
begin
x:= -b/a;
writeln (‘x= ‘, x);
end
else
begin
if
b = 0
then
writeln (‘Równanie ma nieskończenie
wiele
rozwiązań’)
else
writeln (‘Równanie nie ma rozwiązań’);
end;
readkey;
end.
ax + b = 0
Zadanie
Napisz program obliczający wartość bezwzględną
podanej liczby „x”
program dzieli;
uses crt;
var a,b : integer;
begin
clrscr;
write (‘Program sprawdza, czy liczba „a” dzieli się
przez „b”’);
write (‘ Podaj liczby a i b.’);
readln (a,b);
if
b = 0
then
writeln (‘Nie wolno dzielić przez 0’)
else
begin
if
(a mod b =0)
then
writeln (‘a jest podzielne
przez b ‘)
else
writeln (‘a nie jest podzielne przez b’);
end;
readkey;
end.
Zadanie
Napisz program sprawdzający, czy wczytana liczba
jest parzysta.
TEMAT
:
Liczby losowe
RANDOMIZE
– procedura uruchamiania
generatora liczb losowych
RANDOM (zakres)
– funkcja losująca liczby z
przedziału
od 0 do zakres – 1
Przykłady:
random (100) wylosuje liczbę z przedziału od 0
do 99
random (1000) wylosuje liczbę z przedziału od 0
do 999
random (49) + 1 wylosuje liczbę z przedziału od
1 do 49
random (90) + 10 wylosuje liczbę z przedziału od
10 do 99
program lotek;
uses crt;
begin
clrscr;
write (‘Program TOTO LOTEK’);
randomize;
write (‘ ‘,
random (49) + 1
);
write (‘ ‘,
random (49) + 1
);
write (‘ ‘,
random (49) + 1
);
write (‘ ‘,
random (49) + 1
);
write (‘ ‘,
random (49) + 1
);
write (‘ ‘,
random (49) + 1
);
readkey;
end.
program LOTEK
TEMAT:
liczba π (pi)
Funkcja
pi
nie ma argumentów i zwraca
zawsze przybliżoną wartość liczby
pi.
Wzory wykorzystujące liczbę
pi,
a pisane w
języku TP będą miały postać:
Pole koła:
pi
* sqr ( r )
Obwód okregu:
2 *
pi
* r
Objętość kuli: 4 / 3 *
pi
* r * r * r
Objetość walca:
pi
* sqr ( r ) * H
Objetość stożka:
1 / 3 *
pi
* sqr ( r ) * H
Zadanie 1
Napisz program obliczający objętości brył
obrotowych.
Program ma kolejno pytać o właściwe dane, obliczać
i wypisywać wyniki.
Zadanie2
Napisz program obliczający pole i obwód koła.
Zadanie3
Napisz program symulujący rzut kostką do gry.
Zadanie4
Napisz program symulujący rzut monetą.
TEMAT:
kolory.
Do zmiany koloru tekstu służy polecenie
textcolor
(…)
Do zmiany koloru tła tekstu służy polecenie
textbackground (…)
W nawiasie podajemy numer koloru
0-15
lub
wpisujemy jego nazwę w języku angielskim, np.
red, blue, green, yellow.
UWAGA:
W bloku deklaracyjnym trzeba zadeklarować
moduł
Crt
odpowiedzialny za obsługę
klawiatury i ekranu.
Zadanie 1
Napisz program, który wypisze na monitorze 16
zdań, a każde będzie miało kolor, odpowiadający
numerowi.
numer koloru = 0
…..
numer koloru = 9
numer koloru = 10
numer koloru = 11
numer koloru = 12
numer koloru = 13
numer koloru = 14
numer koloru = 15
Zadanie 2
Napisz program, który wypisze na monitorze 16
zdań, a każde będzie napisane na tle innego koloru,
np
tło numer 0
tło numer 14
TEMAT: rozszerzenie
exe.
Aby zapisać program TurboPascala jako plik z
rozszerzeniem
exe
, a tym samym uczynić go
samodzielnym programem, należy:
1. W menu COMPILE – DESTINATION
MEMORY zamienić na DESTINATION DISC
2. W menu OPTION –kliknąć COMPILER prawym
przyciskiem myszy, wybrać OPTIONS i dopisać
*.exe
3. Skompilować program
4. W menu FILE wybrać SAVE ALL i zapisać.
TEMAT:
Instrukcja pętli
for… to… do…
Typ porządkowy
zmiennej jest to taki typ, w
którym dla dowolnego elementu można określić
element poprzedni i następny.
Typy porządkowe:
• integer
• char
for
i:=1
to
10
do
…
lub
for
i:=1
to
10
do
begin
…
end;
i
- zmienna
sterująca
for
i:=‘a’
to
‘k’
do
…
lub
for
i:=‘a’
to
‘k’
do
begin
…
end;
i
- zmienna
sterująca
Przykład pętli
for… to… do….
Program wypisujący alfabet.
program alfabet;
uses crt;
var
c: char;
begin
clrscr;
for
c:= ‘a’
to
‘z’
do
write (c);
readkey;
end.
Przykład pętli
for… to… do….
Program wypisujący alfabet od z do a
program alfabet;
uses crt;
var
c: char;
begin
clrscr;
for
c:= ‘z’
downto
‘a’
do
write (c);
readkey;
end.
Przykład pętli
for… to… do….
Program wypisujący 10 razy zdanie: kocham
wakacje.
program wakacje;
uses crt;
var
i: integer;
begin
clrscr;
for
i:= 1
to
10
do
begin
textcolor (i);
write (‘kocham wakacje’);
end;
readkey;
end.
Przykład
Napisz program, obliczający i wypisujący 10 kolejnych potęg
liczby 2.
program potega2;
uses crt;
var
i, x: integer;
begin
clrscr;
x := 1
for
i:= 1
to
10
do
begin
x := x * 2
writeln (‘2 do potęgi ’,i,’ = ‘, x );
end;
readkey;
end.
Zadanie
Napisz program, obliczający i wypisujący 20
kolejnych potęg liczby 2.
Przy tego typu programach bardzo często zachodzi
potrzeba użycia zmiennej typu
longint.
Typ
integer
obejmuje bowiem liczby całkowite z
małego zakresu.
integer to liczby z przedziału [ -32768; 32767]
longint to liczby z przedziału [-2147483648;
2147483647]
Przykład
Napisz program obliczający silnię dowolnej liczby.
program silnia;
uses crt;
var
i, s, k, n: longint;
begin
clrscr;
writeln (‘Program oblicza silnię zadanej liczby.’);
writeln (‘Podaj liczbę k. ‘);
readln (k);
if k=0 then writeln (‘silnia z liczby 0 wynosi 1’);
if k<0 then writeln (‘silnia z liczby ujemnej nie istnieje’);
if k>0 then
begin
i := 1;
s := 1;
for n:= 1 to k do
begin
s := s*i
i := i+1
end;
writeln (‘Silnia liczby ‘, k,’ wynosi ‘, s);
end;
readkey;
end.
Zadanie (do pracy samodzielnej)
Korzystając z poznanej pętli napisz program
obliczający:
a) Sumę pięciu kolejnych liczb naturalnych.
b) Sumę n kolejnych liczb naturalnych
program suma5;
uses crt;
var
i, k, a, S: longint;
begin
clrscr;
writeln (‘Program oblicza sumę 5 kolejnych liczb,
poczynając od a.’);
writeln (‘Podaj liczbę a. ‘);
readln (a);
S:= 0;
k:=a;
for i:= 1 to 5 do
begin
S := S +k;
k := k +1;
end;
writeln (‘Suma = ‘, S);
readkey;
end.
Zadanie1
Napisz program obliczający:
•Sumę liczb naturalnych od 1 do n
•Iloczyn liczb naturalnych od 1 do n
•Średnią arytmetyczną n dowolnych liczb naturalnych
TEMAT:
Instrukcja pętli
repeat … until …
w tłumaczeniu:
powtarzaj … dopóki …
Możemy tu wstawić
dowolną ilość
instrukcji, których nie
trzeba ujmować w
begin … end.
Pętla będzie
powtarzana, dopóki
podany tu warunek
nie będzie spełniony
Instrukcję tą można używać na przykład do
wymuszania na użytkowniku wpisywania
poprawnych danych.
Przykład
repeat
writeln (‘Podaj liczbę dodatnią’);
readln (x);
until x>0
;
Program będzie pytał aż do skutku, czyli aż
użytkownik poda liczbę dodatnią.
Czym różnią się poznane pętle?
Pętla
for… to… do…
powtarzana jest z
góry określoną ilość razy.
Pętla
repeat … until …
powtarzana jest
dopóki warunek nie zostanie spełniony. Za
każdym razem może to być inna ilość razy.
Niektóre problemy można rozwiązać za pomocą
obu pętli.
Zawsze powinno się dostosować rodzaj pętli do
problemu.
Przykład pętli
repeat … until …
w znanym już nam
przykładzie:
Program wypisujący 10 razy zdanie: kocham
wakacje.
program wakacje;
uses crt;
var
i: byte;
begin
clrscr;
i:=1;
repeat
textcolor (i);
writeln (‘kocham wakacje’);
i:= i + 1 ;
until i = 11;
readkey;
end.
PORÓWNAJMY PROGRAMY:
program wakacje;
uses crt;
var
i: byte;
begin
clrscr;
for
i:= 1
to
10
do
begin
textcolor (i);
writeln (‘kocham
wakacje’);
end;
readkey;
end.
program wakacje;
uses crt;
var
i: byte;
begin
clrscr;
i:=1;
repeat
textcolor (i);
writeln (‘kocham
wakacje’);
i:= i + 1 ;
until i = 11;
readkey;
end.
Zadanie 1
Poniższy program oblicza i wypisuje 10 kolejnych
potęg liczby 2.
Zamień pętlę
for…to…do…
na
repeat…until…
program potega2;
uses crt;
var
i, x: integer;
begin
clrscr;
x := 1
for
i:= 1
to
10
do
begin
x := x * 2
writeln (‘2 do potęgi ’,i,’ = ‘, x );
end;
readkey;
end.
Zadanie 2.
Napisz program liczący silnię. Program ma
wymuszać na użytkowniku wpisywanie poprawnych
danych.
Instrukcję tą można używać również do pytania
użytkownika, czy chce jeszcze raz policzyć daną
wielkość.
Przykład
program cosik;
var
odp: char;
begin
repeat
{ tu piszemy wszystkie polecenia prowadzące do
obliczenia zadanej wielkości- czyli cały
program}
writeln (‘Jeszcze raz? t/n’);
readln (odp);
until odp = ‘n’
end.
Program będzie liczył zadaną wielkość aż
użytkownik wpisze
n
Zadanie 1.
Do stworzonych w bieżącym temacie programów
dopisz polecenia, dzięki którym użytkownik będzie
mógł obliczać zadaną wielkość wielokrotnie.
Zadanie 2.
Napisz program obliczający:
- Sumę liczb naturalnych od 1 do n
- Iloczyn liczb naturalnych od 1 do n
- Średnią arytmetyczną n dowolnych liczb
naturalnych
Do stworzonych programów dopisz polecenia,
dzięki którym użytkownik będzie mógł obliczać
zadaną wielkość wielokrotnie.
Zadanie 3.
Napisz program –test, składający się z trzech pytań.
Program ma dopóty zadawać pytanie, aż użytkownik
da poprawną odpowiedź. Dopiero wówczas ma
przejść do następnego pytania.
Użyj instrukcji repeat…. until…
TEMAT:
Instrukcja wyboru
CASE.
Instrukcja CASE służy do wyboru jednej z kilku
możliwości. Ma ona postać:
case
wyrażenie
of
wartość1: instrukcja1;
wartość2: instrukcja2;
wartość3: instrukcja3;
…
end;
case
- przypadek
Najpierw sprawdzana jest
wartość
wyrażenia
. Potem
wynik jest porównywany z
kolejnymi
wartościami.
Gdy
znaleziona zostanie wartość
równa
wyrażeniu
, to
wykonywana jest
instrukcja
po dwukropku.
Cała instrukcja
case
musi kończyć się słowem
end;
Co należałoby zrobić, jeśli po dwukropku chcielibyśmy, aby
komputer wykonał więcej niż jedną instrukcję?
program PoleCzyObwod;
uses crt;
var
a,b, P, O, : real;
odp: integer;
begin
clrscr;
writeln (‘Program oblicza pole i obwód prostokąta’);
writeln (‘ Podaj wymiary prostokąta’);
readln (a,b);
writeln (‘Chcesz policzyć pole czy obwód?’)
writeln (‘wciśnij 1, jeśli chcesz obliczyć pole’);
writeln (‘wciśnij 2, jeśli chcesz obliczyć obwód’);
readln (odp);
case
odp
of
1:
begin
P:= a*b;
writeln (‘P=‘ , P:10:2);
end;
2:
begin
O:= 2*a+2*b;
writeln (‘O:=‘ , O:10:2);
end;
end;
readkey;
end.
PRZYKŁAD
Pole czy
obwód
prostokąta?
program KwadratCzyProstokat;
uses crt;
var
a,b, P : real;
odp: integer;
begin
clrscr;
writeln (‘Program oblicza pole prostokąta i
kwadratu’);
writeln (‘Chcesz policzyć pole kwadratu czy
prostokąta?’)
writeln (‘wciśnij 1, jeśli chcesz obliczyć pole
kwadratu’);
writeln (‘wciśnij 2, jeśli chcesz obliczyć pole
prostokąta’);
readln (odp);
case
odp
of
1:
begin
writeln (‘ Podaj wymiary kwadratu’);
readln (a);
P:= a*a;
writeln (‘P=‘ , P:10:2);
end;
2:
begin
writeln (‘ Podaj wymiary prostokąta’);
readln (a,b);
P:= a*b;
writeln (‘P=‘ , P:10:2);
end;
end;
readkey;
end.
PRZYKŁAD:
Pole kwadratu
czy
prostokąta?
Zadanie1.
(zaczynamy od punktu a)
Napisz program liczący:
a) pola trójkąta i trapezu
(użytkownik wybiera pole której
figury ma być policzone)
b) pola 4 dowolnych figur płaskich
(użytkownik wybiera
pole której figury ma być policzone)
c) pola i obwody 4 dowolnych figur płaskich
(użytkownik wybiera pole i obwód której figury ma być policzone)
Instrukcja CASE może mieć również postać:
case
wyrażenie
of
wartość1: instrukcja1;
wartość2: instrukcja2;
wartość3: instrukcja3;
…
else
instrukcja0
end;
Najpierw sprawdzana jest
wartość
wyrażenia
. W
przypadku, gdy
wyrażenie
przyjmie
wartość1,
wykonywana jest
instrukcja1
;
gdy wyrażenie przyjmie
wartość2,
wykonywana jest
instrukcja2;
,…
Jeżeli żadna wartość nie
odpowiada wyrażeniu, to
wykonywana jest
instrukcja
po
else.
program PoleCzyObwod;
uses crt;
var
a,b, P, O, : real;
odp: integer;
begin
clrscr;
writeln (‘Program oblicza pole i obwód prostokąta’);
writeln (‘ Podaj wymiary prostokąta’);
readln (a,b);
writeln (‘Chcesz policzyć pole czy obwód?’)
writeln (‘wciśnij 1, jeśli chcesz obliczyć pole’);
writeln (‘wciśnij 2, jeśli chcesz obliczyć obwód’);
readln (odp);
case
odp
of
1:
begin
P:= a*b;
writeln (‘P=‘ , P:10:2);
end;
2:
begin
O:= 2*a+2*b;
writeln (‘O:=‘ , O:10:2);
end
else
writeln (‘ Mogłeś wybrać tylko 1 lub 2’);
end;
readkey;
end.
PRZYKŁAD