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

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

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

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

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

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

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

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Analiza algorytmów zadania podstawowe

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

Strategia "dziel i zwyciężaj"

Podstawy Programowania Algorytmy i programowanie

Algorytmy. Programowanie Proceduralne 1

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Programowanie w VB Proste algorytmy sortowania

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

Jeszcze o algorytmach

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

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

Algorytmy sortujące i wyszukujące

Algorytmy. Programowanie Proceduralne 1

Algorytm. a programowanie -

1 Wprowadzenie do algorytmiki

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

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

Efektywna metoda sortowania sortowanie przez scalanie

Sortowanie. LABORKA Piotr Ciskowski

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

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

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Algorytmy i Struktury Danych.

Laboratorium nr 7 Sortowanie

Wykład 4. Sortowanie

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

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

INFORMATYKA SORTOWANIE DANYCH.

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

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

Matematyczne Podstawy Informatyki

Podstawy Informatyki. Sprawność algorytmów

Struktury Danych i Złożoność Obliczeniowa

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Informatyka A. Algorytmy

Programowanie Proceduralne

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

Algorytmy i struktury danych

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

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

Metodyki i Techniki Programowania 2

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

Sortowanie - wybrane algorytmy

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Algorytm. Krótka historia algorytmów

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Algorytmy. 1. Sortowanie 2. Statki i okręty. programowanie cz.7. poniedziałek, 2 marca 2009

Wskaźniki. Programowanie Proceduralne 1

Algorytmy i struktury danych. Wykład 4

Sortowanie przez wstawianie Insertion Sort

Podstawy Programowania

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

Sortowanie przez scalanie

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)

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

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

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

Proste algorytmy w języku C

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Analiza algorytmów zadania podstawowe

Algorytm selekcji Hoare a. Łukasz Miemus

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Wybrane algorytmy tablicowe

Efektywność algorytmów

ALGORYTMY POSZUKIWANIA I PORZĄDKOWANIA ELEMENTY JĘZYKA PROGRAMOWANIA

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

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel

Sortowanie Shella Shell Sort

Wstęp do programowania

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Tablice jednowymiarowe

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Sortowanie w czasie liniowym

Definicja algorytmu brzmi:

Definicje. Algorytm to:

Wstęp do programowania

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

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

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

Algorytmy i Struktury Danych.

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Proste algorytmy w języku C

Temat 7. Najlżejsze i najcięższe algorytmy sortowania

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

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

Wykład 2. Poprawność algorytmów

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Transkrypt:

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B

Plan prezentacji (1) Co to jest algorytm? Zapis algorytmów Algorytmy sortowania: Sortowanie przez wybór (selectsort) Sortowanie bąbelkowe (bubblesort) Sortowanie przez scalanie (mergesort) Sortowanie szybkie (quicksort) M. M. Sysło, Algorytmy, WSiP, 2002

Plan prezentacji (2) Podział kodu źródłowego

Co to jest algorytm? Algorytm jest przepisem opisującym krok po kroku rozwiązanie problemu lub osiągnięcie jakiegoś celu Algorytmika to dziedzina zajmująca się algorytmami i ich właściwościami

Algorytm Słowo algorytm wywodzi się od nazwiska arabskiego matematyka i astronoma. Muhammad ibn Musa al- Chuwarizmi żył na przełomie VIII i IX wieku, jest uznawany za prekursora metod obliczeniowych w matematyce https://pl.wikipedia.org/wiki/ Muhammad_ibn_Musa_al- Chuwarizmi

Przykład algorytmu https://www.kwestiasmaku.com/przepis/kakaowe-ciasto-bez-pieczenia

Przykład algorytmu https://www.kwestiasmaku.com/przepis/kakaowe-ciasto-bez-pieczenia

Przykład algorytmu https://www.kwestiasmaku.com/przepis/kakaowe-ciasto-bez-pieczenia

Algorytm Euklidesa Algorytm wyznaczania największego wspólnego dzielnika dwóch dodatnich liczb całkowitych został sformułowany w IV w. p.n.e. przez Euklidesa

Co to jest program? Program to lista szczegółowych instrukcji przekazywanych komputerowi do realizacji określonych zadań

Program i przepis a algorytm Gotowanie Informatyka Składniki Dane Przepis Program Kucharz i kuchnia Komputer Danie Wynik

Zapis algorytmów Algorytm może być zapisywany na różne sposoby: językiem naturalnym, pseudokodem, schematem blokowym, językiem programowania

Znajdowanie elementu maksymalnego w tablicy Dane wejściowe: n-elementowa tablica liczb Dane wyjściowe: wartość największej liczby w tablicy

Znajdowanie elementu maksymalnego w tablicy Przypisz maksimum wartość początkowego elementu tablicy Dla kolejnych elementów tablicy: Jeśli dany element jest większy od maksimum Przypisz maksimum wartość danego elementu

Znajdowanie elementu maksymalnego w tablicy 1. Przypisz maksimum wartość początkowego elementu tablicy. 2. Przypisz zmiennej indeks wartość 1. 3. Jeśli indeks jest większy/równy n idź do 6. 4. Jeśli element wskazywany przez indeks jest większy od maksimum, to przypisz maksimum wartość elementu wskazywanego przez indeks 5. Zwiększ indeks o 1 i idź do 3. 6. Koniec (element największy jest w zmiennej maksimum).

