Wyszukiwanie wyrazów w pliku tekstowym

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wyszukiwanie wyrazów w pliku tekstowym"

Transkrypt

1 Wyszukiwanie wyrazów w pliku tekstowym Celem ćwiczenia jest: 1. Poznanie i realizacja praktyczna procedur operacji wejścia/ wyjścia na plikach danych 2. Przegląd algorytmów wyszukiwania wyrazów w plikach 3. Zastosowanie funkcji skrótu w rozwiązywaniu problemów obliczeniowych 4. Oszacowanie czasu obliczeń i wprowadzenie do metod optymalizacji wydajności obliczeń W części praktycznej połączenie uzyskanej wiedzy i umiejętności w celu realizacji praktycznej efektywnego algorytmu Karpa-Rabina [1]. 1. Operacje na plikach tekstowych w języku ADA Biblioteka Ada.Text_IO realizuje funkcje odczytu nie tylko ze urządzeń wejściowych i wyjściowych o typie standardowym. Pozwala na odczyt znaków z plików i pisanie tekstów do plików. Operacje na plikach tekstowych w języku Ada są dobrze opisane w podręczniku. W skrócie są to operacje podobne do dobrze znanych używanych do czytania znaków i linii tekstu z klawiatury. W uproszczeniu, zasadnicza różnica polega na tym, że przed wykonaniem tych operacji należy dokonać jednokrotnie czynności otwarcia pliku przy podaniu jego nazwy, dalej przy operacjach podawać odniesienie do identyfikatora pliku otrzymanego przy otwarciu i w końcu dokonać zamknięcia pliku.ej Infile : File_Type; --- deklaracja zmiennej identyfikującej plik Open(Infile, In_File, "test.txt"); -- otwarcie pliku Infile do odczytu In_File while not End_Of_File(infile) loop Get_Line(Infile, Line, Llength); --- czytanie linia po linii end loop 2. Algorytmy wyszukiwania wzorca w tekście Problem: Dany jest tekst złożony z m znaków T[1..m] oraz przeszukiwany ciąg x[1..n]. złożony z n znaków; gdzie n > m. Problem dopasowania wzorca polega na znalezieniu takiego indeksu i, dla którego T[i.. i+m-1] = x[1.. m]. To oznacza, że wzorzec x jest fragmentem łańcucha T występującym na pozycji i-tej. Często interesujące jest wskazanie wszystkich wystąpień wzorca x w tekście T Rozwiązanie naiwne. 2.1 Algorytm naiwny wersja z wyszukiwania wszystkich wystąpień wzorca. Ustawiamy indeks i na początku tekstu T. Czyli i=1, wybieramy ciąg znaków o długości n poczynając od pierwszej pozycji w tekście T. Porównujemy T[1..n] i wzorzec x[1..n] znak po znaku maksymalnie n razy. Jeśli porównanie przebiegło pomyślnie I=1 jest pierwszym znalezionym rozwiązaniem. Następnie przesuwamy

2 okno o długości n do następnego znaku czyli i= i+1 i porównujemy nowy wycinek T[i..i+n-1] ze wzorcem jak poprzednio. Zwiększanie i zatrzymujemy, gdy dojdziemy do końca tekstu T. Czyli gdy i > m-n. Złożoność obliczeniowej algorytmu naiwnego jest równa O(n m), gdzie n oznacza liczbę znaków tekstu, a m liczbę znaków wzorca. Jednakże w typowych warunkach algorytm pracuje w czasie O(n), ponieważ najczęściej wystarczy już porównanie kilku początkowych znaków wycinka z wzorcem, aby stwierdzić, iż są one niezgodne. 2.2 Algorytm Rabina-Karpa Istnieje szereg innych algorytmów, ale skoncentrujemy się na algorytmie Karpa-Rabina [1]. Algorytm Rabina- Karpa jest gorszy w wyszukiwaniu pojedynczego wzorca od algorytmów takich jak Knutha-Morrisa-Pratta lub Boyer a-moore a, ponieważ jest najwolniejszy w przypadku pesymistycznego ułożenia ciągu. Jednak jest wyjątkowo efektywny przy wyszukiwaniu wielo -wzorcowym. Czyli jest on szczególnie wydajny jeśli poszukujemy w tekście T[1..m] wielu ciągów o długości n, powiedzmy szukamy j wzorców X j [1..n]. Idea algorytmu polega na wykorzystaniu funkcji skrótu zwanej często funkcją mieszającą a w języku angielskim hash function. Funkcja skrótu jest to funkcja, która przyporządkowuje dowolnie dużej strukturze danych krótką, zwykle posiadającą stały rozmiar, niespecyficzną, pseudo-losową wartość, tzw. skrót nieodwracalny. Algorytm tworzy funkcje skrótu z poszukiwanych ciągów i dalej podobnie jak algorytm naiwny wykorzystując wędrujące znak po znaku okno wyszukuje w tekście T ciągi n wyrazowe i oblicza z nich funkcje skrótu [1]. Porównanie następuje w dwóch etapach: najpierw sprawdzane są funkcje skrótu. a przy ich zgodności przechodzimy do szczegółowego porównania znak po znaku jak w algorytmie naiwnym. Przyspieszenie działania uzyskuje się ponieważ porównanie skrótów jest znacznie szybsze niż całych ciągów szczególnie gdy są bardzo złożone lub gdy raz obliczony skrót może być wykorzystywany wielokrotnie. Efektywność praktycznie przygotowanego algorytmu dwufazowego zależy od wyboru funkcji skrótu. Istotnymi parametrami są: - nakład obliczeniowy potrzebny do wyznaczenia skrótów - algorytmu liczenia skrótów kolizyjność [5] omówiona także poniżej w p.3. poniżej 3. Funkcje skrótu Funkcja skrótu, jednokierunkowa funkcja mieszająca lub funkcja haszująca to funkcja, która przyporządkowuje dowolnie dużej wiadomości krótką, zwykle posiadającą stały rozmiar wartość skrót wiadomości. Kolizja funkcji skrótu H to taka para różnych wiadomości m1, m2, że mają one taką samą wartość skrótu, tj. H(m1) = H(m2) Bezkolizyjna funkcja skrótu to taka w której brak jest kolizji, czyli sytuacji w których z dwóch różnych wiadomości wygenerowany zostanie taki sam skrót Zastosowanie funkcji skrótu w rozwiązywaniu problemów obliczeniowych W informatyce funkcje skrótu pozwalają na ustalenie krótkich i łatwych do weryfikacji sygnatur dla dowolnie dużych zbiorów danych. Takie sygnatury mogą chronić przed przypadkowymi lub celowo wprowadzonymi

