Podstawy Informatyki

Podobne dokumenty
Wstęp do Informatyki

Wstęp do Informatyki

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Algorytm. a programowanie -

Definicje. Algorytm to:

Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

1 Wprowadzenie do algorytmiki

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

2.8. Algorytmy, schematy, programy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Podstawy Programowania Algorytmy i programowanie

Wstęp do informatyki

Wprowadzenie do algorytmiki

Algorytm. Krótka historia algorytmów

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

KOŁO MATEMATYCZNE LUB INFORMATYCZNE - klasa III gimnazjum, I LO

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

WHILE (wyrażenie) instrukcja;

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

WHILE (wyrażenie) instrukcja;

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Algorytmy. Programowanie Proceduralne 1

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu Tablice (wstęp) Rzut okiem na języki programowania

Zadanie 1. Potęgi (14 pkt)

Programowanie w Baltie klasa VII

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

Sposoby przedstawiania algorytmów

Podstawy i języki programowania

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

do instrukcja while (wyrażenie);

Podstawy Programowania C++

Algorytmy. Programowanie Proceduralne 1

Algorytmy, reprezentacja algorytmów.

Algorytm. Algorytmy Marek Pudełko

Zapisywanie algorytmów w języku programowania

Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

Efektywność algorytmów

Technologie informacyjne - wykład 12 -

Podstawy Informatyki dla Nauczyciela

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Definicja algorytmu brzmi:

Luty 2001 Algorytmy (1) 2000/2001 1

KARTA PRACY UCZNIA. Klasa II

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

Proste programy w C++ zadania

ALGORYTMY I PROGRAMY

Algorytmy i struktury danych. wykład 2

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

Wykład 1 Dr Bożena Woźna-Szcześniak bwozna@gmail.com

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Temat 20. Techniki algorytmiczne

Algorytmy i schematy blokowe

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Algorytmy. dr Dariusz Banaś (UJK) Seminarium w ramach projektu Fascynujący Świat Nauki dla uczniów gimnazjów. wersja 0.9. Start.

Język C część 2. Podejmowanie decyzji w programie. if else. switch

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Metodyki i techniki programowania

Algorytmika i pseudoprogramowanie

Gimnazjum w Tęgoborzy - Algorytmika Strona 1 z 22 mgr Zofia Czech

Algorytm. Krótka historia algorytmów

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Algorytmy i struktury danych. Wykład 4

Programowanie i techniki algorytmiczne

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Luty 2001 Algorytmy (7) 2000/2001

Podstawy Informatyki. Inżynieria Ciepła, I rok. Iteracja warunkowadopóki(while) Blok instrukcji. Pascal: begin instrukcja1; C: { end;

Technologia informacyjna Algorytm Janusz Uriasz

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

napisać konstrukcję instrukcji decyzyjnej If wraz z jej rozwinięciem Else i ElseIf; podać definicję algorytmu z rozgałęzieniami;

KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.)

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Metodyki i techniki programowania

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Zapis algorytmów: schematy blokowe i pseudokod 1

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy Informatyki. Metalurgia, I rok niestacjonarne. Wykład 2 Algorytmy

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

INFORMATYKA. Algorytmy.

Język ludzki kod maszynowy

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Podstawy Informatyki. Algorytmy i ich poprawność

Transkrypt:

Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 1 / 59

Algorytmika Najstarsza dziedzina informatyki, która zajmuje się badaniem algorytmów, ich własnościami, projektowaniem i analiza. (Dawid Harel: Rzecz o istocie informatyki algorytmika.) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 2 / 59

Algorytmika Najstarsza dziedzina informatyki, która zajmuje się badaniem algorytmów, ich własnościami, projektowaniem i analiza. (Dawid Harel: Rzecz o istocie informatyki algorytmika.) W informatyce algorytmika jest nieodłacznie zwiazana z algorytmami przetwarzania struktur danych. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 2 / 59

