wtorek, 23 stycznia 2018

Kompresja

Kompresja z łacińskiego"compressio" znaczy "ściśnięcie", znaczy zmniejszenie objętości. W informatyce odnosi się do zmniejszania objętości i wielkości danych, umożliwiający do odtworzenia pierwotnych danych.

Dekompresją nazywamy proces odtworzenia pierwotnych danych. Na rysunku poniżej przedstawiono schemat wykonywania kompresji i dekompresji:

Znalezione obrazy dla zapytania kompresja

Zastosowania kompresji:



Bez kompresji nie istniałyby standardy typu JPEG, DVD, Blu-Ray lub MP3 itp.
Pozwala ona na efektywne używanie łączy telekomunikacyjnych, jest m.in stosowana w modemach



Rodzaje kompresji:

stratna (lossy compression) - w tej kompresji dane odtworzone są podobne do danych pierwotnych i na ogół różnią się od nich w sposó trudny do zauważenia.
dźwięki
muzyka - format MP3
obrazy- format JPG
filmy - format MPEG
Bazuje ona na niedoskonałości ludzkich zmysłów. Nie dostrzegają one niewielkich zmian barw, różnic w dźwięku lub w fakturze obrazu. Do widocznej utraty jakości może doprowadzić wielokrotne powtarzanie cyklu kompresji i dekompresji.

Znalezione obrazy dla zapytania kompresja


bezstratna (lossless compression) - w tej kompresji dane odtworzone są identyczne z danymi pierwotnymi
teksty
programy komputerowe
bazy danych
pliki z innymi danymi jak arkusze kalkulacyjne itp.
niektóre rodzaje grafik - format GIF i TIFF itd.

piątek, 5 stycznia 2018

Złożoność algorytmów

Złożoność obliczeniowa czasowa i pamięciowa algorytmów.

1. Obliczeniowa
Jest to jeden z najważniejszych parametrów charakteryzujących algorytm. Decyduje on o efektywności całego programu. Podstawowymi zasobami systemowymi uwzględnianymi w analizie algorytmów są czas działania oraz obszar zajmowanej pamięci. Na złożoność czasową składają się dwie wartości: pesymistyczna, czyli taka, która charakteryzuje najgorszy przypadek działania oraz oczekiwana. Najczęściej algorytmy mają złożoność czasową proporcjonalną do funkcji:
  • log(n)- złożoność logarytmiczna
  • n - złożoność liniowa
  • nlog(n) - złożoność liniowo-logarytmiczna
  • n2 - złożoność kwadratowa
  • nk - złożoność wielomianowa
  • 2n - złożoność wykładnicza
  • n! - złożoność wykładnicza, ponieważ n!>2n już od n=4
  • Znalezione obrazy dla zapytania złożoności czasowe algorytmów
  • 2.Czasowa

  • Przyjętą miarą złożoności czasowej jest liczba operacji podstawowych w zależności od rozmiaru wejścia. Pomiar rzeczywistego czasu zegarowego jest mało użyteczny ze względu na silną zależność od sposobu realizacji algorytmu, użytego kompilatora oraz maszyny, na której algorytm wykonujemy. Dlatego w charakterze czasu wykonania rozpatruje się zwykle liczbę operacji podstawowych (dominujących). Operacjami podstawowymi mogą być na przykład: podstawienie, porównanie lub prosta operacja arytmetyczna.

    Kolejny problem polega na tym, w jakim języku programowania formułować będziemy algorytmy oraz co można założyć mówiąc o maszynie, na której algorytm ten będzie wykonywany. Istniejące komputery różnią się między sobą istotnymi (z punktu widzenia konstruowania algorytmów) parametrami, jak na przykład liczbą i rozmiarem rejestrów, udostępnianymi operacjami matematycznymi, a ponadto podlegają ciągłym ulepszeniom. Wobec tego algorytmy analizuje się, wykorzystując abstrakcyjne modele obliczeń. Do popularnych modeli należą maszyna RAM, maszyna Turinga i maszyna wskaźnikowa (ang. pointer machine).
      3. Pamięciowa
      Ilość zasobów niezbędnych do wykonania algorytmu można rozumieć jako jego złożoność. W zależności od rozważanego zasobu mówimy o złożoności czasowej czy też złożoności pamięciowej. Oczywiście w większości wypadków ilość potrzebnych zasobów będzie się różnić w zależności od danych wejściowych z zakresu danego zagadnienia.

      Przykładowo można by rozpatrzyć rozkład liczb na czynniki pierwsze. Przewidzieć można, że (niezależnie od zastosowanego algorytmu) im większa liczba, tym więcej zasobów będzie potrzebnych do jej rozłożenia. Tę cechę podziela większość zagadnień obliczeniowych – im większe rozmiary danych wejściowych, tym więcej zasobów (czasu, procesorów, pamięci) jest koniecznych do wykonania danych obliczeń. Złożoność algorytmu jest więc funkcją rozmiaru danych wejściowych.

      Kolejnym problemem jest fakt, iż złożoność zwykle nie zależy wyłącznie od rozmiaru danych, ale może się znacznie różnić dla danych wejściowych o identycznym rozmiarze. Dwoma często stosowanymi sposobami podejścia są:
      rozpatrywanie przypadków najgorszych – złożoność pesymistyczna
      zastosowanie określonego sposobu uśrednienia wszystkich możliwych przypadków – złożoność oczekiwana.