3 modyfikacjami danych (sumy kontrolne), pozwalają się przekonać czy pobrane dane i dokumenty elektroniczne np. programy, dokumentacje, dokumenty urzędowe nie zostały uszkodzone lub celowo zmienione. Powszechnie stosuje się funkcje skrótu w sieciach komputerowych i telekomunikacji zabezpieczając pakiety i ramki przez zniekształceniem w wyniku zakłóceń przy przesyłaniu. Numery systemu IBAN (International Bank Account Number) zostały wprowadzone normą ISO w celu weryfikacji numerów kont bankowych w międzynarodowym przepływie pieniędzy. W numerach rachunków bankowych IBAN dwie pierwsze cyfry są liczbą kontrolną wynikającą z przeliczenia istotnej informacyjnie zawartości i chronią przed pomyłką pisarską. Często na stronach internetowych podaje się wyliczone skróty w celu weryfikacji (najczęściej są nimi CRC32, MD5 lub SHA-1). Funkcje skrótu mają również zastosowania przy optymalizacji dostępu do struktur danych w programach komputerowych (tablice haszujące), a także wykorzystywane są w podpisie cyfrowym. W podpisie cyfrowym, często spotykanym w życiu codziennym przy przesyłaniu plików PDF z banków. Funkcja skrótu liczona jest z zawartości informacyjnej dokumentu, dalej szyfrowana utajnionym kluczem prywatnym banku i dołączana do pliku PDF, To jest podpis elektroniczny. Taki dokument oraz zaszyfrowany skrót, podpis elektroniczny, mogą być przesyłane bezpiecznie także w niebezpiecznym otoczeniu. Na przykład publiczną siecią komputerową. Odbiorca wykonuje własnego przeliczenia funkcji skrótu i odszyfrowania podpisu za pomocą znanego klucza publicznego osoby podpisującej, banku, w celu uzyskania wartości skrótu obliczonego przez nadawcę. Proste porównania utwierdza nas w przekonaniu, że integralność dokumentu nie został naruszona i że autorem jest posiadacz klucza prywatnego.

4 Pojawią się wątpliwość dlaczego zaszyfrowano tylko skrót? Przecież można zaszyfrować całą wiadomość i dołączyć tak jak powyżej postąpiono ze skrótem. Odbiorca wykona operację odszyfrowania i porówna wiadomości ze sobą. Jest to możliwe i unika się problemu kolizji. Jednak metoda jest niepraktyczna przy wiadomościach o dużym rozmiarze, ponieważ wtedy sam podpis jest dużego rozmiaru (przy zastosowaniu skrótu podpis ma rozmiar stały i zwykle niewielki w zestawieniu z wiadomością)oraz nakład obliczeniowy potrzebny do sporządzenia podpisu przez nadawcę i do deszyfrowania przez odbiorcę jest duży i zmienny (przy funkcji skrótu stały i typowo znacznie mniejszy). 3.3 Krocząca funkcja skrótu rolling hash. Jak wspomniano do skrócenia czasu obliczeń lub uzyskania dużej efektywności, szybkości obliczeń przy implementacji algorytmu Rabina-Karpa warto starannie dobrać funkcję skrótu w taki sposób, aby obliczać ją możliwe szybko i zadbać o niewielkie prawdopodobieństwo kolizji. W tekście T[1..m] poszukujemy wielu ciągów o długości n, powiedzmy szukamy j wzorców X j [1..j, 1..n]. Jeśli w pierwszym kroku obliczono funkcję skrótu dla T[1..n] to w kolejnym potrzebna jest wartość dla tekstu T[2..n+1] i tak dalej. Widać, że bez względu na długość n szukanego ciągu w kolejnych iteracjach ubył 1 znak i dodany został także jeden Dobrym rozwiązaniem jest zastosowanie funkcji w której nie trzeba za każdym razem obliczać funkcji skrótu, ale można uprościć obliczenia znając wartość poprzednią. Podobnie realizuje się obliczenia przy wyznaczaniu ruchomej średniej zwanej także średnią kroczącą. W naszym przypadku jej odpowiednik, czyli suma krocząca numerów porządkowych znaków w kodzie ASCII jest jednym z możliwych przykładów kroczącej funkcji skrótu. Niezwykle prostą w implementacji oraz znamienną tym, że obliczenie wartości następnej może się opierać na użyciu wartości poprzedniej i zaledwie dwóch operacjach dodatkowych. Dodanie nowej wartości i odjęcie jednej wartości. Przykład. Poszukiwana fraza to: x [1..3] = { m, a, ]; W tekście T T[1..10} = [ A, l, a,, m, a,, A, s, a ]; Funkcja skrótu to suma pozycji trzech kolejnych znaków. Hash := 0; for ix In 1..3 loop Hask := Hash + x[ix]; end loop; Patrząc w tabelę kodowania znaków ASCII otrzymamy H(x) = = 238; // ma spacja 238 to poszukiwany skrót Obliczamy skrót napisu T[1..3] sumując pozycje H(T,1) = = 270 // Ala 271 wyklucza zgodność, zatem postępujemy dalej licząc skrót dla T[2..4}.

