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

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

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

Podstawy Informatyki. Programowanie. Metalurgia, I rok. Co to jest algorytm? Istotne cechy algorytmu

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

1 Wprowadzenie do algorytmiki

Algorytm. a programowanie -

Algorytm. Krótka historia algorytmów

Definicje. Algorytm to:

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

Wprowadzenie do algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Technologie informacyjne - wykład 12 -

Algorytmy. Paweł Dudzik, Adrian Guzik. Kraków, 6 lipca AGH Kraków. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca / 37

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

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

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

2.8. Algorytmy, schematy, programy

Podstawy Informatyki. Algorytmy i ich poprawność

Zapis algorytmów: schematy blokowe i pseudokod 1

Algorytm. Krótka historia algorytmów

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

Definicja algorytmu brzmi:

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.

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

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

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

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

Technologia informacyjna Algorytm Janusz Uriasz

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

Podstawy programowania

Algorytmy. Programowanie Proceduralne 1

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

Algorytmy. Programowanie Proceduralne 1

ALGORYTMY I PROGRAMY

Języki programowania zasady ich tworzenia

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

Algorytmy i schematy blokowe

INFORMATYKA. Algorytmy.

POLITECHNIKA OPOLSKA

Metodyki i techniki programowania

Podstawy Programowania Algorytmy i programowanie

Język ludzki kod maszynowy

POLITECHNIKA OPOLSKA

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

Programowanie i techniki algorytmiczne

Podstawy i języki programowania

Wykład z Technologii Informacyjnych. Piotr Mika

Schematy blokowe. Algorytmy Marek Pudełko

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

Algorytmy i struktury danych. wykład 2

Algorytmy od problemu do wyniku

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

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

Wstęp do informatyki- wykład 2

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Temat 20. Techniki algorytmiczne

Programowanie komputerów

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

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

Programowanie w języku Python. Grażyna Koba

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

Języki i metodyka programowania

Algorytmy, reprezentacja algorytmów.

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

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

Poprawność algorytmów

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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

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

Rekurencja (rekursja)

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

Algorytm. Algorytmy Marek Pudełko

Podstawy algorytmiki Dariusz Piekarz

Algorytmy i struktury danych. Wykład 4

Wstęp do informatyki

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

ECDL Podstawy programowania Sylabus - wersja 1.0

1. Algorytmy Składniki algorytmu Podstawowymi elementami każdego algorytmu są dane oraz operacje Metody opisu algorytmu

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

WHILE (wyrażenie) instrukcja;

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy i struktury danych

Podstawy Programowania

Sposoby przedstawiania algorytmów

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

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

Algorytmy i struktury danych

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

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

Zapisywanie algorytmów w języku programowania

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Podstawy Programowania C++

Transkrypt:

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

Programowanie Sformułowanie problemu. Opracowanie metodyki rozwiązania. Opracowanie algorytmu. Napisanie kodu źródłowego (zakodowanie) w wybranym języku (Pascal, Fortran, C++, itp.). Kompilacja kodu źródłowego Uruchomienie programu na komputerze. Wykonanie obliczeń. Analiza otrzymanych wyników. Usunięcie błędów programu (debugging).

Co to jest algorytm? Jeżeli mamy do wykonania jakieś zadanie, budujemy sposób, przepis realizacji tego zadania. Taki przepis to algorytm. Przykłady: przepis kucharski, instrukcja składania mebla/urządzenia..., zapis nutowy, wykonywanie pisemne dodawania/mnożenia/dzielenia... Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności do wykonania, ze wskazaniem ich następstwa.

Istotne cechy algorytmu Definicja zadania = co algorytm ma zrobić. Opis ciągu czynnosci, które po kolei mają być wykonane. Czynności te muszą być na tyle proste (i możliwe do wykonania), aby wykonawca algorytmu mógł je bez dodatkowego tłumaczenia, wykonać operacje elementarne; odpowiednio dobrany poziom szczegółowości. Skonczona ilość operacji elementarnych skończony czas działania. Algorytm dostaje pewne informacje (dane wejściowe) i zwraca jakieś (oczekiwane) wyniki dane wyjściowe. Może istnieć kilka przepisów, które dają w efekcie te same wyniki.