Potoczne rozumienie pojęcia algorytm Potocznie algorytm jest rozumiany jako pewien przepis na wykonanie jakiegoś zestawu czynności, prowadzacych do osiagnięcia oczekiwanego i z góry określonego celu. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 3 / 59

Potoczne rozumienie pojęcia algorytm Potocznie algorytm jest rozumiany jako pewien przepis na wykonanie jakiegoś zestawu czynności, prowadzacych do osiagnięcia oczekiwanego i z góry określonego celu. Mówi się również, że algorytm jest pewna ściśle określona procedura obliczeniowa, która dla zestawu właściwych danych wejściowych produkuje żadane dane wyjściowe. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 3 / 59

Potoczne rozumienie pojęcia algorytm Potocznie algorytm jest rozumiany jako pewien przepis na wykonanie jakiegoś zestawu czynności, prowadzacych do osiagnięcia oczekiwanego i z góry określonego celu. Mówi się również, że algorytm jest pewna ściśle określona procedura obliczeniowa, która dla zestawu właściwych danych wejściowych produkuje żadane dane wyjściowe. Przykłady algorytmów: przepisy kulinarne, intrukcje montażu, procedury prowadzenia badań naukowych, czy też procedura wymiany koła w samochodzie, itp. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 3 / 59

Algorytm Słowo ALGORYTM wywodzi się od nazwiska perskiego astronoma i matematyka Abu Ja far Muhammad ibn Musa al-chorezmi (spotykana też pisownia al-khawarizmy) pisanego po łacinie jako Algorismus. Żył on na przełomie VIII i IX wieku naszej ery na terenach obecnego Uzbekistanu i przypisuje się mu podanie reguł dodawania, odejmowania, mnożenia i dzielenia liczb dziesiętnych. Dzisiejsze, uogólnione znaczenie słowa algorytm zastosowano w zasadzie dopiero w 20-tym stuleciu, kiedy to algorytm zaczał być rozumiany jako: zbiór reguł postępowania, umożliwiajacych rozwiazanie określonego zadania w skończonej liczbie kroków i w skończonym czasie Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 4 / 59

Parzenie kawy po polsku : 1 zagotować wodę, 2 wsypać zmielona kawę do filiżanki, 3 zalać kawę wrzac a woda, 4 poczekać 5 min. 5 osłodzić do smaku. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 5 / 59

Algorytm - definicje formalne Encyklopedia PWN: Algorytm to (...) przepis na rozwiazanie określonego zadania podany jako zbiór kolejnych poleceń; jego wykonawca może być człowiek lub urzadzenie automatyczne (np. komputer); (...)zapisany w jakimś języku programowania - program. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 6 / 59

Algorytm - definicje formalne Encyklopedia PWN: Algorytm to (...) przepis na rozwiazanie określonego zadania podany jako zbiór kolejnych poleceń; jego wykonawca może być człowiek lub urzadzenie automatyczne (np. komputer); (...)zapisany w jakimś języku programowania - program. Formalna definicja algorytmu została podana w 1936 roku przez Alonzo Churcha i Alana Turinga. W szczególnoiści: Church zastosował rachunek λ. Turing zastosował własna strukturę zwana dziś Maszyna Turinga. Wykazano potem, że obydwie definicje sa równoważne. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 6 / 59

Użyteczność algorytmu Algorytm jako pewna określona procedura obliczeniowa posiada cechy, które określaja jej użyteczność: poprawność złożoność obliczeniowa: Złożoność obliczeniowa algorytmu to ilość zasobów systemu liczacego (np. komputera) potrzebna do jego wykonania. Podstawowymi zasobami sa: czas procesora (ZŁOŻONOŚĆ CZASOWA) i obszar pamięci (ZŁOŻONOŚĆ PAMIECIOWA). Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 7 / 59