5 możemy policzyć sumę ale możemy wyznaczając H(T,2) jako H(T,2) = = 237 // la spacja także możemy H(T,2) = H(t,1) = = 237 // odjąć A dodać spacja. Przy krótkim wzorcu zysk jest niewielki, ale zaoszczędzimy obliczania wraz ze wzrostem długości wzorca, Sprawdzimy jeszcze tylko jeden kolejny krok licząc skrót dla T[3..5] napis a m ; H(T,3) = H(t,3) = = 238!!! // odejmujemy znikające l dodajemy m 238 jest poszukiwaną funkcją skrótu zatem wykonujemy fazę drugą czyli porównanie napisów znak po znaku, widać, że to porównanie nie da wyniku pozytywnego. Uwaga1. widać, że litery l i m sąsiadują w alfabecie stąd wynik jest łatwy do przewidzenia. Uwaga 2: podana funkcja skrótu powoduje znaczą ilość kolizji przy swojej prostocie. Wniosek: Prostota jest okupiona częstymi kolizjami. Poszukując frazy Pies i kot wartość funkcji skrótu dla niej będzie równa kot i Pies ale także pies i Kot oraz pies i kot (dlaczego, patrz konstrukcja kodu ASCII i numery porządkowe liter wielkich i małych). Polecaną modyfikacją [8] jest zastąpienie sumy wielomianem. Wybieramy całkowitą liczbę N, ze względu na szybkość liczenia w urządzeniach opartych o zapis binarny N powinno być wielokrotnością liczby 2. Funkcja skrótu, hash, policzona dla tekstu T przy wzorcu o długości m przyjmie postać H (T,1) = N**(m-1)*T(1) + N**(m-2)*T(1) +... N*T(m-1) + T(m); Tu możemy także łatwo obliczyć kolejną wartość skrótu na podstawie poprzedniej w trzech operacjach arytmetycznych. Dodatkowo umiejętnie dobierając liczbę N lub stosując operację modulo można ograniczyć liczbę operacji tylko do dwóch. Proszę porównać z przykładem w [8]. 4. Oszacowanie czasu obliczeń i wprowadzenie do metod skrócenia czasu obliczeń Dotychczas opracowane programy pracowały w oderwaniu od czasu realnego czy astronomicznego. Jeśli chcemy oszacować realny programu musimy skorzystać z funkcji odczytu zegara czasu astronomicznego. Funkcji dostępu do zegara czasu astronomicznego dostarcza moduł Real_Time.. Implementacja tego modułu bywa różna i stąd często różne wyniki zależnie od wersji kompilatora i systemu operacyjnego. W szczególności należy się liczyć z ograniczoną dokładnością funkcji odmierzania czasu. Problemy te opisano także w rozdziale 14.6 skryptu. Poniższy przykład pokaże jakie rozbieżności musimy zaakceptować. Program wykonuje dziesięciokrotnie najkrótsze opóźnienie i oblicza jakie było to opóźnienie w istocie. To świadomie nie użyto określenia w rzeczywistości ponieważ błędy dotyczą w równym stopniu procedury oczekiwania delay jak i procedur odczytu czasu Clock.

