pobierz plik

Transkrypt

pobierz plik
'1.
Algorytmy
Po przeczytaniu t€go rozalzislu doriresz sięJ €o to jest algołtm' jak za'
algoĘtny i określamy ich złożonośćobliczeniową. PoznaŚ' ńż'
n€ przyklady a|gor!'tmóu ląc'nie 2 ich popmwT}m zapisem. Nauczysz si$
jak przepmwadzić wlaściłąanalizę zadania wraz zj€go Śpecyfikacją czyci sposób realili dokladn}m opis€m'iłmagąń. Na koni€c zaprez€ntuj€my
zacji alsoĘtmów w arkuśzu kAlkulacyjnym.
pisqj€ny
Często w iciu stajesz przed koniecznością rozwiązania jakiegoś zadania. Na lekqi matematyki musisz na pŹykład rczwiąuać lównanie i w
łm
celu wykonujesz szereg czynności: od określenia i wypisania danych,
przez zastosowanie odpowiedniej metody rczwiązania, az do u2ryskania
wyniku ijego spIawdzenia' Pewien ciąg cłnnościmożesz okeślićdo roz_
wiązania wielu Żadań' które nie mają nic wspólnego z matemałką' Aby
zrobió na pŹyklad jajecznicę, tŹeba wziąć jajko, lyźeczkę masla i szcz'ptę soli. Na]ezy rozgfzać pate]nię' IoŻpuścićna niej plzygotowane maslo'
wbićjajko' dodaó sól. Telaz zawartość patelni mieszaj przez 3 minuty, wy_
lącz palnik i jajecznica gotowa. w ten sposób zdefiniowany został upo-
zadanie'' pżygotowania
ządkowany zbiór cz}nności, który
',rozwiązal
jajecznicy. Jeślina drugi dzień znów poczujesz apeĘt na to danie, najprawdopodobniej będziesz postępować wedfug tego samego schematu,
który jest wlaśnie algol}'hnem' Definicja algor}'tmu bżmi:
w nasłm drugim pŹykładzie daq'rni wejściowymi byly: jajko' masło,
sól, a w1łrikiem dzialania - gotowa jajecznica'
Cz! |'liŁsz, że...
Slowo ,,algorltm" pochodzi od nazwiska Algorismi (Al-Chorezmi)*
-v']biInego arab.liego malemdt\ka iaslronoma. łąceBo na prletomie VIII i Ix wieku. Dzięki jego piacom upowszechnil się system
dziesiętny i v]'jaśnione zostalo znaczenie zela'
' spowka
się też nieco inną plsownie tego nazwiska w nlektórych źródlach'
1
.
A gory,lrny
Zadania, dla któIych ustalamy ro^rłiązania. algorytmiczne' często
dotyczą danych ]iczbowych' Jeśli chcemy na przyklad policzyć średnią
ocen uzyskanych na koniec roku, przyjmiemy me1odę konsekwentnego
postępowania według schematu: dodamy wartości ]iczbowe ocerl ze
wsŻystkich pźedmiotów, a otrz}maną sumę podzielimy przęz l-icńę
plzedmiotów' Dan}mi wejściolrTmi (dane podawane na wejściealgol].tmu) są tu oceny ze wszystkich przedmiotów, dan}mi wyjścio"lmi (wyniki działania algorytrnu) iestjedna liczba, będąca śIedniąocen.
agoMmu
oczywiście, nie wszystkie zadania dają się rozwiązać za pomocą algorytmu' na przyklad nie istnieje przepis na dzieło sztuki. Jest teżwiele zadań' których lozwiązanie uzyskamy dzięki szczęśliwemu pr4padkowi
lub intuicji, ale na pewno nie w \łyliku działania jakiegoś algorytmu.
Postępowanie przy rozwiązywaniu danego zadania za pomocą algorytmu możemy podzielić na kilka kolejnych etapów:
1' Sformułowanie zadania ustalamy, jaki plob]em ma mzwiąz}rłać al_
gorytm.
2. określenie danych
wejściowych - ich t}pu (w Ępie okeŚ]amy, czy dane
pżyldad liczbami rzeczywisBmi, calkowiomi czy znakami)'
określenie wyniku olaz sposobu jego pręzentacji'
Ustalenie metody wykonania zadania (zauwż, że: piszemy ,,usta]e_
nie'', a nie ,,zna1ezienie'' , Edyż fiożęsz zna1ęźć kilka metod na Toz_
są na
3.
4.
wiązanie zadania, a spośród nich wybierzesz jedną, która wędlug cie_
bie będzię najbardziej odpowiednia).
5. zapisanie a]gorytmu za pomocą \łybranej metody.
6. Analiza poprawności rozwiązania'
'7. Testowanie lozwiązania dla różnych danych algorytm musi być uniwefsalny, aby slułć do rozwią4łvaaia zadań dla różnych zestawów
danych wejściowych.
8. ocena skuteczności alBorytmu (ocenia się tu pmkryczną pżydatność
algoi}tmu, np' wybiem z kilku możliwych rozwiązń metodę najszyb'
szą lub odrzuca zaproponowane rozwiązanie jako nieefektywne).
Pamiętaj' że komputel to masz}na, która potrafi *ykonać łlko j€d'
noznaczne polecenia nie jest w stanie samodzielnie wybiać właściwej
drogi postępowania' Kolejnośćczlnności musi być zatem ściśleokeślona' a kźda moźliwa drcga algoł'tmu powinna być w pełni opisana pizez
odpowiednie czynności' (ażde zastosowanie algorytmu d]a zestawu tych
samych poprawnych danych wejściowych musi prowadzió do uzyskania
takich samych wyników.
1.2. Sposoby zap su alqorytmu
CZy wiesz' że..'
Jedn}'rn z najstalszych algolytmów jest pochodzący z przęlofin
Iv i III wieku przed naszą erą tak zwany a]goĄ4m Euklidesa, słu_
źący do znajdowania największego wspólnego dzielnika dwóch
liczb calkowitych.
Algollm
powinien zostać zapisany w celu dalszej analĘ' Do najczę'
ścĘu4vanych zapisów algol!'tmu należą: lista kroków, pseudojęzyk zwany też pseudokodem, graficzna plezentacja algorytnu za pomocą schemalu bloko'$ego i wrevcie zapis w danym ję4kU programouania.
Elementem chaJal1erysryczn}rn dla listy kmków jest numencja wielszy. Kźdy krok opisuje rcalizację kolęjnej cz}nności i jęst zawarty w osobnym wierszu. oto a]gorytm podŻiału odcinka na cztery ńwne części zapi
sany w postaci listy koków:
l. Pod,/iel odcinek na dwie lo\ł0e czesci| lęwą i pra\^a'
2. Podzielczęść lewą na dwię równe części.
]. Pod,,iel częic prawą na dwie rowne częsci'
zapis algoMmu
w poslaci listy krok(
4. zakończ.
Kolejny przyklad pizedstawia zapis algorytmu znajdującego średnią
ał'tmetyczną dwóch ]iczb rzecz}'lvistych podanych na wejściu' Wynik
zostaje w!?isany na ekranie monitora.
1. wczytaj pierwszą z liczb.
Ż. wcątai drlr9ą z 1icń.
3. Dodaj liczby do siebie.
4. wynik dodawania podziel przęz 2.
5. w}pisz otrzymaną wartość'
6. zakończ.
Ps€udojęzyk jest metodą pośrcdnią między zapisem za pomocą listy
kroków a zapisęm w języku programowania' Notacja algołtmów za po_
mocą pseudojęzyka jest zbliżona do zapisu w którymś z populamych
języków progmmowania, ale mniej fomalna. Poniźej umieściliśmyprzykład zapisu algorytmu w pseudojęzyku, pozostawiamy go jednat bez wyjaśnień,poniewź nie będziemy rczwłaó tego sposobu - pŹejdzięmy
be7pośrednio do lapi.u wjęryku programowrnia'
zapis w pseudojęzyku algoł'tmu Ępisującego wartośćbez\ł,zględną
liczĘ 'ł wygląda następująco:
Początek;
Rzeczywiste 'I;
Jeśli'>=
0
wypisz (');
Jęśli'{ < 0 w}pisz (-');
Koniec.
Zap s
agorytmu
Przedstawione do tej pory przykłady prezentują zapis algor}tmóv
krótkich i nieskomplikowanych, stąd teź analizowanie ich zapisu za po.
mocą listy kroków czy też pseudokodu nie stanowi tludności. Zwróć po
nadto uwagę na fał1, że w algorytmach q7ch instukcje wykonujemy za
wsze w tej samej kolejności, niezależnie od wartości darrych wejściowych
Częściejjednak mamy do czynienia z problemami algorytmiczn}m
o
wie]e bardziej złożonymi i ich zapis którąś z podanych już m€tod,
cho(
blby dlugi' skomplikowany i mało czytelny. Takie z|ożon€ al
goqłmy najlepiej zapiswać ze względu na przejlłstośći prostotĘ
moźliwy'
Żap s a gorytmu za
-
za pomocą schematu b]okowego'
schemAt blokorłT przeds1awia algorytm w postaci kilku s}'rnboli gra
ficznych. Podaje szczegółowowszystkie opelacje ar}tmetyczne, logiczne
przes}4ania, sterujące i pomocnicze wraz z kolejnością ich wykonFvania
Jest on podsta\t'ą do napisania programu, znacznie ułatwiającą póŹniei
szy zapis w określonym języku programowania. schemat blokowy składŹ
się z wielu e]ementów, wśród których podstawo'iv}łn jest blok (tab' 1.1)'
opls
Bloki graniczne- początek algorytmu' konlec algorwmu
- mają lGzta|t owalu' z bloku sTARl w.ychodzi vko jedno po_
lączenie' a nie wchodzido nlego żdne' W każd\,Tn s.hemacie
blokowvm musi być doldadnie jeden blok sTARt Blok sroP nie
ma polączenia WYchodącego' (ońcŻy algorytrn. Każdy sche_
mat blokowv musi mieĆ co najmniei ieden blok sIoP
pomiędŻY blokami - okreś|a kolejnośĆ Wyko'
F'olącz€ni€
nywanych dzia|ań lub kierunek przeplYwu danych (ele_
ment ten inaczej zwany jest ścieżkąsterującą).
I
Blok kolekcYlnY - lączY kilka rÓżnYch drÓg algorltmu'
Blok op€raaYjnY- operacja lub grupa operacji' w KÓryctl
wyniku ule9a zmianie wartoŚĆ zmiennej lwańościzmien_
nYch). W tym przyKadzie operac]ą Wvkonywaną jest
nadanie zmiennej x wańoŚci 10' Bloki operacvJne mają
ksztalt prostokąta- Do bloku operacYjnego wchodzjjedno
polaczenie i Wychodzi z niego rÓwnież jedno polączenie
Blokl
welścląwY]ś.laodpowiadają
za wykonanie ope_
racji wprowadŻania a Wvprowadzania danych' WynikÓw
oraŻ komunikatÓw. 5ą w ksztalcje ńwnoleglobokÓw
Do bloku Wejścialub WyjściaWchodzi jedno polączenie
iWychodziz niego rÓwnież jedno polącŻenie-
L3. Specy,likacla problemu
a
q0Mmiczneq0
Blok decyzyjny - okreŚla wybÓr jednej z dwÓch moŹli
WVch drÓg dzialania. lvla ksztait rombll lLrb sŻeŚciokąta'
WychodŻą Ż niego dwa polączenia: jedno podpisane TAK'
gdv Warunek badany wewnątrŻ jest spelniony, drugie
- NlE, gdy warunek niejest spelniony (w 1. bloku pytamy,
czY WatośĆzmi€nnej x Wynosi 100, W drugim bloku py_
tamY o pruwdziwoŚĆ WarunkÓW dla zmiennych:xoraz y)'
WybÓr ksńaltu bloku zależy od dlugoŚcizapisu warunku'
k1ory chcemv umlesclc Wewnąt7 bloku {7auwa7 7e Wa_
runek 7lo7ony latwlej 7apisaĆ w drugim 7 blołÓW)'
Ia!' 1.1. Podstawowe elementv schemŹtu
w dułch proje|tach
z
b
okoweqo
stosuje się również inne bloki, któych celem jest
reguly zwiększenie prz€jż}stości rysunłu' łączenie kalteĘ
komentary. My
będzicmy korŻ}stać z podstawowych elementów schematu blokowego.
Aby Żapisać algolytm w wybran}m języku programowania' trzeba
znaó Ieguly lego języka. w Ę'rn miejscu podajemy tylko krótki prą,kład
zapisu w jgzykach Pascal j c++ algor!.tmu w}prowadzającego na ekra.
wańośćbczwzględną liczby rzęczywistej (tab. ]-2)'
ir
vriteln (t)
łritern ( 1*');
(a>=0) then
e1se
Zapis algorytmu
if (P=o) Ćout << x
else cout << -1rx;
Tab' 1'2' Fragmentv prcgramów wyprowadzających na ekran
ną]iczbv Żaplsane W dwÓch jezvkach programowania: Pascal
ńońitom wartość b€Ższględ-
ic++
MesZ już' co tojest algorytm'jakie wymogipowinien spełniać i jak go
cąrnnika, aby zadanie, które chcev roz_
pomocą
wiązaóŻa
algolytmu, bylo przedstawionew pełni precyzyjnie. Jeślibowiem ZamieŹasz napisać program, w którym zastosujesz utworzony
pźez sicbie algorytm, to musisz Wędzięć, jakiego typu są dane wejściowe, \ł}niki' czyli dane tq'jściaitp' wszystkie te informacie powinny zostać
zapisaó. Brakujejeszcze.iednęgo
Umies/c/one
$ \pec}tikacji problcmu łlgoĘlmicznego'
Najczęśc;ej specyfikacja składa się z opisu danych wejśoiowych wraz
wszystkjmi warunkami' jakie mają one spełniać, olaz danych wyjściovych (w}ł1ików) z uwzględnieniem warunków' jakie maj4 spełniać i ich
zę
związku z dan}łni węjścio'tłymi'Pokażmy to na przykładzie'
't'l
L
Alqor)4my
specyfikacja probl€mu algorytmiczn€go
Problem a|gor'tmiczny: obliczalie potęgi liczby natualn€j
o
\ły-
kładniku naturalĄłn
Dane wejściow€:
4 eN - podstawa potęgi' ó eN wy_
kładnik potęgi
Dane wyjściowe:
l' eN - waltośćlzb
Dane w algorytmie są najczęściej przedstawiane za pomocą liter ]ub
dluższych nazw' klóre naĄuam} Zmiennymi.
Tvpv zrn ennycir :
Slale
w
a
gorttmie
filtf
Jeśliuż}'wamy w algorytmie zmiennej, musimy dokladnie określić,
jakiego rodzaju waftości może ona przechowFvać - mówimy' że oheślamy tak zwany typ zmiennej' Mogą to być liczby calkowite, liczby rzeczywiste' litely, znaki klawiaturowe. Różne t}py będziemy omawiać W kolej ych rczdziałach tego podręcŻnika.
w czasie działania algo$,'tmu można swobodnie zmieniać waltość
prz}pisaną zmiennej w zakrcsie jej typu.
Zmienna pomocr cza jest zmienną wplowadzoną do zapisu algory'tmu
w celu umożliwieniajego realizacji. Znienne pomooicze słuŻąw algołtmie
do pamiętania danych prz€jściołych, czyli danych potrzebnych do działania
algory'tmu' al€ niebędących dal}łni wejściow}łniani w]nikami Na plzykład
w algołtmie obticzająqm średniąar}'tmetyczną wielu liczb potŻebujemy
dwóch zmiemych pomocniczych - jednej do zapamiętywania ilościpodanych li<zb, drugiej zaśdo zapamięłwania sumy podanych liczb'
Prócz zmiennych w algor}tmie możEmy u4vać staly€h. Mogą to być
wańości podane wpost, na pr4,klad liczba 35' albo waltości rcprezentowane
pżez naŻuy - podobnie jał zmiennę' wartośćstalej w algołtmie nie może
ulec anianie, na Pzy]dad: u4" amy staĘ ?r mającejwal1ość 3,14 i ocłwjście
za]eł narn aby L] $ańo\. nię Zo.lala pąpddkov o ,,mieniona'
BezpoŚrednio po speqfikacji nalą umieścićzapis aĘor}tlnu - wYbór
metody zapisu nalęzy do ciebie' My preferujemy zapis za pomocą schema_
tu blokowego, jako najbardziej cz}telny dla odbiolcy. Jeśli więc do powyż_
szej speĆfikacji dodasz zapis algorytmu sporządzony w postaci na przyklad
schematu blokowego, to dokumentacja slu]żąca rozwiązaniu prcblemu by'
łaby niemal pelna. Nalezy bowiem jeszcze przepiowadzić ocenę poprawności algorytmu, o cłm będzie mowa w dalszej części tego rozdzialu.
Przykład
Zapiszmy specyfikację problemu i schęmat blokowy algory'tmu slużą_
cego do oblicŻania śIedniej arJłmętycznej dwóch [czb podanych na
wejściui wypisania wyniku na ekranie.
1.4 opis stosowanych operalorÓW
ZacŻnijmy od sporządzenia specyfikacii plob]cmu'
spec)'fikacia probl€nu algorJtmiĆznego
Problem algorytmiczny:
obliczanie średniej arJłmęB'cznej d, óch
Liczb żcczyństych i v]pisanie \\rynil'u na
ekranic monitora
Dane wejściorłe:
a,b
ęR
DaneĘ'jściowe:
J7 e
R
śrcdnialiczb.', ó
Teraz zapiszmy algorytm w postaci schematu blokowego (ryc. 1.1):
START
t
Wczvtai
a,
bl
sr=(a+bl/2
srop
lw.1'1' schemat blokowv
a
gorvtmu obliczającego średniądwóch liczb
schemat b1okowy jesl bardŻo prosty, dlatego latwo
daje poprawne
zauwałć, źe po_
wyniki dla wszystkich danych wejściovych zgodnych ze
speq'fikacją ploblemu.
Jeśli anienne lub stale
popraw e połączymy opelatońmi zgodlrie z rę-
gdami matematycm}łni, to otrzlmamy wyraŻenie. Zmienne i stałe występujące w \'lyraŻęniu na-ą^\,amy
operandami' Na przykład: d +
'l
ó jcs1
w]Ta
żeniem s]dadająłm się z bzech operandów i dwóch opelatońw' Liczba 4
jest operalrden stałym' .J' ó to operandy zmienne. opefatory występujące
w t}łn rv)łaŻcniu lo opęraloĄ ary1melc7j'e. PlUpLlnuj<m) ci /Jpo,,nJni( sic
już teraz z zapisem oper^torów, gdyź ponyłki w ich stosowaniu są przycąną
M1'lu bĘdów pope]nianych'Ż\ilaszśza pfięz początk7]iących programistów.
w tabeli 1'3 zestawiliśmy opelatory arytmebrczne $ystępuj4ce w jgzy
kach Pascali c++' ZłykIe w algoryłmach przedslawianych za pomocą
schematu blokowego będziemy si9 poslugiwać opelatorami zgodnymi
z notacją Pascala jest to tmdycyjny sposób zapis}'wania algorytmów.
Podaliśny !cź operatory zgodne z językiem C++' ponieważ będzjemy
l(h
uł$dc pr4l,/api-ie Jlgol1tmou
w
jczvku programouania'
13
a/c++
dzielenie
dŻielenie calkowite' czyli zaokrąglające wynik dziel€nia
by calkowitej, np. 7/5 = 1
do licz
resła z dzielenla liczb calkowitYch
lab. 1'3. operatory arytmety.Żn€
obowiąŻujące W jęzvkach Pascali Vc++
Kolejna gfupa operatorów to op€ratorf felacji, czyli opelatory bada
jące relacje pomiędzy wyrżeniami (tab' 1'4).
a/a++
roŻnv czyli nieprawda' że róWny
Tab' 1'4'
opeEtory re|acji oboMązujące
W
jęŻykach Pascalic/c++
opentory relacji służądo twolzenia wyfaż€ń logicznych. wyrażeni
logiczne chalakteryzują się tym, że możemy im przypisać wartoś
logiczną ,,pmwda'' lub ,,fałsz''. Na pŹykład stwierdzamy: a < 4 lul
ó > = Ć + 1, albo badamy warunek prawdziwości relacji' < ). wówcza|
dla zadanych wartości zmiennych możemy w sposób jednoznaczny od
powiedzieć: taL lub nie, co odpowiada wa ościomlogicznym: prawd.
lub fałsz'
Zapis w notacjj Pascala: ,,a = b" zinterprctujemy jako pytanie: Cą
wartościargumentów d i ó Śą sobie ńwne? ocz}wiście,róMieź tu odpo'
wiedź jesl jednoznaczna: albo d iest równe ó, albo /' niejest równe b'
operatol przypisa a (podstawi€nia) opisuje operację nadaniŹ
zmiennej umieszczonej po Iewej stronie operatola wartości wyrażenia
występującego po prawej stronie tego operatofa-jest to ństnkcja pży.
pisania. Do oznaczania tej instlukcji przyjmiemy umownie oznaczeni€
operatom zgodnie ze składniąj9Żyka Pascal, czyli znak ńwności poprze_
dzony dwnkropkiem. w składni C+ + ten sam opelatol jest Ieprczento_
wany przez znak równości tab' r'5).
]
'5' lnstukcja Warunkowa
-
algorytmy roŻgalęŻ one
a/a++
rab' l.5. operator przypisańia wJęzvkach pascali c/c++
Jeślina pŹykład jest zmicnną plzeznaczoną do przecho\ł}r'ania
liczb calkowjtych' to' opeTację J := 7 zinterpletujemy jako nadanie
zmlcnnc] 'r wallosci '. Po pla\^ej nronie operalola prłpisania może
być umieszczone również wTrażenie algebraiczne. w takim wypadku
najpierw będzie obliczone to \łyra]żcnie' a następnie wartośćwyrażenia
zostanie prypisana zmiennej wTstępującęj po lewej strcnie operatola.
Na przyklad zapis' |= + 5 działa w nast9pujący sposób: najpierwjest
'
pobierana wartośćzmiennej
J' potem liczona wartośćwyrazenia' + 5
i na końcu wartośćta zostaje przypisana zmiennej x' Jeśliwięc przed
instrukcji zmiennaj miała wartość 2, to po jej wykonaniu
"]konaniem
ma wartość7.
Po lewej stronle operatora przypisania można umieścićtylko
zmienną. Nie może tam byĆ stalej ani
'Jwrażenia.
Kolejną
wźnągfupą operatorów,
za pomocą których budujcmy z1o-
żone Wyrażenia logicznc' są operatory logiczn€
(tab. 1.6):
c/c++
koniunkcja (iloczyn zdań)
alternałWa (suma zdań)
n€gacja (zapr2eczenie zdania)
Tab. 1.6'
operatory logiczne stosowane w jęzvkach Pascal i c/c+ + onz Żapis matematvcz_
Dla przykładu, jęśIi.v,ysą współrzędn}łni punktu P w kartezjńskim
układzie wspólŹędnych, to zapis (x>0
and (y>0 ) oznacza' żę punkt
P(ł')) naleł do I ćwiartti ukladu' Jest to koniunkcja dwóch wyrażeń lo_
gicznych prosq,ch.
)
Do tęj pory mówiliśmy o algol}tmach' w których sposób wykonania
kolejnych instiukcji nie zaleźal od otrrym}'wanych wyników ani danych
wejściowych. Poznasz teraz instfukcję, któm poŻWala uzaleźnić dalsz4
drogę post9powania w algorytmie od otrzymanego wyniku. Jest to in_
slrukcja warunkowa' będąca',rozgalęŹnikiem" w algorytmic.
15
]'5' lnstrukciawarunkowa algolytmy mzgalęzione
j
1'2:
schemat bjoko&Y tego algorytmu może wyglądać tak ak na rycinie
l,x
jest liczbą dodatnią"
:'X nie jest liczbą
dodatnią"
jeŚt dodatnia'
Rw' 1.2' schem.t blokowv algoĄĄmu sprawdzającego' cŻy liaba
alzauważ. że w schemacie pojawił się blok decyzyjny' Przy realizacji
warunku
prawdziwości
gorytmu wybór ścieźkiTAK lub NIE zalelł od
umieszczonego w tym bloku
Warunek musi być tak określonY aby o€ena
ścibyla iednoznaczna.
prawdziwo_
'€go
Mod}fikacja algory,'tmu pozwoli nam otr4mać odpowiedź nie tylko
iównieź infor_
na pytanie, czy liczba jest dodatnja czy nie, ale uzyskamy
(ryc'
1'3):
pobrana
jeśli
taka została
mację o *artoś"i zero] ej,
/ jest
l,x
wvPisz:
liczbą dodatnią"
/
,,x
RW' 1'3' sch€nat
wypisz,
jest liczbą ujemną"
blokolw dgorwmu badającego znak podanej liczbv
Ą7
1.
Aloorytny
Mamy tu już do czynienia z pełną wersją algolytmu okeślającego
mak pobranej liczby, ponieważ przewidziany został prz'padek, że liczba
je\l 7erem' Zwloc uwagę. że koleinosc po(leimowanych deqzji lub
oLIeślenię badan)ch sarunkow można zmienic. Na pr4klad: iuz
w pierłrzym bloku pyamy o lo. c,,y liczba jeql ,,erem. i Iączymy z blo_
Uem wyjsciowym \ł}T}rowad7aiąc},rn napis: ..liczba j est zerem" w v,,ypad_
ku pra\łdŻiwości\^arunku' w kolejnym bloku decy4jn}m p}łamy. c7y
iesl większa od 7era - tu w Zależno.ici od odpo\łiedzi lączyrrryją z bloka_
mi wyikia odpowiednio \L}prowadlajac}łni napisy: '.ticzba jest dodat_
nia ...liczbajesr ujemna .
spróbu| Zapi\ac rozwiąanie lego Żadania za pomocą listy kjoków'
Vożęsz wykorry\lać do lego drzewo poslętr}owania zamieszczone na ry_
cinie
l.4r
cŻvx-o
TAK
{E
wypisz: .ticzna(esrzerem' )r-'n
IAK.Ż'Ż \e
,,,
wyplsŻ: ''liczba jest
dodatnia'
wvpisz:
Rvc' 1'4' Drzewo posręoowania ilust uja.e sch€matczvnnolo
]
J
]
|
j
l
|
|
I
I
|
I
l
I
I
I
uiemna' I
Żnaku |iczw I
',liczoa ie\st
przv badaniu
:,*::
l
spróbujmy tera,/ /apisac a]golym. ktdrego /adaniem jesl w1pisanie
\łszystkich liczb dwtrc}.fTowych' Lj\la lrokdw dla lak \formu|owanego
I
1i1T,li,Ylouo"
0l'
"^"*iu""'
Zakońc1'
\ię
trzeba nikogo przekonyuac. że taki Zapi\jest zby dlugi i w 7wiąl_
ku / Ęm maio ułeczny. zwlas,,c,,a gd)byśm} najego podslawie chcleLi
napisać program reatiŻując} lo zadanie (pomyśl.jak wyg]ądalbj ren za_
pis. gd}byśmy chcieli w}pisaĆ na przyk]ad
\ł(ł5lkie ticzby liedmiocyLo_
we). Korry\tając Ż numeracji krokóu algorytmu. mozna zapir zdecyclo_
\ł anie sklócic:
l.
1a
ffi"':";]'o'*o'""n"t'o
I
I
l
|
I
|
|
|
l
l
1. Al!ory,tmy
sformulujmy pioblem w sposób następujący:
PrŻyklad
Daną wejściowąniech będuie dowolna liczba rzeczywista. Na Ę'jśc
chcemy otrzymać informację, czy liczba ta jest dodatnia czy nie.
Zapiszmy algorytm rozwiąznjący to zadanie za pomocą listy kroków
1. Wczytaj r.
2. Jeśli.ł> 0, to w}pisz: ,ł jest liczbą dodatnią" i zatończ.
3. Jeśli < 0' to wypisz: nie jest liczbą dodatnią'' i zakończ'
'ł
'
Możęmy ten zapis zredukować do dwóch kroków, pizy czym obie li
sł kroków
będą poprawne:
1' wcz}taj.ł'
2. Jeślix > 0, to w}pisz: ,'f jest licŻbą dodatnią"' w przeciwTym.iłn'adkl
w}Tis,,: .ł nie iesl liclbą dodatnią" i ,,akonc,/.
wykonanie instnkqi jęst zarem uzależnione od tego, czy zajdzie ba
dany warunek (tu warunekI > 0). Pamiętasz z matematyki' że zapfze
czeniem walunku > 0 jest wannek' ś0.
'
zauważ, że pierwszy lodzaj instrukcji wafunkowej jest realizacją dru
giego zapisu w wypadku, gdy instrukcja B jest instrukcją pustą, czyli ta
Lą. Llóra nię w}konuje żadnej konlrelnej czynności.
warunęk w instlukcji waruŃowej może być warunkiem prcst'm (ial
w powyższ}m przykładzie) lub warunłiem zlożonym' będącym koniunk
cją lub alternaĘvą kilku innych warunków.
Przykład
Napiszmy schemat blokowy algorl'lmu podejmowania declzji, cry po
brana Liczba jest dodatnia.
16

Podobne dokumenty