Pochodzenie nazwy: Algorytm od nazwiska w wersji łacińskiej Algorithmus, Algorismus perskiego matematyka Muhammeda ibn Musy zwanego al Chuwarismi, żyjącego w IX w (podał on algorytmy wykonywania działań arytmetycznych na liczbach dziesiętnych. Algorytmika - dział wiedzy zajmujący się badaniem algorytmów Sposoby zapisu algorytmu: słowami, za pomocą schematu blokowego, w pseudokodzie, w jednym z języków programowania Program - formalnie spisana wersja algorytmu.

Algorytm to ściśle określony ciąg kroków obliczeniowych, prowadzący do przekształcenia danych wejściowych w wyjściowe. Cechy dobrego algorytmu: Definicja problemu określa dane we. (pochodzące z dokładnie określonego zbioru wartości dozwolonych) i dane wy. Precyzyjnie zdefiniowany każdy jego krok jest jednoznacznie określony i obejmuje wyłącznie operacje elementarne. Skończony wyprodukuje wynik w skonczonej ilości kroków. Jednoznaczny (powtarzalny) jego wielokrotne wykonywanie dla identycznych danych we. daje zawsze taki sam wynik. Kompletny uwzgl ednia wszystkie możliwe przypadki, jakie mogą wystąpić podczas jego wykonywania. Uniwersalny umozliwia rozwiązanie całej klasy zadań, a nie tylko pojedynczego, ustalonego zadania.

Algorytm sekwencyjny - opis słowny Postawienie problemu: - Co należy zrobić, aby zobaczyć film Katyń? Algorytm 1a: Idź do kina Kup bilet Obejrzyj film Wróć do domu Algorytm powyższy zawiera 4 podstawowe składniki, z których każdy wymaga zakończenia wykonania pewnej akcji przed rozpoczęciem następnej. W komputerze każdy składnik będzie zapisany jako instrukcja lub grupa instrukcji (procedura). Algorytm powinien być kolejno uściślany, by mógł być w swojej ostatecznej postaci zrozumiały dla komputera, oraz by uwzględniał wszystkie okoliczności przewidziane przez projektanta.

Algorytm 1b: POCZĄTEK jeżeli nie wyświetlają filmu "Katyń to znajdź sobie inne zajęcie w przeciwnym razie idź do kina jeżeli jest kolejka to ustaw się w kolejce (na końcu?) dopóki przed Tobą stoją ludzie wykonuj przesuwaj się do przodu jeżeli są wolne miejsca to kup bilet, znajdź swoje miejsce dopóki trwa projekcja wykonuj oglądaj film w przeciwnym razie zaklnij po cichu, wyjdź z kina, :-( KONIEC wróć do domu

Przykład algorytmu: sumowanie zarobków pracowników Dane: lista pracowników z zarobkami (1) zanotuj "na boku" liczbę 0; (2) przeglądaj ankiety i dodawaj zarobki każdego pracownika do liczby "na boku"; (3) kiedy osiągniesz koniec listy, przedstaw wartość liczby "na boku" jako wynik. Cechy tego algorytmu: Działa na różnych zestawach danych, ale daje poprawne wyniki. Sam tekst algorytmu jest ograniczony i krótki, ale proces który opisuje zmienia się wraz z długościa listy pracowników.

Algorytmy przedstawione powyżej wykorzystują język naturalny oraz słowa kluczowe. Słowa kluczowe definiują podstawowe struktury sterujące programu oraz procesy podejmowania decyzji występujących w algorytmie: jeżeli... to... w przeciwnym razie dopóki... wykonuj powtarzaj... aż do Te słowa kluczowe mają swoje odpowiedniki w każdym z języków programowania. Wprowadzenie słów kluczowych do opisu słownego algorytmu jest częścią tzw. pseudo - kodu, wykorzystywanego do zapisu algorytmu. Szczegółowy algorytm jest podstawą dla prawidłowo zakodowanego programu. Algorytm z wcięciami pozwala na bardziej czytelny zapis, i stanowi nieformalną metodę ułatwiającą śledzenie dróg programu.

Oprócz algorytmów słownych, często stosuje się zapis algorytmu w postaci schematów blokowych. Schemat blokowy (block diagram, flowchart) to diagram, na którym algorytm jest reprezentowany przez opisane figury geometryczne, połączone liniami zgodnie z kolejnością wykonywania czynności wynikających z przyjętego algorytmu rozwiązania zadania; pozwala dostrzec istotne etapy algorytmu i logiczne zależności między nimi;

START czytaj: n,a(i),i=1,...n suma=0 suma=suma + a(i) i=i+1 i n tak nie druk: a(i), suma STOP

Schematy blokowe Start Stop instrukcja? tak czytanie danych, wydruk wyników nie

strzałka wskazuje kierunek przebiegu sterowania programem, łączy inne bloki, operand (prostokąt) wszystkie operacje z wyjątkiem instrukcji wyboru, predykat (romb) instrukcja wyboru, etykieta (owal) początek lub koniec sekwencji schematu. wejście/wyjście (równoległobok).

Algorytm Euklidesa Problem: mając dane dwie liczby naturalne a i b znaleźć ich największy wspólny dzielnik. Pierwotnie problem ten sprowadzał się do czysto geometrycznego problemu znalezienia wspólnej miary dla dwóch odcinków. Zadanie algorytmiczne: Dane: a, b N, Wynik: NWD(a,b).

Opis słowny: dane są dwie liczby a i b; jeśli a jest równe b, to NWD jest równe a, w przeciwnym wypadku, jeżeli a jest większe od b, to zmień a na równe a - b, a jeżeli a jest mniejsze od b to zmień b na b - a; zacznij od początku.

Schemat blokowy START czytaj: a, b a<>b tak nie Drukuj a a=a-b tak a>b nie b=b-a STOP

Algorytm Euklidesa (metoda 1) Pseudokod loop if a = b then return a; else if a > b then a := a -b; else b := b -a; Język C while(a!= b) { if(a > b) a -= b; else b -= a; } return a;

Algorytm Euklidesa (metoda 2) Język C if(a < b) { t = a; a = b; b = t; } while(b!= 0) { c = a % b; a = b; b = c; } return a;

Przy opracowywaniu algorytmu zwracamy uwagę na: jego poprawność semantyczną (składnię), prostotę, czas działania, ilość zajmowanej pamięci komputera, optymalność, ograniczenia

Zdanie proste Określa elementarny lub bardziej złożony krok algorytmu. Jeżeli jest to krok elementarny, to wystarczy przy tworzeniu programu zapisać ten krok w języku programowania. Jeżeli natomiast jest to złożony krok algorytmu, to podczas uszczegółowienia algorytmu zostanie on zastąpiony sekwencją prostszych zdań. Przykład elementarnego kroku - instrukcja podstawienia (przypisania): przypisz zmiennej suma wartość zero FORTRAN: suma = 0.0 C: suma = 0.0 ; PASCAL: suma :=0.0 ;

Zdanie złożone: oblicz pierwiastek równania kwadratowego Jest to złożony krok algorytmu wymagający uszczegółowienia. W programie jest to realizowane poprzez instrukcję złożoną grupującą ciąg instrukcji prostych.

PODEJMOWANIE DECYZJI W PROGRAMIE Zdanie decyzyjne jeśli Zdanie to zawiera strukturę opisującą decyzje podejmowane w algorytmie. Istnieją 2 rodzaje struktur: struktura prosta : jeśli... to struktura z alternatywą: jeśli... to... w przeciwnym razie

Struktura prosta jeśli warunek to zdanie gdzie warunek jest wyrażeniem przyjmującym dwie wartości: - wartość prawdy, - wartość fałszu Jeżeli warunek przyjmie wartość prawdy, to wykonuje się zdanie, a gdy warunek przyjmie fałsz, to zdanie nie zostanie wykonane.

Przykład: jeśliśrednia ocen studenta jest większa od 4.5 to wpisz studenta na listę nagród warunek : średnia ocen studenta jest większa od 4.5 Jeżeli warunek jest prawdziwy, to wykonywane jest zdanie: wpisz studenta na listę nagród

Struktura z alternatywą jeśli warunek to zdanie 1 w przeciwnym razie zdanie 2

Rozważmy następujący problem: W zależności od wartości jakie przyjmuje zmienna x (np ocena) należy wydrukować następujące komunikaty: dla x <3 komunikat negatywna dla 3 <= x <= 6 komunikat pozytywna dla x > 6 komunikat niemożliwa Algorytm przyjmie postać: jeżeli x <3 to wypisz negatywna w przeciwnym razie jeżeli 3 <= x i x <= 6 to wypisz pozytywna w przeciwnym razie wypisz niemożliwa

W programach numerycznych warunkiem jest najczęściej wyrażenie logiczne: nie, lub, i Np.: a lub b, (a lub b) i c,... W wyrażeniach logicznych występują też relacje: =, <>, >, <, <=, >= Np.: a > b, c <= d Przykład zdania decyzyjnego: jeśli (a > b) lub (c <= d) to podstaw x = 0

FORTRAN: a). IF ( warunek ) THEN zdanie 1 ENDIF b). IF ( warunek ) THEN zdanie 1 ELSE zdanie 2 ENDIF