6 with Ada.Text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; use ada.integer_text_io; with Ada.Real_Time; use Ada.Real_Time; procedure Run_time is StartTime, StopTime : Time; begin -- put_line("start"); for ix in loop StartTime := Clock; delay Duration'Small; StopTime := Clock; New_Line; put (" "); Put(Natural(To_Duration(StopTime - StartTime)*10**9)); put(" ns"); end loop; end Run_Time; I oto przykładowy wynik pracy. Za pierwszym razem Kolejne uruchomienie ns 5699 ns 4344 ns 4262 ns 4014 ns 4655 ns 4123 ns 4304 ns 4115 ns 4380 ns 4085 ns 4240 ns 4017 ns 4412 ns 4197 ns 4108 ns 4037 ns 4270 ns 3967 ns 4293 ns 4.1. Wersje debug i release oraz opcje optymalizacji. Projektanci systemów kompilacji opracowując je podążają za typowym tokiem przygotowania programów przez programistów. W początkowej fazie przygotowania programów istotne jest wyłowienie możliwie dużej liczby błędów z ang. bug i usunięcie ich. Ten proces nazywamy debuggowaniem i dobry system kompilacji powinien w tym okresie wykonywać możliwie wiele testów kontrolnych w czasie biegu programu, co odbywa się kosztem wydajności obliczeń. W tej fazie przygotowań warto zastosować profil złożony z różnych opcji. W adagide jest to profil debug. Po zakończeniu fazy uruchamiania i testowania gotowy program można pozbawić opcji kontroli i dodatkowo pozwolić kompilatorowi dokonać optymalizacji czasu wykonania lub optymalizacji zasobów wykorzystywanych przez program. Czyli przygotować wersję produkcyjną po angielsku określaną jako release. Do opracowania Wprawka 1.

7 Proszę przygotować program testowy jak wyżej i a. sprawdzić jakie czasy wykonania otrzymujemy w przypadku zastosowania opcji debug z parametrem kontroli przekroczeń zakresów gnato oraz w opcji release i przy zastosowaniu optymalizacji o2. b. Czy uwinięcie komentarza z linii linii wypisującej tekst start i zmienia wyniki eksperymentu. Jaki jest wynik obserwacji i jak możemy wytłumaczyć obserwowane wyniki? Zadanie 1. Przygotować program wyszukujący i zliczający słowa w tekście zawartym w pliku metodą naiwną i metodą Rabina-Karpa. Porównać czas obliczeń i dokonać optymalizacji programu od kątem czasu wykonania wykorzystując obserwacje z realizacji wprawki. Wybór funkcji skrótu jest dowolny. Należy pamiętać, że wybór ten i realizacja decyduje o czacie wykonania wyszukiwań. Eksperyment przeprowadzić na anglojęzycznym przekładzie Illiady Homera dostępnym pod adresem (zapisać w pliku tekstowym) poszukiwane wyrazy, które należy policzyć to, ciągi sześcioznakowe "Apollo", "Nestor ", "Ulysse", "Saturn Dodatkowo podąć należy liczbę przeczytanych linii tekstu, czyli wykonania procedury Get_line. Poniżej wynik pracy dwóch algorytmów, bez optymalizacji znaleziono: 142 wyrazow Apollo znaleziono: 95 wyrazow Nestor znaleziono: 128 wyrazow Ulysse znaleziono: 84 wyrazow Saturn w czasie 691 ms liczba akapitów xxxx znaleziono: 142 wyrazow Apollo znaleziono: 95 wyrazow Nestor znaleziono: 128 wyrazow Ulysse znaleziono: 84 wyrazow Saturn w czasie 322 ms liczba akapitów xxxx porównać uzyskane wyniki z wynikami osiąganymi przez programy innych grup i dokonać optymalizacji czasu obliczeń.

8 Literatura [1] Richard M. Karp, Michael O. Rabin. Efficient randomized pattern-matching algorithms. IBM Journal of Research and Development. 31 (2), marzec [2] EXACT STRING MATCHING ALGORITHMS, [3] Wirth, N. (2001). Algorytmy + struktury danych = programy. WNT, Warszawa (tłum. zang.). [4] Sedgewick, R. (1983). Algorithms. Addison-Wesley, Reading, Massachussets.. [5] przegląd funkcji skrótu [6] Rodwald, P. : KRYPTOGRAFICZNE FUNKCJE SKRÓTU. [7] Rivest R., The MD4 message-digest algorithm, Advances in Cryptology, Proc. Crypto 90, LNCS 597, Springer- Verlag, [8] Rolling Hash (Rabin-Karp Algorithm)

Algorytmy przeszukiwania wzorca

Algorytmy przeszukiwania wzorca Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Algorytmy przeszukiwania wzorca 1 Wstęp Algorytmy

Bardziej szczegółowo

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Algorytmy 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ółowo

Wykład 6. Wyszukiwanie wzorca w tekście

Wykł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ółowo

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna 1. Wstęp Wprowadzenie do PKI Infrastruktura klucza publicznego (ang. PKI - Public Key Infrastructure) to termin dzisiaj powszechnie spotykany. Pod tym pojęciem kryje się standard X.509 opracowany przez

Bardziej szczegółowo

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR 1. Algorytm XOR Operacja XOR to inaczej alternatywa wykluczająca, oznaczona symbolem ^ w języku C i symbolem w matematyce.

Bardziej szczegółowo

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś  Wykład 7 Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 7 Spis treści 11 Algorytm ElGamala 3 11.1 Wybór klucza.................... 3 11.2 Szyfrowanie.....................

Bardziej szczegółowo

2 Kryptografia: algorytmy symetryczne

2 Kryptografia: algorytmy symetryczne 1 Kryptografia: wstęp Wyróżniamy algorytmy: Kodowanie i kompresja Streszczenie Wieczorowe Studia Licencjackie Wykład 14, 12.06.2007 symetryczne: ten sam klucz jest stosowany do szyfrowania i deszyfrowania;

Bardziej szczegółowo

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym) Dr inż. Robert Wójcik, p. 313, C-3, tel. 320-27-40 Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska E-mail: Strona internetowa: robert.wojcik@pwr.edu.pl google: Wójcik

