2.8. Algorytmy, schematy, programy

Podobne dokumenty
Algorytm. a programowanie -

Algorytm Euklidesa. Największy wspólny dzielnik dla danych dwóch liczb całkowitych to największa liczba naturalna dzieląca każdą z nich bez reszty.

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

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

2.1. Duszek w labiryncie

Algorytmy i struktury danych. Wykład 4

Wstęp do Informatyki

WHILE (wyrażenie) instrukcja;

Warunki logiczne instrukcja if

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

WHILE (wyrażenie) instrukcja;

Wprowadzenie do algorytmiki

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

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

ALGORYTMY I PROGRAMY

Ilość cyfr liczby naturalnej

1 Wprowadzenie do algorytmiki

Algorytmy. Programowanie Proceduralne 1

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Język C zajęcia nr 5

if (wyrażenie ) instrukcja

Algorytmy. Programowanie Proceduralne 1

Definicje. Algorytm to:

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

Podstawy Programowania Algorytmy i programowanie

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Wyszukiwanie największej spośród czterech liczb. Przykładowe rozwiązanie

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

Programowanie w języku Python. Grażyna Koba

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Zapis algorytmów: schematy blokowe i pseudokod 1

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

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Programowanie w języku C++ Grażyna Koba

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

KARTA PRACY UCZNIA. Klasa II

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

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

Temat 20. Techniki algorytmiczne

Od programowania wizualnego do tekstowego

W szkole podstawowej materiał przedstawiony powinien być w następującej kolejności:

lekcja 8a Gry komputerowe MasterMind

Zapisywanie algorytmów w języku programowania

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

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

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

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

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

Zadanie 1. Potęgi (14 pkt)

Podstawy i języki programowania

Palindromy. Przykładowe rozwiązanie

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Pętla for. Wynik działania programu:

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Algorytm i złożoność obliczeniowa algorytmu

Czas pracy: 60 minut

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

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

Definicja algorytmu brzmi:

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

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

Programowanie i techniki algorytmiczne

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

ALGORYTMY I STRUKTURY DANYCH

Język programowania PASCAL

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

INFORMATYKA. Algorytmy.

WYKŁAD 3 (13 MARZEC 2014) LICZBY CAŁKOWITE I RZECZYWISTE. Bartosz Łakomy i Dariusz Dobiesz

Algorytmy i struktury danych

wagi cyfry pozycje

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

ZADANIE 1. Ważenie (14 pkt)

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

Warsztaty dla nauczycieli

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

Funkcje i instrukcje języka JavaScript

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

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

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

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

Teoria liczb. Zajmuje się własnościami liczb, wszystkim całkowitych

Materiały: kartki papieru (5 x 5 kolorów), piłeczki pingpongowe (5 x 5 kolorów), worek (nieprzeźroczysty).

EGZAMIN MATURALNY Z INFORMATYKI

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Wstęp do programowania

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

Informatyka I Lab 06, r.a. 2011/2012 prow. Sławomir Czarnecki. Zadania na laboratorium nr. 6

Luty 2001 Algorytmy (7) 2000/2001

Podstawowe elementy programu. patrz: następne 2 slajdy. Podstawowe elementy programu. Komendy proste:

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

... (środowisko) minut

Algorytm. Krótka historia algorytmów

Transkrypt:

https://app.wsipnet.pl/podreczniki/strona/38766 2.8. Algorytmy, schematy, programy DOWIESZ SIĘ co oznaczają pojęcia: algorytm, schemat blokowy, język programowania, jakie są sposoby obliczania największego wspólnego dzielnika (NWD). ALGORYTM EUKLIDESA Algorytm opisuje sposób rozwiązania problemu krok po kroku. Opis ten powinien być dokładny i nie pozostawiać wątpliwości, co, jak i w jakiej kolejności trzeba zrobić. Z algorytmami masz często do czynienia na lekcjach matematyki. Jednym z przykładów algorytmu jest sposób znajdowania największego wspólnego dzielnika dwóch liczb całkowitych (NWD). NWD jest potrzebny np. przy skracaniu ułamków. Algorytmem poznanym przez ciebie na lekcjach matematyki jest sprawdzanie podzielności dwóch liczb całkowitych przez kolejne liczby. Najpierw sprawdzamy podzielność przez 2, potem przez 3 i tak dalej, aż do mniejszej z dwóch liczb. Największym wspólnym dzielnikiem dwóch liczb jest iloczyn ich wszystkich wspólnych dzielników pierwszych. Przyjrzyj się temu sposobowi na przykładzie szukania NWD liczb: a = 42 i b = 24. NWD liczb a i b wynosi więc 2 3 1 = 6. Lepszym i szybszym rozwiązaniem problemu szukania NWD dwóch liczb całkowitych jest algorytm Euklidesa. To jeden z najstarszych algorytmów, opisany przez Euklidesa ok. 300 roku p.n.e. Opiera się na spostrzeżeniu: jeśli od większej liczby odejmiemy mniejszą, to mniejsza liczba i otrzymana różnica będą miały taki sam największy wspólny dzielnik jak pierwotne liczby. Gdy w wyniku kolejnego odejmowania otrzymamy parę takich samych liczb, to oznacza, że znaleźliśmy NWD. Popatrz, jak przebiega znajdowanie NWD dwóch liczb a = 42 i b = 24 według tego algorytmu. Oto algorytm Euklidesa zapisany w postaci planu działań. Strona 58 z 174 2017-01-15 18:30

https://app.wsipnet.pl/podreczniki/strona/38766 1. Wybieramy dwie liczby naturalne. 2. Jeśli liczby są równe, to NWD jest np. pierwszą z nich i to oznacza koniec działań. 3. Jeśli liczby nie są sobie równe, to trzeba: -zbadać, która jest większa; -odjąć od niej mniejszą i zastąpić większą przez otrzymaną różnicę; -wrócić do sprawdzenia warunku w punkcie 2. (pętla). Wykonaj ten algorytm dla następujących par liczb: 152 i 57, 1025 i 725, 132 i 44. Strona 58 z 174 2017-01-15 18:30

https://app.wsipnet.pl/podreczniki/strona/38767 SCHEMAT BLOKOWY ALGORYTMU Jednym ze sposobów przedstawiania algorytmów są schematy blokowe. Można je budować z gotowych elementów w specjalnych programach. Posłużymy się jednym z takich programów Elbox Laboratorium Informatyki (w wersji ELI Multi Plus 2.0). Schemat blokowy algorytmu zbudowany w programie ELI składa się z następujących klocków: początek algorytmu, wprowadzenie danych, wykonanie obliczeń, sprawdzenie warunku, wyprowadzenie wyniku, koniec algorytmu (rys. 1). 1. Wczytaniu dwóch liczb naturalnych a i b odpowiadają dwa kolejne klocki 2. Sprawdzenie warunku, czy a = b. Jeśli tak, to NWD jest np. pierwszą z nich, więc następuje wyprowadzenie wyniku i koniec algorytmu. 3. Jeśli liczby nie są sobie równe, to następuje sprawdzenie warunku, czy a > b. - Jeśli większa jest liczba a, to jest zastępowana przez a := a b. - Jeśli większa jest liczba b, to jest zastępowana przez b := b a. - Powrót do punktu 2. (pętla), czyli do sprawdzania warunku. Rys. 1. Schemat blokowy algorytmu Euklidesa Tak zapisany algorytm można uruchomić w programie ELI i obserwować krok zapisany w programie ELI po kroku, jak jest wykonywany. Strona 59 z 174 2017-01-15 18:31

