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