Bardziej szczegółowo

Polcode Code Contest PHP-10.09

Polcode Code Contest PHP-10.09 Polcode Code Contest PHP-10.09 Przedmiotem konkursu jest napisanie w języku PHP programu, którego wykonanie spowoduje rozwiązanie zadanego problemu i wyświetlenie rezultatu. Zadanie konkursowe Celem zadania

Bardziej szczegółowo

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład VII Kierunek Informatyka - semestr V Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Problem pakowania plecaka System kryptograficzny Merklego-Hellmana

Bardziej szczegółowo

Laboratorium nr 1 Szyfrowanie i kontrola integralności

Laboratorium nr 1 Szyfrowanie i kontrola integralności Laboratorium nr 1 Szyfrowanie i kontrola integralności Wprowadzenie Jedną z podstawowych metod bezpieczeństwa stosowaną we współczesnych systemach teleinformatycznych jest poufność danych. Poufność danych

Bardziej szczegółowo

wagi cyfry 7 5 8 2 pozycje 3 2 1 0

wagi cyfry 7 5 8 2 pozycje 3 2 1 0 Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień

Bardziej szczegółowo

Programowanie i techniki algorytmiczne

Programowanie i techniki algorytmiczne Temat 2. Programowanie i techniki algorytmiczne Realizacja podstawy programowej 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych 2) formułuje ścisły opis prostej

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 4 1 / 1 DZIELENIE LICZB BINARNYCH Dzielenie

Bardziej szczegółowo

Zakład Usług Informatycznych OTAGO

Zakład Usług Informatycznych OTAGO Zakład Usług Informatycznych OTAGO Opis konstrukcji Wirtualnego Numeru Rachunku dotyczący płatności masowych wersja 1.4 autor: Tomasz Rosochacki Gdańsk, 2012-11-27 Spis treści 1. Wprowadzenie.... 3 2.

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 8

Algorytmy i struktury danych. wykład 8 Plan wykładu: Kodowanie. : wyszukiwanie wzorca w tekście, odległość edycyjna. Kodowanie Kodowanie Kodowanie jest to proces przekształcania informacji wybranego typu w informację innego typu. Kod: jest

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

Algorytmy 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ółowo

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie) Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie) Wprowadzenie Haszowanie jest to pewna technika rozwiązywania ogólnego problemu słownika. Przez problem słownika rozumiemy tutaj takie

Bardziej szczegółowo

Identyfikacja znamion ukrytego plagiatu. Z wykorzystaniem IDEA Caseware

Identyfikacja znamion ukrytego plagiatu. Z wykorzystaniem IDEA Caseware Identyfikacja znamion ukrytego plagiatu Z wykorzystaniem IDEA Caseware Dzięki zastosowaniu w IDEI zaawansowanego modułu importu danych istnieje możliwość wykorzystania oprogramowania do identyfikacji tzw.

Bardziej szczegółowo

Optymalizacja ciągła

Optymalizacja ciągła Optymalizacja ciągła 5. Metoda stochastycznego spadku wzdłuż gradientu Wojciech Kotłowski Instytut Informatyki PP http://www.cs.put.poznan.pl/wkotlowski/ 04.04.2019 1 / 20 Wprowadzenie Minimalizacja różniczkowalnej

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

Bardziej szczegółowo

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA Grzegorz Bobiński Uniwersytet Mikołaja Kopernika Toruń, 22.05.2010 Kodowanie a szyfrowanie kodowanie sposoby przesyłania danych tak, aby

Bardziej szczegółowo

lekcja 8a Gry komputerowe MasterMind

lekcja 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ółowo

Zadanie projektowe nr 1

Zadanie projektowe nr 1 Zadanie projektowe nr 1 Badanie efektywności operacji dodawania (wstawiania), usuwania oraz wyszukiwania elementów w podstawowych strukturach danych Należy zaimplementować oraz dokonać pomiaru czasu działania

Bardziej szczegółowo

Sieci Komputerowe Mechanizmy kontroli błędów w sieciach

Sieci Komputerowe Mechanizmy kontroli błędów w sieciach Sieci Komputerowe Mechanizmy kontroli błędów w sieciach dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Zagadnienia Zasady kontroli błędów

Bardziej szczegółowo

Wyszukiwanie binarne

Wyszukiwanie 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ółowo

Zapisywanie algorytmów w języku programowania

Zapisywanie algorytmów w języku programowania Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym

Bardziej szczegółowo

do instrukcja while(wyrażenie);

do instrukcja while(wyrażenie); emat zajęć: Operatory i instrukcje w języku C - 3 Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (instrukcja cyklu: while) Język C oferuje kilka instrukcji cyklu (pętli). Oprócz wprowadzonej wcześniej

Bardziej szczegółowo

INSTRUKCJA INSTALACJI I OBSŁUGI GPG4Win

INSTRUKCJA INSTALACJI I OBSŁUGI GPG4Win INSTRUKCJA INSTALACJI I OBSŁUGI GPG4Win Łukasz Awsiukiewicz Solid Security wew 1211 l.awsiukiewicz@solidsecurity.pl wersja 1.0 Pobieramy program gpg4win ze strony http://www.gpg4win.org/download.html.