https://app.wsipnet.pl/podreczniki/strona/38768 ZAPIS ALGORYTMU W SCRATCHU Kolejnym sposobem zapisu algorytmu jest skrypt zbudowany w Scratchu. On także stanowi wizualizację algorytmu, którą można uruchomić. Na rysunku 2. są przedstawione dwie przykładowe realizacje algorytmu Euklidesa w Scratchu. Obie obliczają największy wspólny dzielnik. Pierwsza wykorzystuje rekurencję i zmienne lokalne, czyli parametry bloku NWD (niebieskie), a druga zawiera pętlę powtarzaj aż i działa na zmiennych globalnych, czyli zdefiniowanych za pomocą przycisku Stwórz zmienną w kategorii Dane (czerwone). Jeśli chcesz uruchomić ten projekt, otwórz stronę: scratch.mit.edu/projects/37501646. Rys. 2. Realizacje algorytmu Euklidesa w Scratchu Strona 60 z 174 2017-01-15 18:32

https://app.wsipnet.pl/podreczniki/strona/38769 ZAPIS ALGORYTMU W JĘZYKU PROGRAMOWANIA Innym sposobem zapisu algorytmu jest program napisany w wybranym języku programowania. Pierwotnie komputery programowano w kodzie maszynowym, czyli za pomocą zestawu elementarnych poleceń zrozumiałych dla procesora. Było to zajęcie żmudne i trudne, w dodatku dla każdej kolejnej wersji procesora ten zestaw był nieco inny. W latach 50. XX wieku powstały pierwsze języki programowania wyższego poziomu (wyższego niż poziom poleceń procesora), o charakterze uniwersalnym, czyli te same dla różnych komputerów. Początkowo były to języki Fortran i Algol, później Cobol (czytaj: kobol), Pascal (czytaj: paskal), Basic (czytaj: bejzik) i Logo. Kolejna generacja języków to Java (czytaj: dżawa), C, Python (czytaj: pajton), Visual Basic (czytaj: vizual bejzik), PHP. Poniżej przedstawiono dwie przykładowe realizacje algorytmu Euklidesa w języku Python i JavaScript. Zastosowano w nich pętlę while warunek instrukcje, co oznacza: dopóki jest spełniony warunek, wykonuj instrukcje. Zauważ, że warunkiem wykonywania odejmowania w pętli jest to, że liczby nie są sobie równe. Znaczenie elementów języka użytych w poniższych programach if (czytaj: yf; jeżeli) działa tak, jak blok jeżeli to w Scratchu. else (czytaj: els; w przeciwnym razie) dodane do if odpowiada blokowi jeżeli to w przeciwnym razie w Scratchu. print (czytaj: prynt; wypisz) odpowiada blokowi powiedz w Scratchu. var (czytaj: wer; zmienna) odpowiada przyciskowi Stwórz zmienną w Scratchu. return (czytaj: ritern; zwróć) przerywa działanie funkcji i zwraca podaną wartość; takiego bloku nie ma w Scratchu. fill (czytaj: fyl; ustal kolor wypełnienia i kolor tekstu) takiego bloku nie ma w Scratchu. text (czytaj: tekst; wypisz tekst) odpowiada blokowi powiedz w Scratchu. Przyjrzyj się zapisom obu programów. Który wydaje ci się bardziej czytelny? Python (środowisko PyScripter) a=152 b=57 while a!=b: if a>b: a=a-b else: b=b-a print(a) JavaScript (środowisko ProcessingJS, np. Khan Academy CS) var a=152; var b=57; var nwd = function(a,b){ while (a!==b){ if (a>b){a=a-b;} else {b=b-a;} } return a; }; fill(0, 0, 0); text(nwd(a,b), 135, 100); Strona 61 z 174 2017-01-15 18:33

https://app.wsipnet.pl/podreczniki/strona/38769 ZADANIA 1. Istnieje wersja algorytmu Euklidesa szybsza i efektywniejsza od poznanej na lekcji. Polega ona na sprawdzaniu reszty z dzielenia większej liczby przez mniejszą zamiast odejmowania. Gdy reszta ta osiągnie zero, należy skończyć działanie w pętli i jako wynik wziąć drugą liczbę. Zbuduj w Scratchu projekt realizujący szybszą wersję algorytmu Euklidesa. Do rozwiązania będzie potrzebny ci blok mod zwracający resztę z dzielenia. Znajdziesz go w grupie Wyrażenia. Strona 61 z 174 2017-01-15 18:33