Prowadzący: Dr inż. Jerzy Szczygieł

Slides:



Advertisements
Podobne prezentacje
Instrukcje - wprowadzenie
Advertisements

METODY ANALIZY PROGRAMÓW
Algorytmika w szkole podstawowej
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Filip Andrzejewski Remigiusz Chiluta
ALGORYTM Co to jest algorytm?
algorytm znajdowania największego wspólnego dzielnika (NWD)
Opracowała: Elżbieta Fedko
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
ALGORYTMY I STRUKTURY DANYCH
Praktyka Programowania Semestr I: –wykład - 1 godz. –laboratorium - 1 godz. –projekt - 1 godz.
ALGORYTMY.
Algorytmy.
Algorytmy i struktury danych
Matura z informatyki Arkusz I.
JAKO CZĘŚĆ NASZEGO ŻYCIA
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Wstęp do interpretacji algorytmów
dr Anna Kwiatkowska Instytut Informatyki
Algorytmy Marek Pudełko
Algorytmy Marek Pudełko
Algorytmy i algorytmika Opracowanie: Maciej Karanowski
PODSTAWY PROGRAMOWANIA
ALGORYTMY Opracowała: ELŻBIETA SARKOWICZ
ALGORYTMY.
Algorytmy.
Agata Łysakowska Klasa III „n”
Algorytmy Opracowanie: Maria Skalska na podstawie „Informatyka 2000” wydawnictwa Czarny Kruk.
ALGORYTMY Martyna K. Luiza K..
M. Muraszkiewicz Instytut Informatyki, Politechnika Warszawska
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Algorytmy.
Zbiór do posortowania mieści się w pamięci
PORZĄDEK WŚRÓD INFORMACJI KLUCZEM DO SZYBKIEGO WYSZUKIWANIA
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
Algorytmy i struktury danych
GIMNAZJUM nr 1 W BIERUNIU
Informatyka MZT1 Wykład 3.
ALGORYTMY.
Algorytmy.
Metody numeryczne metody rozwiązywania problemów matematycznych za pomocą operacji na liczbach. Otrzymywane tą drogą wyniki są na ogół przybliżone, jednak.
Algorytmika.
Wprowadzenie do programowania
ALGORYTMY Co to jest algorytm ? Cechy algorytmu Budowa algorytmów
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Algorytmy i struktury danych
Obliczanie NWD- algorytm Euklidesa
opracowała: Anna Mikuć
Algorytm to przepis prowadzący do osiągnięcia celu lub rozwiązania problemu, opisujący każdy krok. Algorytmika to dziedzina zajmująca się algorytmami (własnościami,
Algorytmy.
Algorytm znajdowania Największego Wspólnego Dzielnika.
Algorytmy – wprowadzenie
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Wstęp do interpretacji algorytmów
Wstęp do programowania Wykład 1
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Co to jest algorytm? Uporządkowany i uściślony sposób rozwiązania danego problemu, zawierzający szczegółowy opis wykonywanych czynności w skończonej.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Algorytm to przepis prowadzący do osiągnięcia celu lub rozwiązania problemu, opisujący każdy krok. Algorytmika to dziedzina zajmująca się algorytmami (własnościami,
Efektywność algorytmów
Zrozumieć, przeanalizować i rozwiązać
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Prowadzący: Dr inż. Jerzy Szczygieł Technologie Informacyjne Tydzień 3 Prowadzący: Dr inż. Jerzy Szczygieł

Algorytm - definicja Algorytm – w matematyce oraz informatyce to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Słowo algorytm rozumiane jako przepis wykonania zadania pochodzi od fragmentu nazwiska arabskiego matematyka żyjącego na przełomie VIII i IX wieku (ok. 780 - ok. 850). Muhammad ibn Musa al-Chorezmi, który został uznany za prekursora obliczeniowych metod w matematyce. start stop czy jest prowadzący? zajęcia droga do domu tak nie

Algorytmy - przykłady Zaparzanie herbaty dane wejściowe : woda, herbata, cukier, szklanka, czajnik łyżeczka, palnik gazowy, zapałki wsyp herbatę do szklanki; nalej wodę do czajnika; zapal gaz; poczekaj aż w czajniku zagotuje się woda; zalej herbatę w szklance wrzątkiem; poczekaj 2 minuty; dodaj cukier; pomieszaj; wynik :herbata gotowa do wypicia Znajdowanie największego wspólnego dzielnika NWD (*) dane wejściowe: liczby a i b dopóki b ≠ 0 wykonuj: podstaw za c resztę z dzielenia a przez b; podstaw za a liczbę b; podstaw za b liczbą c; podstaw za NWD liczbę b; wynik: NWD (*) tzw. Algorytm Euklidesa wymyślony, co ciekawe, przez Eduksosa z Knidos

Algorytmizacja zadania Sformułowanie zadania Określenie danych wejściowych Określenie celu, czyli wyniku Poszukiwanie metody rozwiązania, czyli algorytmu Przedstawienie algorytmu w postaci: - opisu słownego - listy kroków - schematu blokowego - jednego z języków programowania Analiza poprawności rozwiązania Testowanie rozwiązania dla różnych danych - ocena efektywności przyjętej metody

Cechy algorytmu Cechy podstawowe Cechy dodatkowe posiada dane wejściowe produkuje pewien wynik jest precyzyjnie zdefiniowany jest skończony Cechy dodatkowe realizowalność możliwość zapisania w wielu postaciach możliwość wielokrotnego wykonywania możliwość zapisania używając skończonego zbioru symboli.

Porównywanie i ocena efektywności algorytmów Kryteria prostota czytelność długość kodu poprawność czas realizacji zajętość pamięci Ocena efektywności i wartość algorytmu : koszt czasowy algorytmu ilość operacji jakie musi wykonać koszt pamięciowy - ile komórek pamięci potrzebuje dany algorytm poprawność algorytmu polega na tym, że nie ma w nim błędów składniowych ani logicznych, a w związku z tym jest on skończony (musi się zatrzymać) oraz daje poprawny wynik. Algorytm idealny – posiada prosty, łatwy do zrozumienia kod, liczy się szybko, nie wymaga dużo miejsca w pamięci i zawsze daje poprawne wyniki

Metoda krokowa opisu algorytmu Algorytm Euklidesa znajdowania NWD, IV w. p.n.e dano dwie liczby a i b jeżeli a=b to przejdź do kroku 7 jeżeli a<b przejdź do kroku 5 podstaw za liczbę a różnicę a-b. Przejdź do kroku 6 podstaw za liczbę b różnicę b-a. przejdź do kroku 2 podstaw za wynik liczbę b

Schemat blokowy - definicja jedna z najpopularniejszych form przedstawiania algorytmu. Tworzy się go za pomocą umownych symboli z zaznaczeniem połączeń i kierunków przepływu informacji. Zasady budowy schematu blokowego każda operacja jest umieszczona w osobnym bloku schemat ma tylko jeden blok "start" i przynajmniej jedną blok „stop” poszczególne bloki są ze sobą połączone. z bloku wychodzi jedno połączenie; wyjątek stanowią: "stop" (z którego nie wychodzą już żądne połączenia) oraz blok warunkowy (z którego wychodzą dwa połączenia opisane „TAK” i „NIE” w bloku operacyjnym zamiast znaku "=" pojawia się oznaczenie ":=" start stop podaj a: suma := a + b + c podaj b: podaj c: wypisz suma

Schemat blokowy – rodzaje bloków Bloki graniczne: Blok wykonawczy: start instrukcje do wykonania stop Bloki wejścia-wyjścia: Blok warunkowy: podaj wartość wyrażenie logiczne N T fałsz, logiczne 0 prawda, logiczne 1 wyprowadź wartość

Sieci działań Proste (sekwencyjne) Z rozwidleniem (warunkowe) nie używa się w nich bloków warunkowych. Kolejność operacji jest ściśle określona i żadna z nich nie może być pominięta ani powtórzona Z rozwidleniem (warunkowe) zawiera w sobie wybór jednej z kilku możliwych dróg realizacji danego zadania. Istnieje w nich przynajmniej jeden blok warunkowy Z pętlą (iteracyjne) stosowany wtedy gdy w trakcie realizacji danego zadania konieczne jest powtórzenie niektórych operacji różniących się jedynie zestawem danych Złożone będące kombinacją powyższych sieci

Podstawowe struktury programistyczne jeżeli warunek logiczny Wyrażenie będzie prawdziwy rób Działanie P, inaczej nic nie rób jeżeli warunek logiczny Wyrażenie jest prawdziwy rób Działanie P , inaczej rób Działanie F

Podstawowe struktury programistyczne – cd. oblicz Wyrażenie oraz wykonaj tę instrukcję, przejście do której odpowiada wartości Wyrażenia. Inaczej wykonaj instrukcję Domyślną sprawdź Wyrażenie, jeżeli jest prawdziwe, wykonaj instrukcję oraz wróć do ponownego sprawdzania Wyrażenia, inaczej wyjdź z konstrukcji

Podstawowe struktury programistyczne – cd. wykonaj instrukcję, a następnie sprawdź Wyrażenie, jeżeli jest prawdziwe, wróć do ponownego wykonania instrukcji, inaczej wyjdź z konstrukcji przed rozpoczęciem konstrukcji ustaw licznik. Dopóki wyrażenie jest prawdziwe, wykonaj Instrukcję, a następnie zmień licznik

Przykłady algorytmów

Przykłady algorytmów cd.

Przykłady algorytmów cd.

Przykłady algorytmów cd.

Przykłady algorytmów cd.

Przykłady algorytmów cd.

Zadania do samodzielnego rozwiązania Przy pomocy schematów blokowych opisać algorytmy realizujące następujące zadania: Ugotowanie jajka na: miękko twardo Manewr wyprzedzania samochodem powoli jadącego traktora. Uwzględnić zmieniające się warunki na drodze (natężenie ruchu, ukształtowanie powierzchni, widoczność) Znalezienie środka ciężkości pręta stalowego. Pręt znajduje się na ruchomych podporach (można je zbliżać i oddalać od siebie) Dano liczbę A. Sprawdzić, czy dana liczba jest podzielna jednocześnie przez 3 i przez 7 Dano liczbę całkowitą. Znaleźć sumę wszystkich cyfr w składzie danej liczby Znaleźć całkowite pierwiastki równania: 3x3+7x2=550 w przedziale [0…10]

Zadania do samodzielnego rozwiązania cd. Znaleźć sumę n pierwszych elementów szeregu: Dano proces predefiniowany Random(), który generuje jedną liczbę losową w przedziale od 0 do 65375. Opisać algorytm wygenerowania 20 losowych liczb w przedziale [10;100] Obliczyć wartość funkcji sin(x) w przedziale [-2π; 2π] z krokiem 0,01 Obliczyć wartość funkcji dla całkowitego x:

Programowanie - definicja proces projektowania, tworzenia i poprawiania kodu źródłowego programów komputerowych lub urządzeń mikroprocesorowych (mikrokontrolerów). Kod źródłowy pisze się z użyciem reguł określanych przez wybrany język programowania. algorytm symbole język programowania słowa kluczowe składnia semantyka program

Składnia i semantyka języków programowania Składnia typowego języka zawiera: warianty kilku struktur sterujących sposoby definiowania rozmaitych struktur danych wzorce podstawowych instrukcji Składnia języka programowania określa jak opisywać struktury sterujące jak opisywać struktury danych jak tworzyć poprawne symbole dla nazwania zmiennych i struktur danych jak stosować interpunkcje (np. spacje, przecinki, kropki nawiasy) Semantyka określa znaczenie poprawnych składniowo wyrażeń

Kompilacja i interpretacja Kompilacja – przekładanie całego programu napisanego w języku wysokiego poziomu na program w języku niższego poziomu Interpretacja – przekładanie kolejno instrukcji języka wysokiego poziomu na instrukcje poziomu maszynowego

Generacje języków programowania Pierwsza generacja - języki maszynowe (wewnętrzne) specyficzne dla określonej maszyny. Programowanie w kodzie binarnym. Druga generacja -języki symboliczne, niskiego poziomu (Assembler). Poszczególnym rozkazom maszynowym odpowiadają symbole (mnemoniki). Aby program mógł zostać wykonany na komputerze konieczne jest jego przetłumaczenie na język wewnętrzny procesora. Trzecia generacja - języki wysokiego poziomu (Fortran, Pascal, C). Składnia przypomina proste zdania języka naturalnego oraz wyrażenia arytmetyczne. Języki wysokiego poziomu są niezależne od procesora. Muszą być kompilowane lub interpretowane, aby mogły zostać wykonane przez procesor.

Generacje języków programowania cd. Czwarta generacja – platformy programistyczne takie jak Delphi, C++ Builder czy też Visual Basic, pozwalające na „budowanie” aplikacji z gotowych elementów. Piąta generacja – języki używane do tworzenia programów wykorzystujących tzw. sztuczną inteligencję (ang. AI – Artificial Intelligence)

Zasady programowania strukturalnego program powinien składać się z niedużych jednostek zwanych procedurami, w których obrębie nie ma już mniejszych podprogramów w kodzie modułu powinno być tylko jedno wejście i jedno wyjście kod powinien być budowany z pomocą następujących konstrukcji podstawowych: ciągu sekwencyjnego rozgałęzienia warunkowego pętli ze sprawdzeniem warunku powtarzania na początku lub końcu ciągu sekwencyjnego instrukcji wyboru jeden z wielu możliwe jest zagnieżdżanie jednych konstrukcji wewnątrz innych należy ograniczyć do niezbędnego minimum stosowanie skoku bezwarunkowego program powinien zapewniać proste i jasne rozwiązanie problemu, być napisany w poprawnym stylu, przejrzysty, czytelny

Programowanie obiektowe - definicja Programowanie obiektowe (ang. object-oriented programming ) metodologia tworzenia programów komputerowych, która definiuje programy za pomocą "obiektów" - elementów łączących stan (czyli dane) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Pojęcia dotyczące programowania obiektowego: dziedziczenie (obiekty tworzą strukturę hierarchiczna, dziedziczą zachowania i właściwości klas) hermetyzacja (obiekty są oddzielone od otoczenia zewnętrznego) polimorfizm (właściwe znaczenie programu o danej nazwie jest uzależnione od obiektu, z którym ta nazwa jest powiązana)

Niektóre dziedziny zastosowań języków języki zorientowane obiektowo (C++, Smalltalk, Eiffel) języki do zarządzania bazami danych (SQL) programowanie wizualne (AppWare, Synergy, VPLus) języki symulacyjne (Simula, Gabriel, TROLL) języki funkcyjne (Haskell, ASpecT) programowanie współbieżne (Fortran FM, CODE, NESL) modelowanie matematyczne (Matlab, Mathcad) języki opisu stron (Postscript, Tex, HPGL) programowanie stron WWW (PHP, JavaScript, PERL, DHTML) komputerowo wspomagana Inżynieria Oprogramowania (ang. CASE)

Konstrukcja sterująca typu prawda/fałsz

Konstrukcja iteracyjna „dopóki”

Konstrukcja iteracyjna „rób.. dopóki”

Konstrukcja iteracyjna „powtarzaj”

Konstrukcja sterująca wielowariantowa

Program Hello world! – różne języki Assembler . global _start text db "Hello, world!",0xa length equ $-text section .text _start: mov eax,4 mov ebx,1 mov ecx,text mov edx,length int 80h xor ebx,ebx mov eax,1 Język C #include <stdio.h> int main(void) { printf ("Hello, world!\n"); return 0; } Pascal Program hello; begin Writeln('Hello, world!'); Readln; end. Język Brainfuck ++++++++++[>+++++++>++++++++++>+++>+<<<<- ]>++.+++++++..+++.>++.<<+++++++++++++++.>.+ ++.------.--------.>+.>. Fortran PROGRAM HELLO 1 WRITE (*,*) 'hello, world' goto 1 END Malbolge (=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk** hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<

Program Hello world! – różne języki Język Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Założenia języka: Język programowania powinien być możliwy do zapisania i odczytania przez orangutana Aby było to możliwe składnia powinna być prosta, łatwa do zapamiętania i pod żadnym względem nie powinna zawierać słowa „małpa” Banany są dobre!