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

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

Matematyczne Podstawy Informatyki

Kierunek: Informatyka. Przedmiot:

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Algorytmy. Programowanie Proceduralne 1

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

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

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Algorytmy. Programowanie Proceduralne 1

tablica: dane_liczbowe

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

( wykł. dr Marek Piasecki )

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

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

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Zmienne, stałe i operatory

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

2 Przygotował: mgr inż. Maciej Lasota

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

Programowanie w języku C++

Algorytmy i struktury danych.

Podstawy programowania C. dr. Krystyna Łapin

Załącznik Nr 5 do Zarz. Nr 33/11/ Kod przedmiotu:aisd2

Algorytmy i Struktury Danych.

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

KARTA MODUŁU KSZTAŁCENIA

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

Język C zajęcia nr 11. Funkcje

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Algorytmy i Struktury Danych.

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Wskaźniki. Informatyka

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Metodyki i techniki programowania

C++ wprowadzanie zmiennych

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Wstęp do Programowania, laboratorium 02

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 )

ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory relacyjne i logiczne, instrukcja warunkowa if

Projektowanie i Analiza Algorytmów

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

ID2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki stacjonarne

PRZEWODNIK PO PRZEDMIOCIE

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 3 - sem.iii. Dr inż. M. Czyżak

Katedra Elektrotechniki Teoretycznej i Informatyki. sem. II - wykład 6. Dr hab. inż. M. Czyżak

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

ALGORYTMY I STRUKTURY DANYCH

Przykładowe sprawozdanie. Jan Pustelnik

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Metodyki i techniki programowania

Definicje. Algorytm to:

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

Wykład 5_2 Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Struktury danych i algorytmy. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Argumenty wywołania programu, operacje na plikach

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

Algorytmy i Struktury Danych

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

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

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

Wstęp do wskaźników w języku ANSI C

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

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Część 4 życie programu

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

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

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

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

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

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

Algorytmy i struktury danych. wykład 1

Algorytmy i struktury danych Matematyka III sem.

Algorytm. a programowanie -

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Proste algorytmy w języku C

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010.

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

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

IZ2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki niestacjonarne

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Język C zajęcia nr 5

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Drzewa poszukiwań binarnych

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Transkrypt:

Wykład 1 Wprowadzenie do algorytmów Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami Wykaz literatury 1. N. Wirth - Algorytmy+Struktury Danych = Programy, WNT Warszawa 1999 2. R. Sedgewick - Algorytmy w C++, Oficyna Wydawnicza READ ME - Warszawa, 1999 3. T.H. Cormen, Ch E. Leiserson, R.L. Rivest - Wprowadzenie do algorytmów, WNT Warszawa 1997, 1998 4. L Banachowski, K.Diks, W. Rytter - Algorytmy i struktury danych, WNT Warszawa, 1999 5. D. Harel - Rzecz o istocie informatyki, Algorytmika, WNT Warszawa, 1992 6. J. Bentley - Perełki oprogramowania, WNT Warszawa, 1992 Zofia Kruczkiewicz, USM, Algorytmy i struktury danych, Wykład 1_1 1

1. Wstęp do algorytmów i struktur danych Algorytm Dane wejściowe Algorytm (przepis) Program Narzędzia Wykonawca Komputer Dane wyjściowe Definicje algorytmu: 1) reguła przekształcania wyrażeń matematycznych przez przetwarzanie tych samych działań na kolejno otrzymywanych wynikach działań poprzednich 2) dokładny przepis wykonania szeregu operacji w celu rozwiązania określonego zagadnienia, a może być wykorzystany do rozwiązania całej grupy problemów należących do określonej klasy. Definicja informatyki: Informatyka- zespół dyscyplin naukowych i technicznych zajmujących się przetwarzaniem informacji, zwłaszcza przy użyciu środków automatycznych (np. komputerów). Przetwarzanie informacji - wykonywanie usystematyzowanego ciągu operacji na zbiorze danych; operacjami tymi mogą być: sortowanie, wyszukiwanie, wyliczanie itp. Przykłady algorytmów: przepis na sernik, algorytm Euklidesa (znajdowanie największego wspólnego podzielnika). Budowa algorytmu wymaga zastosowania: danych, struktur danych instrukcji sterujących i wyrażeń. Zofia Kruczkiewicz, USM, Algorytmy i struktury danych, Wykład 1_1 2

Schematy blokowe, język ELI2D Zofia Kruczkiewicz, USM, Algorytmy i struktury danych, Wykład 1_1 3

