Michał Kazimierz Kowalczyk rok 1, semestr 2 nr albumu indeksu: Algorytmy i struktury danych. Problem połączeń
|
|
- Ewa Zalewska
- 5 lat temu
- Przeglądów:
Transkrypt
1 Michał Kazimierz Kowalczyk rok 1, semestr 2 nr albumu indeksu: Algorytmy i struktury danych Problem połączeń
2 Określenie problemu Problem połączeń możemy odnaleźć w wielu dziedzinach. Dla potrzeb tego projektu zobrazujemy go na przykładzie sieci informatycznych. Każde urządzenie istniejące w sieci posiada swój identyfikator, który umożliwia nam odwołanie się doń z zewnątrz. Jednak oprócz kwestii identyfikacji elementów w sieci, musimy rozważyć inny problem sposób łączenia się z omawianymi urządzeniami, a konkretniej wyznaczenie drogi, poprzez jaką muszą popłynąć dane od adresata dostały się do odbiorcy. Istnieją dwie możliwości: 1. Stworzenie połączenia bezpośrednio między każdym elementem (metoda inwazyjna, ale najprostsza). 2. Wykorzystanie istniejących połączeń pośrednich między urządzeniami (metoda nieinwazyjna, ale skomplikowana). Zakładamy więc, że możliwość pierwsza jest tylko ostatecznością i próbujemy ją omijać dzięki możliwości drugiej. Po tym krótkim wstępie spróbujemy określić nasz problem w sposób ogólny. Posiadając n elementów wyznaczyć m połączeń między nimi, ograniczając nawiązywanie ilość nowych połączeń poprzez wykorzystywanie ścieżek pośrednich. Ustalmy nazewnictwo, które pozwoli nam w prosty sposób określać bardziej abstrakcyjne podproblemy. Elementem będziemy nazywali każdy obiekt, który będziemy chcieli połączyć, natomiast identyfikatorem numer pozwalający nam się do niego odwołać. Ścieżką nazywamy zbiór połączeń między elementami tworzącymi sieć pozwalającą połączyć dowolne elementy zawierające się w niej. Stworzenie nowego połączenia nazwiemy scaleniem. Proponowane rozwiązanie Stwórzmy algorytm opierający się na drzewiastej strukturze danych, zaimplementujmy go w językach C/C++ i sprawdźmy jego działanie na różnych danych. Poprzez modyfikacje spróbujmy odnaleźć najbardziej optymalne rozwiązanie dla naszych potrzeb. Dla wybierania dwóch elementów ze zbioru do połączenia skorzystamy z funkcji losowych zawartych w GNU Scientific Library. Wszelki kod zawarty w tym projekcie został przetestowany w środowisku programistycznym Dev-C++ uruchomionym pod Windows Vista. Zacznijmy od najprostszego rozwiązania algorytmu szybkie wyszukiwanie.
3 Szybkie wyszukiwanie Algorytm ten będzie przeszukiwał tablicę identyfikatorów elementów z zakresu (n - 1) maksymalna ilość scaleń (twierdzenie z teorii grafów). Istniejące połączenie między elementami będziemy określać przez jeden wybrany identyfikator obiektu z tej sieci. Podczas łączenia dwóch sieci przepiszemy główny identyfikator pierwszej z nich do drugiej. Oto kod naszego algorytmu: /*Funkcja otrzymuje następujące argumenty: tablicę elementów, ich liczbę (n), ilość scaleń, wskaźnik na obiekt generatora liczb losowych*/ void quicksearch (unsigned array[], unsigned length, unsigned max, gsl_rng *r){ unsigned i, element1, element2, commonvalue; /*Dopóki ilość pozostałych scaleń jest różna od */ while (max){ /*Wygenerowanie losowych identyfikatorów elementów*/ element1 = gsl_rng_uniform (r) * length; element2 = gsl_rng_uniform (r) * length; /*Jeśli dwa identyfikatory wskazują na elementy z tej samej sieci, pomiń ten przypadek*/ /*Połącz dwie sieci*/ if (array[element1] == array[element2]) continue; commonvalue = array[element1]; for (i = ; i < length; i++) max--; if (array[i] == commonvalue) array[i] = array[element2];
4 Algorytm ten pozwolił nam utworzyć wykres zależności czasu liczonego w sekundach (oś Y) względem ilości elementów (oś X) % 75% 5% 25% Na wykresie znajdują się 4 krzywe, 25 / 5 / 75 / 1 %. Wartości te oznaczają ile z możliwych scaleń miało zostać dokonanych, gdzie 1 % to (n - 1) scaleń. Jak widzimy, zależność ta jest wykładnicza a ilość scaleń zmienia wpływa na funkcje proporcjonalnie względem czasu. Jak widzimy, algorytm ten nie nadaje do bardziej rozległych sieci. Spróbujmy go zmienić.
5 Szybkie scalanie Algorytm ten będzie również pobierał 2 losowe identyfikatory elementów. Jednak zamiast tworzyć wydzielone sieci, będzie tworzył ścieżki. Obiekty łączone będą swoimi korzeniami, scalając dwie gałęzie. Dwie sieci będą mogły zostać połączone tylko wtedy, gdy ich korzenie będą różne. /*Funkcja otrzymuje następujące argumenty: tablicę elementów, ich liczbę (n), ilość scaleń, wskaźnik na obiekt generatora liczb losowych*/ void quickmerge (unsigned array[], unsigned length, unsigned max, gsl_rng *r){ unsigned i, element1, element2; /*Dopóki ilość pozostałych scaleń jest różna od */ while (max){ /*Wygenerowanie losowych identyfikatorów elementów*/ element1 = gsl_rng_uniform (r) * length; element2 = gsl_rng_uniform (r) * length; /*Wyszukiwanie korzenia dla elementu 1*/ while (element1!= array[element1]) element1 = array[element1]; /*Wyszukiwanie korzenia dla elementu 2*/ while (element2!= array[element2]) element2 = array[element2]; /*Jeśli dwa identyfikatory wskazują na elementy z tej samej sieci, pomiń ten przypadek*/ if (element1 == element2) continue; /*Dołącz korzeń drugiej sieci za korzeń sieci pierwszej*/ array[element2] = element1; max--;
6 Wykres: % 75% 5% 25% Algorytm ten przy m = n - 1 działa znacznie wolniej, niż algorytm pierwszy. Za to przy już niewiele mniejszych ilościach scaleń, algorytm zdaje się być wiele bardziej wydajny. Zauważmy również, że krzywe straciły swoje własności (postać wykładniczą, proporcje odległości itd.). Jego spowolnienie względem szybkiego wyszukiwania prawdopodobnie spowodowany jest budowaniem bardzo skomplikowanych struktur drzewiastych. Spróbujemy je uprościć. Zrównoważone szybkie scalanie Aby zmniejszyć rozmiar drzew, możemy je inteligentniej budować. Dotychczasowo połączenie dwóch gałęzi polegało na połączeniu jednego z drugim, bez względu na ich rozmiary. Teraz spróbujemy to trochę zróżnicować: /*Funkcja otrzymuje następujące argumenty: tablicę elementów, tablicę rozmiarów gałęzi dla danego korzenia (początkowo każda gałąź ma rozmiar: 1), ich liczbę (n), ilość scaleń, wskaźnik na obiekt generatora liczb losowych*/ void balancedquickmerge (unsigned array[], unsigned offspring[], unsigned length, unsigned max, gsl_rng *r){ unsigned i, element1, element2;
7 /*Dopóki ilość pozostałych scaleń jest różna od */ while (max){ /*Wygenerowanie losowych identyfikatorów elementów*/ element1 = gsl_rng_uniform (r) * length; element2 = gsl_rng_uniform (r) * length; /*Wyszukiwanie korzenia dla elementu 1*/ while (element1!= array[element1]) element1 = array[element1]; /*Wyszukiwanie korzenia dla elementu 2*/ while (element2!= array[element2]) element2 = array[element2]; /*Jeśli dwa identyfikatory wskazują na elementy z tej samej sieci, pomiń ten przypadek*/ if (element1 == element2) continue; /*Jeśli pierwsza gałąź jest większa, dołącz do niej elementy gałęzi drugiej i vice-versa*/ if (offspring[element1] > offspring[element2]){ array[element2] = element1; offspring[element1]++; else{ array[element1] = element2; offspring[element2]++; max--;
8 Wykres: 5 4,5 4 3,5 3 2,5 2 1,5 1, % 75% 5% 25% Jak łatwo zauważyć, algorytm ten działa znacznie lepiej. Widzimy, że przy wiele większym zakresie (nie jak wcześniej 5 1 ): 5 1 elementów otrzymujemy czasy zacznie mniejsze, niż przy poprzednich algorytmach. Jednak mimo wszystko dla bardzo dużych rozwiązań algorytm ten jest nadal zbyt wolny. Zrównoważone szybkie scalanie z kompresją ścieżek przez połowienie Naszym celem jest dalsza optymalizacja algorytmu, szczególnie pod względem rozbudowania struktury drzewiastej. Od teraz zastosujemy dla każdego elementu podczas kontaktu z nim przesunięcie go o 2 miejsca w stronę drzewa. W ten sposób do jednego korzenia dochodzić będzie większa ilość gałęzi. /*Funkcja otrzymuje następujące argumenty: tablicę elementów, tablicę rozmiarów gałęzi dla danego korzenia (początkowo każda gałąź ma rozmiar: 1), ich liczbę (n), ilość scaleń, wskaźnik na obiekt generatora liczb losowych*/ void compressionbyhalving (unsigned array[], unsigned offspring[], unsigned length, unsigned max, gsl_rng *r){ unsigned i, element1, element2, n1, n2;
9 while (max){ /*Wygenerowanie losowych identyfikatorów elementów*/ element1 = gsl_rng_uniform (r) * length; element2 = gsl_rng_uniform (r) * length; /*Wyszukiwanie korzenia dla elementu 1 wykorzystując metodę połowienia*/ while (element1!= array[element1]){ element1 = array[element1]; array[element1] = array[array[element1]]; /*Wyszukiwanie korzenia dla elementu 2 wykorzystując metodę połowienia*/ while (element2!= array[element2]){ element2 = array[element2]; array[element2] = array[array[element2]]; /*Jeśli dwa identyfikatory wskazują na elementy z tej samej sieci, pomiń ten przypadek*/ if (element1 == element2) continue; /*Jeśli pierwsza gałąź jest większa, dołącz do niej elementy gałęzi drugiej i vice-versa*/ if (offspring[element1] > offspring[element2]){ array[element2] = element1; offspring[element1]++; else{ array[element1] = element2; offspring[element2]++; max--;
10 Wykres: 4 3,5 3 2,5 2 1,5 1, % 75% 5% 25% Jak widzimy, czas działania dla tego samego zakresu widocznie się zmniejszył. Jednak analizując strukturę drzewiastą łatwo zauważyć, że im drzewa posiadają krótsze gałęzie, tym algorytm działa szybciej. Spróbujmy więc skrócić jak najbardziej to tylko możliwe długość gałęzi. Zrównoważone szybkie scalanie z pełną kompresją ścieżek W momencie dostępu do elementu niebędącego korzeniem drzewa, możemy w pętli poprzyklejać każdy element do tego miejsca (korzenia). W ten sposób w zależności od wylosowanej liczby, możemy za jednym razem zredukować długość gałęzi do minimum. /*Funkcja otrzymuje następujące argumenty: tablicę elementów, tablicę rozmiarów gałęzi dla danego korzenia (początkowo każda gałąź ma rozmiar: 1), ich liczbę (n), ilość scaleń, wskaźnik na obiekt generatora liczb losowych*/ void fullcompression (unsigned array[], unsigned offspring[], unsigned length, unsigned max, gsl_rng *r){ unsigned i, element1, element2, container1, container2, buffer; while (max){
11 /*Wygenerowanie losowych identyfikatorów elementów*/ container1 = element1 = gsl_rng_uniform (r) * length; container2 = element2 = gsl_rng_uniform (r) * length; /*Wyszukiwanie korzenia dla elementu 1*/ while (element1!= array[element1]) element1 = array[element1]; /*Wyszukiwanie korzenia dla elementu 2*/ while (element2!= array[element2]) element2 = array[element2]; /*Przyklejanie elementów gałęzi tworzonej z elementu 1 do korzenia*/ while (array[container1]!= element1){ buffer = container1; container1 = array[container1]; array[buffer] = element1; offspring[element1]++; /*Przyklejanie elementów gałęzi tworzonej z elementu 2 do korzenia*/ while (array[container2]!= element2){ buffer = container2; container2 = array[container2]; array[buffer] = element2; offspring[element2]++; /*Jeśli dwa identyfikatory wskazują na elementy z tej samej sieci, pomiń ten przypadek*/ if (element1 == element2) continue; /*Jeśli pierwsza gałąź jest większa, dołącz do niej elementy gałęzi drugiej i vice-versa*/ if (offspring[element1] > offspring[element2]){ array[element2] = element1;
12 offspring[element1]++; else{ array[element1] = element2; offspring[element2]++; max--; Wykres: 3,5 3 2,5 2 1,5 1, % 75% 5% 25% Jak widzimy, udało nam się wprowadzić kolejne optymalizacje. Jeśli jednak wyniki nadal nie są dla nas satysfakcjonujące, można wzbogacić obecny algorytm o możliwość szybszego odnajdywania korzenia, czym jednak nie będziemy się już zajmować w tym artykule.
13 Porównania algorytmów Wykres przedstawia zależność czasu i ilości elementów przy m = n ,5 4 3,5 3 2,5 2 1,5 1, zrównoważone szybkie scalanie pełna kompresja ścieżek kompresja przez połowienie Jak widzimy na powyższym wykresie wszystkie złożone algorytmy wywodzące się z szybkiego scalania dla mniejszych liczb działają identycznie. Dopiero przy 25 elementów widać ich rozwarstwienie.,6,5,4,3,2, zrównoważone szybkie scalanie pełna kompresja ścieżek kompresja przez połowienie Na tym wykresie widzimy wyniki szybkich algorytmów dla m = ¾ (n - 1). Widzimy, że różnice między wynikami algorytmów zaczynają się zacierać, a ich zależność przybiera postać liniową.
14 ,16,14,12,1,8,6,4, szybkie scalanie kompresja przez połowienie zrównoważone szybkie scalanie pełna kompresja ścieżek Natomiast powyższy wykres przedstawia algorytmy przy m = ¼ (n 1). Jak łatwo zauważyć, tworząc go wzięliśmy pod uwagę często odrzucany algorytm szybkiego scalania. Podsumowanie Analizując rozwój algorytmów pozwalających nam rozwiązać problem połączeń, możemy wywnioskować, że: 1. Im algorytm jest bardziej złożony poprzez zastosowanie odpowiedniego poziomu abstrakcji z odpowiednimi strukturami danych, przy dużych wymaganiach (takich jak duża ilość, czy też szczegółowość obliczeń) otrzymujemy programy działające o wiele szybciej, niż by się wydawało stosując prosty algorytm, zawierający teoretycznie mniejszą liczbę instrukcji. 2. Im mniejsze wymagania wobec algorytmu, względem szczegółowości wyników, czy też ilości danych do przetworzenia, tym bardziej opłacalne jest stosowanie prostych algorytmów. Literatura Robert Sedgewick, Algorytmy w C++, ReadMe, Warszawa, 1999
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 9 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Zasada dziel i zwyciężaj Przykłady znajdowanie
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ółowoLekcja : Tablice + pętle
Lekcja : Tablice + pętle Wprowadzenie Oczywiście wiesz już jak dużo można osiągnąć za pomocą tablic oraz jak dużo można osiągnąć za pomocą pętli, jednak tak naprawdę prawdziwe możliwości daje połączenie
Bardziej szczegółowoPodstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
Bardziej szczegółowoDrzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany
, 1 2 3, czas zamortyzowany zajęcia 3. Wojciech Śmietanka, Tomasz Kulczyński, Błażej Osiński rozpinajace, 1 2 3 rozpinajace Mamy graf nieskierowany, ważony, wagi większe od 0. Chcemy wybrać taki podzbiór
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ółowoOtrzymaliśmy w ten sposób ograniczenie na wartości parametru m.
Dla jakich wartości parametru m dziedziną funkcji f ( x) = x + mx + m 1 jest zbiór liczb rzeczywistych? We wzorze funkcji f(x) pojawia się funkcja kwadratowa, jednak znajduje się ona pod pierwiastkiem.
Bardziej szczegółowoAlgorytmy i Struktury Danych. Anna Paszyńska
Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;
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ółowoWyszukiwanie binarne
Wyszukiwanie binarne Wyszukiwanie binarne to technika pozwalająca na przeszukanie jakiegoś posortowanego zbioru danych w czasie logarytmicznie zależnym od jego wielkości (co to dokładnie znaczy dowiecie
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych ĆWICZENIE 2 - WYBRANE ZŁOŻONE STRUKTURY DANYCH - (12.3.212) Prowadząca: dr hab. inż. Małgorzata Sterna Informatyka i3, poniedziałek godz. 11:45 Adam Matuszewski, nr 1655 Oliver
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ółowoOptymalizacja. Przeszukiwanie lokalne
dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Maciej Hapke Idea sąsiedztwa Definicja sąsiedztwa x S zbiór N(x) S rozwiązań, które leżą blisko rozwiązania x
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ół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ółowoKonkurs z przedmiotu eksploracja i analiza danych: problem regresji i klasyfikacji
Konkurs z przedmiotu eksploracja i analiza danych: problem regresji i klasyfikacji Michał Witczak Data Mining 20 maja 2012 r. 1. Wstęp Dostarczone zostały nam 4 pliki, z których dwa stanowiły zbiory uczące
Bardziej szczegółowoDrzewa poszukiwań binarnych
1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie
Bardziej szczegółowoOSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA
OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 16.01.2003 Algorytmy i Struktury Danych PIŁA ALGORYTMY ZACHŁANNE czas [ms] Porównanie Algorytmów Rozwiązyjących problem TSP 100 000 000 000,000 10 000 000
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ółowoPorównanie czasów działania algorytmów sortowania przez wstawianie i scalanie
Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej
Bardziej szczegółowoJęzyk C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop
Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop. 2016 Spis treści Wprowadzenie 11 Adresaci książki 12 Co wyróżnia tę książkę na
Bardziej szczegółowoProblem 1 prec f max. Algorytm Lawlera dla problemu 1 prec f max. 1 procesor. n zadań T 1,..., T n (ich zbiór oznaczamy przez T )
Joanna Berlińska Algorytmika w projektowaniu systemów - ćwiczenia 1 1 Problem 1 prec f max 1 procesor (ich zbiór oznaczamy przez T ) czas wykonania zadania T j wynosi p j z zadaniem T j związana jest niemalejąca
Bardziej szczegółowoZasady analizy algorytmów
Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania
Bardziej szczegółowoPętle. Dodał Administrator niedziela, 14 marzec :27
Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać
Bardziej szczegółowoPoprawność semantyczna
Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych
Bardziej szczegółowoPrzypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.
Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4
Bardziej szczegółowoZadanie 1: Piętnastka
Informatyka, studia dzienne, inż. I st. semestr VI Sztuczna Inteligencja i Systemy Ekspertowe 2010/2011 Prowadzący: mgr Michał Pryczek piątek, 12:00 Data oddania: Ocena: Grzegorz Graczyk 150875 Marek Rogalski
Bardziej szczegółowoPorównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego
Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Mariusz Uchroński 3 grudnia 2010 Plan prezentacji 1. Wprowadzenie 2.
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ół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 mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation)
Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation) Jest to technika probabilistyczna rozwiązywania problemów obliczeniowych, które mogą zostać sprowadzone do problemu znalezienie
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Wykład 5 Podstawowe techniki programownia w przykładach Janusz Szwabiński Plan wykładu: Metoda babilońska wyliczania pierwiastka Liczby pierwsze i sito Eratostenesa Metoda bisekcji
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ółowoAlgorytmy w teorii liczb
Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,
Bardziej szczegółowoInformatyka 1. Złożoność obliczeniowa
Informatyka 1 Wykład XI Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności
Bardziej szczegółowoZadanie 1: Piętnastka - uzupełnienie
Informatyka, studia dzienne, inż. I st. semestr VI Sztuczna Inteligencja i Systemy Ekspertowe 2010/2011 Prowadzący: mgr Michał Pryczek piątek, 12:00 Data oddania: Ocena: Grzegorz Graczyk 150875 Marek Rogalski
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ółowoDrzewa poszukiwań binarnych
1 Drzewa poszukiwań binarnych Kacper Pawłowski Streszczenie W tej pracy przedstawię zagadnienia związane z drzewami poszukiwań binarnych. Przytoczę poszczególne operacje na tej strukturze danych oraz ich
Bardziej szczegółowoTeraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.
Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Grażyna Koba MIGRA 2019 Spis treści (propozycja na 2*32 = 64 godziny lekcyjne) Moduł A. Wokół komputera i sieci komputerowych
Bardziej szczegółowoEgzamin, AISDI, I termin, 18 czerwca 2015 r.
Egzamin, AISDI, I termin, 18 czerwca 2015 r. 1 W czasie niezależnym do danych wejściowych działają algorytmy A. sortowanie bąbelkowego i Shella B. sortowanie szybkiego i przez prosty wybór C. przez podział
Bardziej szczegółowoProgramowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
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
Bardziej szczegółowoAlgorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek
Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących
Bardziej szczegółowoWykład 3. Metoda dziel i zwyciężaj
Wykład 3 Metoda dziel i zwyciężaj 1 Wprowadzenie Technika konstrukcji algorytmów dziel i zwyciężaj. przykładowe problemy: Wypełnianie planszy Poszukiwanie (binarne) Sortowanie (sortowanie przez łączenie
Bardziej szczegółowoAlgorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2013/14 Znajdowanie maksimum w zbiorze
Bardziej szczegółowoWykład 6. Wyszukiwanie wzorca w tekście
Wykład 6 Wyszukiwanie wzorca w tekście 1 Wyszukiwanie wzorca (przegląd) Porównywanie łańcuchów Algorytm podstawowy siłowy (naive algorithm) Jak go zrealizować? Algorytm Rabina-Karpa Inteligentne wykorzystanie
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ółowoTEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów
Bardziej szczegółowoAlgorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski
Algorytmy i struktury danych Wykład 5: Drzewa Dr inż. Paweł Kasprowski pawel@kasprowski.pl Drzewa Struktury przechowywania danych podobne do list ale z innymi zasadami wskazywania następników Szczególny
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ółowoPlan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?
/9/ Zagadnienie transportowe Optymalizacja w procesach biznesowych Wykład --9 Plan wykładu Przykład zagadnienia transportowego Sformułowanie problemu Własności zagadnienia transportowego Metoda potencjałów
Bardziej szczegółowoPodstawy Programowania. Złożoność obliczeniowa
Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada
Bardziej szczegółowoStruktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca
Bardziej szczegółowoWykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik
Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy
Bardziej szczegółowoWyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal
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ółowoFunkcja liniowa - podsumowanie
Funkcja liniowa - podsumowanie 1. Funkcja - wprowadzenie Założenie wyjściowe: Rozpatrywana będzie funkcja opisana w dwuwymiarowym układzie współrzędnych X. Oś X nazywana jest osią odciętych (oś zmiennych
Bardziej szczegółowoMatematyczne Podstawy Informatyki
Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 03/0 Przeszukiwanie w głąb i wszerz I Przeszukiwanie metodą
Bardziej szczegółowoPodstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
Bardziej szczegółowoWstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel
Wstęp do programowania Dziel i rządź Piotr Chrząstowski-Wachtel Divide et impera Starożytni Rzymianie znali tę zasadę Łatwiej się rządzi, jeśli poddani są podzieleni Nie chodziło im jednak bynajmniej o
Bardziej szczegółowoAlgorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne
Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na
Bardziej szczegółowoW przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby
Część XI C++ W folderze nazwisko36 program za każdym razem sprawdza oba warunki co niepotrzebnie obciąża procesor. Ten problem można rozwiązać stosując instrukcje if...else Instrukcja if wykonuje polecenie
Bardziej szczegółowoBadania Operacyjne Ćwiczenia nr 5 (Materiały)
ZADANIE 1 Zakład produkuje trzy rodzaje papieru: standardowy do kserokopiarek i drukarek laserowych (S), fotograficzny (F) oraz nabłyszczany do drukarek atramentowych (N). Każdy z rodzajów papieru wymaga
Bardziej szczegółowoCzęść I. Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Zadanie 1.1. (0 3)
Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Część I Zadanie 1.1. (0 3) 3 p. za prawidłową odpowiedź w trzech wierszach. 2 p. za prawidłową odpowiedź
Bardziej szczegółowoMarcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH
Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH Przeszukiwanie przestrzeni rozwiązań, szukanie na ślepo, wszerz, w głąb. Spis treści: 1. Wprowadzenie 3. str. 1.1 Krótki Wstęp
Bardziej szczegółowoZaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)
Bardziej szczegółowoStruktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.
Bardziej szczegółowoAlgorytmy stochastyczne, wykład 02 Algorytmy genetyczne
Algorytmy stochastyczne, wykład 02 Algorytmy genetyczne J. Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2014-02-27 1 Mutacje algorytmu genetycznego 2 Dziedzina niewypukła abstrakcyjna
Bardziej szczegółowoSieci Mobilne i Bezprzewodowe laboratorium 2 Modelowanie zdarzeń dyskretnych
Sieci Mobilne i Bezprzewodowe laboratorium 2 Modelowanie zdarzeń dyskretnych Plan laboratorium Generatory liczb pseudolosowych dla rozkładów dyskretnych: Generator liczb o rozkładzie równomiernym Generator
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ółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
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ółowoRównoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami
Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami dr inż. Mariusz Uchroński Wrocławskie Centrum Sieciowo-Superkomputerowe Agenda Cykliczny problem przepływowy
Bardziej szczegółowoPODSTAWY INFORMATYKI 1 PRACOWNIA NR 6
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą
Bardziej szczegółowoPodstawy Programowania
Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności
Bardziej szczegółowoFunkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne.
Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne. Funkcja homograficzna. Definicja. Funkcja homograficzna jest to funkcja określona wzorem f() = a + b c + d, () gdzie współczynniki
Bardziej szczegółowoMatematyczne Podstawy Informatyki
Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Algorytm 1. Termin algorytm jest używany w informatyce
Bardziej szczegółowowhile(wyrażenie) instrukcja
emat zajęć: Operatory i instrukcje w języku C - 2 Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (instrukcja cyklu: while) Do wykonywania cyklicznych obliczeń w języku C stosuje się instrukcje cyklu (pętli).
Bardziej szczegółowoznajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Bardziej szczegółowoRekurencja. Przykład. Rozważmy ciąg
Rekurencja Definicje rekurencyjne Definicja: Mówimy, iż ciąg jest zdefiniowany rekurencyjnie, jeżeli: (P) Określony jest pewien skończony zbiór wyrazów tego ciągu, zwykle jest to pierwszy wyraz tego ciągu
Bardziej szczegółowoTeoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych
Bardziej szczegółowoNierówność Krafta-McMillana, Kodowanie Huffmana
Nierówność Krafta-McMillana, Kodowanie Huffmana Kodowanie i kompresja informacji - Wykład 2 1 marca 2010 Test na jednoznaczna dekodowalność Kod a jest prefiksem kodu b jeśli b jest postaci ax. x nazywamy
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ółowoSpacery losowe generowanie realizacji procesu losowego
Spacery losowe generowanie realizacji procesu losowego Michał Krzemiński Streszczenie Omówimy metodę generowania trajektorii spacerów losowych (błądzenia losowego), tj. szczególnych procesów Markowa z
Bardziej szczegółowoProgramowanie dynamiczne
Programowanie dynamiczne Ciąg Fibonacciego fib(0)=1 fib(1)=1 fib(n)=fib(n-1)+fib(n-2), gdzie n 2 Elementy tego ciągu stanowią liczby naturalne tworzące ciąg o takiej własności, że kolejny wyraz (z wyjątkiem
Bardziej szczegółowoTadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski
: idea Indeksowanie: Drzewo decyzyjne, przeszukiwania binarnego: F = {5, 7, 10, 12, 13, 15, 17, 30, 34, 35, 37, 40, 45, 50, 60} 30 12 40 7 15 35 50 Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski
Bardziej szczegółowoĆwiczenie 1. Wprowadzenie do programu Octave
Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do
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ółowo7. Pętle for. Przykłady
. Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i
Bardziej szczegółowoRekurencja. 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ół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ółowoPHP: bloki kodu, tablice, obiekty i formularze
1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują
Bardziej szczegółowoZmienne i struktury dynamiczne
Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest
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ółowoWymagania edukacyjne z informatyki w klasie VIII
Wymagania edukacyjne z informatyki w klasie VIII Wymagania konieczne K dotyczą zagadnień elementarnych, stanowiących swego rodzaju podstawę, powinien je zatem opanować każdy uczeń. Wymagania podstawowe
Bardziej szczegółowoTablice cz. I Tablice jednowymiarowe, proste operacje na tablicach
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Tablice cz. I Tablice jednowymiarowe, proste operacje na tablicach Tablice Powiedzmy, że chcemy zapamiętać w programie
Bardziej szczegółowo