Znajdowanie elementu maksymalnego w tablicy start dane: tablica t i jej rozmiar n m = t[0] i = 1 TAK jeśli i < n NIE TAK jeśli t[i] > m NIE m = t[i] i = i + 1 koniec

Znajdowanie elementu maksymalnego w tablicy float max(float t[], int n){ float m = t[0]; int i; for( i=1; i<n; i++){ if( t[i] > m ) m = t[i]; } return m; }

Znajdowanie pozycji elementu maksymalnego w tablicy Przypisz maksimum_indeks wartość 0 Dla kolejnych elementów tablicy: Jeśli dany element jest większy od wskazywanego przez maksimum_indeks Przypisz maksimum_indeks wartość indeksu danego elementu

Sortowanie bąbelkowe Jeżeli ciąg nie jest uporządkowany, to istnieją dwa sąsiednie elementy, które są w złej kolejności

Sortowanie bąbelkowe 3 5 1 2 8 4 7 6 3 1 5 2 8 4 7 6 3 1 2 5 8 4 7 6 3 1 2 5 4 8 7 6 3 1 2 5 4 7 8 6 3 1 2 5 4 7 6 8

Sortowanie bąbelkowe 3 1 2 5 4 7 6 8 1 3 2 5 4 7 6 8 1 2 3 5 4 7 6 8 1 2 3 4 5 7 6 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Sortowanie bąbelkowe Wykonaj n-1 przebiegów przez tablicę Wykonaj n-i porównań sąsiednich elementów (gdzie i to numer iteracji) Jeśli elementy są nie po kolei to zamień je miejscami

Sortowanie przez wybór Wyszukujemy pozycję najmniejszego elementu i przestawiamy go na właściwą pozycję Następnie kontynuujemy dla pozostałej części tablicy

Sortowanie przez wybór 3 5 1 2 8 4 7 6 1 5 3 2 8 4 7 6 1 2 3 5 8 4 7 6 1 2 3 5 8 4 7 6 1 2 3 4 8 5 7 6 1 2 3 4 5 8 7 6

Sortowanie przez wybór 1 2 3 4 5 8 7 6 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Sortowanie przez scalanie Podziel tablicę na dwie równe części Zastosuj sortowanie przez scalanie do każdej z nich oddzielnie Połącz posortowane podciągi w jeden ciąg posortowany

Sortowanie przez scalanie Scalanie Procedura scalania dwóch ciągów a[0..n-1] i b[0..m-1] do ciągu c[0..n+m-1] 1. Ustaw indeksy na początek ciągów: i=0, j=0 2. Jeśli w ciągu a nie pozostało już nic do przetworzenia (i>=n), to dołącz pozostałe elementy z b co c i zakończ 3. Jeśli w ciągu b nie pozostało już nic do przetworzenia (j>=m), to dołącz pozostałe elementy z a co c i zakończ 4. Jeśli a[i] <= b[j] to dołącz a[i] do c i zwiększ i o 1, w p.p. dołącz b[j] do c i zwiększ j o 1. 5. Powtarzaj od 2.

Sortowanie przez scalanie 4 5 7 8 1 2 3 6

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3 4

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3 4 5

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3 4 5 6

Algorytmy sortowania Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3 4 5 6 7 8

Sortowanie przez scalanie Scalanie Procedura scalania dwóch ciągów a[0..n-1] i b[0..m-1] do ciągu c[0..n+m-1] 1. Ustaw indeksy na początek ciągów: i=0, j=0 2. Jeśli w ciągu a nie pozostało już nic do przetworzenia (i>=n), to dołącz pozostałe elementy z b co c i zakończ 3. Jeśli w ciągu b nie pozostało już nic do przetworzenia (j>=m), to dołącz pozostałe elementy z a co c i zakończ 4. Jeśli a[i] <= b[j] to dołącz a[i] do c i zwiększ i o 1, w p.p. dołącz b[j] do c i zwiększ j o 1. 5. Powtarzaj od 2.

Sortowanie szybkie Podziel tablicę na dwie części: mniejsze i większe od wybranego elementu Zastosuj sortowanie szybkie do każdej z nich oddzielnie Połącz posortowane podciągi w jeden ciąg posortowany

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 7 8 4 6 1 3 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 7 8 4 6 1 3 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 7 8 4 6 1 3 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 7 8 4 6 1 3 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 8 7 6 1 3 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 8 7 6 1 3 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 8 7 6 1 3 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 7 6 8 3 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 7 6 8 3 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 3 6 8 7 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 3 6 8 7 5

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 3 5 8 7 6

Algorytmy sortowania Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 3 5 8 7 6 1 2 3 4 5 8 7 6 1 2 3 4 5 8 7 6 1 2 3 4 5 8 7 6 1 2 3 4 5 6 7 8

Pliki nagłówkowe W złożonych programach istnieje konieczność rozdzielenia kodu źródłowego na kilka plików

Pliki nagłówkowe deklaracje funkcji funkcja główna kod źródłowy funkcji

Pliki nagłówkowe main.c

Pliki nagłówkowe sort.h

Pliki nagłówkowe max.c

Absolutne minimum Przed napisaniem programu przeanalizuj działanie algorytmu Złożony program rozdziel na kilka plików źródłowych