PASCAL: a). IF warunek THEN zdanie 1; b). IF warunek THEN zdanie 1 ELSE zdanie 2;

C: a). IF warunek zdanie 1; b). IF warunek zdanie 1; ELSE zdanie 2;

Instrukcja decyzyjna wybierz Zdanie wybierz służy do wyboru jednej z kilku możliwości. Ma ono postać: wybierz przełącznik z wartość_1: zdanie_1... wartość_n: zdanie_n w przeciwnym razie akcja awaryjna Przykład: wybierz p z 1: wykonaj wariant pierwszy 2: wykonaj wariant drugi 3: wykonaj wariant trzeci w przeciwnym razie wydrukuj komunikat o błędzie

Przykład: Program cenzurka1...... wybierz ocena z 6: pisz( celujacy ); 5: pisz( bardzo dobry ); 4: pisz( dobry ); 3: pisz( dostateczny ); 2: pisz( niedostateczny ); w przeciwnym razie pisz( blad danych )...... Koniec

Program cenzurka2... jeżeli ocena = 6 to pisz( celujacy ) w przeciwnym razie jeżeli ocena = 5 to pisz( bardzo dobry ) w przeciwnym razie jeżeli ocena = 4 to pisz( dobry ) w przeciwnym razie jeżeli ocena = 3 to pisz( dostateczny ) w przeciwnym razie jeżeli ocena = 2 to pisz( niedostateczny ) w przeciwnym razie pisz( blad danych )