czwartek, 4 stycznia 2018

Algorytm z pętlą Zagnieżdoną

SPECYFIKACJA
Zadanie: Napisz listę kroków algorytmu, który umożliwi wyprowadzenie na ekran monitora prostokąta o bokach n,m narysowanego za pomocą znaków * (m- liczba znaków * w poziomie, n- liczba znaków * w pionie). Wnętrze prostokąta powinno być wypełnione znakami *.
Dane: liczby naturalne dodatnie, określające ilość znaków * w prostokącie o bokach m,n.
Wynik: prostokąt o wymiarach m x n, zbudowany ze znaków *.
Lista kroków:
1. Zacznij algorytm.
2. Zmiennej i przypisz wartość jeden: i:=1.
3. Jeśli i jest większe od n, przejdź do kroku 4;
w przeciwnym wypadku
3.1. Zmiennej j przypisz wartość jeden: j:=1;
3.2. Jeśli j jest większe od m,
przejdź do nowego wiersza;
zwiększ licznik i o jeden (i:=i + 1);
wróć do kroku 3;
w przeciwnym wypadku
wyprowadź ('*');
zwiększ licznik j o jeden (j:=j + 1);
wróć do kroku 3.2;
4. Zakończ algorytm.


PROGRAM


#include <iostream>


using namespace std;


int main ()


{


int n, m, i, j;


cout << "Podaj n: ";


cin >> n;


cout << "Podaj m: ";


cin >> m;


for (i=0; i<m; i++)


{


for (j=0; j<m; j++)


cout << "*";


cout << endl;


}


return 0;


}

Funkcje zwracają wartość w C++

Funkcja zwracająca wartość- wylicza wartość i odsyła tę wartość do funkcji wywołującej.Musi zawierać instrukcję return, która ma być zwrócona do funkcji wywołującej.
Zwracana wartość może być:
- zmienną
- stałą
- wyrażeniem.

Parametr- wartość przekazywana funkcji, a wartość zwracana to wartość przekazywana z funkcji.

Rodzaje zmiennych ze względu na zasięg:
- globalne
- lokalne.

W C++ zmienne globalne deklarujemy poza funkcjami, lokalne- można wewnątrz funkcji.

Co to znaczy że zmienne globalne mogą zostać przesłonięte?
Jeżeli zadeklarujemy w procedurze lub funkcji zmienną lokalną o takiej samej nazwie jak zmienna globalna, to zmienna globalna zostanie przesłonięta, co oznacza, że używana będzie zmienna lokalna a nie globalna.

Parametry możemy przekazywać na dwa sposoby:
- przez wartość
- przez referencję.

Parametry formalne przekazywane przez wartość w treści danej procedury lub funkcji są traktowane jak zmienne lokalne. Ewentualne operacje wykonywane na tych parametrach wewnątrz procedury lub funkcji nie powodują zmian wartości odpowiadających im parametrów aktualnych.

