poniedziałek, 11 czerwca 2018
wtorek, 29 maja 2018
wtorek, 23 stycznia 2018
Kompresja danych
1.Kompresja to taki proces zmniejszania objętości danych,który umożliwia odtworzenie pierwotnych danych. Proces odtwarzania pierwotnych danych nazywamy dekompresją.
2.Współczynnik kompresji obliczamy, dzieląc objętość danych skompresowanych przez objętość danych nieskompresowanych.
Rc= Vk/ Vnk * 100%
lub
Rc'= (1-Vk/Vnk) * 100%
Z współczynnikiem kompresji wiąże się pojęcie bitrate. Stosuje się je w przypadku strumienia danych, a więc ciągu danych przesłanych w czasie rzeczywistym np. 128 kb/s oznacza,że dane zostały zmniejszone tak, by jedna sekunda filmu lub dźwięku zajmowała nie więcej niż 128 kilobitów.
3. Rodzaje kompresji:
2.Współczynnik kompresji obliczamy, dzieląc objętość danych skompresowanych przez objętość danych nieskompresowanych.
Rc= Vk/ Vnk * 100%
lub
Rc'= (1-Vk/Vnk) * 100%
Z współczynnikiem kompresji wiąże się pojęcie bitrate. Stosuje się je w przypadku strumienia danych, a więc ciągu danych przesłanych w czasie rzeczywistym np. 128 kb/s oznacza,że dane zostały zmniejszone tak, by jedna sekunda filmu lub dźwięku zajmowała nie więcej niż 128 kilobitów.
3. Rodzaje kompresji:
- Kompresja bezstratna (ang. lossless compression)
W przypadku kompresji bezstratnej dane odtworzone są identyczne (bit po bicie) z danymi pierwotnymi.
Zastosowanie:
- teksty
- programy komputerowe
- bazy danych
- pliki z innych danych (pliki arkusza kalkulacyjnego,pliki konfiguracyjne,dane przesyłane w sieciach komputerowych itp.)
- Kompresja stratna (ang. lossy compression)
W przypadku kompresji stratnej dane odtworzone są podobne do danych pierwotnych i na ogół się różnią od nich w sposób trudny do wychwycenia.
Zastosowanie:
- dźwięki (kompresja GSM wykorzystywana w telefonii komórkowej)
- muzyka (format MP3)
- obrazy (format JPEG)
- filmy (format MPEG)
4.Programy do kompresji danych:
- 7-Zip
- WinRAR
- IZArc
- Zipware
- PeaZip
- Ashampoo ZIP 2017
- Free RAR Extract Frog
- Hamster Free Zip Archiver
- Bandizip
- HaoZip
- B1 Free Archiver
wtorek, 2 stycznia 2018
Skończoność algorytmów
1. Jednym z warunków poprawności algorytmu jest jego skończoność.
2. Algorytm,który nie jest skończony, nie może zostać uznany za poprawny, bowiem nigdy nie spowoduje wyznaczenia poprawnego wyniku. Powodem nieskończoności działania algorytmu może być np.błędnie określony warunek zakończenia iteracji.
3.Algorytm powinien być skończony dla wszystkich danych wejściowych, to znaczy,że żadna ich kombinacja, dopuszczona przez specyfikacje problemu, nie powinna powodować sytuacji, w której algorytm się nie kończy.
2. Algorytm,który nie jest skończony, nie może zostać uznany za poprawny, bowiem nigdy nie spowoduje wyznaczenia poprawnego wyniku. Powodem nieskończoności działania algorytmu może być np.błędnie określony warunek zakończenia iteracji.
3.Algorytm powinien być skończony dla wszystkich danych wejściowych, to znaczy,że żadna ich kombinacja, dopuszczona przez specyfikacje problemu, nie powinna powodować sytuacji, w której algorytm się nie kończy.
Poprawność algorytmów
1.Algorytm jest poprawny, jeżeli dla poprawnych danych daje poprawne wyniki ( dla dowolnej kombinacji danych wejściowych spełniających warunki początkowe algorytm wyprowadzi wyniki spełniające warunki końcowe).
Algorytm jest poprawny, jeżeli rozwiązuje problem zgodnie z specyfikacją problemu (zadania).
2.Algorytm jest całkowicie poprawny, jeśli dla wszystkich danych wejściowych spełniających warunki początkowe wyprowadzi wyniki spełniające warunki końcowe i obliczenia zostaną zakończone.
3.Algorytm jest częściowo poprawny, jeśli dla obliczeń,które się skończą,ich wyniki są poprawne względem warunków początkowych i końcowych. ( nie jest konieczne wykazanie,że obliczenia kończą się dla wszystkich poprawnych danych).
4.Algorytm uniwersalny, to algorytm, który umożliwia rozwiązanie dowolnego zadania z pewnej klasy zadań. Przykładem może być algorytm sortowania,który umożliwia uporządkowanie dowolnego ciągu danych.
Ponadto poprawny algorytm powinien być dobrze określony i uniwersalny (występują polecenia i operacje zrozumiałe dla użytkowania).
5.Błędy:
- logiczne ( błędne użycie instrukcji programu) - powoduje,że nie dla wszystkich poprawnych danych program generuje poprawne wyniki, w celu wykrycia tych błędów programy poddaje się testowaniu, polegającemu na sprawdzaniu, czy dla określonych danych program generuje określone wyniki.
- kompilacji (składowe)
piątek, 27 października 2017
Kilka zasad programowania
Zasada 1.
Należy stosować zrozumiałe nazwy zmiennych,skróty. W nazewnictwie należy przestrzegać norm danego języka. Mimo,że stosowanie wieloliterowych,opisowych nazw jest czasochłonne,to jest bardzo dobrym nawykiem.
Zasada 2.
Warto rezerwować pewne nazwy na zmienne używane wielokrotnie,np. sterujące pętlami -i,j.
Zasada 3.
Dobrze jest sporządzić listy używanych zmiennych. Niektóre języki programowania obligują do sporządzenia takich list.
Zasada 4.
Należy dzielić program na podprogramy realizujące mniejsze fragmenty zadania, zwłaszcza w złożonych problemach. Często wykorzystywane, uniwersalne procedury i funkcje można łączyć w niezalezni od głównie programu moduły.
Zasada 5.
Trzeba dbać o przejrzystość tekstu programu i zachować czytelność jego struktury. Warto też dodawać komentarze na początku procedur i funkcji oraz przy niektórych instrukcjach.
Zasada 6.
Należy pisać programy odporne na błędy użytkowników. Program powinien instruować swojego użytkownika o działaniach, jakie musi on podejmować, oraz wyświetlać komunikaty dotyczące oczekiwanego rodzaju danych i nałożonych na nie ograniczeń. Trzeba też zabezpieczać program przed błędem typu zmiennych. Jeśli program wymaga danych numerycznych, a użytkownik przypadkowo naciśnie klawisz z literą B, program nie powinien przerywać działania ani się zwieszać, tylko wyświetlić odpowiedni komunikat.
Dobry styl programowania to taki,w którym potrafimy zapisać algorytm w sposób zrozumiały dla komputera i człowieka. Dobry styl programowania przynosi wymierne korzyści: skrócenie czasu projektowania,pisania i uruchomiania programu oraz łatwość wprowadzania poprawek. Choć pożytek ze stosowania tych zasad docenia się, kiedy tworzy się duże programy, celowe jest stosowanie ich przy rozwiązywaniu nawet prostych zadań.
Zasada 4.
Należy dzielić program na podprogramy realizujące mniejsze fragmenty zadania, zwłaszcza w złożonych problemach. Często wykorzystywane, uniwersalne procedury i funkcje można łączyć w niezalezni od głównie programu moduły.
Zasada 5.
Trzeba dbać o przejrzystość tekstu programu i zachować czytelność jego struktury. Warto też dodawać komentarze na początku procedur i funkcji oraz przy niektórych instrukcjach.
Zasada 6.
Należy pisać programy odporne na błędy użytkowników. Program powinien instruować swojego użytkownika o działaniach, jakie musi on podejmować, oraz wyświetlać komunikaty dotyczące oczekiwanego rodzaju danych i nałożonych na nie ograniczeń. Trzeba też zabezpieczać program przed błędem typu zmiennych. Jeśli program wymaga danych numerycznych, a użytkownik przypadkowo naciśnie klawisz z literą B, program nie powinien przerywać działania ani się zwieszać, tylko wyświetlić odpowiedni komunikat.
Dobry styl programowania to taki,w którym potrafimy zapisać algorytm w sposób zrozumiały dla komputera i człowieka. Dobry styl programowania przynosi wymierne korzyści: skrócenie czasu projektowania,pisania i uruchomiania programu oraz łatwość wprowadzania poprawek. Choć pożytek ze stosowania tych zasad docenia się, kiedy tworzy się duże programy, celowe jest stosowanie ich przy rozwiązywaniu nawet prostych zadań.
piątek, 20 października 2017
Funkcje zwracające w języku programowania C++
1.Zasięg zmiennej określa zakres widoczności nazwy zmiennej w obrębie pliku.
2.Ze względu na zasięg zmiennej rozróżniamy zmienne globalne i lokalne:
3.Zmienne globalne w języku C++ deklarujemy poza funkcjami.
Zmienne te są widoczne od miejsca deklaracji do końca pliku, również w funkcjach.
Niezależnie od zmiennych globalnych można wewnątrz funkcji C++ zdeklarować zmiennie lokalne.
Zmienne te będą widoczne w C++ w części programu od miejsca deklaracji do końca funkcji. W języku C++ zmienne lokalne mogą być również widoczne tylko w obrębie jednego bloku instrukcji {}.
Próba użycia zmiennej lokalnej w programie głównym spowoduje pojawienie się podczas kompilacji błędu niezdeklarowanej zmiennej.
Zmiennym globalnym pamięć przydzielana jest na cały czas wykonywania programu, natomiast zmiennym lokalnym - tylko na czas działania procedury lub funkcji.
4. Stosowanie zmiennej lokalnej.
void Usmiechy()
{
int k;
cin >>k;
if (k>0) for (i=0; i<20; i++) cout << ":-)";
else for (i=0; i<20; i++) cout << ":-(";
}
Zmienne globalne mogą zostać przesłonięte. Zdeklarowanie w procedurze lub funkcj zmiennej lokalnej o takiej samej nazwie jak zmienna globalna spowoduje przesłonięcie zmiennej globalnej, co oznacza, że używana będzie zmienna lokalna a nie globalna.
#include <iostream>
using namespace std;
int i;
void Usmiechy()
{
int i;
for (i=0; i<20; i++) cout << ":-)";
}
int main ()
{
i=10;
Usmiechy();
cout<<i;
return 0;
}
------------------------------------------------------------------
int main ()
{
for (i=0; i<20; i++) cout << ":-)";
cout << endl;
return 0;
}
Zasięg zmiennej to w programowaniu fragment programu (np. obszar lub blok kodu) z którym skojarzone są wartości lub wyrażenia (np. zmienne). Różne języki programowania posiadają różne rodzaje zasięgów widoczności.
Zasięgu najczęściej używa się do:
- kontrolowania cyklu życia zmiennych
- kontrolowania widoczności i dostępności zmiennych i stałych w obrębie programu
- implementacji hermetyzacji
Zasięgi mogą zawierać:
- deklaracje lub definicje identyfikatorów (np. zmiennych)
- instrukcje lub wyrażenia definiujące wykonywalny algorytm lub jego część
- inne, zagnieżdżone zasięgi
2.Ze względu na zasięg zmiennej rozróżniamy zmienne globalne i lokalne:
Zmienna globalna – zmienna istniejąca przez cały czas życia programu i widziana z wielu miejsc w programie.
Nadużywanie zmiennych globalnych może prowadzić do poważnych problemów, takich jak:
- w przypadku programów wielowątkowych, zmienna taka może być modyfikowana przez dowolny wątek, co prowadzić może do nieokreśloności przy braku synchronizacji wątków.
- jeśli funkcja używa zmiennej globalnej jako zmiennej pomocniczej, niemożliwe może być jej rekursywne wywołanie
- zmienne globalne zaśmiecają przestrzeń nazw, w niektórych architekturach może to doprowadzić do przepełnienia stosu
- na działanie danej części kodu może mieć wpływ kod zupełnie niezwiązany, o ile oba używają tej samej zmiennej globalnej i jeden z nich ją modyfikuje.
- zmienne globalne mogą kolidować ze zmiennymi lokalnymi (te drugie przesłaniają zmienne globalne o ile posiadają identyczne nazwy).
Zmienna lokalna – zmienna zdefiniowana i dostępna wyłącznie w określonym bloku programu, tworzona w momencie wejścia do tego bloku oraz usuwana z pamięci w momencie wyjścia z danego bloku. Tym samym zasięg zmiennej lokalnej oraz czas jej życia pokrywają się i obejmują blok, w którym zmienna lokalna jest zdefiniowana. Zmienna lokalna ma więc określony, ograniczony zakres istnienia i dostępności. To w jakich blokach programowych można tworzyć zmienne lokalne definiuje składnia konkretnego języka programowania. Typowymi blokami, w których można w różnych językach programowania tworzyć zmienne lokalne, są moduły, podprogramy oraz w pewnych językach programowania także instrukcje blokowe (lub inne instrukcje strukturalne, np. pętla for w języku C++ i inne).
Zmienne te są widoczne od miejsca deklaracji do końca pliku, również w funkcjach.
Niezależnie od zmiennych globalnych można wewnątrz funkcji C++ zdeklarować zmiennie lokalne.
Zmienne te będą widoczne w C++ w części programu od miejsca deklaracji do końca funkcji. W języku C++ zmienne lokalne mogą być również widoczne tylko w obrębie jednego bloku instrukcji {}.
Próba użycia zmiennej lokalnej w programie głównym spowoduje pojawienie się podczas kompilacji błędu niezdeklarowanej zmiennej.
Zmiennym globalnym pamięć przydzielana jest na cały czas wykonywania programu, natomiast zmiennym lokalnym - tylko na czas działania procedury lub funkcji.
4. Stosowanie zmiennej lokalnej.
void Usmiechy()
{
int k;
cin >>k;
if (k>0) for (i=0; i<20; i++) cout << ":-)";
else for (i=0; i<20; i++) cout << ":-(";
}
Zmienne globalne mogą zostać przesłonięte. Zdeklarowanie w procedurze lub funkcj zmiennej lokalnej o takiej samej nazwie jak zmienna globalna spowoduje przesłonięcie zmiennej globalnej, co oznacza, że używana będzie zmienna lokalna a nie globalna.
5. Przesyłanie zmiennej globalnej.
#include <iostream>
using namespace std;
int i;
void Usmiechy()
{
int i;
for (i=0; i<20; i++) cout << ":-)";
}
int main ()
{
i=10;
Usmiechy();
cout<<i;
return 0;
}
------------------------------------------------------------------
int main ()
{
for (i=0; i<20; i++) cout << ":-)";
cout << endl;
return 0;
}
Subskrybuj:
Posty (Atom)