Bardziej szczegółowo

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha. Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Generator liczb losowych o rozkładzie Rayleigha. Generator liczb losowych o rozkładzie Rayleigha. 1. Cel ćwiczenia

Bardziej szczegółowo

Wykład VI. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład VI. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład VI - semestr III Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2013 c Copyright 2013 Janusz Słupik Podstawowe zasady bezpieczeństwa danych Bezpieczeństwo Obszary:

Bardziej szczegółowo

Zarys algorytmów kryptograficznych

Zarys algorytmów kryptograficznych Zarys algorytmów kryptograficznych Laboratorium: Algorytmy i struktury danych Spis treści 1 Wstęp 1 2 Szyfry 2 2.1 Algorytmy i szyfry........................ 2 2.2 Prosty algorytm XOR......................

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 9

Algorytmy i struktury danych. wykład 9 Plan wykładu:. Algorytmy numeryczne. Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Cechy: skróty są zazwyczaj

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Ję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ółowo

Przewodnik użytkownika

Przewodnik użytkownika STOWARZYSZENIE PEMI Przewodnik użytkownika wstęp do podpisu elektronicznego kryptografia asymetryczna Stowarzyszenie PEMI Podpis elektroniczny Mobile Internet 2005 1. Dlaczego podpis elektroniczny? Podpis

Bardziej szczegółowo

Bezpieczeństwo aplikacji typu software token. Mariusz Burdach, Prevenity. Agenda

Bezpieczeństwo aplikacji typu software token. Mariusz Burdach, Prevenity. Agenda Bezpieczeństwo aplikacji typu software token Mariusz Burdach, Prevenity Agenda 1. Bezpieczeństwo bankowości internetowej w Polsce 2. Główne funkcje aplikacji typu software token 3. Na co zwrócić uwagę

Bardziej szczegółowo

CIĄGI wiadomości podstawowe

CIĄGI wiadomości podstawowe 1 CIĄGI wiadomości podstawowe Jak głosi definicja ciąg liczbowy to funkcja, której dziedziną są liczby naturalne dodatnie (w zadaniach oznacza się to najczęściej n 1) a wartościami tej funkcji są wszystkie

Bardziej szczegółowo

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. Układ graficzny CKE 2013 KOD UZUPEŁNIA ZDAJĄCY PESEL miejsce na naklejkę EGZAMIN MATURALNY Z INFORMATYKI POZIOM PODSTAWOWY CZĘŚĆ

Bardziej szczegółowo

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych. Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(), zwaną funkcją aproksymującą

Bardziej szczegółowo

Programowanie strukturalne

Programowanie strukturalne Programowanie strukturalne wykład pliki tekstowe Agata Półrola Wydział Matematyki UŁ sem. letni 2011/2012 http://www.math.uni.lodz.pl/~polrola Pliki wewnętrzne i zewnętrzne Dotychczas przy pobieraniu danych

Bardziej szczegółowo

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi. Spis treści: Czym jest szyfrowanie Po co nam szyfrowanie Szyfrowanie symetryczne Szyfrowanie asymetryczne Szyfrowanie DES Szyfrowanie 3DES Szyfrowanie IDEA Szyfrowanie RSA Podpis cyfrowy Szyfrowanie MD5

Bardziej szczegółowo

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/ STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go

Bardziej szczegółowo

Usługa wyciągi elektroniczne Przewodnik Użytkownika

Usługa wyciągi elektroniczne Przewodnik Użytkownika Usługa wyciągi elektroniczne Przewodnik Użytkownika 2012-01-30 SPIS TREŚCI 1. Wstęp... 3 2. Przesyłanie wyciągów pocztą elektroniczną... 3 3. Przeglądanie wyciągów w Repozytorium... 3 3.1. Wymagania techniczne...

Bardziej szczegółowo

Temat 20. Techniki algorytmiczne

Temat 20. Techniki algorytmiczne Realizacja podstawy programowej 5. 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych problemów; 2) formułuje ścisły opis prostej sytuacji problemowej, analizuje

Bardziej szczegółowo

Rozdział 1 PROGRAMOWANIE LINIOWE

Rozdział 1 PROGRAMOWANIE LINIOWE Wprowadzenie do badań operacyjnych z komputerem Opisy programów, ćwiczenia komputerowe i zadania. T. Trzaskalik (red.) Rozdział 1 PROGRAMOWANIE LINIOWE 1.2 Ćwiczenia komputerowe Ćwiczenie 1.1 Wykorzystując

Bardziej szczegółowo

Zadania 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. 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ółowo

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI STEGANOGRAFIA Steganografia jest nauką o komunikacji w taki sposób by obecność komunikatu nie mogła zostać wykryta. W odróżnieniu od kryptografii

Bardziej szczegółowo

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność

Bardziej szczegółowo

Tematy lekcji informatyki klasa 4a luty/marzec 2013

Tematy lekcji informatyki klasa 4a luty/marzec 2013 Tematy lekcji informatyki klasa 4a luty/marzec 2013 temat 11. z podręcznika (str. 116-120) Jak uruchomić edytor tekstu MS Word 2007? ćwiczenia 2-5 (str. 117-120); Co to jest przycisk Office? W jaki sposób

Bardziej szczegółowo

Informatyka 1. Złożoność obliczeniowa

