Algorytmy, reprezentacja algorytmów.

Podobne dokumenty
Podstawy Programowania Algorytmy i programowanie

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

Definicje. Algorytm to:

Technologie informacyjne - wykład 12 -

Wprowadzenie do algorytmiki

Algorytm. Krótka historia algorytmów

Algorytmy i schematy blokowe

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

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

1 Wprowadzenie do algorytmiki

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

Definicja algorytmu brzmi:

Algorytm. Algorytmy Marek Pudełko

Podstawy Programowania

Metodyki i techniki programowania

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Schematy blokowe. Algorytmy Marek Pudełko

Efektywność algorytmów

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

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

Wstęp do Informatyki dla bioinformatyków

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

Algorytm. a programowanie -

Algorytm. Definicja i algorytmu METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE

Metody numeryczne w przykładach

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

Czym jest całka? Całkowanie numeryczne

Programowanie - wykład 4

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

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

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

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

Sposoby przedstawiania algorytmów

SCENARIUSZ LEKCJI. Miejsca zerowe funkcji kwadratowej i ich graficzna prezentacja

ALGORYTMY I PROGRAMY

Algorytmy i struktury danych. wykład 2

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

Algorytmika i programowanie usystematyzowanie wiadomości

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Zapisywanie algorytmów w języku programowania

Algorytm. Krótka historia algorytmów

Wyjątki (exceptions)

POLITECHNIKA OPOLSKA

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

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

2.8. Algorytmy, schematy, programy

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

Język ludzki kod maszynowy

Programowanie strukturalne

Ciąg Fibonacciego jako szczególny przykład ciągu określonego rekurencyjnie. Przykłady rekurencji w informatyce

Wstęp do programowania

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

Rekurencja. Przygotowała: Agnieszka Reiter

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

wagi cyfry pozycje

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Metodyki i techniki programowania

Matematyczne Podstawy Informatyki

POLITECHNIKA OPOLSKA

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

Języki i metodyka programowania

Programowanie komputerów

Technologie Informacyjne

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

3. Instrukcje warunkowe

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

WYRAŻENIA ALGEBRAICZNE

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Wstęp do informatyki

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

Mechanizm dziedziczenia

ROZKŁAD MATERIAŁU NAUCZANIA KLASA 1, ZAKRES PODSTAWOWY

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Podstawy programowania w C++

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

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

Zad. 3: Układ równań liniowych

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

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

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

Obliczenia inspirowane Naturą

KRYTERIA OCENY Z MATEMATYKI W KLASIE I GIMNAZJUM

Ilość cyfr liczby naturalnej

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

Podstawy Informatyki. Programowanie. Inżynieria Ciepła, I rok. Co to jest algorytm? Istotne cechy algorytmu

C++ wprowadzanie zmiennych

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

STYCZEŃ 2017 Analiza wyników sprawdzianu na zakończenie nauki. w I semestrze drugiej klasy gimnazjum MATEMATYKA

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

GIMNAZJUM Wymagania edukacyjne z matematyki na poszczególne oceny półroczne i roczne w roku szkolnym

KRYTERIA OCENIANIA Z MATEMATYKI W OPARCIU O PODSTAWĘ PROGRAMOWĄ I PROGRAM NAUCZANIA MATEMATYKA 2001 DLA KLASY DRUGIEJ

Wstęp do programowania. Wykład 1

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Transkrypt:

