Algorytmy i Programowanie - Ćwiczenia 2
Poprzednie
Następne
Temat: Typy zmiennych. Obsługa poleceń wejścia/wyjścia. Instrukcje warunkowe, pętle.
Pierwsze samodzielne programy.
Zachęcam do uważnego przeczytania wszystkiego co było na ćwiczeniach 1
Deklaracja zmiennych
Aby móc w programie używać zmiennych, należy je najpierw zadeklarować w nagłówku programu.
Sekcja deklaracji zmiennych zaczyna się od słowa kluczowego var, a po nim następuje lista zmiennych podanych w postaci:
nazwa_zmiennej : typ_zmiennej;
Typy zmiennych
shortint - liczby całkowite od -128 do 127
byte - liczby całkowite od 0 do 255
integer - liczby całkowite od -32768 do 32767
word - liczby całkowite od 0 do 65535
longint - liczby całkowite od -2147483648 do 2147483647
real - liczby rzeczywiste (6 bajtów)
extended - liczby rzeczywiste (10 bajtów)
char - znak kodu ascii
String - napis (umieszczony w pojedynczym cudzysłowie)
boolean - wartosc logiczna: prawda(true) lub fałsz(false)
Obsługa poleceń wejścia/wyjścia
Aby wczytać wartość zmiennej podanej z klawiatury należy użyć funkcji Read(x);. Ta operacja sczytuje z klawiatury jedną liczbę, która powinna być podana w takim formacie, aby dać się zapisać w swoim zakresie (np. jeśli x jest liczbą całkowitą, to należy wpisać liczbę całkowitą, a nie ułamek, czyli literę). Zamiast polecenia Read(x); można użyć polecenia Readln(x);, które różni się tym, że po wartości zmiennej, program będzie oczekiwał znaku końca linii (czyli wpisanie wartości i naciśnięcia enter). W przypadku Read(x); każdy biały znak zakończy wczytywanie wartości zmiennej.
Aby wypisać wartość zmiennej na ekran należy użyć funkcji Write(x);. Ta operacja wypisuje na ekran wartość zmiennej x. Zamiast polecenia Write(x); można użyć polecenia Writeln(x);, które różni się tym, że po wartości zmiennej, program wypisze znak końca linii (czyli enter).
Operacja przypisania
Każdej zmiennej można nadać dowolną wartość z jej zakresu poprzez operację przypisania, którą w Pascalu jest znak :=. Np.
x:=1;
Po prawej stronie wyrażenia przypisania mogą występować dowolne funkcje lub operacje matematyczne. Można też przypisywać wartości jednych zmiennych do drugich. Np.
x := 3+7;
y := 2*x;
z := x+3*(y-8);
p := y;
Instrukcje warunkowe
Konstrukcja instrukcji warunkowej w Pascalu jest następująca:
if wyrażenie then operacja_prawda
else operacja_fałsz;
UWAGA! przed else wyjątkowo nie może występować średnik!
Każda operacja (operacja_prawda lub operacja_fałsz) może być
równie dobrze blokiem operacji rozpoczynającym się od słowa kluczowego begin a
kończącym słowem end;.
Jeśli wyrażenie jest prawdziwe wykonana zostanie operacja_prawda.
Jeśli wyrażenie jest fałszywe wykonana zostanie operacja _fałsz.
Np. fragment kodu:
i := 1;
if (i=1) then Writeln('Prawda')
else Writeln('Fałsz');
Wypisze nam na ekranie słowo "Prawda". Gdyby jednak zrobić:
i := 0;
if (i=1) then Writeln('Prawda')
else Writeln('Fałsz');
wówczas na ekranie pojawi się słowo "Fałsz".
W nawiasach można też umieszczać dowolne operacje arytmetyczne, a do
określenia prawdy lub fałszu wzięty zostanie wynik działań. Np:
i := 1;
if (2*i-3+1/i = 1) then Writeln('Prawda')
else Writeln('Fałsz');
Na ekranie pojawi się słowo "Fałsz".
W nawiasach mogą się pojawiać standardowe operacje porównania takie jak:
równe: =
nierówne: <>
mniejsze: <
mniejsze-równe: <=
większe: >
więsze-równe: >=
Operatory logiczne
Wartości logiczne można oczywiście ze sobą łączyć używając odpowiednich
operatorów logicznych, którym w języku Pascal odpowiadają słowa kluczowe będące ich angielkimi odpowiednikami. Najważniejsze z nich to:
Koniunkcja: and
Alternatywa: or
Negacja: not
Oczywiście można je dowolnie łączyć, używając odpowiedniego ponawiasowania. Należy przy tym pamiętać, że w przypadku łączenia wyrażeń każde z nich musi być umieszczone w osobnym nawiasie. Np:
i := 1;
if (i>=0) and (i<=10) and not (i=5) then Writeln('Prawda') //Prawda, jeśli i jest w przedziale od 1 do 10, ale nie jest 5
else Writeln('Fałsz');
Pętle
While
while (warunek) do operacja
Tak długo jak warunek jest prawdziwy, wykonywana jest operacja.
(Operacja może być oczywiście równie dobrze blokiem operacji).
repeat-until
Repeat operacja until (warunek)
Operacja zostanie wykonana raz, a następnie, tak długo jak warunek jest
fałszywy, będzie powtarzana. (Operacja może być
oczywiście równie dobrze blokiem operacji)
For
for i:=wartość_początkowa to wartość_końcowa do operacja;
Wartość_początkowa - nadanie wartości początkowej zmiennej sterującej.
wartość_końcowa - wartość zmiennej sterującej, po której pętla kończy swoje działanie.
Zmienną sterującą jest i. Przy każdym obiegu pętli jej wartość zwiększa się o 1.
(Operacja może być oczywiście równie dobrze blokiem operacji)
Np:
for i:=1 to 5 do operacja;
Ta pętla na początku zmiennej i przypisze wartość jeden.
Następnie operacja wykona się
5 razy. Będzie tak, gdyż 5 razy zwiększymy wartość zmiennej i o jeden i dopiero za 6 razem
wartość i będzie większa od 5.
Można również swtorzyć pętle for, która w analogiczny sposób wykonuje operacje zmniejszając wartość zmiennej strerującej:
for i:=wartość_początkowa downto wartość_końcowa do operacja;
Aby wykonać pewne operacje w nieskończoność można użyć następującej pętli:
while (true) do
begin
end;
Operacje zakłócające przebieg pętli
Aby zmienić bieg działania pętli można użyć jednego z dwóch poleceń
zakłócających przebieg pętli:
continue - przerywa działanie pętli i przechodzi do jej następnej iteracji
break - opuszcza pętle i kończy jej działanie
Zadania
Podczas tych zajęć, w zasadzie mając tylko tę wiedzę oraz znając operacje
arytmetyczne i instrukcje przypisania, można wykonać następujące
zadania:
Zadanie 1
Zadanie 2
Zadanie 3
Budowa programu
Każdy program jest zbudowany według schematu, który jest zawsze niezmienny:
program Nazwa; // nazwa programu - musi zaczynać się od litery
const
nazwa_stalej = wartość_stałej; // deklaracja stałych, czyli zmiennych, które nie mogą zmienić swojej wartości
var
nazwa_zmiennej : typ_zmiennej; // deklaracja zmiennych
begin // początek programu
// Lista_operacji_programu
// To właśnie tutaj trzeba napisać, co program ma po kolei robić
end. // koniec programu. Jedyna instrukcja, która kończy się kropką zamiast średnika.