Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Wprowadzenie .................................................................................................................................................... 7
Cz I
Rozdzia 1.
Rozdzia 2.
Rozdzia 3.
Rozdzia 4.
Rozdzia 5.
Rozdzia 6.
Rozdzia 7.
Rozdzia 8.
Rozdzia 9.
Cz III
Programowanie ......................................................................................................................105
Spis treci
Cz IV
Dodatki
...........................................................................................................................................................231
Dodatek A
Dodatek B
6.
Wprowadzenie
do algorytmiki
Rozdzia
Pojcia podstawowe
Powszechnie przez algorytm rozumie si schemat mechanicznego rozwizania okrelonego
problemu. Posugujc si bardziej naukowymi pojciami, mona powiedzie, e algorytm
to skoczony cig operacji na obiektach, ze cile ustalonym porzdkiem wykonania, dajcy moliwo realizacji zadania z okrelonej klasy.
Algorytm w sensie informatycznym opiera si na okrelonych danych i daje oczekiwane
wyniki. Ponadto powinien mie nastpujce cechy:
Poprawno dla kadego zestawu poprawnych danych wejciowych algorytm
powinien dawa poprawne wyniki.
Skoczono dla kadego zestawu poprawnych danych wejciowych algorytm
powinien dawa wyniki w skoczonej liczbie krokw.
Okrelono algorytm nie moe pozostawia wtpliwoci co do wyboru kolejnej
operacji (najlepszym sprawdzianem tej cechy jest atwo implementacji algorytmu).
Efektywno (sprawno) algorytm powinien prowadzi do rozwizania jak
najniszym kosztem, czyli w jak najmniejszej liczbie krokw. W informatyce cecha
ta sprowadza si do optymalizacji zajtoci pamici przez struktury danych
wykorzystywane w algorytmie oraz do optymalizacji zoonoci obliczeniowej
(liczby wykonanych operacji).
Oglno (uniwersalno) algorytm powinien rozwizywa nie tylko jedno
szczeglne zadanie, ale ca klas zada.
40
Cz II Algorytmika
Sposb rozwizania
Dugoci bokw podane przez uytkownika zapamitamy w zmiennych a i b. Nastpnie
wyliczymy p jako iloczyn a i b. Wyliczone p wywietlimy na ekranie. Bdzie to prosty
algorytm liniowy.
41
Rozwizanie
Poniej przedstawiono ten sam algorytm zapisany w postaci listy krokw, pseudokodu
i schematu blokowego (rysunek 6.1).
Specyfikacja algorytmu:
Dane:
a pierwszy bok prostokta, liczba rzeczywista wiksza od 0;
b drugi bok prostokta, liczba rzeczywista wiksza od 0.
Wynik:
p pole prostokta, liczba rzeczywista.
Lista krokw:
Krok 1. Wczytaj warto pierwszego boku. Zapisz j pod zmienn a.
Krok 2. Wczytaj warto drugiego boku. Zapisz j pod zmienn b.
Krok 3. Oblicz p jako iloczyn a i b.
Krok 4. Wywietl p.
Pseudokod:
Program kwadrat
zmienne
a, b, c: rzeczywiste
pocztek
czytaj(a)
czytaj(b)
c:=ab
pisz(c)
koniec
Schemat blokowy:
Rysunek 6.1.
Schemat blokowy
do przykadu 6.1
{nagwek programu}
{deklaracje zmiennych}
{pocztek programu waciwego}
{wczytanie danych}
{instrukcja przypisania}
{wywietlenie wyniku}
{koniec programu waciwego}
42
Cz II Algorytmika
Sposb rozwizania:
Wartoci podane przez uytkownika zapamitamy w zmiennych a i b. Nastpnie sprawdzimy, czy a < b jeli tak, to w zmiennej c zapamitamy warto a; jeli nie, to w zmiennej c zapamitamy warto b. Nastpnie wywietlimy c na ekranie. Bdzie to algorytm
z warunkami (rozgazieniami), gdy w zalenoci od spenienia bd niespenienia
warunku (a < b) rne jest jego dziaanie.
Rozwizanie
Podobnie jak w przykadzie 6.1, poniej przedstawiono ten sam algorytm zapisany w postaci listy krokw, pseudokodu i schematu blokowego (rysunek 6.2).
Specyfikacja algorytmu:
Dane:
a, b liczby podane przez uytkownika, liczby cakowite.
Wynik:
c mniejsza z liczb a i b, liczba cakowita.
Lista krokw:
Krok 1. Wczytaj warto pierwszej liczby. Zapisz j pod zmienn a.
Krok 2. Wczytaj warto drugiej liczby. Zapisz j pod zmienn b.
Krok 3. Jeli a < b, to do c przypisz warto a i przejd do kroku 5.
Krok 4. Do c przypisz warto b.
Krok 5. Wypisz warto c.
Krok 6. Koniec.
Pseudokod:
Program mniejsza
zmienne
a, b, c: cakowite
pocztek
czytaj(a,b)
jeeli a<b to c:=a {sprawdzenie warunku oraz dziaanie wykonywane w przypadku
gdy warunek jest prawdziwy}
w przeciwnym przypadku c:=b {dziaanie wykonywane, gdy warunek nie jest prawdziwy}
pisz(c)
koniec
43
Schemat blokowy:
Rysunek 6.2.
Schemat blokowy
do przykadu 6.2
Sformuuj algorytm sprawdzajcy, czy z bokw o dugociach podanych przez uytkownika mona utworzy trjkt.
Sposb rozwizania:
Dugoci bokw podane przez uytkownika zapamitamy w zmiennych a, b, c. Aby
z trzech odcinkw mona byo zbudowa trjkt, adna z sum dwch dowolnych bokw
nie moe by mniejsza od trzeciego boku. Posuymy si zmienn logiczn trojkat,
ktrej na pocztku przypiszemy warto fasz (false). Jeli bdzie zachodzia kada
z zalenoci: a+b > c, b+c > a, c+a > b, to zmiennej trojkat przypiszemy warto
prawda (true) i wywietlimy komunikat, e z podanych bokw da si zbudowa trjkt.
Algorytm w postaci pseudokodu i schematu blokowego bdzie algorytmem z zagniedonymi warunkami.
Rozwizanie
Podobnie jak w poprzednich przykadach, przedstawiono ten sam algorytm zapisany
w postaci listy krokw, pseudokodu i schematu blokowego (rysunek 6.3).
Specyfikacja algorytmu:
44
Cz II Algorytmika
Dane:
a, b, c liczby rzeczywiste podane przez uytkownika, dugoci odcinkw.
Wynik:
trojkat informacja, czy z odcinkw o podanych dugociach mona utworzy
trjkt, warto logiczna.
Lista krokw:
Krok 1. Wczytaj wartoci zmiennych a, b, c.
Krok 2. Zmiennej trojkat przypisz warto false.
Krok 3. Jeli a+b>c, to jeli a+c>b, to jeli c+b>a, to zmiennej trojkat przypisz
warto true.
Krok 4. Jeeli zmienna trojkat ma warto true, to wypisz 'Z podanych bokw
mona zbudowa trjkt'; w przeciwnym przypadku wypisz 'Z podanych bokw
nie mona zbudowa trjkta'.
Krok 5. Koniec.
Komentarz:
Najpierw sprawdzamy warunek a+b>c jeli zachodzi, to sprawdzamy, czy a+c>b
jeli tak, to sprawdzamy, czy c+b>a jeli tak, to trojkat :=true. Jak wida,
w przypadku gdy z podanych bokw mona zbudowa trjkt, sprawdzane
s wszystkie 3 warunki i wszystkie s prawdziwe.
Schemat blokowy (rysunek 6.3).
Pseudokod:
Program czytrojkat
zmienne
a, b, c: rzeczywiste
trojkat: logiczna
pocztek
czytaj(a,b,c)
trojkat:=false
jeeli a+b>c to
pocztek
jeeli a+c>b to
jeeli b+c>a to trojkat:=true
koniec
jeeli trojkat to pisz('Mona zbudowa trjkt')
w przeciwnym wypadku pisz('Nie mona zbudowa trjkta')
koniec
Rysunek 6.3.
Schemat blokowy
do przykadu 6.3
45
46
Cz II Algorytmika
Rysunek 6.4.
Elementy schematu
blokowego
Zadanie 6.2.
Napisz algorytm w postaci listy krokw, wedug ktrego sporzdzasz swoj ulubion
potraw.
Zadanie 6.3.
Napisz algorytm w postaci schematu blokowego i pseudokodu, zwracajcy warto
bezwzgldn liczby podanej przez uytkownika.
Zadanie 6.4.
Napisz algorytm w postaci listy krokw i schematu blokowego, informujcy, czy liczba
podana przez uytkownika jest wiksza, mniejsza czy rwna zero.
Zadanie 6.5.
Zmodyfikuj algorytm z przykadu 6.1 tak, by w przypadku wprowadzenia danych
mniejszych lub rwnych zero nie byo wyliczane pole, lecz by by wywietlany odpowiedni komunikat.
Zadanie 6.6.
Napisz algorytm w postaci listy krokw, pseudokodu i schematu blokowego, informujcy,
czy liczba podana przez uytkownika jest liczb parzyst czy nieparzyst. Uyj operatora mod, ktry zwraca reszt z dzielenia cakowitego. Np. 5 mod 2 = 1, 4 mod 2 = 0.
47
Zadanie 6.7.
Utwrz w postaci listy krokw wraz ze specyfikacj algorytm wyliczajcy pierwiastek
rwnania liniowego o postaci ax+b = 0; gdzie a, b podaje uytkownik. We pod uwag
fakt, e uytkownik moe poda a = 0 lub b = 0.
Zadanie 6.8.
Narysuj w postaci schematu blokowego wraz ze specyfikacj algorytm wyliczajcy
pierwiastki rwnania kwadratowego o postaci ax2+bx+c = 0; gdzie a, b, c podaje uytkownik.
Zadanie 6.9.
Rozbuduj algorytm z przykadu 6.3. Nowy algorytm, w przypadku odcinkw, z ktrych mona utworzy trjkt, ma liczy jego pole wedug wzoru Herona:
S=
a+b+c
.
2