2. Algorytmy z rozgałęzieniami Sortowanie trzech danych z wykorzystaniem relacji między ich wartościami 1) Sformułowanie problemu drzewo algorytmu a) porządkowanie zbioru liczb przez porównania ich wartosci Liczba danych Pary Liczba porównań Całkowita liczba porównań n=2 (d1,d2) 1 1=2-1=1 n=3 (d1,d2),(d1,d3) (d2,d3) 3 3=(3-1)+(3-2) =2+1 Liczba porównań jest liczbą 2-kombinacji zbioru n elementowego i jest równa: n! n ( n 1) ( n 2)! n ( n 1) = = 2! ( n 2!) 2 ( n 2)! 2 a) liczba uporządkowań trzech danych jest równa u=1*2*3, ponieważ każda z danych ustawiona na trzecim miejscu jest łączona z dwoma ustawieniami pary pozostałych liczb ustawionych przed nią. Jest to liczba wszystkich permutacji trzech danych, czyli 3!. Dla n danych liczba permutacji jest równa n!, czyli tyle jest różnych uporządkowań n danych b) drzewo algorytmu pozwala wyznaczyć wszystkie uporządkowania danych oraz określić pracochłonność tego algorytmu czyli złożoność obliczeniową algorytmu: najlepszą (dwa porównania) najgorszą (trzy porównania) równą minimalnej i maksymalnej liczbie poziomów drzewa algorytmu Zofia Kruczkiewicz, USM, Algorytmy i struktury danych, Wykład 1_1 4

d) drzewo algorytmu a<=b b<=c a<=c (a,b,c) c a<=c (b,a,c) b<=c (a,c,b) (c,a,b) (b,c,a) (c,b,a) 2) Projekt programu a) należy wprowadzić z klawiatury trzy liczby a, b, c b) należy przyjąć, że każde porównanie wykonane w węźle drzewa jest warunkiem instrukcji if c) przejście na lewo w drzewie oznacza wykonanie instrukcji po if, która jest końcową instrukcją wyprowadzenia trójki uporządkowanych liczb d) przejście na prawo w drzewie oznacza wykonanie alternatywnej instrukcji po, która albo jest kolejną instrukcją if albo końcową instrukcją wyprowadzenia trójki uporządkowanych liczb e) liście drzewa odpowiadają instrukcji wyprowadzenia trójki uporządkowanych liczb czyli wyświetleniu na ekranie trójki uporządkowanych liczb zgodnie z ich bieżącymi wartościami Zofia Kruczkiewicz, USM, Algorytmy i struktury danych, Wykład 1_1 5

3) Implementacja 3.1) Program w języku Eli2D Zofia Kruczkiewicz, USM, Algorytmy i struktury danych, Wykład 1_1 6

3.2) Program w języku C++ #pragma hdrstop #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------- #pragma argsused void main(int argc, char* argv[]) { int a,b,c; printf("%s","podaj a: "); scanf("%d",&a); printf("%s","podaj b: "); scanf("%d",&b); printf("%s","podaj c: "); scanf("%d",&c); if (a<=b) if (b<=c) printf("\n a=%i, b=%i, c=%i", a,b,c); if (a<=c) printf("\n a=%i, c=%i, b=%i", a,c,b); printf("\n c=%i, a=%i, b=%i", c,a,b); if (a <= c) printf("\n b=%i, a=%i, c=%i", b,a,c); if (b<=c) printf("\n b=%i, c=%i, a=%i", b,c,a); printf("\n c=%i, b=%i, a=%i", c,b,a); getch(); } //a<=b, b<=c // a<=b, b>c, a<=c // a<=b, b>c, a>c // a>b, a<=c //a>b, a>c, b<=c //a>b, a>c, b>c Zofia Kruczkiewicz, USM, Algorytmy i struktury danych, Wykład 1_1 7

Złożoność obliczeniowa programu w języku C/C++ Miarą oszacowania złożoności obliczeniowej programu może być tzw. czasochłonność operacji, czyli liczba elementarnych jednostek czasowych, jakie są potrzebne do wykonania wszystkich operacji w programie Operacja Funkcje printf, scanf 1000 Czasochłonność Funkcje malloc, free 800 Funkcje trygonometryczne (sin, cos...) 500 Operacje zmiennoprzecinkowe 100 Dzielenie liczb całkowitych 30 Mnożenie liczb całkowitych 20 Wywołanie funkcji 10 Indeksowanie tablicy 6 Operacje przesunięcia 5 Dodawanie/odejmowanie, przypisanie 5 Wyłuskanie wskaźnika 2 Operatory bitowe: &,, ~ 1 Operatory logiczne: &&,,! 1 Zofia Kruczkiewicz, USM, Algorytmy i struktury danych, Wykład 1_1 8