Blok instrukcji W przypadku, gdy w danej instrukcji, np. instrukcji warunkowej, powinna wykonać się więcej niż jedna instrukcja, wówczas stosowany jest blok instrukcji. C: { } instrukcja1; instrukcja2; instrukcja3;... Pascal: begin instrukcja1; end; instrukcja2; instrukcja3;...

Iteracja warunkowadopóki(while) dopóki(wyrażenie) wykonuj instrukcja1; wyrażenie nie tak instrukcja1 Instrukcja1 może nie wykonać się ani jeden raz!

Działanie pętli: Obliczana jest wartość wyrażenia Jeśli wyrażenie jest równe fałszywe to instrukcja1 nie jest w ogóle wykonywana Wpp. wykonywana jest instrukcja1. Ponownie obliczana jest wartość wyrażenia i ponownie sprawdzana jego prawdziwość itd. Jeśli wyrażenie będzie fałszywe, to działanie pętli zostanie przerwane Uwaga: obliczenie wartości wyrażenia odbywa się przed wykonaniem instrukcji1

Iteracja warunkowapowtarzaj...aż do... (repeat... until...) powtarzaj instrukcja1 aż do(wyrażenie) ; instrukcja1 wyrażenie tak nie Instrukcja1 musi wykonać się conajmniej jeden raz!

Działanie pętli: Wykonywana jest instrukcja1 Obliczana jest wartość wyrażenia Jeśli wyrażenie jest równe fałszywe to instrukcja1 jest wykonywana kolejny raz Ponownie obliczana jest wartość wyrażenia i ponownie sprawdzana jego prawdziwość itd. Jeśli wyrażenie będzie prawdziwe, to działanie pętli zostanie przerwane Uwaga: obliczenie wartości wyrażenia odbywa się po wykonaniu instrukcji1

Iteracja ograniczonadla(for) dla <zmienna> od <w1<> do <w2> (z krokiem <k>) wykonuj instrukcja1 ; <zmienna> + <k> <zmienna> <w1> zmienna <w2> nie instrukcja1 tak Instrukcja1 może nie wykonać się ani jeden raz!

Działanie pętli: Wykonanie instrukcji inicjalizujących pętlę <zmienna> <w1> Sprawdzenie wyrażenia warunkowego <zmienna> <w2>. Jeśli fałsz, praca pętli zostaje zakończona, Jeśli prawda, wykonana zostanie instrukcja1 Wykonanie instrukcji zwiększ <zmienna> o <k> Uwaga: sprawdzenie wyrażenia <zmienna> <w2> odbywa się przed wykonaniem instrukcja1

Instrukcje wejścia/wyjścia Umożliwiają komunikowanie się programu z użytkownikiem. Umożliwiają czytanie danych jak również wypisywanie komunikatów i wyników prowadzonych obliczeń. Np.: Pascal - read(a,b); { z klawiatury wprowadzamy : np. 12 5 } writeln(a); {drukujemy na ekranie wartość a (np. 12) }