z2, Podstawy programowania, laborki
[ Pobierz całość w formacie PDF ]
Wstęp teoretyczny
oprac. Robert Tomaszewski
Operacje shl i shr powodują przesunięcie NA POZIOMIE BINARNYM
liczby całkowitej o kilka pozycji w lewo lub w prawo. Przesuwanie
w lewo utożsamiamy z mnożeniem przez 2, zaś w prawo - z dzieleniem
całkowitym przez 2.
Przykład:
8 shl 2 (=8*2*2=8*4) -> 00001000 shl 2 = 00100000 = 32
9 shr 1 (=9 div 2) -> 00001001 shr 1 = 00000100 = 4
W ogólności: x shl(shr) y mnoży(dzieli całkowicie) x przez 2 do
potęgi y.
>>>> Zadanie 1
Napisz prosty program, który wykonuje powyższe operacje na
liczbach podanych przez użytkownika i wyświetla wyniki.
Sprawdź operacje logiczne AND, OR, XOR i NOT.
>>>> Zadanie 2
Napisz program, który oblicza średnią arytmetyczną z trzech
wprowadzonych przez użytkownika liczb (zmienne a, b i c), a
następnie z wyliczonej średniej oblicza pierwiastek kwadratowy
(funkcja sqrt, przykładowa postać:
x:=sqrt(100);
). Wyświetl
sformatowane wyniki.
Teoria - Zmienne logiczne, operatory relacji i instrukcja
warunkowa IF
Zmienna/zmienne logiczne przyjmują dwie wartości: True (prawda) i
False (fałsz). Deklaruje się je za pomocą typu Boolean, np.:
var
test: Boolean;
Podstawowe operatory relacyjne to: =,>,<,>=,<= i <>(różne). Wynik
operacji porównania jest typu Boolean, czyli True/False.
Przykład:
var
test: Boolean;
a, b: Integer;
begin
test:=1=3;
writeln(test); {wyświetli stałą False, bo 1 nie jest równe 3}
a:=1;
b:=-1;
test:=a>b;
writeln(test); {wyświetli stałą True, bo 'a' jest większe od
'b'}
Operatory relacyjne są bardzo często używane w połączeniu z
instrukcją rozgałęziającą program, czyli IF (jeśli).
Ogólna postać instrukcji IF:
if warunek then instrukcja;
lub
if warunek then begin
instrukcja;
instrukcja;
...
end;
lub
if warunek then instrukcja1 {brak średnika!}
else instrukcja2;
lub
if warunek then begin
instrukcja;
instrukcja;
...
end {brak średnika!}
else begin
instrukcja;
instrukcja;
...
end;
Ogólnie - jeżeli (if) warunek jest prawdziwy (true) to wtedy
(then) wykonywana jest instrukcja (jeżeli chcemy wykonać więcej
niż jedną to grupujemy je pomiędzy słowami begin ... end).
Jeżeli natomiast warunek jest nieprawdziwy (false) to wykonywana
jest instrukcja (więcej niż jedną grupujemy pomiędzy słowami begin
... end) występująca po słowie kluczowym else.
Ponadto warunek może być warunkiem złożonym z kilku warunków
połączonych operandami AND (i) oraz OR (lub) ewentualnie można go
poprzedzić zaprzeczeniem NOT. Używamy wówczas nawiasów () do
grupowania warunków.
Przykład:
var
test: Boolean;
a, b: Integer;
begin
test:=1=3;
a:=1;
b:=-1;
if test then writeln('1 jest równe 3');
if test then writeln('1 jest równe 3')
else writeln('1 nie jest równe 3');
if (test) AND (a>b) then writeln('1 jest równe 3 oraz a>b')
else writeln('1 nie jest równe 3 oraz/lub a nie jest większe od
 b');
{AND oznacza że wszystkie warunki cząstkowe muszą być prawdziwe,
aby całość też była prawdziwa}
if (test) OR (a>b) then writeln('1 jest równe 3 lub a>b')
else writeln('1 nie jest równe 3 oraz a nie jest większe od b');
{OR oznacza że wystarczy jeden z warunków cząstkowych prawdziwy,
aby całość też była prawdziwa}
if NOT(a>b) then writeln('a nie jest większe od b')
else writeln('a jest większe od b');
{uwaga! NOT(False)=True - zaprzeczenie fałszowi daje prawdę}
>>>> Zadanie 3
Napisz program, który wczytuje od użytkownika imię i nazwisko a
następnie pyta czy oba wczytane wyrazy mają być wyświetlone z
przecinkiem rozdzielajÄ…cym czy ze spacjÄ… (Adam Nowak lub
Adam,Nowak), czy pierwsze ma być wyświetlone imię czy nazwisko
(Adam Nowak lub Nowak Adam, itd.).
>>>> Zadanie 4
Przepisz powyższy fragment programu, sprawdź jakie daje wyniki i
spróbuj wprowadzić własne modyfikacje do instrukcji warunkowych
(if), żeby lepiej zrozumieć działanie rozgałęziania programu w
zależności od spełnienia lub niespełnienia pewnych warunków.
Przebuduj programy z poprzednich zajęć uzupełniając je np. o
sprawdzenie czy użytkownik nie próbuje dzielić przez 0 lub
pozwalając mu wprowadzać liczby z zadanego z góry zakresu.
[ Pobierz całość w formacie PDF ]