Podstawowe cechy algorytmu 1. Posiada określony stan poczatkowy, czyli operację od której zaczyna się jego realizacja. 2. Powinien zwracać prawidłowe wyniki dla każdego zestawu poprawnych danych (warunek poprawności). 2. Ilość operacji potrzebnych do zakończenia pracy musi być skończona (warunek dyskretności). 3. Musi dać się zastosować do rozwiazywania całej klasy zagadnień, a nie jednego konkretnego zadania (warunek uniwersalności). 4. Interpretacja poszczególnych etapów wykonania musi być jednoznaczna (warunek jednoznaczności). 5. Cel musi być osiagnięty w akceptowalnym czasie (warunek efektywności). 6. Musi posiadać wyróżniony koniec. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 8 / 59

Etapy rozwiazywania problemów Sformułowanie zadania. Specyfikacja zadania, czyli określenie danych wejściowych oraz celu (wyniku). Poszukiwanie metody rozwiazania, czyli algorytmu. Przedstawienie algorytmu w postaci: opisu słownego, listy kroków, schematu blokowego, pseudokodu, języka programowania, Analiza poprawności rozwiazania. Testowanie rozwiazanie dla różnych danych. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 9 / 59

Metody opisu algorytmów Ograniczony podzbiór języka naturalnego (opis słowny, lista kroków). Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 10 / 59

Metody opisu algorytmów Ograniczony podzbiór języka naturalnego (opis słowny, lista kroków). Schemat blokowy uniwersalna i dajaca odpowiedni stopień ogólności forma graficznego zapisu algorytmu. Cechuje go przy tym duża przejrzystość i czytelność. Schemat ten odzwierciedla dobrze strukturę algorytmu w tym takie elementy jak rozgałęzienia (punkty decyzyjne). Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 10 / 59

Metody opisu algorytmów Ograniczony podzbiór języka naturalnego (opis słowny, lista kroków). Schemat blokowy uniwersalna i dajaca odpowiedni stopień ogólności forma graficznego zapisu algorytmu. Cechuje go przy tym duża przejrzystość i czytelność. Schemat ten odzwierciedla dobrze strukturę algorytmu w tym takie elementy jak rozgałęzienia (punkty decyzyjne). Pseudokod Umowny, zwykle nie istniejacy i bardzo uproszczony język programowania, w którym opisany jest algorytm działania programu. Definiuje podstawowe pętle, warunki i typy danych. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 10 / 59

Klasyfikacja algorytmów Rozważać będziemy następujace rodzaje algorytmów: algorytmy sekwencyjne algorytmy z rozgałęzieniem (algorytm wykonuje różne obliczenia w zależnśoci od tego jaki warunek jest spełniony) algorytmy iteracyjne (algorytm wykonuje obliczenia w pętli dopóki nie zostanie spełniony określony warunek) algorytmy rekurencyjne (algorytm w kolejnych krokach wywołuje sam siebie dla nowych wartości parametrów wykonania) Oczywiście istnieje jeszcze wiele innych rodzajów algorytmów: Algorytmy zachłanne, współbieżne, równoległe, genetyczne, z powrotami, probabilistyczne itd... Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 11 / 59

Algorytm sekwencyjny (liniowy) Definicja Ma postać ciagu kroków, które musza zostać bezwarunkowo wykonane jeden po drugim. Algorytm taki nie zawiera żadnych warunków ani rozgałęzień. Zaczyna się od podania zestawu danych, następnie wykonywane sa kolejne kroki wykonawcze, aż dochodzimy do wyniku. Przykład: Dodanie lub mnożenie dwóch liczb: 1 Sformułowanie zadania: oblicz sumę dwóch liczb naturalnych a i b. Wynik oznacz przez S. 2 Dane wejściowe: dwie liczby a i b. 3 Cel obliczeń: obliczenie sumy S = a + b. 4 Dodatkowe ograniczenia: sprawdzenie warunku dla danych wejściowych np. czy a, b sa naturalne. Jednak sprawdzenie takiego warunku sprawia, że algorytm przestaje być liniowy. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 12 / 59