Algorytmy, reprezentacja algorytmów. Wprowadzenie do algorytmów Najważniejszym pojęciem algorytmiki jest algorytm (ang. algorithm). Nazwa pochodzi od nazwiska perskiego astronoma, astrologa, matematyka i geografa Muhameda ibn Musa Al- Kwarizmiego (arab. ب ن مو سی خوارزمی żyjącego (محمد w latach od około 780 do 850 n.e. Był on autorem dzieła pt. Algebra, opisującego sposoby rozwiązywania różnych problemów matematycznych, np. równań wielomianowych. Określenie algorytmu: Algorytm jest ściśle określonym, skończonym i uporządkowanym ciągiem operacji, których wykonanie nad dobrze zdefiniowanym zbiorem danych prowadzi do rozwiązania określonej klasy problemów. Z podanej definicji wynika kilka istotnych własności algorytmów. Jednoznaczność - operacje wykonywane przez algorytm nie można dowolnie interpretować - musi być określony jeden sposób ich wykonania. Wykonalność - operacje muszą być wykonalne. Skończoność - liczba operacji może być bardzo duża, ale skończona. Wykonanie każdej operacji zajmuje pewien czas. Nieskończona liczba operacji będzie się wykonywała w nieskończoność, to co nam po takim algorytmie? Porządek - operacje muszą być wykonywane w ustalonej kolejności, aby było wiadome, którą operację wykonać jako następną. Ogólność - algorytm powinien rozwiązywać klasę problemów, a nie jeden przypadek szczególny. Np. algorytm obliczania sumy 2 + 2 = 4 jest złym algorytmem - lepszym jest algorytm

dodawania dowolnych liczb, którego uczyłeś się na lekcjach matematyki w szkole podstawowej. Efektywność - algorytm powinien dochodzić do rozwiązania najkrótszą drogą - czasem jest to trudne do spełnienia, gdyż możemy nie znać najkrótszej drogi. Dalej w podanej definicji czytamy, iż ciąg operacji wykonywany jest nad dobrze zdefiniowanym zbiorem danych. Zatem algorytm, oprócz definicji operacji, wymaga również definicji danych, nad którymi pracuje. Definicję danych nazywamy specyfikacją algorytmu lub specyfikacją problemu. Specyfikacja składa się zwykle z dwóch podstawowych części: Definicja danych wejściowych - określa ona jakie informacje potrzebne są algorytmowi do znalezienia rozwiązania. Np. dla równania liniowego ax + b = c algorytm potrzebuje współczynników a, b i c do znalezienia rozwiązania. W definicji podajemy również ograniczenia dla danych wejściowych, jeśli takowe istnieją. Np. w powyższym przykładzie liczby a, b i c mogą być dowolne, z zastrzeżeniem, iż a jest różne od 0. Definicja danych wyjściowych - określa efekt pracy algorytmu, czyli co jest jego wynikiem, co otrzymamy po zastosowaniu algorytmu dla danych wejściowych. Np. dla powyższego równania liniowego ax + b = c, wynikiem będzie wartość x, która po wstawieniu do równania spełnia je. Definicja danych pomocniczych - ta część nie jest obowiązkowa, jednakże znacząco ułatwia implementację algorytmu definiując pomocnicze struktury danych, które są niezbędne w trakcie przetwarzania przez algorytm danych wejściowych. Algorytm można przedstawić graficznie w sposób następujący:

Sposoby reprezentacji algorytmów Dobrze udokumentowany algorytm powinien składać się ze specyfikacji oraz opisu operacji, który spełnia podaną na początku rozdziału definicję. Istnieje kilka użytecznych sposobów opisywania operacji, poniżej podajemy te najbardziej popularne: Opis słowny Operacje do wykonania opisujemy zwykłym tekstem opisowym. Tę formę prezentacji algorytmu stosuje się najczęściej w fazie wstępnej, gdy chcemy w sposób ogólny opisać operacje bez wdawania się w szczegóły techniczne. Zwykle na podstawie opisu słownego tworzymy w następnym kroku bardziej ścisłą reprezentację. Przykład: Lista kroków Algorytm obliczania obwodu i pola prostokąta. Dane wejściowe: a,b - długości boków prostokąta Dane wyjściowe: pole, obwód Oblicza pole jako iloczyn boku a przez bok b prostokąta. Oblicz obwód jako sumę boków a i b pomnożoną przez 2. Każdą operację zapisujemy w osobnym, numerowanym kroku algorytmicznym. Stosuje się ograniczoną liczbę operacji elementarnych. Lista kroków pozwala precyzyjnie zdefiniować cały algorytm.

Przykład: Algorytm obliczania obwodu i pola prostokąta. Dane wejściowe: a,b - długości boków prostokąta Dane wyjściowe: pole, obwód K01: Czytaj a,b K02: pole a b K03: obwód 2 (a + b) K04: Pisz pole, obwód K05: Zakończ Schemat blokowy Operacje przedstawiamy w sposób graficzny za pomocą następujących symboli: oznacza początek algorytmu, czyli punkt startowy, od którego rozpoczynamy wykonywanie operacji. oznacza koniec algorytmu. określa następną operację do wykonania wewnątrz tego symbolu umieszczamy operację do wykonania nad danymi operacja wprowadzania danych do algorytmu - określa dane wejściowe, które algorytm musi odczytać. operacja wyprowadzania wyników - określa dane wyjściowe, które produkuje algorytm. test umożliwiający tworzenie rozgałęzień w algorytmie. Jeśli test jest spełniony, to z symbolu wychodzimy drogą oznaczoną strzałką TAK. W przeciwnym wypadku idziemy po strzałce oznaczonej NIE. Często umieszcza się przy symbolu testu tylko jeden napis TAK lub NIE. Drugi jest oczywisty.

Przykład: Algorytm obliczania obwodu i pola prostokąta. Dane wejściowe: a,b - długości boków prostokąta Dane wyjściowe: pole, obwód Program komputerowy Tak, nie pomyliliśmy się. Program komputerowy jest niczym innym, jak jednym ze sposobów zapisu algorytmu przy pomocy środków dostarczanych przez język programowania. Dlatego Algorytmika jest tak ważna przy nauce programowania. Poprzednie sposoby reprezentacji algorytmów są ogólne, nie wymagają znajomości konkretnego języka programowania. Jest to zaletą, gdyż zwykle algorytm jest niezależny od konkretnego języka programowania i zapis algorytmu w postaci ogólnej pozwala później zaimplementować go w dowolnym, wybranym przez programistę języku programowania. Dlatego autorzy opracowań często wybierają jedną z poprzednich form przedstawiania algorytmów, aby uniezależnić się od zmian popularności tego, czy innego narzędzia programistycznego - np. znany autorytet w dziedzinie informatyki, profesor Donald Knuth, stworzył na potrzeby swojego dzieła "Sztuka programowania komputerów" fikcyjną maszynę cyfrową o dobrze zdefiniowanej liście poleceń i wszystkie prezentowane algorytmy przedstawiał w

asemblerze tej maszyny. W ten sposób uniezależnił się od zmian stosowania języków programowania, a było ich trochę - Fortran, C, Pascal, C++, Java, PHP, Python, Ruby i tysiące innych. Znane jest słynne powiedzenie Knutha: "Languages come and go, but algorithms stand the test of time." "Języki programowania przychodzą i odchodzą, lecz algorytmy opierają się próbie czasu" #include <iostream> using namespace std; int main() { unsigned int a,b,pole,obwod; cout << "Obliczanie pola i obwodu prostokata\n" "-----------------------------------\n\n"; // odczytujemy długości boków a i b cout << "Bok a = "; cin >> a; cout << "Bok b = "; cin >> b; cout << endl; // wykonujemy obliczenia obwodu i pola obwod = 2 * (a + b); pole = a * b; // wyświetlamy wyniki obliczeń cout << "Obwod = " << obwod << endl << "Pole = " << pole << endl << endl; } system("pause"); return 0;