Bozena Wozna-Szcz´ e˙ sniak´ bwozna@gmail · CZASOWA) i obszar pamieci˛ (ZŁOZONO˙ S´ C...

74
Podstawy Informatyki Bo˙ zena Wo´ zna-Szcze´ sniak [email protected] Jan Dlugosz University, Poland Wyklad 6 Bo˙ zena Wo´ zna-Szcze´ sniak (AJD) Podstawy Informatyki Wyklad 6 1 / 59

Transcript of Bozena Wozna-Szcz´ e˙ sniak´ bwozna@gmail · CZASOWA) i obszar pamieci˛ (ZŁOZONO˙ S´ C...

Podstawy Informatyki

Bozena [email protected]

Jan Długosz University, Poland

Wykład 6

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 1 / 59

Algorytmika

Najstarsza dziedzina informatyki, która zajmuje sie badaniemalgorytmów, ich własnosciami, projektowaniem i analiza.

(Dawid Harel: ”Rzecz o istocie informatyki – algorytmika”.)

W informatyce algorytmika jest nieodłacznie zwiazana z algorytmamiprzetwarzania struktur danych.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 2 / 59

Algorytmika

Najstarsza dziedzina informatyki, która zajmuje sie badaniemalgorytmów, ich własnosciami, projektowaniem i analiza.

(Dawid Harel: ”Rzecz o istocie informatyki – algorytmika”.)

W informatyce algorytmika jest nieodłacznie zwiazana z algorytmamiprzetwarzania struktur danych.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 2 / 59

Potoczne rozumienie pojecia “algorytm”

Potocznie algorytm jest rozumiany jako pewien przepis nawykonanie jakiegos zestawu czynnosci, prowadzacych doosiagniecia oczekiwanego i z góry okreslonego celu.

Mówi sie równiez, ze algorytm jest pewna scisle okreslonaprocedura obliczeniowa, która dla zestawu własciwych danychwejsciowych “produkuje” zadane dane wyjsciowe.

Przykłady algorytmów: przepisy kulinarne, intrukcje montazu,procedury prowadzenia badan naukowych, czy tez procedurawymiany koła w samochodzie, itp.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 3 / 59

Potoczne rozumienie pojecia “algorytm”

Potocznie algorytm jest rozumiany jako pewien przepis nawykonanie jakiegos zestawu czynnosci, prowadzacych doosiagniecia oczekiwanego i z góry okreslonego celu.

Mówi sie równiez, ze algorytm jest pewna scisle okreslonaprocedura obliczeniowa, która dla zestawu własciwych danychwejsciowych “produkuje” zadane dane wyjsciowe.

Przykłady algorytmów: przepisy kulinarne, intrukcje montazu,procedury prowadzenia badan naukowych, czy tez procedurawymiany koła w samochodzie, itp.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 3 / 59

Potoczne rozumienie pojecia “algorytm”

Potocznie algorytm jest rozumiany jako pewien przepis nawykonanie jakiegos zestawu czynnosci, prowadzacych doosiagniecia oczekiwanego i z góry okreslonego celu.

Mówi sie równiez, ze algorytm jest pewna scisle okreslonaprocedura obliczeniowa, która dla zestawu własciwych danychwejsciowych “produkuje” zadane dane wyjsciowe.

Przykłady algorytmów: przepisy kulinarne, intrukcje montazu,procedury prowadzenia badan naukowych, czy tez procedurawymiany koła w samochodzie, itp.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 3 / 59

Algorytm

Słowo ALGORYTM wywodzi sie od nazwiska perskiego astronoma imatematyka Abu Ja’far Muhammad ibn Musa al-Chorezmi(spotykana tez pisownia al-Khawarizmy) pisanego po łacinie jakoAlgorismus.

Zył on na przełomie VIII i IX wieku naszej ery na terenachobecnego Uzbekistanu i przypisuje sie mu podanie regułdodawania, odejmowania, mnozenia i dzielenia liczb dziesietnych.

Dzisiejsze, uogólnione znaczenie słowa algorytm zastosowano wzasadzie dopiero w 20-tym stuleciu, kiedy to algorytm zaczał bycrozumiany jako:

zbiór reguł postepowania, umozliwiajacych rozwiazanieokreslonego zadania w skonczonej liczbie kroków i w skonczonym

czasie

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 4 / 59

Parzenie kawy “po polsku”:

1 zagotowac wode,

2 wsypac zmielona kawe do filizanki,

3 zalac kawe wrzaca woda,

4 poczekac 5 min.

5 osłodzic do smaku.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 5 / 59

Algorytm - definicje formalne

Encyklopedia PWN: Algorytm to “(...) przepis na rozwiazanieokreslonego zadania podany jako zbiór kolejnych polecen; jegowykonawca moze byc człowiek lub urzadzenie automatyczne (np.komputer); (...)zapisany w jakims jezyku programowania -program”.

Formalna definicja algorytmu została podana w 1936 roku przezAlonzo Churcha i Alana Turinga. W szczególnoisci:

Church zastosował rachunek λ.Turing zastosował własna strukture zwana dzis “Maszyna Turinga”.Wykazano potem, ze obydwie definicje sa równowazne.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 6 / 59

Algorytm - definicje formalne

Encyklopedia PWN: Algorytm to “(...) przepis na rozwiazanieokreslonego zadania podany jako zbiór kolejnych polecen; jegowykonawca moze byc człowiek lub urzadzenie automatyczne (np.komputer); (...)zapisany w jakims jezyku programowania -program”.Formalna definicja algorytmu została podana w 1936 roku przezAlonzo Churcha i Alana Turinga. W szczególnoisci:

Church zastosował rachunek λ.Turing zastosował własna strukture zwana dzis “Maszyna Turinga”.Wykazano potem, ze obydwie definicje sa równowazne.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 6 / 59

Uzytecznosc algorytmu

Algorytm jako pewna okreslona procedura obliczeniowa posiadacechy, które okreslaja jej uzytecznosc:

poprawnosczłozonosc obliczeniowa:

Złozonosc obliczeniowa algorytmu to ilosc zasobów systemuliczacego (np. komputera) potrzebna do jego wykonania.Podstawowymi zasobami sa: czas procesora (ZŁOZONOSCCZASOWA) i obszar pamieci (ZŁOZONOSC PAMIECIOWA).

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 7 / 59

Podstawowe cechy algorytmu

1. Posiada okreslony stan poczatkowy, czyli operacje od którejzaczyna sie jego realizacja.

2. Powinien zwracac prawidłowe wyniki dla kazdego zestawupoprawnych danych (warunek poprawnosci).

2. Ilosc operacji potrzebnych do zakonczenia pracy musi bycskonczona (warunek dyskretnosci).

3. Musi dac sie zastosowac do rozwiazywania całej klasy zagadnien,a nie jednego konkretnego zadania (warunek uniwersalnosci).

4. Interpretacja poszczególnych etapów wykonania musi bycjednoznaczna (warunek jednoznacznosci).

5. Cel musi byc osiagniety w akceptowalnym czasie (warunekefektywnosci).

6. Musi posiadac wyrózniony koniec.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 8 / 59

Etapy rozwiazywania problemów

Sformułowanie zadania.

Specyfikacja zadania, czyli okreslenie danych wejsciowych orazcelu (wyniku).

Poszukiwanie metody rozwiazania, czyli algorytmu.

Przedstawienie algorytmu w postaci:opisu słownego,listy kroków,schematu blokowego,pseudokodu,jezyka programowania,

Analiza poprawnosci rozwiazania.

Testowanie rozwiazanie dla róznych danych.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 9 / 59

Metody opisu algorytmów

Ograniczony podzbiór jezyka naturalnego (opis słowny, listakroków).

Schemat blokowy – uniwersalna i dajaca odpowiedni stopienogólnosci forma graficznego zapisu algorytmu. Cechuje go przytym duza przejrzystosc i czytelnosc. Schemat ten odzwierciedladobrze strukture algorytmu w tym takie elementy jak rozgałezienia(punkty decyzyjne).

Pseudokod – Umowny, zwykle nie istniejacy i bardzo uproszczonyjezyk programowania, w którym opisany jest algorytm działaniaprogramu. Definiuje podstawowe petle, warunki i typy danych.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 10 / 59

Metody opisu algorytmów

Ograniczony podzbiór jezyka naturalnego (opis słowny, listakroków).

Schemat blokowy – uniwersalna i dajaca odpowiedni stopienogólnosci forma graficznego zapisu algorytmu. Cechuje go przytym duza przejrzystosc i czytelnosc. Schemat ten odzwierciedladobrze strukture algorytmu w tym takie elementy jak rozgałezienia(punkty decyzyjne).

Pseudokod – Umowny, zwykle nie istniejacy i bardzo uproszczonyjezyk programowania, w którym opisany jest algorytm działaniaprogramu. Definiuje podstawowe petle, warunki i typy danych.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 10 / 59

Metody opisu algorytmów

Ograniczony podzbiór jezyka naturalnego (opis słowny, listakroków).

Schemat blokowy – uniwersalna i dajaca odpowiedni stopienogólnosci forma graficznego zapisu algorytmu. Cechuje go przytym duza przejrzystosc i czytelnosc. Schemat ten odzwierciedladobrze strukture algorytmu w tym takie elementy jak rozgałezienia(punkty decyzyjne).

Pseudokod – Umowny, zwykle nie istniejacy i bardzo uproszczonyjezyk programowania, w którym opisany jest algorytm działaniaprogramu. Definiuje podstawowe petle, warunki i typy danych.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 10 / 59

Klasyfikacja algorytmów

Rozwazac bedziemy nastepujace rodzaje algorytmów:algorytmy sekwencyjnealgorytmy z rozgałezieniem (algorytm wykonuje rózne obliczenia wzaleznsoci od tego jaki warunek jest spełniony)algorytmy iteracyjne (algorytm wykonuje obliczenia w petli dopókinie zostanie spełniony okreslony warunek)algorytmy rekurencyjne (algorytm w kolejnych krokach wywołujesam siebie dla nowych wartosci parametrów wykonania)

Oczywiscie istnieje jeszcze wiele innych rodzajów algorytmów:Algorytmy zachłanne, współbiezne, równoległe, genetyczne, zpowrotami, probabilistyczne itd...

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 11 / 59

Algorytm sekwencyjny (liniowy)

DefinicjaMa postac ciagu kroków, które musza zostac bezwarunkowo wykonane jedenpo drugim. Algorytm taki nie zawiera zadnych warunków ani rozgałezien.Zaczyna sie od podania zestawu danych, nastepnie wykonywane sa kolejnekroki wykonawcze, az dochodzimy do wyniku.

Przykład:Dodanie lub mnozenie dwóch liczb:

1 Sformułowanie zadania: oblicz sume dwóch liczb naturalnych a i b.Wynik oznacz przez S.

2 Dane wejsciowe: dwie liczby a i b.

3 Cel obliczen: obliczenie sumy S = a + b.

4 Dodatkowe ograniczenia: sprawdzenie warunku dla danych wejsciowychnp. czy a, b sa naturalne. Jednak sprawdzenie takiego warunkusprawia, ze algorytm przestaje byc liniowy.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 12 / 59

Lista kroków - przykład 1

Problem:Przedstaw w postaci listy kroków algorytm obliczania sredniejarytmetycznej trzech dowolnych liczb rzeczywistych.

Dane: dowolne nieujemne liczby rzeczywiste a, b, cWynik: wartosc sredniej arytmetycznej liczb a, b, c równa Srednia

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosci trzech liczb: a, b, c.Krok 2: Oblicz wartosc wyrazenia: Suma := a + b + c.Krok 3: Oblicz wartosc wyrazenia: Srednia := Suma/3.Krok 4: Wyprowadz wynik: Srednia.Krok 5: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 13 / 59

Lista kroków - przykład 1

Problem:Przedstaw w postaci listy kroków algorytm obliczania sredniejarytmetycznej trzech dowolnych liczb rzeczywistych.

Dane: dowolne nieujemne liczby rzeczywiste a, b, cWynik: wartosc sredniej arytmetycznej liczb a, b, c równa Srednia

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosci trzech liczb: a, b, c.Krok 2: Oblicz wartosc wyrazenia: Suma := a + b + c.Krok 3: Oblicz wartosc wyrazenia: Srednia := Suma/3.Krok 4: Wyprowadz wynik: Srednia.Krok 5: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 13 / 59

Lista kroków - przykład 1

Problem:Przedstaw w postaci listy kroków algorytm obliczania sredniejarytmetycznej trzech dowolnych liczb rzeczywistych.

Dane: dowolne nieujemne liczby rzeczywiste a, b, cWynik: wartosc sredniej arytmetycznej liczb a, b, c równa Srednia

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosci trzech liczb: a, b, c.Krok 2: Oblicz wartosc wyrazenia: Suma := a + b + c.Krok 3: Oblicz wartosc wyrazenia: Srednia := Suma/3.Krok 4: Wyprowadz wynik: Srednia.Krok 5: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 13 / 59

Pseudokod - przykład 1

Problem:Przedstaw w postaci pseudokodu algorytm obliczania sredniejarytmetycznej trzech dowolnych liczb rzeczywistych.

Dane: dowolne nieujemne liczby rzeczywiste a, b, cWynik: wartosc sredniej arytmetycznej liczb a, b, c równa Srednia

beginread(a,b,c);Suma:= a + b + c;Srednia:= Suma/3;write(Srednia).

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 14 / 59

Elementy schematu blokowego

1

Start

End

2

WejscieWyjscie

1 Komponenty okreslajacemoment startu i konca.

2 Zapis danych (lub ich odczyt)na nosniki informacji.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 15 / 59

Elementy schematu blokowego

1

Instrukcja

2

Warunekyesno

1 Blok instrukcji, które maja bycwykonane.

2 Blok warunkowy; słuzy doreprezentacji instrukcjiwarunkowej (np. if-else) i petli(np. for, while).

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 16 / 59

Schemat blokowy - suma dwóch dowolnych liczbrzeczywistych

Start

Podaj: a,b

Suma:=a+b;

Pisz: Suma Koniec

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 17 / 59

Schemat blokowy - kwadrat danej liczby

Start

Podaj: a

Kwadrat:=a*a;

Pisz:Kwadrat

Koniec

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 18 / 59

Schemat blokowy - objetosc prostopadłoscianu,którego podstawa ma wymiar axba a wysokosc c

Start

Podaj: a,b,c

V:=a*b*c;

Pisz: V Koniec

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 19 / 59

Schemat blokowy - srednia arytmetyczna trzechdowolnych liczb rzeczywistych

Start

Podaj: a,b,c

Suma:=a+b+c;

Srednia := Suma/3; Pisz:Srednia

Koniec

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 20 / 59

Algorytmy z rozgałezieniem

Instrukcje warunkowe (rozgałezienia warunkowe) majanastepujaca postac:Jezeli warunek M to, wykonaj czynnosc NLubJezeli warunek M, to wykonaj czynnosc N, w przeciwnym raziewykonaj czynnosc P.

W jezykach programowanie (C/C++/Java/C#/PHP) to instrukcje:if, if - else, switch-case.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 21 / 59

Lista kroków - przykład 2

Problem:Przedstaw w postaci listy kroków algorytm obliczania wartoscibezwzglednej dowolnej liczby rzeczywistej.

Dane: dowolna nieujemna liczba rzeczywista a.Wynik: wartosc bezwzgledna z liczby a równa w

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosc liczby a.Krok 2: Jesli a >= 0 to w := a w przeciwnym wypadku w := −a.Krok 3: Wyprowadz wynik: w .Krok 4: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 22 / 59

Lista kroków - przykład 2

Problem:Przedstaw w postaci listy kroków algorytm obliczania wartoscibezwzglednej dowolnej liczby rzeczywistej.

Dane: dowolna nieujemna liczba rzeczywista a.Wynik: wartosc bezwzgledna z liczby a równa w

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosc liczby a.Krok 2: Jesli a >= 0 to w := a w przeciwnym wypadku w := −a.Krok 3: Wyprowadz wynik: w .Krok 4: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 22 / 59

Lista kroków - przykład 2

Problem:Przedstaw w postaci listy kroków algorytm obliczania wartoscibezwzglednej dowolnej liczby rzeczywistej.

Dane: dowolna nieujemna liczba rzeczywista a.Wynik: wartosc bezwzgledna z liczby a równa w

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosc liczby a.Krok 2: Jesli a >= 0 to w := a w przeciwnym wypadku w := −a.Krok 3: Wyprowadz wynik: w .Krok 4: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 22 / 59

Pseudokod - przykład 2

Problem:Przedstaw w postaci pseudokodu algorytm obliczania wartoscibezwzglednej dowolnej liczby rzeczywistej.

Dane: dowolna nieujemna liczba rzeczywista a.Wynik: wartosc bezwzgledna liczby a równa w

beginread(a);if (a>=0) then w:= a;else w:=-a;write(w);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 23 / 59

Schemat blokowy - wartosc bezwgledna danej liczby

Start

Podaj: a

a >= 0 Pisz: aPisz: -a

KoniecKoniec

yesno

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 24 / 59

Lista kroków - przykład 3

Problem:

Oblicz wartosc funkcji charakterystycznej f (x) =

−1 if x < 00 if x = 01 if x > 0

Dane: Dowolna liczba rzeczywista x .Wynik: warnosc funkcji charakterystycznej f (x)

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosc liczby x .Krok 2: Jesli x < 0, to f (x) = −1.Krok 3: Jesli x = 0, to f (x) = 0.Krok 4: Jesli x > 0, to f (x) = 1.Krok 5: Wyprowadz wynik: f (x).Krok 4: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 25 / 59

Lista kroków - przykład 3

Problem:

Oblicz wartosc funkcji charakterystycznej f (x) =

−1 if x < 00 if x = 01 if x > 0

Dane: Dowolna liczba rzeczywista x .Wynik: warnosc funkcji charakterystycznej f (x)

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosc liczby x .Krok 2: Jesli x < 0, to f (x) = −1.Krok 3: Jesli x = 0, to f (x) = 0.Krok 4: Jesli x > 0, to f (x) = 1.Krok 5: Wyprowadz wynik: f (x).Krok 4: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 25 / 59

Lista kroków - przykład 3

Problem:

Oblicz wartosc funkcji charakterystycznej f (x) =

−1 if x < 00 if x = 01 if x > 0

Dane: Dowolna liczba rzeczywista x .Wynik: warnosc funkcji charakterystycznej f (x)

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosc liczby x .Krok 2: Jesli x < 0, to f (x) = −1.Krok 3: Jesli x = 0, to f (x) = 0.Krok 4: Jesli x > 0, to f (x) = 1.Krok 5: Wyprowadz wynik: f (x).Krok 4: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 25 / 59

Pseudokod - przykład 3

Problem:

Oblicz wartosc funkcji charakterystycznej f (x) =

−1 if x < 00 if x = 01 if x > 0

Dane: Dowolna liczba rzeczywista x .Wynik: warnosc funkcji charakterystycznej f (x)

beginwrite("Podaj liczbe rzeczywista");read(x);if (x < 0) then w:= -1;else if (x = 0) then w:= 0;

else if (x > 0) then w:= 1;write("f(x) = "); write(w);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 26 / 59

Schemat blokowy - przykład 3

Problem:

Oblicz wartosc funkcji charakterystycznej f (x) =

−1 if x < 00 if x = 01 if x > 0

Zadanie na cwiczenia !

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 27 / 59

Pseudokod - sprawdzanie parzystosci danej liczbycałkowitej

Dane: Dowolna liczba całkowita a.Wynik: Odpowiedz czy a jest parzysta, czy tez nie.

beginwrite("Podaj liczbe całkowita");read(a);if (a mod 2 = 0) then

write("Jest parzysta.");else

write("Nie jest parzysta.");end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 28 / 59

Schemat blokowy - sprawdzanie parzystosci danejliczby całkowitej

Start

Podaj: a

a mod 2 = 0Pisz:

parzystaPisz: nie-parzysta

KoniecKoniec

yesno

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 29 / 59

Reguły tworzenia schematu blokowego - sieci działan

1 Schemat blokowy składa sie z bloków połaczonychzorientowanymi liniami.

2 Bloki obrazuja ciag operacji.

3 W bloku wykonywane sa albo wszystkie instrukcje albo zadna.

4 Dalsze operacje nie zaleza od poprzednich wariantów, chyba zezaleznosci te zostały przekazane za pomoca danych.

5 Kolejnosc wykonania operacji jest scisle okreslona przezzorientowane linie łaczace poszczególne bloki.

6 Do kazdego bloku moze prowadzic co najwyzej jedna linia.

7 Linie moga sie łaczyc, a punkty takiego połaczenia okreslane sajako punkty zbiegu.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 30 / 59

Laboratorium Informatyki Eli

Laboratorium Informatyki ELI 2.0 jest oprogramowaniemedukacyjnym słuzacym do nauczania informatyki, a takzepodstaw automatyki i robotyki.ELI jest programem komputerowym umozliwiajacym budowaniedowolnych algorytmów poprzez wybór z palety odpowiednich“klocków” - piktogramów, symbolizujacych elementy irealizujacych podstawowe działania informatyczne.Producentem programu jest firma ELBOX.Po kliknieciu na link strony producenta:http://www.elboxedu.pl/component/option,com_produkt/Itemid,93/id,40/prod_id,39/ mozna zobaczycoferte firmy i zakupic pełna wersje ELI.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 31 / 59

Przykładowy ekran programu ELI

Po ułozeniu klocków definiujacychnasz algorytm, aby go uruchomicwybieramy polecenie Wykonanie -Uruchom, albo stosujemy skrótklawiszowy Ctrl+F9

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 32 / 59

Dostepne klocki podstawowe

Zródło:http://www.profesor.pl/publikacja,1542,Konspekty,

Konspekt-lekcji-Algorytmy-z-petla-kl-II-LO

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 33 / 59

Wersja demonstracyjna ELI 2.0

Wersja demonstracyjna programu ELIdostepna jest na stronie WSiP:http://www.wsipnet.pl/dane/pliki/kluby/8//eli-2-1.zip

Wersja demonstracyjna nie dajemozliwosci zapisu pliku i wydruku,funkcjonuje jednak na tyle dobrze, zemozna ja polecic uzytkownikom.WSiP jest wydawca podrecznika“Algorytmy ” Macieja Sysło, a wersjademonstracyjna oprogramowania ELI jestintegralna czescia podrecznika.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 34 / 59

Instrukcje iteracyjne (z powtórzeniami)

Spotykamy sie czesto z takim sytuacjami, w których musimywykonywac pewna czynnosc az do momentu, gdy odniesiemysukces, np.

zrób dziesiec pompek;bedziesz tak długo czytac wiersz, az nauczysz sie go na pamiec;dopóki bedziesz siedziec cicho, nie zapytam cie.

Z tego wynika, ze mozemy spotkac sie z dwoma sytuacjami: gdymusimy wykonac czynnosc badz zadana ilosc razy, badz domomentu spełnienia warunku. Zatem powtarzanie róznych działanma dwojaka postac:

liczba powtórzen jest z góry okreslona (przed rozpoczeciem cyklu).liczba powtórzen jest nieznana (zalezy od spełnienia pewnegowarunku).

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 35 / 59

Schemat blokowy - druk liczb z zakresu 1 . . . 9.

Start

i := 1;

i ≤ 9Pisz: i ;i := i+1;Koniec

yesno

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 36 / 59

Pseudokod - druk liczb z zakresu 1 . . . 9

beginwrite("Liczby z zakresu 1..9");i:= 1;while (i <= 9) dobeginwrite(i);i := i+1;

end;end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 37 / 59

Schemat blokowy - druk liczb z zakresu 1 . . . n.

Start

Podaj:n;

i := 1;

i ≤ nPisz: i ;i := i+1;Koniec

yesno

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 38 / 59

Pseudokod - druk liczb z zakresu 1 . . . n.

beginwrite("Liczby z zakresu 1..n");write("Podaj liczbe n = ");read (n);i:= 1;while (i <= n) dobeginwrite(i);i := i+1;

end;end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 39 / 59

Lista kroków - algorytm Euklidesa

Algorytm Euklidesa:Algorytm ten jest najstarszym algorytmem (ma ponad 2000 lat) iprzeznaczony jest do znajdowania najwiekszego wspólnego dzielnika(NWD) dla dwóch liczb naturalnych, tj. NWD(5,25) = 5, NWD(15,25) =5, NWD(22,24) = 2.

Dane: dowolne dwie liczby naturalne a i b.Wynik: NWD(a,b)

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosci dla liczb a i b.Krok 2: Oblicz c jako reszte z dzielenia a przez b.Krok 3: Zastap a przez b, zas b przez c.Krok 4: Jezeli b = 0, to szukane NWD(a,b) wynosi a, wprzeciwnym wypadku przejdz do 2.Krok 5: Wyprowadz wynik: NWD(a,b).Krok 4: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 40 / 59

Lista kroków - algorytm Euklidesa

Algorytm Euklidesa:Algorytm ten jest najstarszym algorytmem (ma ponad 2000 lat) iprzeznaczony jest do znajdowania najwiekszego wspólnego dzielnika(NWD) dla dwóch liczb naturalnych, tj. NWD(5,25) = 5, NWD(15,25) =5, NWD(22,24) = 2.

Dane: dowolne dwie liczby naturalne a i b.Wynik: NWD(a,b)

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosci dla liczb a i b.Krok 2: Oblicz c jako reszte z dzielenia a przez b.Krok 3: Zastap a przez b, zas b przez c.Krok 4: Jezeli b = 0, to szukane NWD(a,b) wynosi a, wprzeciwnym wypadku przejdz do 2.Krok 5: Wyprowadz wynik: NWD(a,b).Krok 4: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 40 / 59

Lista kroków - algorytm Euklidesa

Algorytm Euklidesa:Algorytm ten jest najstarszym algorytmem (ma ponad 2000 lat) iprzeznaczony jest do znajdowania najwiekszego wspólnego dzielnika(NWD) dla dwóch liczb naturalnych, tj. NWD(5,25) = 5, NWD(15,25) =5, NWD(22,24) = 2.

Dane: dowolne dwie liczby naturalne a i b.Wynik: NWD(a,b)

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosci dla liczb a i b.Krok 2: Oblicz c jako reszte z dzielenia a przez b.Krok 3: Zastap a przez b, zas b przez c.Krok 4: Jezeli b = 0, to szukane NWD(a,b) wynosi a, wprzeciwnym wypadku przejdz do 2.Krok 5: Wyprowadz wynik: NWD(a,b).Krok 4: Zakoncz algorytm.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 40 / 59

Lista kroków - algorytm Euklidesa

Dane: dowolne dwie liczby naturalne a i b.Wynik: NWD(a,b)

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosci dla liczb a i b.Krok 2: Oblicz c jako reszte z dzielenia a przez b.Krok 3: Zastap a przez b, zas b przez c.Krok 4: Jezeli b = 0, to szukane NWD(a,b) wynosi a, wprzeciwnym wypadku przejdz do 2.Krok 5: Wyprowadz wynik: NWD(a,b).Krok 4: Zakoncz algorytm.

Przykład obliczenia NWD(1000, 32):1 a = 1000, b = 32, c = 1000 mod 32 = 82 a = 32, b = 8, c= 32 mod 8 = 03 a = 8, b = 0 =⇒ NWD(1000, 32) = 8

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 41 / 59

Lista kroków - algorytm Euklidesa

Dane: dowolne dwie liczby naturalne a i b.Wynik: NWD(a,b)

Krok 0: Rozpocznij algorytm.Krok 1: Wprowadz wartosci dla liczb a i b.Krok 2: Oblicz c jako reszte z dzielenia a przez b.Krok 3: Zastap a przez b, zas b przez c.Krok 4: Jezeli b = 0, to szukane NWD(a,b) wynosi a, wprzeciwnym wypadku przejdz do 2.Krok 5: Wyprowadz wynik: NWD(a,b).Krok 4: Zakoncz algorytm.

Przykład obliczenia NWD(1000, 32):1 a = 1000, b = 32, c = 1000 mod 32 = 82 a = 32, b = 8, c= 32 mod 8 = 03 a = 8, b = 0 =⇒ NWD(1000, 32) = 8

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 41 / 59

Schemat blokowy - algorytm Euklidesa

Start

Podaj:a, b

b != 0c := a mod b;a := b;b := c;

Pisz:a

Koniec

yesno

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 42 / 59

Pseudokod - algorytm Euklidesa

Dane: dowolne dwie liczby naturalne a i b.Wynik: NWD(a,b)

beginwrite("Podaj dwie liczby naturalne");read(a,b);while (b != 0) dobegin{reszta z dzielenia a przez b }c := a mod b;a := b;b := c

endNWD := awrite(NWD);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 43 / 59

Pseudokod - algorytm Euklidesa

Dane: dowolne dwie liczby naturalne a i b.Wynik: NWD(a,b)

beginwrite("Podaj dwie liczby naturalne");read(a,b);while (a != b) dobeginif (a < b) b:=b-a;else a:=a-b;

endNWD := awrite(NWD);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 44 / 59

Liczby trójkatne

Nazwa “liczby trójkatne” pochodzi stad, ze kazda taka liczba onumerze n jest liczba np. kół jednakowej wielkosci, z którychmozna ułozyc trójkat równoboczny o boku zbudowanym z n kół.Liczby trójkatne to liczby postaci:

tn =n ∗ (n + 1)

2= 1 + 2 + 3 + ...+ n

gdzie n jest liczba naturalna.Przykłady liczb trójkatnych: t1 = 1, t2 = 3, t3 = 6, t4 = 10.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 45 / 59

Schemat blokowy - obliczanie sumy suma =∑n

i=1 i .

Start

Podaj: n

i := 1 ;suma := 0;

i ≤ nsuma := suma +i;i := i+1;

Pisz:suma

Koniec

yesno

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 46 / 59

Pseudokod - obliczanie sumy suma =∑n

i=0 i .

beginwrite("Podaj liczbe n = ");read (n);i:= 1;suma := 0;while (i <= n) dobeginsuma := suma + i;i := i+1;

end;end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 47 / 59

Schemat blokowy - funkcja silnia n! = 1 · 2 · . . . · n

Start

Podaj: n

i := 1 ;silnia := 1;

i ≤ nsilnia := silnia * i ;i := i+1;

Pisz:silnia

Koniec

yesno

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 48 / 59

Pseudokod - funkcja silnia n! = 1 · 2 · . . . · n.

beginwrite("Podaj liczbe n = ");read (n);i:= 1;silnia := 1;while (i <= n) dobeginsilnia := silnia * i;i := i+1;

end;write(silnia);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 49 / 59

Suma n liczb wprowadzonych z klawiatury

Start

Podaj: n

i := 1 ;suma := 0;

i ≤ n

Pisz: “Podaj liczbe:”;Podaj: a;suma := suma + a;i := i+1;

Pisz:suma

Koniec

yesno

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 50 / 59

Suma n liczb wprowadzonych z klawiatury

beginwrite("Podaj liczbe n = ");read (n);i:= 1;suma := 0;while (i <= n) dobeginwrite("Podaj liczbe: ");read (a);suma := suma + a;i := i+1;

end;write(suma);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 51 / 59

Suma ciagu liczb wprowadzonego z klawiatury izakonczonego zerem

Start

Podaj: a

suma := 0;

a != 0suma := suma + a;Pisz: “Podaj liczbe:”;Podaj: a;

Pisz:suma

Koniec

yesno

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 52 / 59

Suma ciagu liczb wprowadzonego z klawiatury izakonczonego zerem

beginwrite("Podaj liczbe: ");read (a);suma := 0;while (a != 0) dobeginsuma := suma + a;write("Podaj liczbe: ");read (a);

end;write(suma);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 53 / 59

Suma ciagu liczb parzystych wprowadzonego zklawiatury i zakonczonego zerem

beginwrite("Podaj liczbe: ");read (a);suma := 0;while (a != 0) dobeginif (a mod 2 = 0) then suma := suma + a;write("Podaj liczbe: ");read (a);

end;write(suma);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 54 / 59

Suma ciagu liczb podzielnych przez 5,wprowadzonego z klawiatury i zakonczonego zerem

beginwrite("Podaj liczbe: ");read (a);suma := 0;while (a != 0) dobeginif (a mod 5 = 0) then suma := suma + a;write("Podaj liczbe: ");read (a);

end;write(suma);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 55 / 59

Iloczyn ciagu liczb nieujemnych, wprowadzonego zklawiatury i zakonczonego zerem

beginwrite("Podaj liczbe: ");read (a);iloczyn := 1;while (a != 0) dobeginif (a > 0) then iloczyn := iloczyn * a;write("Podaj liczbe: ");read (a);

end;write(iloczyn);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 56 / 59

Iloczyn ciagu liczb nieujemnych, parzystych,wprowadzonego z klawiatury i zakonczonego zerem

beginwrite("Podaj liczbe: ");read (a);iloczyn := 1;while (a != 0) dobeginif ((a > 0) and (a mod 2 = 0)) then

iloczyn := iloczyn * a;write("Podaj liczbe: ");read (a);

end;write(iloczyn);

end.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 57 / 59

Wybór algorytmu

Reguła jest, ze nalezy implementowac najprostsze algorytmy, którewykonuja okreslone zadanie. Prosty algorytm to:

łatwiejsza implementacja,czytelniejszy kod,łatwosc testowaniałatwosc pisania dokumentacji,...

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 58 / 59

Zadania

Skonstruuj schemat blokowy do nastepujacego zadania:1 Wprowadz dwie liczby a i b. Skonstruuj algorytm porównania tych

liczb i wyprowadzania na wyjsciu wiekszej z nich. W przypadkuliczb równych wyprowadz napis “liczby równe”.

2 Sprawdzic czy dana liczba dzieli sie przez 3.3 Sprawdzic czy suma dwóch liczb podanych przez uzytkownika jest

parzysta.4 Zamienic dana liczne w systemie o podstawie n, na liczbe w

systemie o podstawie m;5 Dane sa liczby dwa pojemniki A i B. W pojemniku A znajduje sie

ser, a w pojemniku B mak. Zaprojektuj algorytm, który przeniesieser do pojemnika B, a mak do pojemnika A. Pamietaj jednak otym, ze nigdy nie moze byc tak, ze ser i mak znajda sie w tymsamym pojemniku.

Bozena Wozna-Szczesniak (AJD) Podstawy Informatyki Wykład 6 59 / 59