Lista kroków - przykład 1 Problem: Przedstaw w postaci listy kroków algorytm obliczania średniej arytmetycznej trzech dowolnych liczb rzeczywistych. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 13 / 59

Lista kroków - przykład 1 Problem: Przedstaw w postaci listy kroków algorytm obliczania średniej arytmetycznej trzech dowolnych liczb rzeczywistych. Dane: dowolne nieujemne liczby rzeczywiste a, b, c Wynik: wartość średniej arytmetycznej liczb a, b, c równa Srednia Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 13 / 59

Lista kroków - przykład 1 Problem: Przedstaw w postaci listy kroków algorytm obliczania średniej arytmetycznej trzech dowolnych liczb rzeczywistych. Dane: dowolne nieujemne liczby rzeczywiste a, b, c Wynik: wartość średniej arytmetycznej liczb a, b, c równa Srednia Krok 0: Rozpocznij algorytm. Krok 1: Wprowadź wartości trzech liczb: a, b, c. Krok 2: Oblicz wartość wyrażenia: Suma := a + b + c. Krok 3: Oblicz wartość wyrażenia: Srednia := Suma/3. Krok 4: Wyprowadź wynik: Srednia. Krok 5: Zakończ algorytm. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 13 / 59

Pseudokod - przykład 1 Problem: Przedstaw w postaci pseudokodu algorytm obliczania średniej arytmetycznej trzech dowolnych liczb rzeczywistych. Dane: dowolne nieujemne liczby rzeczywiste a, b, c Wynik: wartość średniej arytmetycznej liczb a, b, c równa Srednia begin read(a,b,c); Suma:= a + b + c; Srednia:= Suma/3; write(srednia). end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 14 / 59

Elementy schematu blokowego Start 1 2 End 1 Komponenty określajace moment startu i końca. 2 Zapis danych (lub ich odczyt) na nośniki informacji. Wyjście Wejście Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 15 / 59

Elementy schematu blokowego Instrukcja 1 2 yes Warunek no 1 Blok instrukcji, które maja być wykonane. 2 Blok warunkowy; służy do reprezentacji instrukcji warunkowej (np. if-else) i pętli (np. for, while). Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 16 / 59

Schemat blokowy - suma dwóch dowolnych liczb rzeczywistych Start Podaj: a,b Suma:=a+b; Pisz: Suma Koniec Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 17 / 59

Schemat blokowy - kwadrat danej liczby Start Podaj: a Kwadrat:=a*a; Pisz: Kwadrat Koniec Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 18 / 59

Schemat blokowy - objętość prostopadłościanu, którego podstawa ma wymiar axba a wysokość c Start Podaj: a,b,c V:=a*b*c; Pisz: V Koniec Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 19 / 59

Schemat blokowy - średnia arytmetyczna trzech dowolnych liczb rzeczywistych Start Podaj: a,b,c Suma:=a+b+c; Koniec Srednia := Suma/3; Pisz: Srednia Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 20 / 59

