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



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

1 Wprowadzenie do algorytmiki

Definicje. Algorytm to:

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

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

Wprowadzenie do algorytmiki

Język ludzki kod maszynowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Algorytm. a programowanie -

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Algorytm. Krótka historia algorytmów

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

Zapisywanie algorytmów w języku programowania

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

Programowanie komputerowe. Zajęcia 1

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

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

Podstawy Programowania Podstawowa składnia języka C++

Programowanie i techniki algorytmiczne

Technologia informacyjna Algorytm Janusz Uriasz

WHILE (wyrażenie) instrukcja;

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

Scenariusz lekcji. podać przykłady zalet użycia takiej instrukcji; opisać algorytm obliczania średniej n liczb;

WHILE (wyrażenie) instrukcja;

Podstawy Programowania

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

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

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

3. Instrukcje warunkowe

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Definicja algorytmu brzmi:

Programowanie - wykład 4

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Algorytm. Krótka historia algorytmów

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Metodyki i techniki programowania

Temat 20. Techniki algorytmiczne

ALGORYTMY I PROGRAMY

Poprawność semantyczna

Warunki logiczne instrukcja if

Algorytmy, reprezentacja algorytmów.

Z nowym bitem. Informatyka dla gimnazjum. Część II

Podstawy i języki programowania

Wymagania Uczestnik szkolenia musi mieć możliwość korzystania z Internetu. Kurs nie zakłada znajomości podstaw programowania.

Algorytmy i schematy blokowe

EGZAMIN MATURALNY 2011 INFORMATYKA

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

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

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

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

Podstawy Informatyki. Algorytmy i ich poprawność

do instrukcja while (wyrażenie);

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

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

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

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

Wykład z Technologii Informacyjnych. Piotr Mika

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Cw.12 JAVAScript w dokumentach HTML

Programowanie w języku Python. Grażyna Koba

Podstawy Programowania Algorytmy i programowanie

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

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

Wstęp do informatyki- wykład 7

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

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

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

WYMAGANIA EDUKACYJNE

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

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

Metodyki i techniki programowania

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

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

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

Zadanie 1. Potęgi (14 pkt)

