Informatyka #01 Wstęp do algorytmiki
Algorytm (def.) w informatyce logiczna sekwencja operacji, które mają zostać wykonane przez program. Należy szukać najlepszych i najwydajniejszych metod na rozwiązanie jakiegoś zadania. Nawet niewielka zmiana algorytmu może skrócić czas szukania rozwiązania wielokrotnie.
Algorytm … Pisząc programy jesteśmy odpowiedzialni za ich działanie. Algorytm to oprócz bezbłędnego działania także jego wydajność. Nie możemy dopuścić, aby w naszych algorytmach były błędy, zwłaszcza, kiedy z naszego produktu korzysta więcej osób. Uniknięcie błędów nie jest wcale proste. A sprawdzanie poprawności algorytmów to zadanie czysto matematyczne. Jedną z metod jest indukcja matematyczna, czyli udowodnienie, że niezależnie od danych wejściowych algorytm oblicza poprawnie dane wyjściowe. Błędy zdarzają się wszędzie jednak bardzo często występują one w miejscach, kiedy algorytm sprawdza jakieś warunki. Może się zdarzyć, że algorytm nie będzie miał końca, a nie oto nam przecież chodzi. Jeżeli napiszemy algorytm do prostego problemu i skomplikujemy jego działanie do tego stopnia że będzie on działał bardzo wolno to nawet jeśli wyniki jego pracy będą dobre, jego poprawność pozostawia wiele do życzenia.
Algorytm … Należy maksymalnie ograniczyć ilość operacji wykonywanych przez procesor. Każdy wasz program piszcie jak najlepiej, jeżeli od razu się nie nauczycie później możecie mieć problemy. Jeżeli przez optymalizację algorytmu zyskamy 0,001 sekundy czasu podczas przebiegu jednej pętli to już sukces, kiedy pętla musi wykonać się na przykład milion razy. Poza tym pamiętajmy niektórzy mają procesory o wiele wolniejsze od naszych.
Algorytm … Zadania algorytmiczne - czyli zadania, dla których znamy sposób rozwiązania. Algorytmy efektywne - czyli takie, które dają rozwiązanie przed końcem świata. Złożoność obliczeniowa algorytmów - ocena, ile trzeba będzie wykonać obliczeń. Algorytmy heurystyczne: metody bez gwarancji na znalezienie rozwiązania (sztuczna inteligencja).
Definicje … Program komputerowy (ang. computer program) - zbiór (ciąg) instrukcji wykonywanych przez komputer, realizujących określone zadanie Kompilator (ang. compiler) to program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym) Interpreter – Konsolidator (ang. linker) lub program konsolidujący to jeden z programów składowych kompilatora. Konsolidator w trakcie procesu konsolidacji łączy zadane pliki obiektowe i biblioteki statyczne tworząc w ten sposób plik wykonywalny.
Etapy tworzenia programu: Planowanie Pisanie Kompilacja Konsolidacja Testowanie Optymalizacja
"najlepsze rozwiązania są najlepsze" Motto: "najlepsze rozwiązania są najlepsze"
Języki programowania wybrane Fortran - 1957 r. - FORmula TRAnslation - to najstarszy jeszcze ciągle używany język programowania. BASIC - 1964 r. - Beginner's All-purpose Symbolic Instruction Code. Microsoft powstał właśnie po to, aby wydać i sprzedawać własny interpreter tego języka. C- 1969 r. C++ - 1983 r. C++ używany jest dziś między innymi przez Microsoft Office, Adobe PDF Reader oraz przeglądarkę Mozilla Firefox. Python - 1991 r. - Ciekawe zastosowania: wyszukiwarka Google, serwis YouTube oraz struktury NASA. PHP - 1995 r. JavaScript - 1995 r.
Systemy liczenia wybrane Dwójkowy (binarny): 0,1 Ósemkowy (oktalny): 0,1,2,3,4,5,6,7 Szesnastkowy (hex): 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F Np. 00=0, FF=255
Bity i bajty „Bit” = binary unit, czyli jednostka dwójkowa, tak/nie. 1 bit: 0, 1, rozróżnia 2 znaki. 2 bity: 00, 01, 10, 11, rozróżniają 4 znaki. 3 bity: 000, 001, 010, 011, 100, 101, 110, 111, rozróżniają 8 znaków. 4 bity: 0000 ... 1111, rozróżniają 16 znaków. 8 bitów pozwala odróżnić 28 = 16 x 16 = 256 znaków. Ciąg 8 bitów = 1 bajt, wygodna jednostka do pamiętania podstawowych symboli. Alfabet polski ma 35 liter, uwzględniając małe i duże litery + znaki specjalne mamy prawie 100 znaków. Bramki tranzystorów przyjmują tylko dwa stany: przewodzą lub nie, są binarne.
Wielkość danych 210=1024=1K, kilobajt, typowa strona tekstu to kilka KB; 220=1024K=1M, megabajt, książka bez grafiki lub minuta muzyki; 230=1024M=1G, gigabajt, film cyfrowy, sporo grafiki, ludzki genom; 240=1024G=1T, terabajt, duża biblioteka, szerokoekranowy film w kinie; 250=1024T=1P, petabajt, ludzka pamięć; Biblioteka Kongresu USA zawiera około 20 TB informacji tekstowej.
Standardy reprezentowania znaków alfanumerycznych: ASCII - American Standard Code for Information Exchange, używa 7 bitów. ANSI - American National Standards Institute. Każdy znak można zapisać w postaci dwójkowej. Na przykład imię JOHN można zapisać w kodzie ASCI. Grafika, dźwięk i wideo da się również zapisać w kodzie binarnym. Znak kod binarny znak kod binarny A 0100 0001 N 0100 1110 B 0100 0010 O 0100 1111 C 0100 0011 P 0101 0000 D 0100 0100 Q 0101 0001 E 0100 0101 R 0101 0010 F 0100 0110 S 0101 0011 G 0100 0111 T 0101 0100 H 0100 1000 U 0101 0101 I 0100 1001 V 0101 0110 J 0100 1010 W 0101 0111 K 0100 1011 X 0101 1000 L 0100 1100 Y 0101 1001 M 0100 1101 Z 0101 1010
Standardy reprezentowania znaków alfanumerycznych: Od 1992 roku działa standard Unicode, 2 bajty/znak. W jednym pliku można zapisać 2562=65536 znaków, w tym około 3000 znaków definiowalnych przez użytkownika. Unicode jest (był) używany w systemach operacyjnych Windows NT, Novell Netware, Windows 98 i nowszych wersjach, pakietach Office'97. Widać to po wielkości plików !
Komputer liczy - człowiek myśli. A co z inteligencją … Komputer liczy - człowiek myśli.