Algorytmy z rozgałęzieniem Instrukcje warunkowe (rozgałęzienia warunkowe) maja następujac a postać: Jeżeli warunek M to, wykonaj czynność N Lub Jeżeli warunek M, to wykonaj czynność N, w przeciwnym razie wykonaj czynność P. W językach programowanie (C/C++/Java/C#/PHP) to instrukcje: if, if - else, switch-case. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 21 / 59

Lista kroków - przykład 2 Problem: Przedstaw w postaci listy kroków algorytm obliczania wartości bezwzględnej dowolnej liczby rzeczywistej. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 22 / 59

Lista kroków - przykład 2 Problem: Przedstaw w postaci listy kroków algorytm obliczania wartości bezwzględnej dowolnej liczby rzeczywistej. Dane: dowolna nieujemna liczba rzeczywista a. Wynik: wartość bezwzględna z liczby a równa w Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 22 / 59

Lista kroków - przykład 2 Problem: Przedstaw w postaci listy kroków algorytm obliczania wartości bezwzględnej dowolnej liczby rzeczywistej. Dane: dowolna nieujemna liczba rzeczywista a. Wynik: wartość bezwzględna z liczby a równa w Krok 0: Rozpocznij algorytm. Krok 1: Wprowadź wartość liczby a. Krok 2: Jeśli a >= 0 to w := a w przeciwnym wypadku w := a. Krok 3: Wyprowadź wynik: w. Krok 4: Zakończ algorytm. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 22 / 59

Pseudokod - przykład 2 Problem: Przedstaw w postaci pseudokodu algorytm obliczania wartości bezwzględnej dowolnej liczby rzeczywistej. Dane: dowolna nieujemna liczba rzeczywista a. Wynik: wartość bezwzględna liczby a równa w begin read(a); if (a>=0) then w:= a; else w:=-a; write(w); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 23 / 59

Schemat blokowy - wartość bezwględna danej liczby Start Koniec Podaj: a Koniec Pisz: -a no a >= 0 yes Pisz: a Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 24 / 59

Lista kroków - przykład 3 Problem: 1 if x < 0 Oblicz wartość funkcji charakterystycznej f (x) = 0 if x = 0 1 if x > 0 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 25 / 59

Lista kroków - przykład 3 Problem: 1 if x < 0 Oblicz wartość funkcji charakterystycznej f (x) = 0 if x = 0 1 if x > 0 Dane: Dowolna liczba rzeczywista x. Wynik: warność funkcji charakterystycznej f (x) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 25 / 59

Lista kroków - przykład 3 Problem: 1 if x < 0 Oblicz wartość funkcji charakterystycznej f (x) = 0 if x = 0 1 if x > 0 Dane: Dowolna liczba rzeczywista x. Wynik: warność funkcji charakterystycznej f (x) Krok 0: Rozpocznij algorytm. Krok 1: Wprowadź wartość liczby x. Krok 2: Jeśli x < 0, to f (x) = 1. Krok 3: Jeśli x = 0, to f (x) = 0. Krok 4: Jeśli x > 0, to f (x) = 1. Krok 5: Wyprowadź wynik: f (x). Krok 4: Zakończ algorytm. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 25 / 59

Pseudokod - przykład 3 Problem: 1 if x < 0 Oblicz wartość funkcji charakterystycznej f (x) = 0 if x = 0 1 if x > 0 Dane: Dowolna liczba rzeczywista x. Wynik: warność funkcji charakterystycznej f (x) begin write("podaj liczbe rzeczywistą"); 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. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 26 / 59

Schemat blokowy - przykład 3 Problem: 1 if x < 0 Oblicz wartość funkcji charakterystycznej f (x) = 0 if x = 0 1 if x > 0 Zadanie na ćwiczenia! Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 27 / 59

Pseudokod - sprawdzanie parzystości danej liczby całkowitej Dane: Dowolna liczba całkowita a. Wynik: Odpowiedź czy a jest parzysta, czy też nie. begin write("podaj liczbe całkowitą"); read(a); if (a mod 2 = 0) then write("jest parzysta."); else write("nie jest parzysta."); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 28 / 59

Schemat blokowy - sprawdzanie parzystości danej liczby całkowitej Start Podaj: a Koniec Koniec Pisz: nieparzysta no a mod 2 = 0 yes Pisz: parzysta Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 29 / 59

Reguły tworzenia schematu blokowego - sieci działań 1 Schemat blokowy składa się z bloków połaczonych zorientowanymi liniami. 2 Bloki obrazuja ciag operacji. 3 W bloku wykonywane sa albo wszystkie instrukcje albo żadna. 4 Dalsze operacje nie zależa od poprzednich wariantów, chyba że zależności te zostały przekazane za pomoca danych. 5 Kolejność wykonania operacji jest ścisle określona przez zorientowane linie łacz ace poszczególne bloki. 6 Do każdego bloku może prowadzić co najwyżej jedna linia. 7 Linie moga się łaczyć, a punkty takiego połaczenia określane sa jako punkty zbiegu. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 30 / 59

Laboratorium Informatyki Eli Laboratorium Informatyki ELI 2.0 jest oprogramowaniem edukacyjnym służacym do nauczania informatyki, a także podstaw automatyki i robotyki. ELI jest programem komputerowym umożliwiajacym budowanie dowolnych algorytmów poprzez wybór z palety odpowiednich klocków - piktogramów, symbolizujacych elementy i realizujacych podstawowe działania informatyczne. Producentem programu jest firma ELBOX. Po kliknięciu na link strony producenta: http://www.elboxedu.pl/component/option,com_ produkt/itemid,93/id,40/prod_id,39/ można zobaczyć ofertę firmy i zakupić pełna wersję ELI. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 31 / 59

Przykładowy ekran programu ELI Po ułożeniu klocków definiujacych nasz algorytm, aby go uruchomić wybieramy polecenie Wykonanie - Uruchom, albo stosujemy skrót klawiszowy Ctrl+F9 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 32 / 59

Dostępne klocki podstawowe Źródło:http://www.profesor.pl/publikacja,1542,Konspekty, Konspekt-lekcji-Algorytmy-z-petla-kl-II-LO Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 33 / 59

Wersja demonstracyjna ELI 2.0 Wersja demonstracyjna programu ELI dostępna jest na stronie WSiP: http://www.wsipnet.pl/dane/ pliki/kluby/8//eli-2-1.zip Wersja demonstracyjna nie daje możliwości zapisu pliku i wydruku, funkcjonuje jednak na tyle dobrze, że można ja polecić użytkownikom. WSiP jest wydawca podręcznika Algorytmy Macieja Sysło, a wersja demonstracyjna oprogramowania ELI jest integralna częścia podręcznika. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 34 / 59

Instrukcje iteracyjne (z powtórzeniami) Spotykamy się często z takim sytuacjami, w których musimy wykonywać pewna czynność aż do momentu, gdy odniesiemy sukces, np. zrób dziesięć pompek; będziesz tak długo czytać wiersz, aż nauczysz się go na pamięć; dopóki będziesz siedzieć cicho, nie zapytam cię. Z tego wynika, że możemy spotkać się z dwoma sytuacjami: gdy musimy wykonać czynność badź zadana ilość razy, badź do momentu spełnienia warunku. Zatem powtarzanie różnych działań ma dwojaka postać: liczba powtórzeń jest z góry określona (przed rozpoczęciem cyklu). liczba powtórzeń jest nieznana (zależy od spełnienia pewnego warunku). Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 35 / 59

Schemat blokowy - druk liczb z zakresu 1... 9. Start i := 1; Koniec no i 9 yes Pisz: i; i := i +1; Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 36 / 59

Pseudokod - druk liczb z zakresu 1... 9 begin write("liczby z zakresu 1..9"); i:= 1; while (i <= 9) do begin write(i); i := i+1; end; end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 37 / 59

Schemat blokowy - druk liczb z zakresu 1... n. Start Podaj: n; i := 1; Koniec no i n yes Pisz: i; i := i +1; Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 38 / 59

Pseudokod - druk liczb z zakresu 1... n. begin write("liczby z zakresu 1..n"); write("podaj liczbe n = "); read (n); i:= 1; while (i <= n) do begin write(i); i := i+1; end; end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 39 / 59

Lista kroków - algorytm Euklidesa Algorytm Euklidesa: Algorytm ten jest najstarszym algorytmem (ma ponad 2000 lat) i przeznaczony jest do znajdowania największego wspólnego dzielnika (NWD) dla dwóch liczb naturalnych, tj. NWD(5,25) = 5, NWD(15,25) = 5, NWD(22,24) = 2. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 40 / 59

Lista kroków - algorytm Euklidesa Algorytm Euklidesa: Algorytm ten jest najstarszym algorytmem (ma ponad 2000 lat) i przeznaczony jest do znajdowania największego 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) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 40 / 59

