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.