Informatyka 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ółowo

Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej

Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej Obliczenia w systemach resztowych [Song Y. Yan] Przykład: obliczanie z = x + y = 123684 + 413456 na komputerze przyjmującym słowa o długości 100 Obliczamy kongruencje: x 33 (mod 99), y 32 (mod 99), x 8

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane 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ółowo

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu

Bardziej szczegółowo

Sortowanie przez wstawianie Insertion Sort

Sortowanie przez wstawianie Insertion Sort Sortowanie przez wstawianie Insertion Sort Algorytm sortowania przez wstawianie można porównać do sposobu układania kart pobieranych z talii. Najpierw bierzemy pierwszą kartę. Następnie pobieramy kolejne,

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz

Bardziej szczegółowo

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA. Scenariusz lekcji. 2.1 Wiadomości: 2.2 Umiejętności: Scenariusz lekcji

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA. Scenariusz lekcji. 2.1 Wiadomości: 2.2 Umiejętności: Scenariusz lekcji Scenariusz lekcji 1 TEMAT LEKCJI: Algorytmy wyszukiwania wzorca w ciągu 2 CELE LEKCJI: 2.1 Wiadomości: Uczeń potrafi: podać definicje wyszukiwania wzorca w tekście; opisać algorytm naiwny wyszukiwania

Bardziej szczegółowo

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Podstawy systemów kryptograficznych z kluczem jawnym RSA Podstawy systemów kryptograficznych z kluczem jawnym RSA RSA nazwa pochodząca od nazwisk twórców systemu (Rivest, Shamir, Adleman) Systemów z kluczem jawnym można używać do szyfrowania operacji przesyłanych

Bardziej szczegółowo

ŁAMIEMY SZYFR CEZARA. 1. Wstęp. 2. Szyfr Cezara w szkole. Informatyka w Edukacji, XV UMK Toruń, 2018

ŁAMIEMY SZYFR CEZARA. 1. Wstęp. 2. Szyfr Cezara w szkole. Informatyka w Edukacji, XV UMK Toruń, 2018 Informatyka w Edukacji, XV UMK Toruń, 2018 ŁAMIEMY SZYFR CEZARA Ośrodek Edukacji Informatycznej i Zastosowań Komputerów 02-026 Warszawa, ul. Raszyńska 8/10 {maciej.borowiecki, krzysztof.chechlacz}@oeiizk.waw.pl

Bardziej szczegółowo

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

Bardziej szczegółowo

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek Nazwa implementacji: Nauka języka Python pętla for Autor: Piotr Fiorek Opis implementacji: Poznanie innego rodzaju pętli, jaką jest pętla for w języku Python. Składnia pętli for jest następująca: for

Bardziej szczegółowo

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia. ARYTMETYKA BINARNA ROZWINIĘCIE DWÓJKOWE Jednym z najlepiej znanych sposobów kodowania informacji zawartej w liczbach jest kodowanie w dziesiątkowym systemie pozycyjnym, w którym dla przedstawienia liczb

Bardziej szczegółowo

Instrukcja obsługi certyfikatów w programie pocztowym MS Outlook Express 5.x/6.x

Instrukcja obsługi certyfikatów w programie pocztowym MS Outlook Express 5.x/6.x Spis treści Wstęp... 1 Instalacja certyfikatów w programie pocztowym... 1 Instalacja certyfikatów własnych... 1 Instalacja certyfikatów innych osób... 3 Import certyfikatów innych osób przez odebranie

Bardziej szczegółowo

Zad. 3: Układ równań liniowych

Zad. 3: Układ równań liniowych 1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich

Bardziej szczegółowo

Algorytm genetyczny (genetic algorithm)-

Algorytm genetyczny (genetic algorithm)- Optymalizacja W praktyce inżynierskiej często zachodzi potrzeba znalezienia parametrów, dla których system/urządzenie będzie działać w sposób optymalny. Klasyczne podejście do optymalizacji: sformułowanie

Bardziej szczegółowo

Kompresja tablic obliczeń wstępnych alternatywa dla tęczowych tablic. Michał Trojnara.

Kompresja tablic obliczeń wstępnych alternatywa dla tęczowych tablic. Michał Trojnara. Kompresja tablic obliczeń wstępnych alternatywa dla tęczowych tablic Michał Trojnara Michal.Trojnara@pl.abnamro.com Cel prezentacji Zaproponowanie rozwiązania alternatywnego wobec popularnych ataków na

Bardziej szczegółowo

Laboratorium. Szyfrowanie algorytmami Vernam a oraz Vigenere a z wykorzystaniem systemu zaimplementowanego w układzie

Laboratorium. Szyfrowanie algorytmami Vernam a oraz Vigenere a z wykorzystaniem systemu zaimplementowanego w układzie Laboratorium Szyfrowanie algorytmami Vernam a oraz Vigenere a z wykorzystaniem systemu zaimplementowanego w układzie programowalnym FPGA. 1. Zasada działania algorytmów Algorytm Vernam a wykorzystuje funkcję

Bardziej szczegółowo

1 abbbaabaaabaa -wzorzec: aaba