Lista kroków - algorytm Euklidesa Algorytm Euklidesa: Algorytm ten jest najstarszym algorytmem (ma ponad 2000 lat) i przeznaczony jest do znajdowania największego 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: Wprowadź wartości dla liczb a i b. Krok 2: Oblicz c jako resztę z dzielenia a przez b. Krok 3: Zastap a przez b, zaś b przez c. Krok 4: Jeżeli b = 0, to szukane NWD(a, b) wynosi a, w przeciwnym wypadku przejdź do 2. Krok 5: Wyprowadź wynik: NWD(a, b). Krok 4: Zakończ algorytm. Bożena Woźna-Szcześniak (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: Wprowadź wartości dla liczb a i b. Krok 2: Oblicz c jako resztę z dzielenia a przez b. Krok 3: Zastap a przez b, zaś b przez c. Krok 4: Jeżeli b = 0, to szukane NWD(a, b) wynosi a, w przeciwnym wypadku przejdź do 2. Krok 5: Wyprowadź wynik: NWD(a, b). Krok 4: Zakończ algorytm. Bożena Woźna-Szcześniak (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: Wprowadź wartości dla liczb a i b. Krok 2: Oblicz c jako resztę z dzielenia a przez b. Krok 3: Zastap a przez b, zaś b przez c. Krok 4: Jeżeli b = 0, to szukane NWD(a, b) wynosi a, w przeciwnym wypadku przejdź do 2. Krok 5: Wyprowadź wynik: NWD(a, b). Krok 4: Zakończ algorytm. Przykład obliczenia NWD(1000, 32): 1 a = 1000, b = 32, c = 1000 mod 32 = 8 2 a = 32, b = 8, c= 32 mod 8 = 0 3 a = 8, b = 0 = NWD(1000, 32) = 8 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 41 / 59

Schemat blokowy - algorytm Euklidesa Start Koniec Podaj: a, b Pisz: a no b!= 0 yes c := a mod b; a := b; b := c; Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 42 / 59

Pseudokod - algorytm Euklidesa Dane: dowolne dwie liczby naturalne a i b. Wynik: NWD(a, b) begin write("podaj dwie liczby naturalne"); read(a,b); while (b!= 0) do begin {reszta z dzielenia a przez b } c := a mod b; a := b; b := c end NWD := a write(nwd); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 43 / 59

Pseudokod - algorytm Euklidesa Dane: dowolne dwie liczby naturalne a i b. Wynik: NWD(a, b) begin write("podaj dwie liczby naturalne"); read(a,b); while (a!= b) do begin if (a < b) b:=b-a; else a:=a-b; end NWD := a write(nwd); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 44 / 59

Liczby trójkatne Nazwa liczby trójkatne pochodzi stad, że każda taka liczba o numerze n jest liczba np. kół jednakowej wielkości, z których można ułożyć trójkat równoboczny o boku zbudowanym z n kół. Liczby trójkatne to liczby postaci: t n = n (n + 1) 2 gdzie n jest liczba naturalna. = 1 + 2 + 3 +... + n Przykłady liczb trójkatnych: t 1 = 1, t 2 = 3, t 3 = 6, t 4 = 10. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 45 / 59

Schemat blokowy - obliczanie sumy suma = n i=1 i. Start Podaj: n Koniec i := 1 ; suma := 0; Pisz: suma no i n yes suma := suma +i; i := i+1; Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 46 / 59

Pseudokod - obliczanie sumy suma = n i=0 i. begin write("podaj liczbe n = "); read (n); i:= 1; suma := 0; while (i <= n) do begin suma := suma + i; i := i+1; end; end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 47 / 59

Schemat blokowy - funkcja silnia n! = 1 2... n Start Podaj: n Koniec i := 1 ; silnia := 1; Pisz: silnia no i n yes silnia := silnia * i ; i := i+1; Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 48 / 59

Pseudokod - funkcja silnia n! = 1 2... n. begin write("podaj liczbe n = "); read (n); i:= 1; silnia := 1; while (i <= n) do begin silnia := silnia * i; i := i+1; end; write(silnia); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 49 / 59

Suma n liczb wprowadzonych z klawiatury Start Podaj: n Koniec i := 1 ; suma := 0; Pisz: suma no i n yes Pisz: Podaj liczbe: ; Podaj: a; suma := suma + a; i := i+1; Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 50 / 59

Suma n liczb wprowadzonych z klawiatury begin write("podaj liczbe n = "); read (n); i:= 1; suma := 0; while (i <= n) do begin write("podaj liczbe: "); read (a); suma := suma + a; i := i+1; end; write(suma); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 51 / 59

Suma ciagu liczb wprowadzonego z klawiatury i zakończonego zerem Start Podaj: a Koniec suma := 0; Pisz: suma no a!= 0 yes suma := suma + a; Pisz: Podaj liczbe: ; Podaj: a; Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 52 / 59

Suma ciagu liczb wprowadzonego z klawiatury i zakończonego zerem begin write("podaj liczbe: "); read (a); suma := 0; while (a!= 0) do begin suma := suma + a; write("podaj liczbe: "); read (a); end; write(suma); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 53 / 59

Suma ciagu liczb parzystych wprowadzonego z klawiatury i zakończonego zerem begin write("podaj liczbe: "); read (a); suma := 0; while (a!= 0) do begin if (a mod 2 = 0) then suma := suma + a; write("podaj liczbe: "); read (a); end; write(suma); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 54 / 59

Suma ciagu liczb podzielnych przez 5, wprowadzonego z klawiatury i zakończonego zerem begin write("podaj liczbe: "); read (a); suma := 0; while (a!= 0) do begin if (a mod 5 = 0) then suma := suma + a; write("podaj liczbe: "); read (a); end; write(suma); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 55 / 59

Iloczyn ciagu liczb nieujemnych, wprowadzonego z klawiatury i zakończonego zerem begin write("podaj liczbe: "); read (a); iloczyn := 1; while (a!= 0) do begin if (a > 0) then iloczyn := iloczyn * a; write("podaj liczbe: "); read (a); end; write(iloczyn); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 56 / 59

Iloczyn ciagu liczb nieujemnych, parzystych, wprowadzonego z klawiatury i zakończonego zerem begin write("podaj liczbe: "); read (a); iloczyn := 1; while (a!= 0) do begin if ((a > 0) and (a mod 2 = 0)) then iloczyn := iloczyn * a; write("podaj liczbe: "); read (a); end; write(iloczyn); end. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 57 / 59

Wybór algorytmu Reguła jest, że należy implementować najprostsze algorytmy, które wykonuja określone zadanie. Prosty algorytm to: łatwiejsza implementacja, czytelniejszy kod, łatwość testowania łatwość pisania dokumentacji,... Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 58 / 59

Zadania Skonstruuj schemat blokowy do następujacego zadania: 1 Wprowadź dwie liczby a i b. Skonstruuj algorytm porównania tych liczb i wyprowadzania na wyjściu większej z nich. W przypadku liczb równych wyprowadź napis liczby równe. 2 Sprawdzić czy dana liczba dzieli się przez 3. 3 Sprawdzić czy suma dwóch liczb podanych przez użytkownika jest parzysta. 4 Zamienić dana liczne w systemie o podstawie n, na liczbę w systemie o podstawie m; 5 Dane sa liczby dwa pojemniki A i B. W pojemniku A znajduje się ser, a w pojemniku B mak. Zaprojektuj algorytm, który przeniesie ser do pojemnika B, a mak do pojemnika A. Pamiętaj jednak o tym, ze nigdy nie może być tak, że ser i mak znajda się w tym samym pojemniku. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 6 59 / 59