W procedurze lub funkcji, w której parametry przekazywane są przez zmienną (przez referencję), operacje wykonywane w treści procedury na parametrach formalnych w momencie wywołania danej procedury powoduję wykonanie tych operacji na odpowiednich parametrach aktualnych.

Stosowanie procedur i funkcji w językach programowania

1. Modele programowania
-liniowe
-strukturalne
-modularne
-obiektowe
-zdarzeniowe

2. Programowanie zastępujące i wstępujące

Programowanie zstępujące (projektowanie zstępujące, ang. top-down design) – rozwiązanie programistyczne polegające na zdefiniowaniu problemu ogólnego poprzez podzielenie na podproblemy, które są dzielone na jeszcze mniejsze podproblemy aż do rozwiązań oczywistych, łatwych do zapisania. Następnie złożenie z rozwiązań podproblemów niższego rzędu rozwiązań problemów wyższego rzędu aż do całkowitego rozwiązania problemu
Programowanie wstępujące Jest to długoletnią zasadą stylu programowania, że elementy funkcjonalne programu nie powinny być zbyt duże. Jeśli jakiś fragment programu urośnie ponad etap, w którym jest łatwo zrozumiały, staje się masą złożoności, która ukrywa błędy tak łatwo, jak duże miasto ukrywa zbiegów. Takie oprogramowanie będzie ciężkie do czytania, ciężkie do testowania i ciężkie do debugowania.

3. Zalety stosowania podprogramów (procedur i funkcji)
Podprogramy standardowe cechują się następującymi zaletami:efektywność zwykle takie podprogramy, przygotowane przez profesjonalne firmy, są starannie opracowane, często w całości lub w istotnej części, w asemblerze bądź języku maszynowym i odpowiednio zoptymalizowane,brak błędów wszechstronne testowanie skutkuje brakiem lub ograniczeniem błędów takich podprogramów,standaryzacja pozwala na ujednolicenie oprogramowania, interfejsów użytkownika i ułatwia konserwację kodu,ułatwienie i skrócenie kodowania uwalnia programistę od definiowania standardowych operacji,programowanie hybrydowe często takie podprogramy są dostępne w kilku językach programowania i systemach.

Algorytm iteracyjny iloczyn n liczb



SPECYFIKACJA
Zadanie: Oblicz iloczyn n liczb całkowitych.
Dane: n dowolnych liczb całkowitych, kolejno zapamiętywanych w zmiennej a.
Lista kroków:
1. Zacznij algorytm
2.Zmiennej iloczyn ,oraz zmiennej i przypisz wartość jeden iloczyn=1 ,i=1
3.Wprowadź liczbę całkowitą i zapamiętaj ją w zmiennej a
4.Pomnóż iloczyn przez wprowadzoną liczbę a iloczyny=iloczyn*a
5.Jeśli i nie równa się n, zwiększ licznik o 1 (i=i+1) i wróć do kroku 3




#include <iostream>
using namespace std;
float liczba1, liczba2, liczba3;
int main()
{
cout << "Podaj wartosc boku a" << endl;
cin >> liczba1;
cout << "Podaj wartosc boku b" << endl;
cin >> liczba2;
cout << "Pole prostokata wynosi: " << endl;
liczba3 = liczba1*liczba2;
cout << liczba3;
return 0;
}

wtorek, 2 stycznia 2018

Poprawność algorytmów


Algorytm jest poprawny, jeżeli rozwiązuje problem zgodnie ze specyfikacja problemu(zadania)


Znalezione obrazy dla zapytania Poprawność algorytmów

skończoność algorytmów

  Algorytm jest skończony, jeżeli gwarantuje wyznaczenie wyniku w skończonej liczbie kroków


Zapis w języku C++

#include <iostream>
#include <cmath>
using namespace std;
float st, rad;
int main()
{
  st=0.0;
  do
  {
     rad=st*M_PI 180;
     cout<< "cos("<,st<<") =" <<cos(rad) <<endl;
     st-=10.0
  }
  while (cos(rad)!=0.0)
  return 0;
}

niedziela, 26 lutego 2017

Fotografia analogowa