1 abbbaabaaabaa -wzorzec: aaba Algorytmy i złożoność obliczeniowa Laboratorium 14. Algorytmy tekstowe. 1. Algorytmy tekstowe Algorytmy tekstowe mają decydujące znaczenie przy wyszukiwaniu informacji typu tekstowego, ten typ informacji

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Instrukcja dla użytkowników Windows Vista Certyfikat Certum Basic ID

Instrukcja dla użytkowników Windows Vista Certyfikat Certum Basic ID Instrukcja dla użytkowników Windows Vista Certyfikat Certum Basic ID wersja 1.3 Spis treści 1. INSTALACJA CERTYFIKATU... 3 1.1. KLUCZ ZAPISANY BEZPOŚREDNIO DO PRZEGLĄDARKI (NA TYM KOMPUTERZE),... 3 1.2.

Bardziej szczegółowo

Certyfikat Certum Basic ID. Instrukcja dla użytkowników Windows Vista. wersja 1.3 UNIZETO TECHNOLOGIES SA

Certyfikat Certum Basic ID. Instrukcja dla użytkowników Windows Vista. wersja 1.3 UNIZETO TECHNOLOGIES SA Certyfikat Certum Basic ID Instrukcja dla użytkowników Windows Vista wersja 1.3 Spis treści 1. INSTALACJA CERTYFIKATU... 3 1.1. KLUCZ ZAPISANY BEZPOŚREDNIO DO PRZEGLĄDARKI (NA TYM KOMPUTERZE),... 3 1.2.

Bardziej szczegółowo

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych. Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych. Jeśli bit znaku przyjmie wartość 0 to liczba jest dodatnia lub posiada wartość 0. Jeśli bit

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy 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ółowo

ECDL Podstawy programowania Sylabus - wersja 1.0

ECDL Podstawy programowania Sylabus - wersja 1.0 ECDL Podstawy programowania Sylabus - wersja 1.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu Podstawy programowania. Sylabus opisuje, poprzez efekty uczenia się, zakres wiedzy

Bardziej szczegółowo

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy 1 Wprowadzenie do informatyki i użytkowania komputerów Kodowanie informacji System komputerowy Kodowanie informacji 2 Co to jest? bit, bajt, kod ASCII. Jak działa system komputerowy? Co to jest? pamięć

Bardziej szczegółowo

Systemy liczbowe używane w technice komputerowej

Systemy liczbowe używane w technice komputerowej Systemy liczbowe używane w technice komputerowej Systemem liczenia nazywa się sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach.

Bardziej szczegółowo

PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II. Uczeń umie: Świadomie stosować się do zasad regulaminów (P).

PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II. Uczeń umie: Świadomie stosować się do zasad regulaminów (P). PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II DZIAŁ I: KOMPUTER W ŻYCIU CZŁOWIEKA. 1. Lekcja organizacyjna. Zapoznanie uczniów z wymaganiami edukacyjnymi i PSP. 2. Przykłady zastosowań komputerów

Bardziej szczegółowo

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO. Rzeczywistość (istniejąca lub projektowana).. Model fizyczny. 3. Model matematyczny (optymalizacyjny): a. Zmienne projektowania

Bardziej szczegółowo

0 + 0 = 0, = 1, = 1, = 0.

0 + 0 = 0, = 1, = 1, = 0. 5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,

Bardziej szczegółowo

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

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany. Przedstawiamy algorytmy porządkowania dowolnej liczby elementów, którymi mogą być liczby, jak również elementy o bardziej złożonej postaci (takie jak słowa i daty). Porządkowanie, nazywane również często

Bardziej szczegółowo

Klasa 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 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ółowo

Techniki wyszukiwania danych haszowanie

Techniki wyszukiwania danych haszowanie Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Techniki wyszukiwania danych haszowanie 1 Cel

Bardziej szczegółowo

Metoda eliminacji Gaussa. Autorzy: Michał Góra

Metoda eliminacji Gaussa. Autorzy: Michał Góra Metoda eliminacji Gaussa Autorzy: Michał Góra 9 Metoda eliminacji Gaussa Autor: Michał Góra Przedstawiony poniżej sposób rozwiązywania układów równań liniowych jest pewnym uproszczeniem algorytmu zwanego

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 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ółowo

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include

Bardziej szczegółowo

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego Arytmetyka cyfrowa Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego (binarnego). Zapis binarny - to system liczenia

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Plan-de-CAMpagne kompatybilny z SEPA!

Plan-de-CAMpagne kompatybilny z SEPA! Plan-de-CAMpagne kompatybilny z SEPA! Coraz wyższe koszty płatności dokonywanych na poziomie międzynarodowym powodowały częste narzekania konsumentów i przedsiębiorców, którzy takie płatności wykonują

Bardziej szczegółowo

Sortowanie zewnętrzne

Sortowanie zewnętrzne Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Sortowanie zewnętrzne 1 Wstęp Bardzo często

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Algorytmy genetyczne w interpolacji wielomianowej

Algorytmy genetyczne w interpolacji wielomianowej Algorytmy genetyczne w interpolacji wielomianowej (seminarium robocze) Seminarium Metod Inteligencji Obliczeniowej Warszawa 22 II 2006 mgr inż. Marcin Borkowski Plan: Przypomnienie algorytmu niszowego

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Proste algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Pojęcie sortowania Sortowaniem nazywa się proces ustawiania zbioru obiektów w określonym porządku Sortowanie

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo