Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder
|
|
- Stefan Łukasik
- 9 lat temu
- Przeglądów:
Transkrypt
1 Algorytmy Kompresji Danych Laboratorium Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder 1. Zapoznać się z opisem implementacji kodera entropijnego range coder i modelem danych opracowanym dla tego kodera (patrz załącznik 1) oraz z przykładami ich użycia. 2. Implementację algorytmu LZSS (koder i dekoder), opracowaną na poprzednim ćwiczeniu, rozbudować o opcję arytmetycznego kodowania wyjścia z kodera słownikowego (i dekodowania wejścia dla dekodera). Dane wyprowadzane przez algorytm LZSS (tzn. flagę /litera czy ciąg/, literę /gdy nie znaleziono ciągu/, lub offset znalezionego ciągu oraz jego długość) należy kodować nie kodem binarnym stałej długości, a za pomocą range codera. Modelowanie wyjścia algorytmu LZSS można zrealizować w oparciu o kilka adaptacyjnych modeli danych: dla flag model bezpamięciowy lub model kontekstowy (w takim przypadku kontekstem winna być poprzednia flaga), dla liter (gdy nie znaleziono ciągu) model bezpamięciowy, dla offsetów znalezionych ciągów model bezpamięciowy, szczegóły patrz niżej, dla długości znalezionych ciągów model kontekstowy, kontekstem może być log 2 (offset znalezionego ciągu), (funkcja log 2 (int) patrz załącznik 2). Zatem w programie należy użyć czterech modeli oraz jednego kodera. W zależności od tego, co w danym momencie kodujemy, używać będziemy odpowiedniego modelu. Jeżeli np. kodujemy literę, to modelem dla liter wyznaczamy jej prawdopodobieństwo (i wymagane przez koder łączne prawdopodobieństwo wszystkich mniejszych liter) i kodujemy ją koderem arytmetycznym (jedynym, tzn. tym samym, którym w poprzednim kroku kodowaliśmy flagę na podstawie danych otrzymanych z modelu dla flag). Offset znalezionego ciągu, tj. liczba z zakresu [1.. MAX_OFFSET], to alfabet o dużej liczbie symboli (typowo MAX_OFFSET=32768); między innymi ze względu na problem ZFP (patrz instrukcja do ćwiczenia nr. 2) adaptacyjne modelowanie takiego alfabetu mogłoby nie być efektywne. Można jednak podzielić zakres na dwa podzakresy: małych i często występujących offsetów [1.. X] oraz dużych, występujących rzadziej [X MAX_OFFSET]. X jest parametrem, którego wartość należy dobrać. Następnie modelowaniu i kodowaniu podlega alfabet X + 1 symboli, z których pierwsze X traktowane będą jako wartości małych offsetów, a ostania (X + 1) to znacznik dużego offsetu. gdy offset jest w zakresie [1.. X] to kodujemy wartość offsetu i tą wartością aktualizujemy model, gdy offset jest w zakresie [X MAX_OFFSET] to kodujemy symbol X + 1, jako znacznik dużego offsetu, następnie musimy dodatkowo wyprowadzić, binarnie na log 2 (MAX_OFFSET X) bitach, liczbę: offset X 1; model aktualizujemy symbolem X + 1. Np.: W naszym wariancie LZSS MAX_OFFSET= Przyjmujemy, że małe offsety to te, nie większe od 250 (X=250), więc model danych dla offsetów będzie zawierał 251 symboli. Symbol 251 będzie znacznikiem dużego offsetu a pozostałe symbole będą wartościami małych offsetów. Kodujemy offsety wyznaczone algorytmem LZSS:
2 gdy LZSS wygeneruje mały offset, czyli offset jest w zakresie [ ], np. 20, to kodujemy koderem arytmetycznym wprost wartość offsetu (liczbę 20) i tą wartością aktualizujemy model, gdy offset jest duży, czyli jest w przedziale [ ] i np. wynosi 2000, to kodujemy, jako znacznik dużego offsetu symbol 251, a następnie wyprowadzamy liczbę 1749= binarnie, na 15 bitach; model aktualizujemy symbolem 251. Uwagi: Do strumienia wyjściowego kodera arytmetycznego nie można wprost wyprowadzać żadnych danych z pominięciem tego kodera. Zatem aby wyprowadzić n-bitową liczbę do strumienia, należy ją zakodować koderem arytmetycznym jako liczbę z przedziału [0.. 2 n 1] o równomiernym rozkładzie prawdopodobieństwa (liczby 8- i 16-bitowe patrz załącznik 1: makra encode_byte i encode_short, liczby n-bitowe załącznik 2). Zakres wartości offsetu można podzielić na kilka (K) przedziałów, z których pierwszy jest [1.. X] i używać alfabetu X + K 1 symboli. X początkowych symboli używamy do kodowania offsetów z pierwszego przedziału, pozostałych symboli jako znaczników pozostałych przedziałów. Dla pozostałych przedziałów konieczne jest zakodowanie, oprócz znacznika przedziału, pozycji offsetu wewnątrz przedziału zakodowanie binarnie na takiej liczbie bitów, jaka wynika z długości przedziału. Pewne wartości nie wystąpią na wyjściu algorytmu LZSS; minimalna długość znalezionego ciągu jest liczbą większą od 1 i jest zależna od parametrów algorytmu (typowo wynosi 3 lub więcej), co można uwzględnić optymalizując koder. 3. Dla jednego z plików z korpusu Calgary (sugerowane użycie pliku wybranego podczas poprzednich zajęć) dobrać parametry: liczbę małych offsetów (X) oraz szybkość adaptacji modeli danych (parametr rescale z funkcji initqsmodel). Zmierzyć współczynnik i czas kompresji; porównać uzyskany współczynnik z wynikiem kodera LZSS bez kodowania arytmetycznego. Dla pozostałych plików z Calgary również zmierzyć współczynniki i porównać je z współczynnikami uzyskanymi dla LZSS bez kodera arytmetycznego na poprzednim laboratorium. Uzyskane wyniki oraz wnioski zawrzeć w krótkim sprawozdaniu.
3 Załącznik 1: Opis implementacji range coder Implementacja range codera autorstwa Michaela Schindlera (do ściągnięcia ze strony przedmiotu, lub z ) zawiera między innymi: koder entropijny (range coder): rangecod.h rangecod.c bezpamięciowy model danych: qsmodel.h qsmodel.c przykłady użycia kodera i modeli statyczny (de)kompresor: simple_c.c simple_d.c adaptacyjny (de)kompresor (model bezpamięciowy): comp.c decomp.c adaptacyjny (de)kompresor z modelem I* rzędu: comp1.c decomp1.c Niniejszy załącznik zawiera krótki opis podstawowych elementów kodera i modelu, bardziej szczegółowa dokumentacja zawarta jest w plikach.h odpowiednich modułów i programach przykładowych. Sposób użycia kodera i dekodera czytelnie ilustruje przykład simple_c.c simple_d.c, użycie modelu we współpracy z koderem/dekoderem przykład comp.c decomp.c. Koder entropijny range coder (pliki rangecod.h rangecod.c) struct rangecoder rc; Moduł kodera wymaga zadeklarowania zmiennej stanu i przekazywania jej jako parametru do wszystkich funkcji modułu. void start_encoding(rangecoder *rc, char c, int initlength); inicjalizacja kodera. c jest pierwszym bajtem (nagłówkiem) skompresowanych danych (ze względów implementacyjnych konieczne jest wyprowadzenie jednego bajta, o dowolnej wartości, przed rozpoczęciem wyprowadzania skompresowanych danych). initlength to liczba już wyprowadzonych bajtów, (0 gdy nie reinicjalizujemy kodera). void encode_freq(rangecoder *rc, freq sy_f, freq lt_f, freq tot_f); zakoduj symbol s, sy_f to liczba wystąpień symbolu s, lt_f to łączna liczba wystąpień symboli mniejszych od s, tot_f to łączna liczba wystąpień wszystkich symboli alfabetu. Uwaga: domyślnym strumieniem do wyprowadzania skompresowanych danych jest stdout (a wejściem dla dekompresji stdin), aby kompresować do pliku należy albo przekierować stdin/stdout (za pomocą funkcji freopen() i setmode(), tak jak to pokazano w przykładzie simple_c.c), albo przedefiniować makra zdefiniowane w rangecod.c, za pomocą których odbywa się całe i/o range codera: #define outbyte(cod,x) putchar(x) #define inbyte(cod) getchar() void encode_shift(rangecoder *rc, freq sy_f, freq lt_f, freq shift); szybsza wersja funkcji encode_freq, do zastosowania, gdy łączna liczba wystąpień wszystkich symboli alfabetu jest potęgą dwójki i wynosi 2 shift. #define encode_byte(rc,b)... #define encode_short(rc,s)... zapis bajta b lub liczby shortint s do strumienia skompresowanych danych (na odpowiednio około 8 i około 16 bitach).
4 Uwaga: do strumienia, do którego zapisuje range coder nie należy nic wyprowadzać z pominięciem kodera, i stąd te makra. uint4 done_encoding(rangecoder *rc ); zakończenie pracy kodera, wyprowadzenie wszystkich jeszcze nie zapisanych danych. Funkcja zwraca liczbę bajtów wyprowadzonych od inicjalizacji kodera. int start_decoding(rangecoder *rc ); inicjalizacja dekodowania, zwraca EOF w razie błędu, lub nagłówek zakodowanych danych (parametr c ze start_encoding). freq decode_culfreq(rangecoder *rc, freq tot_f ); zwróć łączną liczbę wystąpień symboli mniejszych od tego, który właśnie dekodujemy (dokładniej wartość jej równą lub nieistotnie mniejszą). tot_f to łączna liczba wystąpień wszystkich symboli alfabetu. Dekodowanie symbolu odbywa się w dwóch krokach: na podstawie zwróconej liczby i modelu wyznaczamy, jakiemu symbolowi odpowiada ta liczba, po czym należy uaktualnić stan dekodera wywołując poniższą funkcję. void decode_update(rangecoder *rc, freq sy_f, freq lt_f, freq tot_f); aktualizacja dekodera po zdekodowaniu symbolu, parametry jak w funkcji encode_freq. freq decode_culshift( rangecoder *ac, freq shift ); #define decode_update_shift(rc,f1,f2,shift)... szybsze wersje funkcji decode_culfreq() i decode_update() do zastosowania, gdy łączna liczba wystąpień wszystkich symboli alfabetu jest potęgą dwójki i wynosi 2 shift. unsigned char decode_byte(rangecoder *rc); unsigned short decode_short(rangecoder *rc); odczytanie ze srtumienia skompresowanych danych odpowiednio bajta lub liczby shortint, po odczytaniu nie wywołujemy decode_update. void done_decoding( rangecoder *rc ); zakończenie pracy dekodera. Proste przykłady użycia powyższych funkcji można znaleźć w programach simple_c.c i simple_d.c. Model danych dla range codera (pliki qsmodel.h qsmodel.c) struct qsmodel m; model bezpamięciowy (zawiera m. in. tablice liczników wystąpień symboli), jest argumentem funkcji operujących na modelu, aby zbudować model wyższego rzędu należy utworzy kolekcję modeli bezpamięciowych (patrz comp1.c decomp1.c). void initqsmodel(qsmodel *m, int n, int lg_totf, int rescale, int *init, int compress); inicjalizacja modelu m, n to liczba symboli alfabetu,
5 lg_totf łączna liczba wystąpień wszystkich symboli alfabetu zwracana przez model na użytek kodera arytmetycznego będzie zawsze wynosiła 2 lg_totf (tzn. inne liczniki będą skalowane tak, aby zachować zadaną łączną liczbę wystąpień), wartość lg_totf powinna by mniejsza od 16, np. wynosić 12, rescale określa co ile uaktualnień modelu przeprowadzać okresowe dzielenie wszystkich liczników przez 2 (faktycznie jest to wartość docelowa, na początku kompresji dzielenie liczników wykonywane jest częściej), wartość rescale powinna być mniejsza od 2 lg_totf+1. Od wartości rescale zależy szybkość adaptacji modelu, init to tablica początkowych wartości liczników symboli lub NULL (wtedy inicjalizacja w sposób domyślny, wszystkie symbole na początku mają takie same wartości liczników), compress wartośc 1 gdy model używamy w kompresji, 0 dla dekompresji. void resetqsmodel(qsmodel *m, int *init); reinicjalizacja modelu. void deleteqsmodel(qsmodel *m ); zwolnienie pamięci przydzielonej dla modelu w initqsmodel(). void qsgetfreq(qsmodel *m, int sym, int *sy_f, int *lt_f ); dla symbolu sym wyznacz liczbę wystąpień tego symbolu (sy_f) oraz łączną liczbę wystąpień symboli mniejszych od sym (lt_f). Uwaga: łączna liczba wystąpień wszystkich symboli alfabetu to 2 lg_totf, gdzie lg_totf jest zadane podczas inicjalizacji modelu. int qsgetsym( qsmodel *m, int lt_f); wyznacz symbol znając łączną liczbę wystąpień symboli mniejszych od niego (lt_f). void qsupdate(qsmodel *m, int sym); aktualizacja modelu, zarejestrowanie kolejnego wystąpienia symbolu sym. Uwaga: model jest skonstruowany w taki sposób, że wyznaczona przez niego łączna liczba wystąpień wszystkich symboli alfabetu jest potęgą dwójki już od momentu inicjalizacji modelu, dzięki czemu możemy korzystać z szybszych wersji funkcji kodowania/dekodowania range codera. Jednak, aby powyższy warunek spełnić i dodatkowo, aby model działał szybko, operacja qsupdate() nie zawsze prowadzi do natychmiastowej aktualizacji struktur, na podstawie których wyznaczane są liczby wystąpień symboli. Zamiast tego, nowe wystąpienia są zliczane w dodatkowej tablicy, z której co jakiś czas są hurtem wprowadzane do właściwej tablicy liczników. Zatem faktycznie aktualizacja modelu nastąpi dla każdego symbolu z którym wywołana jest funkcja qsupdate(), jednak dla niektórych symboli z pewnym opóźnieniem. Przykłady użycia powyższych funkcji i wykorzystania ich do modelowania dla kompresji z użyciem range codera można znaleźć w programach comp.c decomp.c (model bezpamięciowy) oraz comp1.c decomp1.c (model kontekstowy I rzędu). * Istnieją różne definicje rzędu modelu; tutaj przyjmujemy, że rząd modelu równy jest liczbie symboli poprzedzających dany (długości kontekstu tego symbolu) branych pod uwagę przy wyznaczaniu prawdopodobieństwa dla tego symbolu. Zatem budując model rzędu k zakładamy, że ciąg symboli generowanych przez źródło jest dyskretnym łańcuchem Markowa rzędu k.
6 Załącznik 2: Przydatne funkcje Funkcja sufit(log 2 (val)) int ceil_log_2(int val) /* ceil(log_2(val)) */ { int result; assert(val>0); } if (val==1) return 0; result=1; val-=1; while (val>>=1) result++; return result; Zapis/odczyt liczb n-bitowych range coderem Zapis n-bitowej liczby b do strumienia skompresowanych danych, 0 < n 16. void encode_n_bits(rangecoder *rc, int b, int n) { assert(n>0 && n<=16); assert(b>=0 && b<(1<<n)); } encode_shift(rc,(freq)1,(freq)b,(freq)n); Odczyt liczby n-bitowej ze strumienia skompresowanych danych, 0 < n 16. unsigned short decode_n_bits(rangecoder *rc, int n) { unsigned short tmp; assert(n>0 && n<=16); } tmp = decode_culshift(rc,n); decode_update_shift(rc,1,tmp,n); return tmp;
Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk
Kompresja Kodowanie arytmetyczne Dariusz Sobczuk Kodowanie arytmetyczne (lata 1960-te) Pierwsze prace w tym kierunku sięgają początków lat 60-tych XX wieku Pierwszy algorytm Eliasa nie został opublikowany
Kodowanie informacji
Kodowanie informacji Tomasz Wykład 4: kodowanie arytmetyczne Motywacja Podstawy i własności Liczby rzeczywiste Motywacje 1 średnia długość kodu Huffmana może odbiegać o p max + 0.086 od entropii, gdzie
Kodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski
Kodowanie Huffmana Platforma programistyczna.net; materiały do laboratorium 24/5 Marcin Wilczewski Algorytm Huffmana (David Huffman, 952) Algorytm Huffmana jest popularnym algorytmem generującym optymalny
mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A
mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. KOMPRESJA ALGORYTMEM ARYTMETYCZNYM, GOLOMBA I RICE'A Idea algorytmu arytmetycznego Przykład kodowania arytmetycznego Renormalizacja
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
Temat: Algorytm kompresji plików metodą Huffmana
Temat: Algorytm kompresji plików metodą Huffmana. Wymagania dotyczące kompresji danych Przez M oznaczmy zbiór wszystkich możliwych symboli występujących w pliku (alfabet pliku). Przykład M = 2, gdy plik
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część jedenasta Przetwarzanie plików amorficznych Konwencja języka C Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,
1 Kody Tunstalla Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9, 14.04.2005 Inne podejście: słowa kodowe mają ustaloną długość, lecz mogą kodować ciągi liter z alfabetu wejściowego o różnej
Entropia Kodowanie. Podstawy kompresji. Algorytmy kompresji danych. Sebastian Deorowicz
Algorytmy kompresji danych 2007 02 27 Plan wykładu 1 Modelowanie i kodowanie 2 Modelowanie i kodowanie Plan wykładu 1 Modelowanie i kodowanie 2 Modelowanie i kodowanie definicja stowarzyszona ze zbiorem
Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński
Języki programowania Część siódma Przetwarzanie plików amorficznych Konwencja języka C Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie
Kody Tunstalla. Kodowanie arytmetyczne
Kody Tunstalla. Kodowanie arytmetyczne Kodowanie i kompresja informacji - Wykład 3 8 marca 2010 Kody Tunstalla Wszystkie słowa kodowe maja ta sama długość ale jeden kod może kodować różna liczbę liter
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()
Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne
Załóżmy, że mamy źródło S, które generuje symbole ze zbioru S={x, x 2,..., x N } z prawdopodobieństwem P={p, p 2,..., p N }, symbolom tym odpowiadają kody P={c, c 2,..., c N }. fektywność danego sposobu
Przetwarzanie i transmisja danych multimedialnych. Wykład 5 Kodowanie słownikowe. Przemysław Sękalski.
Przetwarzanie i transmisja danych multimedialnych Wykład 5 Kodowanie słownikowe Przemysław Sękalski sekalski@dmcs.pl Politechnika Łódzka Katedra Mikroelektroniki i Technik Informatycznych DMCS Przemysław
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
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG
Założenia i obszar zastosowań KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG Plan wykładu: Geneza algorytmu Założenia i obszar zastosowań JPEG kroki algorytmu kodowania obrazu Założenia: Obraz monochromatyczny
Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j
Kompresja transformacyjna. Opis standardu JPEG. Algorytm JPEG powstał w wyniku prac prowadzonych przez grupę ekspertów (ang. Joint Photographic Expert Group). Prace te zakończyły się w 1991 roku, kiedy
teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015
teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015 1 wczoraj Wprowadzenie matematyczne. Entropia i informacja. Kodowanie. Kod ASCII. Stopa kodu. Kody bezprefiksowe.
Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim
pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.
komunikat do zakodowania: a a b a b b a b a c c a b a a a a a c a c b c b b c c a a c b a 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 przyjmujemy długość bufora słownikowego
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41
Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje
Definicja. Jeśli. wtedy
Definicja Jeśli wtedy Cel kompresji: zredukowanie do minimum oczekiwanego (średniego) kosztu gdzie l i jest długością słowa kodu c i kodującego symbol a i Definicja Definicje Efektywność kodowania określamy
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
Kodowanie Shannona-Fano
Kodowanie Shannona-Fano Kodowanie Shannona-Fano znane było jeszcze przed kodowaniem Huffmana i w praktyce można dzięki niemu osiągnąć podobne wyniki, pomimo, że kod generowany tą metodą nie jest optymalny.
Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2
Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
teoria informacji Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015
teoria informacji Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015 1 zakres materiału zakres materiału 1. Czym jest teoria informacji? 2. Wprowadzenie matematyczne. 3. Entropia i informacja.
Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim
Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady
Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy
KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F
KODY SYMBOLI Kod Shannona-Fano KODOWANIE DANYCH, A.Przelaskowski Metoda S-F Kod Huffmana Adaptacyjne drzewo Huffmana Problemy implementacji Kod Golomba Podsumowanie Kod drzewa binarnego Na wejściu rozkład:
Zadanie nr 3: Sprawdzanie testu z arytmetyki
Zadanie nr 3: Sprawdzanie testu z arytmetyki 1 Cel zadania Zadanie wymusza praktyczne przećwiczenia dostosowania formatu i formy wyświetlania informacji dla własnych typów danych. Ma ono pokazać potencjalne
while(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).
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Tablice deklaracja, reprezentacja wewnętrzna
Tablice deklaracja, reprezentacja wewnętrzna Tablica jest zmienną złożoną z elementów tego samego typu. Obejmuje ona ciągły obszar pamięci operacyjnej dokładnie tak duży, aby zmieścić wszystkie jej elementy.
Zadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe
Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie
Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a
Modulacja i kodowanie Labolatorium Kodowanie źródłowe Kod Huffman a W tym ćwiczeniu zajmiemy się kodowaniem źródłowym (source coding). 1. Kodowanie źródłowe Głównym celem kodowanie źródłowego jest zmniejszenie
Biblioteka standardowa - operacje wejścia/wyjścia
Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline
Tematy projektów Algorytmy Kompresji Danych (2006)
Tematy projektów Algorytmy Kompresji Danych (2006) Projekt nr 1 Temat: Kompresor plików w formacie.dbf Opracować algorytm kompresji plików w formacie.dbf. W algorytmie należy wykorzystać znajomość struktury
Tablice (jedno i wielowymiarowe), łańcuchy znaków
Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie
Technologie Informacyjne
System binarny Szkoła Główna Służby Pożarniczej Zakład Informatyki i Łączności October 7, 26 Pojęcie bitu 2 Systemy liczbowe 3 Potęgi dwójki 4 System szesnastkowy 5 Kodowanie informacji 6 Liczby ujemne
Funkcje zawarte w bibliotece < io.h >
PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece
Algorytm 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
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
Funkcje zawarte w bibliotece < io.h >
PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece
Kompresja danych kodowanie Huffmana. Dariusz Sobczuk
Kompresja danych kodowanie Huffmana Dariusz Sobczuk Plan wykładu Kodowanie metodą Shannona-Fano Kodowanie metodą Huffmana Elementarny kod Golomba Kod Golomba Kod Rice a kompresja danych 2 Efektywny kod
Języki programowania obiektowego Nieobiektowe elementy języka C++
Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków
3. Opracować program kodowania/dekodowania pliku tekstowego. Algorytm kodowania:
Zadania-7 1. Opracować program prowadzący spis pracowników firmy (max.. 50 pracowników). Każdy pracownik opisany jest za pomocą struktury zawierającej nazwisko i pensję. Program realizuje następujące polecenia:
Granica kompresji Kodowanie Shannona Kodowanie Huffmana Kodowanie ciągów Kodowanie arytmetyczne. Kody. Marek Śmieja. Teoria informacji 1 / 35
Kody Marek Śmieja Teoria informacji 1 / 35 Entropia Entropia określa minimalną statystyczną długość kodowania (przyjmijmy dla prostoty że alfabet kodowy A = {0, 1}). Definicja Niech X = {x 1,..., x n }
Tablice, funkcje - wprowadzenie
Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład
LZ77 LZ78. Kompresja danych. Tomasz Jurdziński. Wykład 5: kodowanie słownikowe
Tomasz Wykład 5: kodowanie słownikowe Motywacja Motywacje 1 zazwyczaj dane nie tworza ciagu wartości niezależnych, kolejny symbol jest zależny od poprzedzajacych go; 2 pewne sekwencje (słowa) często się
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. Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną
1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie
Opracował: dr hab. inż. Jan Magott KATEDRA INFORMATYKI TECHNICZNEJ Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych ćwiczenie 207 Temat: Automaty Moore'a i Mealy 1. Cel ćwiczenia Celem ćwiczenia jest
Kodowanie informacji
Tomasz Wykład 4: kodowanie słownikowe Motywacja Motywacje 1 kodowane dane nie tworza ciagu wartości niezależnych, rozkład prawdopodobieństwa zależy od symboli poprzedzajacych symbol kodowany; 2 pewne sekwencje
Wielomian interpolacyjny Hermite a
Wielomian interpolacyjny Hermite a Witold Bołt 15 listopada 2005 1 Sformułowaniezadania Dlafunkcjif:[a,b] Rdanejwzorem: f(t)=e 2t +1 wyznaczyć wielomian interpolacyjny Hermite a na zadanych węzłach. Wypisać
Kwantyzacja wektorowa. Kodowanie różnicowe.
Kwantyzacja wektorowa. Kodowanie różnicowe. Kodowanie i kompresja informacji - Wykład 7 12 kwietnia 2010 Kwantyzacja wektorowa wprowadzenie Zamiast kwantyzować pojedyncze elementy kwantyzujemy całe bloki
Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char
Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od
Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Konstrukcje i Technologie w Aparaturze Elektronicznej Ćwiczenie nr 5 Temat: Przetwarzanie A/C. Implementacja
E S - uniwersum struktury stosu
Temat: Struktura stosu i kolejki Struktura danych to system relacyjny r I r i i I U,, gdzie U to uniwersum systemu, a i i - zbiór relacji (operacji na strukturze danych). Uniwersum systemu to zbiór typów
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
Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1
Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy
Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli
Język C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Sieci 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
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
OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)
OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;
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ą
Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.
Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -
Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Podstawowe algorytmy przetwarzania tablic (wypełnianie, porównywanie elementów,
Kodowanie predykcyjne
Studia Wieczorowe Wrocław, 27.03.2007 Kodowanie informacji Wykład 5 Kodowanie predykcyjne Idea: przewidujemy następny element ciągu i kodujemy różnicę między wartością przewidywaną i rzeczywistą, w oparciu
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1
Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).
Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński
Języki programowania Część druga Przetwarzanie tablic znaków Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim
external Data Representation
Remote Procedure Call external Data Representation Opis standardu RFC 1014 Kanoniczna reprezentacja danych oparta na formacie IEEE Deklaratywny język opisu struktur danych (zbliżony do języka C) Koncepcja
Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Temat 7. Programowanie mikrokontrolerów z rodziny PIC16 w języku C przy użyciu HI-TECH C for PIC10/12/16
Temat 7. Programowanie mikrokontrolerów z rodziny PIC16 w języku C przy użyciu HI-TECH C for PIC10/12/16 Spis treści do tematu 7 7.1. Używanie kompilatora 7.2. Rozszerzenia języka ANSI C 7.3. Optymalizacja
Podstawy programowania
Podstawy programowania Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót treści wykładu,
IX. Wskaźniki.(3 godz.)
Opracowała: dr inż. Anna Dubowicka Uczelniane Centrum Komputerowe PK IX. Wskaźniki.(3 godz.) Wskaźnik jest zmienną, która zawiera adres innej. 1. Definiowanie wskaźników. typ * nazwa ; gdzie: znak * informuje
AKD Metody słownikowe
AKD Metody słownikowe Algorytmy kompresji danych Sebastian Deorowicz 2009 03 19 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 1 / 38 Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela
Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:
Ćwiczenie nr 6 Temat: Operacje na łańcuchach znaków. Zagadnienia: Zasady pracy z łańcuchami tekstowymi (tablice wartości typu char). funkcje standardowe operacji na łańcuchach, funkcje I/O dla operacji
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
Matematyczne 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
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy
Sun RPC/XDR. Dariusz Wawrzyniak 1
Remote Procedure Call external Data Representation trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej stosu TCP/IP (TCP
Analiza 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ą
Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004
4 marca 2004 Podstawowe oznaczenia i definicje Wymagania wobec kodu Podstawowa idea Podsumowanie Podstawowe oznaczenia i definicje Podstawowe oznaczenia i definicje: alfabet wejściowy: A = {a 1, a 2,...,
Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.
Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście. wer. 10 z drobnymi modyfikacjami! Wojciech Myszka 2018-03-27 09:06:38 +0200 Część I Formatowane (tekstowe) wejście/wyjście Otwarcie pliku
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część trzynasta Tablice struktur, pliki struktur Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści
PMiK Programowanie Mikrokontrolera 8051
PMiK Programowanie Mikrokontrolera 8051 Wykład 3 Mikrokontroler 8051 PMiK Programowanie mikrokontrolera 8051 - wykład S. Szostak (2006) Zmienna typu bit #define YES 1 // definicja stałych #define NO 0
7. 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
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.
Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym
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