SCENARIUSZ LEKCJI. TEMAT LEKCJI: Projektowanie rozwiązania prostych problemów w języku C++ obliczanie pola trójkąta

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Wymagania na poszczególne oceny szkolne dla klasy VI. (na podstawie Grażyny Koba, Teraz bajty. Informatyka dla szkoły podstawowej.

if (wyrażenie ) instrukcja

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy programowania w C++

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

EGZAMIN MATURALNY Z INFORMATYKI

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Algorytmy. Programowanie Proceduralne 1

Warsztaty dla nauczycieli

Warunki i sposoby realizacji podstawy programowej kształcenia ogólnego w klasie IV i VII szkoły podstawowej z informatyki.

Transkrypt:

Seminarium w ramach projektu Fascynujący Świat Nauki dla uczniów gimnazjów dr Dariusz Banaś (UJK) read a,b,c read r Tak a>b Nie max:=a max:=b pole:=3.14*r*r obwod:=2*3.14*r read a Nie a==0 Tak Tak c>max Nie write pole, obwod Nie Tak a>0 write 'liczba=0' max:=c write 'l. ujemna' write 'l. dodatnia' write max wersja 0.9

- cele zajęć Wyjaśnienie znaczenia algorytmów w programowaniu komputerów Omówienie i dyskusja kryteriów, które powinien spełniać algorytm Wyjaśnienie pojęć: dane wejściowe i wyjściowe, stała i zmienna, deklaracja stałej i zmiennej, operator przypisania, operatory arytmetyczne, relacji i logiczne Zapoznanie uczniów ze sposobami prezentacji algorytmów ze szczególnym uwzględnieniem schematu blokowego Zapoznanie uczniów z przykładami algorytmów liniowych, warunkowych i iteracyjnych Dyskusja znaczenia instrukcji warunkowej i iteracyjnej w rozwiązywaniu problemów algorytmicznych 2014-06-13 2

Chociaż uczniowie codziennie spotykają się z koniecznością rozwiązywania wielu problemów, np.: przy planowaniu czynności, w trakcie podróży komunikacją miejską, w trakcie rozwiązywania zadań z matematyki, fizyki w trakcie zakupów w czasie uruchomienia komputera po awarii to nauka podstaw algorytmiki wydaje im się nudna (rysowanie jakichś kółeczek, kwadracików, niegodne prawdziwego informatyka) i niepotrzebna (przecież program można napisać bez wcześniejszego opracowania algorytmu). 2014-06-13 3

Z drugiej strony często jednak narzekają na niską funkcjonalność, błędy, wolne działanie i podatność na ataki oprogramowania w telefonie komórkowym, tablecie czy komputerze nie zdając sobie sprawy, że przyczyną wszystkich tych problemów są nieprzemyślane, mało uniwersalne i słabo zoptymalizowane algorytmy. Sednem złożonych projektów informatycznych z reguły nie jest po prostu przepisanie programu do komputera ale opracowanie i optymalizacja algorytmów wykorzystanych w projekcie. Najbardziej znane przykłady projektów które odniosły sukces dzięki opracowaniu nowych, wydajnych algorytmów to wyszukiwarka Google i oprogramowanie Facebook-a. 2014-06-13 4

Dyskusja znaczenia wykorzystania algorytmów w życiu codziennym na przykładzie rozwiązania problemów z uruchomieniem komputera z systemem Windows 7 po nagłym wyłączeniu (awarii). Ustalamy czy przyczyną jest oprogramowanie czy sprzęt. Do tego celu doskonale nadają się systemy w wersji Live (CD/DVD, pendrive), nie wymagające instalowania na twardym dysku. Czy posiadamy taką płytę/pendrive? Jeśli nie to dzwonimy do kolegów czy któryś z nich taką posiada... Jeśli tak to wybieramy w BIOS z którego urządzenia chcemy uruchamiać system. Uruchamiamy komputer. 2014-06-13 5

Jeśli komputer uruchamia się prawidłowo to prawdopodobną przyczyną awarii są problemy z systemem Windows 7 lub innym zainstalowanym na naszym komputerze oprogramowaniem. Jeśli komputer nadal się nie uruchamia to problemem może być awaria sprzętu... Ostatecznie jeśli rozwiążemy problem możemy zapisać listę czynności którą musieliśmy wykonać i w razie kolejnej awarii postępować zgodnie z tą listą czynności Algorytmem nazywamy skończony ciąg czynności przekształcający zbiór danych wejściowych na zbiór danych wyjściowych (wyników) 2014-06-13 6

Omówienie etapów rozwiązywania problemów: Sformułowanie zadania (naprawa komputera po awarii) Określenie danych wejściowych (np. czy posiadamy płytę ratunkową, kopię zapasową) Określenie celu, czyli wyniku (uruchomienie komputera) Poszukiwanie metody rozwiązania, czyli algorytmu Przedstawienie algorytmu w postaci: listy kroków pseudojęzyka (pseudokodu) schematu blokowego programu w wybranym języku programowania Analiza poprawności algorytmu. Testowanie rozwiązania dla różnych danych. Ocena efektywności przyjętej metody 2014-06-13 7

Wprowadzenie pojęcia specyfikacji problemu algorytmicznego Specyfikacją problemu algorytmicznego nazywamy dokładny opis problemu algorytmicznego, który ma zostać rozwiązany, oraz podanie danych wejściowych i wyjściowych Przykład specyfikacji: Algorytm: Obliczanie średniej arytmetycznej dwóch liczb naturalnych Dane: a,b wprowadzane liczby, a,b N Wyniki: srednia obliczona średnia Zapis algorytmu 2014-06-13 8

Kryteria, które powinien spełniać algorytm: rozwiązanie problemu, dla którego został utworzony. rozwiązanie problemu dla wszystkich danych określonych w specyfikacji i odpowiednie reagowanie na wprowadzanie niepoprawnych danych. rozwiązanie problemu w sposób jak najbardziej efektywny Najważniejsze własności algorytmu: Poprawność. Algorytm jest poprawny, jeżeli rozwiązuje problem zgodnie ze specyfikacją problemu (zadania) a więc dla poprawnych danych daje odpowiedni wynik 2014-06-13 9

Poprawny algorytm powinien być dobrze określony(czyli opisany w taki sposób, że występujące w nim polecenia i operacje są zrozumiałe dla użytkownika i kolejność ich wykonania jest jednoznacznie określona) i uniwersalny(aby umożliwiał rozwiązywanie wszystkich zadań zgodnych ze specyfikacją problemu, a różniących się jedynie danymi początkowymi). Skończoność. Algorytm jest skończony, jeżeli gwarantuje wyznaczenie wyniku w skończonej liczbie kroków. Algorytm powinien być skończony dla wszystkich danych wejściowych, tzn., że żadna ich kombinacja, dopuszczona przez specyfikację problemu, nie powinna powodować sytuacji, w której algorytm się nie kończy. 2014-06-13 10

Złożoność i efektywność. Złożoność obliczeniowaalgorytmu zależy od liczby operacji niezbędnych dla ukończenia algorytmu. W przypadku algorytmów uniwersalnych złożoność obliczeniowa zależeć będzie od wielkości zbioru danych, na jakich pracuje algorytm. Złożoność obliczeniowa jest zatem funkcją wielkości zbioru danych. Złożoność pamięciowaalgorytmu to wielkość pamięci (operacyjnej lub masowej) niezbędnej do wykonania algorytmu. To wielkość pamięci zajmowanej przez wszystkie zmienne oraz pliki i programy. Ze złożonością wiąże się pojęcie algorytmu optymalnego, czyli takiego, który dla rozwiązania danego problemu jest bezwzględnie najlepszy. 2014-06-13 11

Wyjaśnienie pojęć: stała i zmienna, deklaracja stałej i zmiennej, operator przypisania, operatory arytmetyczne, relacji i logiczne Zmienną nazywamy obiekt występujący w algorytmie, określony przez nazwę i służący do zapamiętywania (przechowywania) pewnych danych Prócz zmiennych w algorytmie możemy używać stałych. Mogą to być wartości podane wprost jak np. liczba 35, albo szczególny rodzaj zmiennych, których wartość nie ulega zmianie w algorytmie. Deklaracja stałej lub zmiennej polega na przypisaniu im odpowiedniego typu (liczba rzeczywista, liczba całkowita, znak, ciąg znaków) Operator przypisania(podstawienia) pozwala na wykonanie operacji nadania zmiennej pewnej wartości :np. x:=0, x:=x+5 (x=0, x=x+5) 2014-06-13 12

Operatory arytmetyczne Operator Działanie Przykład + dodawanie z=x+y - odejmowanie z=x-y * mnożenie z=x*y / % dzieleniegdy oba argumenty są typu całkowitego, to zwraca część całkowitą z dzielenia reszta z dzielenia typ całkowity z=x/y z=x%y 2014-06-13 13

Operatory logiczne i relacji Operator Działanie Przykład && logiczne AND x&&y logiczne OR x y! logiczne NOT!x < mniejsz od x<0 <= mniejsze lub równe od x<=0 > większe od x>0 >= większe lub równe od x>=0 == równe x==0!= różne x!=0 2014-06-13 14

Zapoznanie uczniów ze sposobami zapisu algorytmów ze szczególnym uwzględnieniem schematu blokowego na podstawie obliczania średniej arytmetycznej dwóch liczb: Przedstawienie algorytmu w postaci listy kroków 1. Pobierz pierwszą z liczb 2. Pobierz drugą z liczb 3. Dodaj liczby do siebie 4. Wynik dodawania podziel przez dwa 5. Wyświetl otrzymaną wartość Przedstawienie algorytmu w postaci pseudojęzyka Czytaj a,b srednia:=(a+b)/2 Pisz srednia 2014-06-13 15

Przedstawienie algorytmu w postaci schematu blokowego Blok graniczny read a,b Blok wejścia/wyjścia srednia:= (a+b)/2 Blok operacyjny write srednia Blok decyzyjny Nie x>100 and x>0 Tak 2014-06-13 16

Przedstawienie algorytmu w postaci programu w języku programowania C++ #include <iostream> using namespace std; float a,b, srednia; intmain() { cin>> a; cin>> b; srednia=(a+b)/2; cout<< srednia<< endl; system("pause"); return 0; } 2014-06-13 17

Algorytm nazywamy liniowym jeśli sposób wykonania kolejnych instrukcji nie zależy od danych wejściowych ani wyników otrzymywanych w poprzednich instrukcjach read x read a,h read v_ms szescian:=x*x*x pole:=a*h/2 v_kmh:=v_ms*3600/1000 write szescian write pole write v_kmh 2014-06-13 18

Dyskusja znaczenia instrukcji warunkowej w rozwiązywaniu problemów algorytmicznych Instrukcja warunkowa pozwala na podejmowanie decyzji (wybór dalszej drogi postępowania) na podstawie tego czy dany warunek został spełniony (np. czy posiadamy płytę ratunkową) Wprowadzenie pojęcia algorytmów warunkowych (z rozgałęzieniami) i zapoznanie uczniów z przykładami takich algorytmów Algorytm nazywamy warunkowym (z rozgałęzieniami) jeśli wykonanie jednej z jego części uzależnione jest od spełnienia warunku zapisanego w zawartej w nim instrukcji warunkowej 2014-06-13 19

Sprawdzenie czy liczba jest ujemna read a Nie a<0 Tak write 'x jest liczbą nieujemną' write 'x jest liczbą ujemną' 2014-06-13 20

Wykonanie dzielenia dwóch liczb. Sprawdzenie czy mianownik jest równy zero i wyświetlenie komunikatu "dzielenie przez zero!" (kontrola poprawności wprowadzanych danych) read l,m Nie m==0 Tak wynik:=l/m write 'dzielenie przez zero' write wynik 2014-06-13 21

Sprawdzenie która z dwóch liczb jest większa i wypisanie tej większej. Jeśli liczby są równe algorytm wyświetla komunikat "liczby są równe" read a,b Nie a==b Tak Nie a>b Tak write 'liczby są równe' write b write a 2014-06-13 22

Dyskusja znaczenia instrukcji iteracyjnej (iteracji) w rozwiązywaniu problemów algorytmicznych Iteracją nazywamy instrukcję powtarzania danego ciągu operacji. Liczba powtórzeń może być ustalona przed wykonaniem instrukcji lub może zależeć od spełnienia pewnego warunku. Instrukcja iteracyjna inaczej nazywana jest pętlą. Wprowadzenie pojęcia algorytmów iteracyjnych i zapoznanie uczniów z przykładami takich algorytmów Algorytm nazywamy iteracyjnym jeżeli w trakcie jego wykonania pewna część jego instrukcji jest powtarzana (algorytm zawiera pętlę) 2014-06-13 23

Algorytm wypisuje "Witaj świecie" aż do wprowadzenia liczby zero. read stop Tak stop==0 Nie write 'Witaj świecie' 2014-06-13 24

Algorytm wczytuje liczby i dodaje je do siebie (oblicza sumę wprowadzanych liczb). Po wprowadzeniu liczby zero przerywa działanie i drukuje uzyskaną sumę. suma:=0 read liczba Tak liczba==0 Nie write suma suma:=suma+liczba 2014-06-13 25

Algorytm dodaje do siebie n kolejnych liczb suma:=0 i:=0 read n Tak i==n Nie write suma i:=i+1 read liczba suma:=suma+liczba 2014-06-13 26

Literatura Piotr Broda, Danuta Smołucha, Informatyka, część 1, liceum ogólnokształcące, Wyd. Operon Ewa Gurbiel, Grażyna Hardt-Olejniczak, Ewa Kołczyk, Helena Krupicka, Maciej M. Sysło, Informatyka, część 1,liceum ogólnokształcące, Wyd. WSIP Dokumentacja programu "Magiczne Bloczki", ERI Software 2014-06-13 27