Def. fotografii- Fotografia – zbiór wielu różnych technik, których celem jest zarejestrowanie trwałego, pojedynczego obrazu za pomocą światła. Potoczne znaczenie zakłada wykorzystanie układu optycznego, choć nie jest to konieczne np. przy rayografii.

Pierwowzór aparatu fotograficznego- Camera Obscura (łac. ciemna komnata)[1] – prosty przyrząd optyczny pozwalający uzyskać rzeczywisty obraz.Camera obscura bywa nazywana również ciemnią optyczną lub kamerą otworkową.

                                                                                                                                                 Schemat działania camera obscura



Budowa analogicznego aparatu fot.


Znalezione obrazy dla zapytania analogowy aparat budowa

Materiały światłoczułe 

- negatyw 
Znalezione obrazy dla zapytania materiały światłoczułe klisza
pozytyw( papier foto slajd)

niedziela, 29 stycznia 2017

Reklama, ulotka komisu

Komis samochodowy 😃

https://docs.google.com/drawings/d/1gtb7g8P2estwdo4f_BmwuZxd-wJ0e3yL3R_At1S_M2w/edit?usp=sharing

niedziela, 11 grudnia 2016

Quiz Muzyczny

Zapraszam do rozwiązania

https://docs.google.com/forms/d/1sbTVkKibOizHqejXN2aQxP1ZYlv0XT_oPxP1ThOfUQ0/edit

niedziela, 20 listopada 2016

Komunikacja i wymiana informacji w internecie



 
   
          E-mail-Poczta elektroniczna, e-poczta, e-mail- usługa internetowa, w nomenklaturze prawnej określana zwrotem świadczenie usług drogą elektroniczną, służąca do przesyłania wiadomości tekstowych, jak i multimedialnych, tzw. listów elektronicznych – stąd zwyczajowa nazwa tej usługi.
Znalezione obrazy dla zapytania E mail
     

Czat- rodzaj rozmowy między dwoma lub wieloma użytkownikami komputerów za pośrednictwem Internetu lub innej sieci komputerowej, polegającej na naprzemiennym przesyłaniu wiadomości tekstowych.

Znalezione obrazy dla zapytania czat
       Komunikatory- program komputerowy pozwalający na przesyłanie natychmiastowych komunikatów (komunikacja natychmiastowa – ang. Instant Messaging) pomiędzy dwoma lub większą liczbą komputerów, poprzez sieć komputerową, zazwyczaj Internet (dlatego komunikatory internetowe). Od poczty elektronicznej różni się tym, że oprócz samej wiadomości, przesyłane są także informacje o obecności użytkowników, co zwiększa znacznie szansę na prowadzenie bezpośredniej konwersacji.



Znalezione obrazy dla zapytania komunikatory
Grupa dyskusyjna - w Internecie to ogólna nazwa wszelkich form dyskusji internetowej przypominających wymianę korespondencji, a nie rozmowy w czasie rzeczywistym.

       Forum dyskusyjne - przeniesiona do struktury stron WWW forma grup dyskusyjnych, która służy do wymiany informacji i poglądów między osobami o podobnych zainteresowaniach przy użyciu przeglądarki internetowej.
     Web 2.0 - serwis internetowy, który umożliwia interakcję użytkowników polegającą na współtworzeniu zasobów serwisu.
Znalezione obrazy dla zapytania web 2.0
            Blog - rodzaj strony internetowej zawierającej odrębne, uporządkowane chronologicznie wpisy, których autorem jest właściciel bloga.
Znalezione obrazy dla zapytania BLOG
            FTP - protokół komunikacyjny typu klient-serwer wykorzystujący protokół TCP według modelu TCP/IP (krótko: połączenie TCP), umożliwiający dwukierunkowy transfer plików w układzie serwer FTP–klient FTP.

Znalezione obrazy dla zapytania FTP
           P2P - model komunikacji w sieci komputerowej zapewniający wszystkim hostom te same uprawnienia, w odróżnieniu od architektury klient–serwer.
Znalezione obrazy dla zapytania P2P
Znalezione obrazy dla zapytania chmura internetowa        Chmura-model przetwarzania danych oparty na użytkowaniu usług dostarczonych przez usługodawcę.