Możliwości i ograniczenia komputerów
|
|
- Patryk Bednarski
- 7 lat temu
- Przeglądów:
Transkrypt
1 Możliwości i ograniczenia komputerów Komputer potrafi przeanalizować ogromną ilość danych pochodzących np. z wielu zdjęć rentgenowskich ludzkiego mózgu wykonanych pod stopniowo zwiększanym kątem, tworząc obraz przekroju mózgu. Obraz taki może być użyty do umiejscawiania nieregularności, np. guzów. Komputer nie potrafi przeanalizować pojedynczego zdjęcia twarzy tego samego pacjenta i określić jego wieku z dokładnością do np. 5 lat, a nawet dzieci to potrafią. Komputery są zdolne sterować w najbardziej sprawny i precyzyjny sposób dowolnie skomplikowanymi robotami przemysłowymi używanymi do konstruowania dowolnie skomplikowanych części maszyn. Komputer nie potrafi jednak pokierować robotem tak, aby z kupki gałązek utworzył ptasie gniazdo. Potrafi to każdy, nawet młody ptak. 1
2 Komputery potrafią grać w szachy na poziomie mistrzów międzynarodowych pokonują znakomitą większość ludzi. Komputery nie potrafią dostosować się jednak do nagłej zmiany reguł np. reguły dopuszczającej podwójny ruch skoczka lub ograniczenie ruchu hetmanem do 5 pól. Kilkunastoletni szachista-amator będzie bardzo szybko w stanie grać dobrze przy nowych regułach. Rozdźwięk ten związany jest z różnicą między inteligencją ludzką a komputerową (tzw. paradoks Moraveca). 2
3 Oprogramowanie (ang. software) Całość informacji w postaci zestawu instrukcji, zaimplementowanych interfejsów i zintegrowanych danych przeznaczonych dla komputera do realizacji wyznaczonych celów. Celem oprogramowania jest przetwarzanie danych w określonym przez twórcę zakresie. Oprogramowanie jest synonimem terminów program komputerowy oraz aplikacja, przy czym stosuje się go zazwyczaj do określania większych programów oraz ich zbiorów. Oprogramowanie tworzą programiści w procesie programowania. Dział informatyki, zajmujący się całościowym badaniem procesu tworzenia oprogramowania (analiza wymagań, projekt systemu, implementacja, testowanie, wdrożenie, konserwacja), to inżynieria oprogramowania. 3
4 Komunikaty i informacje Komunikat i informacja to dwa ważne pojęcia informatyki, których znaczenie nieco odbiega od przyjętego w języku codziennym. Komunikat wyodrębniony zbiór znaków danego kodu, przekazywany pomiędzy komunikującymi się obiektami w określonym porządku czasowym i przestrzennym. Relacje pomiędzy komunikatem i informacją nie są wzajemnie jednoznaczne: tę samą informację mogą przenosić różne komunikaty, np. komunikaty sformułowane w różnych językach, lub komunikaty z uzupełnieniami/wstawkami nie zawierającymi dodatkowej informacji (np. kolejne przemówienia na ten sam temat wypełnione tzw. watą słowną). dany komunikat może przenosić informację odmienną w stosunku do różnych adresatów (np. ten sam artykuł w gazecie w stosunku do różnych czytelników). 4
5 Zatem: ten sam komunikat, różnie interpretowany, może przenosić odmienną informację; w wielu aspektach można traktować informację jako wynik interpretacji komunikatu. Zapis symboliczny reguły interpretacji: K α K komunikat, I informacja, α reguła interpretacyjna. Reguła interpretacyjna może być szczególnym przypadkiem reguły ogólniejszej, stosowanej do zbioru komunikatów zbudowanych zgodnie z jednakowymi prawidłami (np. znajomość danego języka oznacza, że w większości przypadków poprawnie interpretowane są komunikaty sformułowane w tym języku). Komunikaty mogące być interpretowane w ten sposób, że różne interpretacje oparte są na sobie, są to komunikaty o różnym stopniu abstrakcji (np. komunikat pada nie tylko informuje o deszczu, lecz także dodatkowo o tym, że warto wziąć parasol). I 5
6 Niekiedy język znany jest tylko niewielu wtajemniczonym nikt postronny nie powinien być w stanie uzyskać informacji z zaszyfrowanego przekazu jest ona jednak łatwo dostępna dla posiadaczy klucza. H 2 SO 4 <script language= JavaScript > see you tomorrow jeśli uzna, to raczej opornie jeśli uzna, to raczej opornie JDOOLD HVW RPQLV GLYLVD ( Gallia est omnia divisa in partes tres w kodzie Cezara: A >D, B >E,..., itd.) Najlepsze kasztany są na placu Pigalle (agent J23; Stawka większa niż życie) 6
7 Programowanie to modyfikowanie, rozszerzanie, naprawianie, ale przede wszystkim tworzenie oprogramowania. Język programowania to usystematyzowany sposób przekazywania komputerowi poleceń do wykonania. Język programowania pozwala programiście na precyzyjne przekazanie maszynie, jakie dane mają ulec obróbce i jakie czynności należy podjąć w określonych warunkach. Języki programowania wiążą się zwykle ze sztywną składnią, dopuszczającą używanie jedynie specjalnych kombinacji wybranych symboli i słów kluczowych. Języki programowania mogą być kompilowane lub interpretowane. Formalna składnia typowego języka programowania zawiera zwykle różne warianty struktur sterujących, wzorce podstawowych instrukcji, sposoby definiowania struktur danych. 7
8 Struktury sterujące bezpośrednie następstwo wykonaj A, potem B, następnie C pseudokod C C++ Fortran77 Python wczytaj a a = a + 1 wypisz a scanf( %d,&a); a++; printf( %d,a); cin >> a; a++; cout << a; read(*,*) a a = a + 1 write(*,*) a a=input() a=a+1 print a 8
9 wybór warunkowy (rozgałęzienie warunkowe) jeżeli Q to wykonaj A, w przeciwnym razie wykonaj B Q warunek logiczny, np. a>0 pseudokod C/C++ Fortran77 Python jeżeli a > 0 a = a + 1 c = a * 3 w przeciwnym wypadku a = a 1 c = a / 3 if (a>0) {a++; c=a*3;} else {a--; c = a/3;} if (a.gt. 0) then a=a+1 c=a*3 else a=a-1 c=a/3 endif if a > 0: a=a+1 c=a*3 else: a=a-1 c=a/3 9
10 Iteracja (pętla) ograniczona wykonaj A dokładnie n razy pseudokod C++ Fortran77 Python pętla od i = 1 do n wypisz i wypisz i*i for (i=1; i<=n; i++) {cout << i; cout << i*i;} do 55 i=1, n write(*,*) i write(*,*) i*i 55 continue for i in range(1:n+1): print i print i*i 10
11 Iteracja (pętla) ograniczona dopóki Q, wykonuj A pseudokod C++ Fortran77 Python i = 1 dopóki i n wypisz i wypisz i*i i = i + 1 wykonuj A, dopóki Q i = 1 wykonuj wypisz i wypisz i*i i = i + 1 dopóki i n+1 i=1; do while (i<=n) {cout << i; cout << i*i; i++;} i=1 15 if (i.ls. n) then write(*,*) i write(*,*) i*i i=i+1 goto 15 endif i=1 while i<=n: print i print i*i i=i+1 11
12 pętle zagnieżdżone pętla od i = 1 do n dopóki i n pętla od j = 1 do i pętla od j = 1 do i wypisz i + j wypisz i + j i = i + 1 instrukcja skoku skocz do oznaczonego miejsca w programie i = 1 #G wypisz i wypisz i*i i = i + 1 jeżeli i n skocz do G 12
13 podprogramy fragment algorytmu zapisany w formie osobnej procedury lub funkcji, np. w celu umożliwienia jego wywoływania dla różnych wartości parametrów. silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym wypadku silnia = n * silnia(n-1) dodaj_i_wypisz(a, b): wypisz a + b wywołanie podprogramu wynik = silnia(10) + 1 pętla od n = 1 do 100 wypisz silnia(n) pętla od i = 1 do 100 pętla od j = 1 do 100 dodaj_i_wypisz(i, j) Przykład w C++ #include <iostream> using namespace std; int silnia(int n){ if (n == 0) return 1; else return n * silnia(n-1); } int main(){ int n; cin >> n; cout << silnia(n); } 13
14 Typy danych obiekty, na których operują algorytmy: liczby (całkowite, zmiennoprzecinkowe, zespolone, dwójkowe itp.) typ znakowy (pojedynczy znak) typ tekstowy (ciąg znaków) typ logiczny (prawda/fałsz) wskaźnik Zmienna Obszar pamięci przechowujący dane. O rodzaju i sposobie przechowywania decyduje typ zmiennej. 14
15 Struktury danych Tablica jednowymiarowa (wektor) Poszczególne komórki dostępne są za pomocą kluczy, które najczęściej przyjmują wartości numeryczne. W komórkach można przechowywać zmienne różnego typu. T1 = {1, 4, 5, 12, 24, 10, 0, -4, 12, 15} T1[2] = 4, T1[6] = 10 itp. wypisz (T1[3] + T1[4]) / 2 T2 = {"poniedziałek", "wtorek",..., "niedziela"} T2[1]= "poniedziałek" wypisz "Dzisiaj jest: ", T2[6] 15
16 Tablica wielowymiarowa Tablica 3x3: T = T T T T T T T T T = T = {{1,2,3},{4,5,6},{7,8,9}} T 12 = T[1][2] = 2 itp. pętla od i = 1 do 3 pętla od j = 1 do 3 T[i][j] = 10 // przypisanie liczby 10 wszystkim elementom Kolejka Liniowa struktura danych FIFO (First In, First Out; pierwszy na wejściu, pierwszy na wyjściu). Znaczeniowo odpowiadająca nazwie: nowe dane dopisywane są na końcu kolejki, a jako pierwsze obsługiwane są dane z początku. 16
17 Stos Liniowa struktura danych LIFO (Last In, First Out; ostatni na wejściu, pierwszy na wyjściu), znaczeniowo odpowiadająca nazwie: dane dokładane są na wierzch stosu, również z wierzchołka są ściągane). Drzewo Hierarchiczna struktura danych: korzeń (ojciec) węzeł (potomstwo); potomstwo potomstwa itp., liście na najniższym poziomie 17
18 Przykłady Generowanie podciągu Wejście: dwie liczby całkowite m i n, gdzie m <= n. Wyjście: posortowana lista m losowych liczb całkowitych z przedziału 1...n, wśród których żadna nie powtarza się dwukrotnie. test losowy Wykorzystujemy algorytm, który analizuje kolejno liczby całkowite 1, 2,..., n i na podstawie odpowiedniego testu losowego decyduje, czy wybrać, czy też odrzucić każdą z nich. Ogólnie, aby wylosować w liczb spośród p pozostałych, należy następną liczbę wybierać z prawdopodobieństwem w/p. 18
19 szkielet algorytmu: wczytaj m, n wybierz = m pozostało = n pętla od i=1 do n oblicz prawdopodobieństwo wylosowania i-tej liczby, prawd = wybierz / pozostało wygeneruj liczbę losową los z przedziału [0,1) koniec jeżeli los < prawd wypisz i wybierz = wybierz 1 pozostało = pozostało
20 wybieranie Cel realizujemy wybierając m elementów wejściowej tablicy n-elementowej. Po każdym losowaniu sprawdzamy, czy liczba się nie powtórzyła a następnie sortujemy wybrane elementy. 20
21 szkielet algorytmu: wczytaj m, n pętla od i=1 do m powtarzaj wygeneruj liczbę losową los z przedziału [1,n] jeżeli i > 1 to sprawdź, czy liczba los już wcześniej wystąpiła: wystąpiła = false pętla od j=1 do i-1 jeżeli W[j] == los wystąpiła = true zakończ pętlę jeżeli wystąpiła == true zapisz los do wyniku: W[i] = los posortuj tablicę W koniec 21
22 przemieszanie Cel realizujemy mieszając (czyli zamieniając) pierwszych m elementów wejściowej tablicy n-elementowej (czyli liczby z przedziału 1...m) z elementami 1...n tej samej tablicy (oczywiście, w szczególnym przypadku taka zamiana może nie nastąpić, gdy chcąc przemieszać i-tą liczbę wylosujemy właśnie liczbę i). Wynikiem (po posortowaniu) jest tablica złożona z pierwszych m przemieszanych elementów. 22
23 szkielet algorytmu: wczytaj m, n utwórz tablicę T=[1,2,...,n]: pętla od i=1 do n T[i] = i pętla od i=1 do m wygeneruj liczbę losową los z przedziału [1,n] zamień T[i] z T[los] Utwórz tablicę wynikową: W = T[1,2,...,m]: pętla od i=1 do m W[i] = T[i] posortuj tablicę W koniec 23
24 Wyszukiwanie Wejście: posortowana, n-elementowa tablica liczbowa T oraz liczba p. Wyjście: liczba naturalna, określająca pozycję elementu p w tablicy T, bądź 1, jeżeli element w tablicy nie występuje. wyszukiwanie binarne Wyszukiwanie binarne polega na tropieniu fragmentu tablicy, o którym wiemy, że musi zawierać element p, o ile element ten znajduje się w tablicy T. Początkowo tym fragmentem jest cała tablica. Przedział kurczy się po porównaniu środkowego elementu ze zmienną p i odrzuceniu odpowiedniej połowy tego przedziału. Proces trwa do chwili odnalezienia p w tablicy lub do momentu, gdy wiadomo, że przedział w którym musiałby się on znajdować, jest pusty. Złożoność obliczeniowa: O(log n). (Na analogicznej zasadzie działa np. algorytm bisekcji, służący do znajdywania miejsc zerowych funkcji.) 24
25 Sformułowanie algorytmu Wiemy, że jeżeli p znajduje się w gdziekolwiek w tablicy T, to musi być w określonym przedziale. Oznaczmy ten fakt skrótem: musi_być(przedział). Szkic programu: zainicjuj przedział jako 1...n pętla // niezmiennik: musi_być(przedział) jeżeli przedział pusty elementu p nie ma w tablicy T koniec oblicz wartość środek, środka przedziału użyj środek do testów, aby zmniejszyć przedział jeżeli p znaleziono podczas testu wynik = pozycja p w tablicy koniec 25
26 Przedział reprezentujemy przy pomocy dwóch indeksów: dół, góra. Oznaczenie musi_być(dół, góra) oznacza, że jeżeli element znajduje się gdzieś w tablicy, to znajduje się w przedziale domkniętym T[dół... góra]. Inicjowanie: jakie wartości muszą mieć zmienne góra i dół, aby warunek musi_być(dół, góra) był spełniony? Oczywiście 1 oraz n. A zatem: dół = 1 góra = n Następnie sprawdzamy, czy przedział jest pusty: jeżeli dół > góra wynik = -1 // elementu nie ma w tablicy koniec 26
27 Obliczamy wartość środka przedziału: środek = (dół + góra) div 2 // Dzielenie całkowite Szkic programu wygląda teraz tak: dół = 1 góra = n pętla // niezmiennik: musi_być(dół, góra) jeżeli dół > góra wynik = -1 koniec środek = (dół + góra) div 2 użyj środek do testów, aby zmniejszyć przedział [dół... góra] jeżeli p znaleziono podczas testu wynik = pozycja p w tablicy koniec 27
28 Ostatnie 4 wiersze wiążą się z porównaniem p i T[środek] oraz podjęciem odpowiednich działań w celu zachowania niezmiennika. Piszemy: jeżeli T[środek] < p: przypadek A jeżeli T[środek] == p: przypadek B jeżeli T[środek] > p: przypadek C Przypadek B oznacza, że znaleziono element: przypisujemy wynik = środek i kończymy program. Analiza przypadku A: Jeżeli T[środek] < p, to T[1] T[2]... T[środek] < p. Innymi słowy, p nie może znajdować się w przedziale T[1... środek]. Zatem, jeżeli p znajduje się w tablicy T, to znajduje się w przedziale [środek góra], co zapisujemy: musi_być(środek +1, góra). Przywracamy zatem prawdziwość niezmiennika musi_być(dół, góra) poprzez podstawienie: dół = środek
29 Analogicznie, w przypadku C przywracamy niezmiennik podstawiając góra = środek 1. dół = 1 góra = n pętla // niezmiennik: musi_być(dół, góra) jeżeli dół > góra wynik = -1 koniec środek = (dół + góra) div 2 jeżeli T[środek] < p: dół = środek + 1 jeżeli T[środek] == p: wynik = środek; koniec jeżeli T[środek] > p: góra = środek -1 29
30 Sortowanie Wejście: tablica T zawierająca n elementów (a 1, a 2,..., a n ) typu porządkowego. Wyjście: tablica o tych samych elementach, ale uporządkowana niemalejąco. metoda przez wstawianie Przypomnienie: Algorytm polega na usuwaniu pewnego elementu z danych wejściowych i wstawianiu go na odpowiednie miejsce w wynikach. Wybór następnego elementu z danych jest dowolny. Szybkość tego algorytmu zależy od struktury danych wyjściowych i implementacji operacji wstawiania. Złożoność obliczeniowa: O(n 2 ) 30
31 Schemat działania algorytmu: 1. Utwórz zbiór elementów posortowanych i przenieś do niego dowolny element ze zbioru nieposortowanego. 2. Weź dowolny element ze zbioru nieposortowanego. 3. Wyciągnięty element porównuj z kolejnymi elementami zbioru posortowanego póki nie napotkasz elementu równego lub elementu mniejszego, lub nie znajdziesz się na początku zbioru uporządkowanego. 4. Wyciągnięty element wstaw w miejsce gdzie skończyłeś porównywać. 5. Jeśli zbiór elementów nieuporządkowanych jest niepusty, wróć do punktu 2. pętla od i = 2 do n // niezmiennik: fragment T[1... i-1] jest posortowany // cel: przesunąć element T[i] w dół na właściwe miejsce pętla od j = i do 2 jeżeli T[j] < T[j-1] zamień T[j] z T[j-1] 31
32 sortowanie stogowe (przez kopcowanie) Kopiec (stóg, sterta), ang. heap: struktura danych reprezentacja zbioru elementów (np. liczb), mająca postać tzw. drzewa binarnego. Zastosowania: sortowanie przez kopcowanie porządkuje n-elementową tablicę w czasie Θ(n log n), kolejki priorytetowe: określanie operacji w zbiorze, służących do dodawania nowego elementu oraz usuwania elementu najmniejszego w czasie O(log n). Przykład kopca: 32
33 Własności kopca: 1. Uporządkowanie. Wartość każdego wierzchołka (ojca) jest nie większa niż wartości jego synów. Wniosek: najmniejszy element zbioru znajduje się w korzeniu drzewa. Nic jednak nie wiemy o wzajemnym uporządkowaniu lewego i prawego syna. 2. Kształt Synowie znajdują się na jednym lub więcej poziomach, a te na najniższym poziomie (liście) są przesunięte jak najbardziej w lewo. Wniosek: jeżeli drzewo zawiera n wierzchołków, to żaden z nich nie jest bardziej oddalony od korzenia niż o (log n) węzłów. Własności 1 i 2 są warunkami na tyle silnymi, żeby umożliwić szybkie odnalezienie elementu najmniejszego w zbiorze a jednocześnie umożliwiają szybką reorganizację struktury kopca po dodaniu lub usunięciu z niego elementu. 33
34 Realizacja kopca za pomocą tablicy: korzeń = 1 wartość(i) = x[i] lewysyn(i) = 2*i prawysyn(i) = 2*i+1 ojciec(i) = i div 2 Tablica x={12,20,15,29,23,17,22,35,40,26,51,19} Uwaga: w C/C++ tablice indeksujemy od zera a nie od jedynki! Ściśle: Tablica x[1...n] jest kopcem, jeżeli 2 i n x[i div 2] x[i]. Mówimy, że zachodzi kopiec(1,n). Fragment tablicy x[d...g] jest kopcem (czyli zachodzi kopiec(d,g)), jeżeli 2d i g x[i div 2] x[i]. 34
35 Procedury porządkowania kopca 1. Załóżmy, że x[1...n-1] jest kopcem i dodajmy nowy element x[n]. Prawdopodobnie x[1...n] nie jest już kopcem. Procedura przywracania własności kopca dla tablicy x[1...n]: Procedura dogóry(n): Przemieszczamy nowy element w górę drzewa tak daleko, jak powinien dotrzeć, zamieniając go po drodze z ojcem. Kończymy, gdy przemieszczany element stanie się większy lub równy ojcu. Uwaga: droga w górę drzewa to malejące indeksy w tablicy. Koszt operacji: O(log n). 35
36 2. Jeżeli w kopcu x[1...n] na pozycji x[1] przypiszemy nową wartość, to warunek kopiec(2,n) pozostanie prawdziwy. Procedura przywracania własności kopiec(1,n): Procedura nadół(n): Przemieszczamy element x[1] w dół drzewa (indeksy rosną!), zamieniając go po drodze z mniejszym synem, aż do chwili kiedy nie ma on już żadnych synów albo jest od nich mniejszy lub równy. Koszt operacji: O(log n). 36
37 Kolejki priorytetowe Kolejka umożliwia operację dodania i usunięcia elementu z pewnej ich sekwencji, w naszym przypadku struktury kopca. Początkowo kolejkę stanowi pusty zbiór S. Procedura wstaw(t) wstawia do kolejki nowy element t: wstaw(t): S = S {t} n++ dogóry(n) 37
38 Procedura usunmin() usuwa najmniejszy element zbioru: usunmin(): S = S \ {t} i t = min(s) S[1] = S[n] n-- nadół(n) Ostateczna postać algorytmu sortowania przez kopcowanie: pętla od i=1 do n wstaw(x[i]) // Utworzenie kopca pętla od i=1 do n usunmin() // Zdejmowanie z kopca el. min. Pesymistyczny i średni koszt operacji: Θ(n log n). 38
39 sortowanie szybkie Wykorzystuje metodę dziel i zwyciężaj (rekurencyjna) Złożoność obliczeniowa: O(n log n) Aby posortować tablicę, dzielimy ją na dwie części ze względu na wybrany element tablicy tak, żeby wszystkie elementy mniejsze od tego wybranego znalazły się po lewej stronie a większe po prawej. Następnie sortujemy rekurencyjnie każdą z części. Rekurencja kończy się, gdy przedział ma mniej niż 2 elementy. 39
40 Szkielet kodu: qsort(dół, góra): jeżeli dół góra // nie więcej niż jeden element nie rób nic koniec // cel: podzielić tablicę ze względu na pewną wartość, // która jest na koniec wstawiana na właściwe miejsce oznaczone środek. qsort(dół, środek-1) qsort(środek+1, góra) 40
41 Sortowanie za pomocą porównań Porządek wyjściowy jest wyznaczany jedynie na podstawie wyników porównań między elementami. sortowanie przez wstawianie sortowanie przez scalanie sortowanie przez kopcowanie sortowanie szybkie (quicksort) Dolne ograniczenie sortowania za pomocą porównań Twierdzenie: Dolne ograniczenie sortowania n elementów za pomocą porównań, wynosi Ω(n log n). Wniosek: Sortowanie przez kopcowanie, scalanie oraz quicksort są asymptotycznie optymalnymi algorytmami sortującymi za pomocą porównań. 41
42 Sortowanie przez zliczanie Założenie: każdy z n sortowanych elementów jest liczbą całkowitą z przedziału od 1 do k dla pewnego ustalonego k. Idea: dla każdego elementu wejściowego x należy wyznaczyć ile elementów jest mniejszych od x. Znając te liczbę, znamy jednocześnie dokładną pozycję liczby x w ciągu posortowanym. Przykład: jeżeli od x jest mniejszych 17 elementów, to x powinien się znaleźć na miejscu 18 w ciągu posortowanym (przy założeniu, że elementy nie mogą się powtarzać). 42
43 Implementacja Tablica A elementy wejściowe; B elementy wyjściowe (posortowane); C dane pomocnicze Counting-Sort(A, B, k): pętla od i=1 do k C[i]=0 pętla od j=1 do n C[A[j]] = C[A[j]]+1 // C[i] zawiera teraz liczbę elementów równych i pętla od i=2 do k C[i] = C[i] + C[i-1] // C[i] zawiera liczbę elementów mniejszych lub równych i pętla od i=n do 1 B[C[A[i]]] = A[i] C[A[i]] = C[A[i]]-1 Pętla 1: inicjalizacja. Pętla 2: zliczenie elementów równych indeksowi tablicy. Pętla 3: zliczenie elementów mniejszych lub równych indeksowi tablicy. Pętla 4: zapisanie wyników do wyjściowej tablicy; zmniejszenie zawartości tablicy C w celu uniknięcia konfliktu przy powtarzających się liczbach. 43
44 Ilustracja działania procedury a) stan po wykonaniu drugiej pętli, b) stan po wykonaniu 3 pętli, c) d) e) stan po wykonaniu odpowiednio 1, 2, 3 iteracji w czwartej pętli, f) ostateczna zawartość tablicy wyjściowej. 44
45 Czas działania W algorytmie nie występują porównania elementów, zatem nie ma tu zastosowania twierdzenie dotyczące dolnego ograniczenia dla metod sortowania przez porównanie. Pierwsza pętla: Druga pętla: Trzecia pętla: Czwarta pętla: k wykonań, n wykonań, k wykonań, n wykonań, Razem liczba operacji: O(n+k). W praktyce najczęściej k=o(n), zatem czas działania procedury wynosi w takim przypadku O(n) mniej niż czas Ω(n log n). Algorytm jest stabilny (nie zmienia kolejności takich samych liczb w tablicy wynikowej). 45
46 Sortowanie pozycyjne polega na sortowaniu liczby według najmniej znaczącej cyfry, proces jest powtarzany dla wszystkich cyfr dla pewnych długości elementów do posortowania oraz ich liczby, algorytm działa w czasie liniowym (oczywiście pod warunkiem odpowiedniego wyboru algorytmu sortującego wg kolejnej cyfry najczęściej stosuje się zliczanie) 46
47 Sortowanie kubełkowe polega na utworzeniu kubełków pojemników, w których są przechowywane liczby przeznaczone do posortowania kubełki tworzymy poprzez podzielenie przedziału, do jakiego należą sortowane liczby na szereg podprzedziałów liczby wrzucamy do odpowiedniego kubełka, sortujemy w każdym z nich i wypisujemy od kubełka pierwszego do ostatniego a) tablica do posortowania b) 10 kubełków i liczby, które do nich należą; liczby (po posortowaniu np. przez wstawianie) są wyświetlane od kubełka o najniższym numerze (B[0]) do tego o najwyższym. Operacja ta wykonywana jest w czasie liniowym O(n). 47
Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!
Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym
Bardziej szczegółowoWyszukiwanie. Wyszukiwanie binarne
Wyszukiwanie Wejście: posortowana, n-elementowa tablica liczbowa T oraz liczba p. Wyjście: liczba naturalna, określająca pozycję elementu p w tablicy T, bądź 1, jeŝeli element w tablicy nie występuje.
Bardziej szczegółowoMetoda bisekcji (inaczej połowienia przedziału lub równych podziałów)
Metoda bisekcji (inaczej połowienia przedziału lub równych podziałów) Metoda służy do wyznaczenia miejsca zerowego danej funkcji i polega na cyklicznym połowieniu zadanego z góry przedziału (w którym znajduje
Bardziej szczegółowoPodyplomowe Studium Programowania i Systemów Baz Danych
Podyplomowe Studium Programowania i Systemów Baz Danych Algorytmy, struktury danych i techniki programowania 15 godz. wykładu / 15 godz. laboratorium dr inż. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info
Bardziej szczegółowoAlgorytmy i Struktury Danych
Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu
Bardziej szczegółowoAnaliza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą
Bardziej szczegółowoAlgorytmy sortujące i wyszukujące
Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.
Bardziej szczegółowoLaboratorium nr 7 Sortowanie
Laboratorium nr 7 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) Materiały Wyróżniamy następujące metody sortowania: 1. Przez prostą zamianę
Bardziej szczegółowoProgramowanie w VB Proste algorytmy sortowania
Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich
Bardziej szczegółowoStrategia "dziel i zwyciężaj"
Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania
Bardziej szczegółowoINFORMATYKA SORTOWANIE DANYCH.
INFORMATYKA SORTOWANIE DANYCH http://www.infoceram.agh.edu.pl SORTOWANIE Jest to proces ustawiania zbioru obiektów w określonym porządku. Sortowanie stosowane jest w celu ułatwienia późniejszego wyszukania
Bardziej szczegółowoSortowanie bąbelkowe
1/98 Sortowanie bąbelkowe (Bubble sort) prosty i nieefektywny algorytm sortowania wielokrotnie przeglądamy listę elementów, porównując dwa sąsiadujące i zamieniając je miejscami, jeśli znajdują się w złym
Bardziej szczegółowoSortowanie w czasie liniowym
Sortowanie w czasie liniowym 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n Po co sortować? Podstawowy problem
Bardziej szczegółowoSortowanie przez scalanie
Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie
Bardziej szczegółowoPodstawowe algorytmy i ich implementacje w C. Wykład 9
Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny
Bardziej szczegółowoRekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:
Rekurencje Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: T(n) = Θ(1) (dla n = 1) T(n) = 2 T(n/2) + Θ(n) (dla n
Bardziej szczegółowoWykład 5. Sortowanie w czasie liniowologarytmicznym
Wykład 5 Sortowanie w czasie liniowologarytmicznym 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n 2 Zestawienie
Bardziej szczegółowo3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.
1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę
Bardziej szczegółowoTypy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:
Strona 1 z 17 Typy danych 1. Dane tekstowe rozmaite słowa zapisane w różnych alfabetach: Rozwój metod badawczych pozwala na przesunięcie granicy poznawania otaczającego coraz dalej w głąb materii: 2. Dane
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.
POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie
Bardziej szczegółowoZadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.
Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy
Bardziej szczegółowoKolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.
Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego
Bardziej szczegółowoPodstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
Bardziej szczegółowoSortowanie - wybrane algorytmy
Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe
Bardziej szczegółowoTechnologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15
Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:
Bardziej szczegółowolekcja 8a Gry komputerowe MasterMind
lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoWYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA
Rekurencja - zdolność podprogramu (procedury) do wywoływania samego (samej) siebie Wieże Hanoi dane wejściowe - trzy kołki i N krążków o różniących się średnicach wynik - sekwencja ruchów przenosząca krążki
Bardziej szczegółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoINFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227
INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne Sortowanie Dane wejściowe : trzy liczby w dowolnym porządku Dane wyjściowe: trzy liczby
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoStruktury danych: stos, kolejka, lista, drzewo
Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja
Bardziej szczegółowoSortowanie danych. Jolanta Bachan. Podstawy programowania
Sortowanie danych Podstawy programowania 2013-06-06 Sortowanie przez wybieranie 9 9 9 9 9 9 10 7 7 7 7 7 10 9 1 3 3 4 10 7 7 10 10 10 10 4 4 4 4 4 4 3 3 3 3 2 2 2 2 2 2 2 3 1 1 1 1 1 1 Gurbiel et al. 2000
Bardziej szczegółowoDefinicja. 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 )
SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie
Bardziej szczegółowoINFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227
INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn
Bardziej szczegółowoEfektywna metoda sortowania sortowanie przez scalanie
Efektywna metoda sortowania sortowanie przez scalanie Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Metoda dziel i zwycięŝaj Dzielimy
Bardziej szczegółowoAlgorytm selekcji Hoare a. Łukasz Miemus
Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Algorytmy na tablicach Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. III Jesień 2013 1 / 23 Dwadzieścia pytań Zasady 1 Osoba 1 wymyśla hasło z ustalonej
Bardziej szczegółowoPodstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy
1 Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com
Bardziej szczegółowoZajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 5 Algorytmy i wskaźniki dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Plan Zapis i odczyt z plików tekstowych O tablicach ciąg dalszy Referencje
Bardziej szczegółowoSortowanie. Bartman Jacek Algorytmy i struktury
Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39
Bardziej szczegółowoKlasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny
Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady
Bardziej szczegółowoAlgorytmy. Programowanie Proceduralne 1
Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa
Bardziej szczegółowoALGORYTMY. 1. Podstawowe definicje Schemat blokowy
ALGORYTMY 1. Podstawowe definicje 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
Bardziej szczegółowoMetody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/
Bardziej szczegółowoJęzyki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Bardziej szczegółowoInformatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy
Informatyka wprowadze do algorytmów (II) dr hab. inż. Mikołaj Morzy plan wykładu cechy algorytmów sposoby zapisu algorytmów klasyfikacja algorytmów przykłady algorytmów sumowa przeszukiwa ciągu liczb sortowa
Bardziej szczegółowoPodstawy Informatyki. Wykład 6. Struktury danych
Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoAlgorytmy i struktury danych Matematyka III sem.
Algorytmy i struktury danych Matematyka III sem. 30 godz. wykł. / 15 godz. ćw. / 15 godz. projekt dr inŝ. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info Literatura T.H. Cormen i inni, Wprowadzenie
Bardziej szczegółowoSortowanie. LABORKA Piotr Ciskowski
Sortowanie LABORKA Piotr Ciskowski main Zaimplementuj metody sortowania przedstawione w następnych zadaniach Dla każdej metody osobna funkcja Nagłówek funkcji wg uznania ale wszystkie razem powinny być
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu
Bardziej szczegółowoI. Podstawy języka C powtórka
I. Podstawy języka C powtórka Zadanie 1. Utwórz zmienne a = 730 (typu int), b = 106 (typu long long), c = 123.45 (typu double) Wypisz następujące komunikaty: Dane sa liczby: a = 730, b = 106 i c = 123.45.
Bardziej szczegółowoWstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer
Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoZadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.
Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9
Bardziej szczegółowoWykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe
I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom
Bardziej szczegółowoWykład 2. Poprawność algorytmów
Wykład 2 Poprawność algorytmów 1 Przegląd Ø Poprawność algorytmów Ø Podstawy matematyczne: Przyrost funkcji i notacje asymptotyczne Sumowanie szeregów Indukcja matematyczna 2 Poprawność algorytmów Ø Algorytm
Bardziej szczegółowoALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny
ALGORYMY Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu
Bardziej szczegółowoMateriał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje
Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w
Bardziej szczegółowoKontrola przebiegu programu
Kontrola przebiegu programu Wykład 9 Instrukcje sterujące: pętle rozgałęzienia skoki PRZYPOMINAJKA Zadanie : Zaprojektuj rekurencyjny przepis na wyznaczenie największej takiej liczby m, że 2 m jest podzielnikiem
Bardziej szczegółowoProgramowanie Proceduralne
Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 1 / 59 Cel wykładów z programowania
Bardziej szczegółowoPodstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok
Bardziej szczegółowoPętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady
Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy
Bardziej szczegółowoAlgorytmy. Programowanie Proceduralne 1
Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa
Bardziej szczegółowoprowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
Bardziej szczegółowoALGORYTMY. 1. Podstawowe definicje Schemat blokowy
ALGORYTMY 1. Podstawowe definicje 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
Bardziej szczegółowo1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
Bardziej szczegółowoJeszcze o algorytmach
Jeszcze o algorytmach Przykłady różnych, podstawowych algorytmów 11.01.2018 M. Rad Plan Powtórka Znajdowanie najmniejszego elementu Segregowanie Poszukiwanie przez połowienie Wstawianie Inne algorytmy
Bardziej szczegółowoPodstawy Informatyki. Sprawność algorytmów
Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych
Bardziej szczegółowoZłożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to
Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to wprowadzili J. Hartmanis i R. Stearns. Najczęściej przez zasób rozumie się czas oraz pamięć dlatego
Bardziej szczegółowoAlgorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne
Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może
Bardziej szczegółowoALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH Temat : Drzewa zrównoważone, sortowanie drzewiaste Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/
Bardziej szczegółowoZaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)
Bardziej szczegółowoAlgorytmy i struktury danych Sortowanie IS/IO, WIMiIP
Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP Danuta Szeliga AGH Kraków Spis treści I 1 Wstęp 2 Metody proste 3 Szybkie metody sortowania 4 Algorytmy hybrydowe Sortowanie hybrydowe Sortowanie introspektywne
Bardziej szczegółowoPę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
Pętle wielokrotne wykonywanie ciągu instrukcji. Bardzo często w programowaniu wykorzystuje się wielokrotne powtarzanie określonego ciągu czynności (instrukcji). Rozróżniamy sytuacje, gdy liczba powtórzeń
Bardziej szczegółowoPRÓBNY EGZAMIN MATURALNY Z INFORMATYKI
PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI POZIOM ROZSZERZONY ARKUSZ I STYCZEŃ 2014 Instrukcja dla zdającego 1. Sprawdź, czy arkusz egzaminacyjny zawiera 9 stron (zadania 1 3). Ewentualny brak zgłoś przewodniczącemu
Bardziej szczegółowoProgramowanie dynamiczne
Programowanie dynamiczne Patryk Żywica 5 maja 2008 1 Spis treści 1 Problem wydawania reszty 3 1.1 Sformułowanie problemu...................... 3 1.2 Algorytm.............................. 3 1.2.1 Prosty
Bardziej szczegółowoProgramowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Bardziej szczegółowoE S - uniwersum struktury stosu
Temat: Struktura stosu i kolejki Struktura danych to system relacyjny r I r i i I U,, gdzie U to uniwersum systemu, a i i - zbiór relacji (operacji na strukturze danych). Uniwersum systemu to zbiór typów
Bardziej szczegółowoJednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów:
Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów: Listy rozkładane są do różnych przegródek. O tym, do której z nich trafi koperta, decydują różne fragmenty
Bardziej szczegółowoAlgorytmika i pseudoprogramowanie
Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry
Bardziej szczegółowoAlgorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie
Algorytmika i programowanie dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Algorytmy i sposoby ich przedstawiania Algorytm - informatyczny opis planu rozwiązania zadania Sposoby
Bardziej szczegółowoInformacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char
Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od
Bardziej szczegółowoProgramowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41
Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje
Bardziej szczegółowo1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.
Temat: Technologia informacyjna a informatyka 1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji. Technologia informacyjna (ang.) Information Technology, IT jedna
Bardziej szczegółowoPodyplomowe Studium Informatyki
Podyplomowe Studium Informatyki Wstęp do informatyki 30 godz. wykładu dr inż. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info Literatura D. Harel, Rzecz o istocie informatyki. Algorytmika, WNT
Bardziej szczegółowoProgramowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego
Bardziej szczegółowoPo uruchomieniu programu nasza litera zostanie wyświetlona na ekranie
Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Rekurencja, metoda dziel i zwyciężaj Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. VIII Jesień 2014 1 / 27 Rekurencja Recursion See Recursion. P. Daniluk(Wydział
Bardziej szczegółowoEGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew
1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;
Bardziej szczegółowoWstęp do programowania
wykład 4 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Pętle wykonujące się podaną liczbę razy Jeśli chcemy wykonać pewien fragment programu określoną liczbę razy, możemy użyć
Bardziej szczegółowoZapis algorytmów: schematy blokowe i pseudokod 1
Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu
Bardziej szczegółowoListy, kolejki, stosy
Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:
Bardziej szczegółowoAnaliza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe 15 stycznia 2019 Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r P Jaka wartość zostanie zwrócona
Bardziej szczegółowoZadanie projektowe 1: Struktury danych i złożoność obliczeniowa
Łukasz Przywarty 171018 Data utworzenia: 24.03.2010r. Mariusz Kacała 171058 Prowadzący: prof. dr hab. inż. Adam Janiak oraz dr inż. Tomiasz Krysiak Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Organizacja wykładu. Problem Sortowania. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury
Bardziej szczegółowoTablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011
Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu
Bardziej szczegółowo