Informatyka, obejmuje:
1) dyscyplinę naukową i gałąź wiedzy, dotyczące przetwarzania informacji przy użyciu środków technicznych (komputerów). Obejmuje m.in.: podstawy konstrukcji maszyn cyfrowych, podstawy programowania, teorie języków programowania, teorię systemów operacyjnych, podstawy organizacji banków danych, teorię sieci teleinformatycznych, podstawy użytkowania elektronicznych maszyn cyfrowych. Opiera się na zasobach pojęć podstawowych i metod zaczerpniętych z logiki formalnej, algebry, lingwistyki matematycznej, teorii procesów przypadkowych, statystyki matematycznej itp.
2) dziedzinę działalności gospodarczej związaną z produkcją komputerów i ich oprogramowania, budową systemów informatycznych i ich zastosowaniami w gospodarce. W perspektywie informatyka obejmować będzie sterowanie procesami technologicznymi, transportowymi itp
Cybernetyka, nauka o sterowaniu.
Dział wiedzy zajmujący się układami charakteryzującymi się znacznym stopniem samosterowności, np. maszyny cybernetyczne, organizmy i społeczności. U podstaw kształtowania się cybernetyki było dopatrywanie się podobieństw pomiędzy procesami sterowniczymi w maszynach i organizmach.
Cybernetyka rozpatruje zasady działania układów samosterujących, a nie szczegóły. Takie rozpatrywanie pozwala na dostrzeganie powiązań w dziedzinach, w których wcześniej żadnego powiązania nie dostrzegano. Łączy się z automatyką, elektroniką, biologią i innymi.
Dla całościowego ujmowania zagadnień sterowania tworzona jest terminologia cybernetyczna, np. układ odosobniony, sprzężenie zwrotne z otoczeniem. W sprzężeniu tym wyodrębnia się wejścia, przez które układ odbiera bodźce z otoczenia za pomocą receptorów, i wyjścia, przez które układ wywiera wpływ na otoczenie przez swoje reakcje za pomocą efektorów.
Cybernetyka znalazła praktyczne zastosowanie w konstruowaniu maszyn cybernetycznych, np. do tłumaczenia tekstów na różne języki, przetwarzania tekstów w dźwięki mowy i odwrotnie, komponowania utworów muzycznych, a także do zarządzania. W medycynie znalazła zastosowanie w ustalaniu diagnozy lekarskiej.
Wielcy w informatyce,
udział znanych matematyków i inżynierów w zbudowaniu fundamentów teoretycznych i zaplecza technicznego dla nienazwanej początkowo dziedziny jest niekwestionowany. Jakąkolwiek by przyjąć klasyfikację, informatyka ma wielu bezimiennych twórców, członków zespołów badawczych, projektowych, standaryzacyjnych, a od połowy lat osiemdziesiątych - zastępy anonimowych pomysłodawców współpracujących w sieci Internet.
Z prehistorii informatyki wyłaniają się postaci XVII-wiecznych matematyków, jak:
John Neper (inna forma nazwiska spotykana w literaturze: John Napier), który wyraził algorytm mnożenia za pomocą dodawania logarytmów - system pałeczek Nepera;
G. W. Leibniz - wtórny, po Chińczykach, odkrywca systemu dwójkowego, budowniczy mechanicznego arytmometru;
Blaise Pascal - budowniczy maszyn liczących pomocnych bankierom i geodetom;
Abraham Stern (Polak, 1769-1842) - konstruktor m. in. maszyny pierwiastkującej.
Na specjalną uwagę w gronie prekursorów zasługuje Charles Babbage (1791-1871), najwybitniejszy twórca mechanicznych maszyn liczących (zrealizowana maszyna różnicowa, projekt maszyny analitycznej). Opis maszyny analitycznej zainspirował Adę Augustę hr. Lovelace (córkę Byrona), osobę równie szlachetnego urodzenie, co umysłu, do zaprojektowania dla wynalazku Babbage'a programów działania. Współcześni mianowali ją za to patronką programistów, nazywając jej imieniem język programowania (Ada).
U schyłku XIX wieku Hermann Hollerith po zmodyfikowaniu wynalezionej przez J. M. Jacquarda (1752-1834) karty perforowanej zastosował ją jako podstawowy nośnik wejścia-wyjścia (używany potem przez całe dziesięciolecia wieku XX). Przełomu w koncepcjach automatycznych obliczeń dokonali jednak Turing i Coloss; “maszyna Turinga” stała się inspiracją dla J. von Neumanna, projektodawcy schematu stosowanego w budowie komputerów do dzisiaj.
Konrad Zuse zbudował w 1941 r. działającą na elektromagnetycznych przekaźnikach maszynę Z3, pracującą w systemie dwójkowym na liczbach reprezentowanych zmiennopozycyjnie.
Claude Shannon, twórca teorii informacji, przyczynił się do docenienia algebry Boole'a w realizacji układów elektronicznych.
W 1942 r. powstaje pierwszy komputer elektroniczny ENIAC, dzieło J. W. Mauchly'ego i J. P. Eckerta. W 1947 r. John Bardeen, W. Shockley (późniejszy kreator Doliny Krzemowej) i Walter Brattain dają światu tranzystor.
R. Noyce wraz z J. Kilbym patentują w końcu lat pięćdziesiątych układ scalony.
Zespoły naukowców opracowują w latach sześćdziesiątych algorytmiczne języki programowania: Algol 60, Fortran, Cobol, Basic, Simula 67 (prototyp języka programowania obiektowego). N. Wirth projektuje język Pascal (1971), E. W. Dijkstra, C. A. R. Hoare formalizują programowanie strukturalne.
Duńczyk Brinch Hansen opracowuje nowoczesną koncepcję jądra systemu wieloprogramowego. Rok 1972 owocuje systemem operacyjnym UNIX (K. Thompson), D. Ritchie opracowuje w ślad za tym język C.
W 1975 r. student przed dyplomem, Bill Gates, zakłada firmę Micro-Soft (później Microsoft), aby w 15 lat potem zapanować na rynku komputerowych okien.
W latach osiemdziesiątych Bjarne Stroustrup rozwija język C++, a na drugim biegunie pracują twórcy języka Smalltalk, budując nowoczesne warsztaty programowania obiektowego. Równocześnie setki fachowców i entuzjastów oplatają świat łączami komputerowymi; powstaje sieć Internet (1983).
W 1991 r. Tim Berners-Lee inauguruje nowe, globalne mass medium: dla setek milionów ludzi internetowe strony WWW.
W 1999 r. Finlandczyk Linus Torvalds, autor bezpłatnego systemu operacyjnego Linux, zostaje postacią nr 1 światowych targów komputerowych, a w poczekalni wynalazków informatycznych od 1970 r. drzemią i dojrzewają pomysły molekularnych maszyn E. Drexlera.
Hasło opracowano na podstawie “Słownika Encyklopedycznego - Informatyka” Wydawnictwa Europa. Autor - Zdzisław Płoski. ISBN 83-87977-16-0. Rok wydania 1999.
Maszyna Turinga (angielskie Turing machine), abstrakcyjna maszyna obliczeniowa złożona z głowicy czytająco-piszącej oraz potencjalnie nieskończonej, posegmentowanej taśmy zawierającej symbole (np. liczby lub operatory działań). Głowica może wykonywać skończony zbiór instrukcji: analizuje zawartość segmentu taśmy i w zależności od własnego stanu i obserwowanego symbolu przesuwa się wzdłuż taśmy, czyta lub zapisuje w segmencie nowy symbol. Wynikowy obraz taśmy, czyli efekt działania maszyny Turinga, zależy od zbioru jej instrukcji i początkowego układu symboli na taśmie. Koncepcję maszyny Turinga spożytkowano w budowie komputerów. To, z czego korzystają dzisiejsi użytkownicy edytorów lub arkuszy kalkulacyjnych, jest rozwinięciem i przetworzeniem koncepcji maszyny Turinga.
Maszyna von Neumanna (angielskie von Neumann machine), pomysł konstrukcji komputera wynaleziony i wdrożony przez J. von Neumanna. Istotą wynalazku maszyby von Neumanna było utrzymywanie w pamięci komputera zarówno programu, jak i danych oraz możliwość wymiany programu i danych na inne. Zarówno program, jak i dane są przechowywane w pamięci w kodzie dwójkowym, a ich przetwarzanie odbywa się w arytmometrze. Wynalazek von Neumanna jest kontynuacją maszyny Turinga. Praktycznie wszystkie komputery są budowane według pomysłu von Neumanna, nazywanego też architekturą von-neumannowską.
ENIAC, Electronic Numerical Interpreter And Calculator, pierwszy na świecie komputer, skonstruowany przez J.P. Eckerta i J.W. Mauchly'ego na Uniwersytecie Pensylwanii w latach 1943-1946, dla potrzeb obliczeń balistycznych Marynarki Wojennej USA. Posiadał 17 468 lamp elektronowych, pobór mocy wynosił 130 kW, mógł wykonać 5 tys. operacji dodawania lub 300 operacji mnożenia na sekundę, a także przechować w pamięci 20 liczb dziesięciocyfrowych.
ENIAC liczył w układzie dziesiętnym, jego programowanie polegało na ręcznej konstrukcji połączeń na specjalnych tablicach połączeniowych, w przeciwieństwie do późniejszych maszyn, w których konstrukcja fizyczna nie ulega zmianie a zmienia się jedynie wykonywany kod (tzw. architektura von Neumanna).
Tranzystor, trioda półprzewodnikowa (obecnie głównie krzemowa), element czynny układów elektronicznych służący do wzmacniania sygnałów elektrycznych. Wśród wielu rodzajów tranzystorów najbardziej typowe są tranzystory bipolarne (iniekcyjne): dwuzłączowe i jednozłączowe, oraz tranzystory unipolarne (polowe). Najprostszy tranzystor bipolarny dwuzłączowy, zbudowany jest z dwóch złącz p-n położonych blisko siebie (kolejno obszary n-p-n lub p-n-p).
Pierwszy tranzystor, ostrzowy (o małych możliwościach zastosowań praktycznych), zbudowali w 1948 J. Bardeen i W.H. Brattain. Tranzystor bipolarny skonstruował w 1949 W.B. Shockley.
Wynalezienie tranzystora uważane jest za początek rewolucji elektronicznej XX w. Opracowanie w latach 60. metody fotograficznego maskowania i warstwowego trawienia, umożliwiającej miniaturyzację tranzystora, spowodowało znaczne potanienie produkcji i w konsekwencji masowe wytwarzanie tranzystorów oraz, zawierających ich setki, tysiące, a nawet miliony, układów scalonych.
Układ Scalony (chip), zminiaturyzowany półprzewodnikowy układ elektroniczny zawierający od setek do wielu mln elementów składowych (czynnych - tranzystorów lub diod, oraz biernych - rezystorów lub kondensatorów) powstających równocześnie w jednym cyklu produkcyjnym.
Scalony układ może być wykonany z jednego kryształu półprzewodnika (tzw. scalone układy monolityczne) lub naniesiony warstwowo na izolujące podłoże (scalone układy cienkowarstwowe). Pierwsze scalone układy wytworzono w 1958 w USA. Tanie, masowo wytwarzane scalone układy otrzymuje się metodą fotograficznego maskowania i trawienia płytek krzemowych.
Przykładami scalonych układów są mikroprocesory i moduły pamięci półprzewodnikowej
Mikroprocesor (angielskie microprocessor), procesor wykonany w technologii LSI (mikroprocesor 8-bitowe), VLSI (mikroprocesor 16-bitowe i 32-bitowe) lub ULSI (mikroprocesor 64-bitowe).
Układ, który dokonał rewolucji w informatyce, powstał trochę na zasadzie nieudanego produktu ubocznego.
Pierwszy mikroprocesorem Intel 4004 (USA) z trudem znajdował zastosowania w wąskim gronie amatorów komputeryzacji i nie wróżono mu dalekiej przyszłości. Przodującymi producentami typowych mikroprocesorów są firmy: Intel, Motorola, MOS Technology oraz liczne zakłady dalekowschodnie, a przemysł mikroprocesorów stanowi istotną gałąź produkcji krajów rozwiniętych.
Cały sprzęt PC, sprzęt sieciowy i telekomunikacyjny, komputery laboratoryjne, osprzęt linii technologicznych, elektronika motoryzacyjna, niezliczone aplikacje domowe opierają się na mikroprocesorach.
Hasło opracowano na podstawie “Słownika Encyklopedycznego - Informatyka” Wydawnictwa Europa. Autor - Zdzisław Płoski. ISBN 83-87977-16-0. Rok wydania 1999.
Prawo Moore'a (angielskie Moore's law), reguła wywiedziona z obserwacji rynku komputerowego przez Gordona Moore'a, współzałożyciela firmy Intel, głosząca, że moc obliczeniowa układów scalonych podwaja się co półtora roku wraz ze spadkiem ich cen.
PC, Personal Computer, komputer osobisty, rodzaj komputera przeznaczony dla pojedynczego użytkownika. Początkowo komputery były dużymi urządzeniami przeznaczonymi tylko dla poważnych instytucji. W latach 80-tych nastąpił rozwój małych komputerów do prywatnego użytku, takich jak 8-bitowe Atari czy Commodore a także pierwsze Macintoshe firmy Apple i komputer XT produkowany przez IBM. Nazwa PC oznacza przede wszystkim komputery kompatybilne z IBM PC (XT i późniejsze modele).
IBM, International Bussiness Machines, amerykańska firma produkująca sprzęt komputerowy, oprogramowanie, systemy komunikacyjne.
Zalążkiem koncernu była spółka Tabulating Machine Company (TMC) założona w 1896 przez H. Helleritha - wynalazcę karty perforowanej. W 1911 TMC razem z dwiema innymi spółkami utworzyły firmę Computing-Tabulating-Recording Company, która w 1924 zmieniła nazwę na International Bussiness Machines.
IBM wytwarzał wówczas zegary, wagi, kasy sklepowe, maszyny do pisania, maszyny liczące. W 1952 firma weszła na rynek komputerów maszyną IBM 701 (wykonywała ona 21 tys. operacji na sekundę). W latach 1960-1980 IBM był dominującym dostawcą dużych komputerów (mainframe'ów) na świecie.
W 1981 wprowadził na rynek pierwszy komputer osobisty (IBM PC), który bardzo szybko zdobył ogromną popularność i stał się niekwestionowanym standardem wśród mikrokomputerów.
Binarny kod, sposób zapisu informacji za pomocą dwu symboli, oparty na dwójkowym systemie liczbowym. Kodu binarnego używa się do przesyłania rozkazów i reprezentowania danych we współczesnych komputerach, np. litera A jest reprezentowana liczbą dwójkową 010000012.
Komputer, uniwersalny system cyfrowy zdolny do wykonywania pewnego zbioru rozkazów (różnorodnych operacji elementarnych), w którym użytkownik może określić sekwencję wykonywanych rozkazów konieczną do realizacji postawionego zadania.
Głównymi częściami składowymi komputera są: procesor, pamięć operacyjna, w której jest zapisany program określający sekwencję wykonywanych operacji oraz dane do przetworzenia oraz układy wejścia-wyjścia do których są przyłączone urządzenia zewnętrzne umożliwiające kontakt komputera z otoczeniem i użytkownikiem.
Istotną cechą komputera, odróżniającą go od innych systemów cyfrowych, jest możliwość zupełnej zmiany realizowanych przez niego funkcji jedynie przez zmianę programu w jego pamięci.
Algebra, dział matematyki, zajmujący się teorią działań matematycznych, metodami rozwiązywania równań, rachunkiem macierzowym i wektorowym. Początki algebry (podobnie jak arytmetyki i geometrii) sięgają starożytności. W XVII w. p.n.e. w Egipcie znane były równania z jedną niewiadomą i algorytmy ich rozwiązywania (tzw. papirus Rhinda lub Ahmesa). Podobną wiedzą dysponowano w Mezopotamii. W Grecji (III w. n.e.) umiano rozwiązać równania stopnia pierwszego i drugiego (Diofantos z Aleksandrii).
Dalszy rozwój algebry nastąpił w wiekach średnich w kręgu kultury arabskiej (m.in. Alchwarizmi; od wyrazów użytych w tytule jednej z jego prac pochodzi nazwa algebra), skąd dotarła do Europy (Leonardo z Pizy). Znacznym uproszczeniem formalnym a. było wprowadzenie 1591 przez F. Viete'a całkowicie symbolicznego zapisu działań algebraicznych. Wiedzę z zakresu algebry usystematyzował i spójnie przedstawił w podręczniku L. Euler (1769). Istotny wkład w rozwój a. wnieśli J. d' Alembert, K.F. Gauss, W.R. Hamilton, E. Galois, H. Abel. Rozwój algebry wpływał na kształtowanie się pojęcia liczby.
Liczba, podstawowe pojęcie matematyki, jego sens ulegał ewolucji i sprecyzowaniu w toku rozwoju cywilizacyjnego głównie na skutek rozszerzania reguł arytmetycznych: pierwotnie intuicyjne pojęcie liczby było rozumiane jako miernik ilości przedmiotów policzalnych: 1,2,3,4... (liczby naturalne). Istnieje wiele klas liczb naturalnych: liczby parzyste, liczby nieparzyste, liczby pierwsze, liczby doskonałe, liczby bliźniacze.
Uważa się, że pierwszym, wynikającym z praktyki życia codziennego (dzielenie przedmiotów) rozszerzeniem pojęcia liczb poza liczby naturalne było wprowadzenie ułamków właściwych (1/2, 1/3, 1/4, 2/3 itp.), których dodawanie doprowadziło do pojawienia się ułamków zwykłych (np. 20/12). Takie liczby były znane w starożytności.
Ok. V w. n.e. w Indiach pojawiła się koncepcja liczb ujemnych: rozszerzono liczby naturalne o zero, wprowadzono całkowite liczby ujemne, a także ułamki ujemne. Umożliwiało to odejmowanie dowolnych liczb (a nie tylko mniejszej od większej) oraz zapis liczb w postaci pozycyjnej (układy numeracji). Zbiór liczb całkowitych i ułamków tworzy zbiór liczb wymiernych. Tak rozumiano pojęcie liczby w Europie pod koniec średniowiecza dzięki pracom Fibonacciego.
Dalszy rozwój pojęcia liczby (XVI w., G. Cardano, R. Bombelli) wynikał z konieczności zdefiniowania pierwiastka kwadratowego z liczby ujemnej w ogólnych wzorach rozwiązywań równań algebraicznych stopnia drugiego. Tak narodziła się idea liczb urojonych i liczb zespolonych, w pełni rozwinięta w XIX w. (C.F. Gauss, W.R. Hamilton).
Również w XIX w. wprowadzono pojęcie liczb niewymiernych, tj. nie dających się przedstawić w postaci skończonych ułamków, stwierdzono, że takimi liczbami są znane już wcześniej liczba π, liczba Nepera (e), pierwiastek z liczby 2.
Wprowadzono też wspólną nazwę dla liczb niewymiernych i wymiernych: są to liczby rzeczywiste. Dział matematyki zajmujący się właściwościami liczb nazywa się teorią liczb.
Układy numeracji, sposoby symbolicznego zapisu liczby. Zasadniczo wyróżnia się układy numeracji addytywne (gdzie wartość przedstawiana przez dany zestaw symboli jest równa sumie wartości każdego z symboli) oraz pozycyjne (gdzie wartość reprezentowana przez symbol zależy od jego położenia względem sąsiadów w układach sekwencyjnych lub względem końca zapisu w tzw. układach wagowych, specjalną klasą tych ostatnich są układy wagowe systematyczne).
Przykładowo: notacja stosowana często przy liczeniu głosów polegająca na rysowaniu kresek (symbo-lizujących 1) formujących kwadraty z jedną przekątną (symbolizujących 5) jest układem addytywnym, stosowany powszechnie dziesiętny system liczbowy oraz również dwójkowy system liczbowy są pozycyjnymi, wagowymi, systematycznymi układami numeracji.
Rzymski zapis liczby, pozycyjny układ sekwencyjny (numeracji układy) rozwinięty z etruskiego zapisu liczb w antycznym Rzymie. Liczba przedstawiana jest tu jako suma liczb reprezentowanych przez symbole ustawione w kierunku ogólnie malejącym w prawo, przy czym jeśli symbol reprezentujący liczbę mniejszą poprzedza symbol liczby większej, to wchodzi on do sumy ze znakiem ujemnym (tzn. liczba reprezentowana przez ten symbol jest odejmowana od sumy zamiast być dodawaną). Jednak nie każdy symbol bezpośrednio mniejszy może poprzedzać każdy symbol większy. Musi być przestrzegana zasada, że: I może poprzedzać tylko V i X, X tylko L i C, a C tylko D i M (dlatego np. liczby 999 nie zapisuje się jako IM). Przykładowo liczba zapisywana jako:
MCMXCIX = 1000 - 100 + 1000 - 10 + 100 - 1 + 10 = 1999, MM = 2000.
Symbol |
Liczba |
I V X L C D M |
1 5 10 50 100 500 1000 |
Dziesiętny system liczbowy, najbardziej rozpowszechniony pozycyjny system zapisu liczb oparty o potęgi liczby 10 i tyleż znaków graficznych (cyfr: 0,1,2,3,4,5,6,7,8,9) wykorzystywanych do zapisu liczb.
Pierwowzór dziesiętnego systemu liczbowego pojawił się w V w. n.e. w Indiach, skąd do Europy dotarł poprzez Arabów (dlatego cyfry nazywamy arabskimi). Zapis 1995 oznacza liczbę równą
1×103+9×102+9×101+5×100.
Dwójkowy (binarny) system liczbowy, pozycyjny system zapisu liczb oparty na potęgach liczby 2. Wykorzystuje dwa znaki graficzne (cyfry): 0 i 1, przez co jest szeroko stosowany w elektronice cyfrowej, gdzie pojawienie się impulsu - to 1, a jego brak - to 0.
Liczba 1100102 w dwójkowym systemie liczbowym oznacza liczbę:
1×25+1×24+0×23+0×22+1×21+0×20= 32+16+2=50
(wyrażoną teraz w dziesiętnym systemie liczbowym). Przy stosowaniu w jednym tekście różnych systemów zapisu dwójkowego systemu liczbowego wyróżnia się dolnym indeksem 2 (np. 110010(2)).
System pozycyjny (z angielskiego positional system, number system), sposób zapisywania liczb znany od wczesnego średniowiecza, polegający na używaniu cyfr c1, c2,..., cn z niewielkiego zbioru, które, zapisywane obok siebie w postaci
l = cp-1cp-2... c0 c-1c-2... c-q,
interpretuje się jako sumę iloczynów liczb reprezentowanych przez poszczególne cyfry i potęg liczby naturalnej n, nazywanej podstawą systemu, o wykładnikach równych numerowi pozycji cyfry w ciągu. Oprócz, powszechnego z naturalnych przyczyn, dziesiętnego systemu pozycyjnego spośród różnych możliwych podstaw systemów w odniesieniu do komputerów są użyteczne podstawy 2, 8, 16 i odpowiadające im systemy pozycyjne: dwójkowy, ósemkowy i szesnastkowy.
Zapis dwójkowy, np. 1001 = 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = 9, jest naturalny w komputerach ze względu na łatwość uzyskiwania dwóch różnych stanów fizycznych reprezentujących cyfry 0 i 1 systemu dwójkowego, i jest bazą dla kilku kodów dwójkowych.
Zapis ósemkowy łatwo zamienia się na dwójkowy (i odwrotnie): wystarczy zamieniać cyfry ósemkowe na trzy cyfry dwójkowe lub odwrotnie, np.: 0678 = 110 1112, 101 000 0112 = 05032 , dlatego system ósemkowy o cyfrach 0...7 też jest przydatny w informatyce.
Z podobnych przyczyn, oraz ze względu na dużą zwartość, jest użyteczny system szesnastkowy, w którego zapisie używa się dodatkowych “cyfr” o wartościach 10, 11,..., 15, oznaczanych literami A, B,..., F. Umownie liczbę szesnastkową kończy się literą H, np. 13H = 1 x 161 + 3 x 160 = 1910.
W języku C i pochodnych liczby szesnastkowe oznacza się przedrostkiem 0X, np. 0X115C = 4444.
Tabliczka mnożenia i dodawania liczb dwójkowych:
x |
0 |
1 |
|
+ |
0 |
1 |
0 |
0 |
0 |
|
0 |
0 |
1 |
1 |
0 |
1 |
|
1 |
1 |
10 |
Przykład mnożenia dwóch liczb ( w zapisie binarnym):
2310 101112
510 x 1012
11510 10111
00000
10111 .
11100112 =1x26+1x25+1x24+0x23+1x22+1x21+1x20=64+32+16+2+1=11510
Metody Numeryczne ALGORYTMY
Algorytm definicja I:
Algorytm jest to sposób postępowania podczas rozwiązywania zadania
Algorytm - mechaniczna procedura rozwiązywania problemu obliczeniowego.
Gdzie: problem obliczeniowy to zadanie z para-metrami, niekoniecznie matematyczne, byle precyzyjnie określone, tzn. jakie parametry są dopuszczalne, jakie warunki ma spełniać rozwiązanie, jakie mają być wyniki.
Parametry to dane wejściowe (INPUT).Rozwiązanie -dane wyjściowe (OUTPUT).
Algorytm definicja II
ALGORYTM, dokładny przepis podający sposób rozwiązania określonego zadania w skończonej liczbie kroków; zbiór poleceń odnoszących się do pewnych obiektów, ze wskazaniem porządku, w jakim mają być realizowane.
ALGORYTM zapisany przy pomocy języka programowania jest programem.
Wyróżniamy algorytmy numeryczne (np. Euklidesa) i nienumeryczne operujące na obiektach nie liczbowych (np. dokumentach)
ALGORYTM sekwencyjny - Kolejność czynności jest określona w sposób jednoznaczny
ALGORYTM niesekwencyjny Kolejność czynności nie w każdym przypadku jest jednoznaczna.
Np.- Algorytmy równoległe, współbieżne
Algorytm formy zapisu:
Zapis słowny (np. zbiór przepisów kulinarnych)
Zapis matematyczny - wzory
Graficzny - schemat blokowy
Zapis w języku programowania
Przykłady algorytmów
Algorytm Euklidesa jest to algorytm znajdowania największego wspólnego dzielnika (NWD) dwóch liczb naturalnych. Nie wymaga on rozkładania tych liczb na czynniki pierwsze.
Słowny zapis algorytmu:
dane są dwie liczby naturalne a i b
jeśli b jest równe zeru, to NWD jest równe a
w przeciwnym wypadku oblicz c jako resztę z dzielenia a przez b
zastąp a przez b, zaś b przez c i zacznij od początku.
Przykład: działania algorytmu euklidesa - znaleźć NWD liczb 1029 i 42
|
a |
b |
c |
1029 |
42 |
21 |
|
42 |
21 |
0 |
|
21 |
0 |
|
Schemat blokowy - elementy
Schemat blokowy (zapis przy pomocy wzorów matematycznych i schematu blokowego)
Schemat blokowy zapis graficzny (przykład obliczania średniej zbioru liczb)
Proszę zwrócić uwagę na sposób podawania danych w poniższych przykładach. (liczba 9999 jest taktowana jako umowny znak końca zbioru danych)
Kolejny przykład algorytmu realizującego proces znajdowania największego bądź najmniejszego elementu zbioru.
Dane: N, l1, l2, l3,..lN gdzie N oznacz liczebność zbioru, a l1... to kolejne elementy.
Zadaniem jest znalezienie największej liczby w tym zbiorze.
Procedura przedstawiona w pierwszym bloku
jest odpowiedzialna za przeczytanie danych
wejściowych i zapisania ich w zmiennej
tablicowej A wg poniższego zapisu
A(1)=L1
A(2)=L2
A(N)=LN
Dla przykładowych danych:
3;-12;23;5
Zmienne przyjmują wartości:
N=3; A(1)=-12; A(2)=23; A(3)=5
X=5
I=1
I<N (1<3) ?Tak
I=2
X<A(2) (-12<23) TAK=>
X=23
Powtarzamy pętle I<N (2<3) ?Tak
I=3
X<A(3) (23<5) NIE=>
X pozostaje bez zmian
Powtarzamy pętle I<N (3<3) ? Nie => kończymy pętle przechodzimy do wyprowadzenia wyniku X (liczba 23)
Przykład algorytmu sortowania
Kolejnym ważnym fragmentem zadań realizowanych przez systemy komputerowe jest porządkowanie - sortowanie zbiorów. Poniżej przedstawiam przykład działania algorytmu porządkującego zbiór z zastosowaniem metody porównania sąsiednich elementów ( inaczej „metoda bąbelkowa”).
Dany jest zbiór liczb (32;24;45;-13;26) naszym zadaniem jest uporządkowanie narastające.
Porównujemy kolejne pary liczb, jeśli porządek jest nieprawidłowy (ciemna strzałka) zamienia-my je miejscami.
I etap II etap
III etap IV etap
Algorytm, dokładny przepis podający sposób rozwiązania określonego zadania w skończonej liczbie kroków; zbiór poleceń odnoszących się do pewnych obiektów, ze wskazaniem porządku, w jakim mają być realizowane. Nabrał znaczenia z rozwojem informatyki, gdzie opisuje logiczny ciąg operacji, które ma wykonać program.
Algorytm sposób postępowania
Algorytm zapisany przy pomocy języka programowania jest programem.
Wyróżnia się algorytmy numeryczne, operujące na liczbach (np. algorytm Euklidesa), i nienumeryczne, operujące na obiektach nieliczbowych (np. sortowanie dokumentów). Istnieje również podział algorytmów na sekwencyjne (kolejność czynności jest określona jednoznacznie) i niesekwencyjne (równoległe, współbieżne - następstwo między pewnymi operacjami nie jest określone).
Algorytmy charakteryzują się możliwością wyrażania ich w różnych językach i przez skończoną liczbę symboli, bez odwoływania się do analogii, a także faktyczną wykonalnością i możliwością wielokrotnej realizacji. Termin algorytm wywodzi się od zlatynizowanej formy (Algorismus, Algorithmus) nazwiska matematyka arabskiego z IX w., Al-Chuwarizmiego.
Język programowania, zbiór zasad składni, instrukcji, dzięki którym powstaje kod źródłowy programu. Procesor jest w stanie wykonywać program w kodzie maszynowym. Jednakże tworzenie programów w tym języku jest praktycznie niemożliwe. Dlatego programista używa języka zrozumiałego dla człowieka, który następnie jest kompilowany bądź interpretowany do postaci maszynowej.
Istnieje wiele rodzajów języków programowania. Można je podzielić na języki strukturalne i obiektowe. Innym kryterium podziału jest zastosowanie języków (innych używa się do tworzenia programów multimedialnych, a innych do obliczeń numerycznych czy np. aplikacji sieciowych). Niektóre z języków są bardziej uniwersalne niż inne. Do najpopularniejszych obecnie języków programowania należą C/C++, Java, Fortran czy Pascal.
Kod źródłowy, program komputerowy napisany w języku programowania. Jest to postać programu, która jest zrozumiała dla programisty (bez konieczności jego uruchamiania). Kod źródłowy jest przekształcany na kod maszynowy w procesie kompilacji programu.
Kod maszynowy, język rozumiany przez procesor. Program w kodzie maszynowym składa się z ciągu wartości binarnych, które oznaczają zarówno instrukcje jak i dane. Program, który jest napisany w pewnym języku programowania, musi zostać skompilowany, aby mógł być wykonywany przez komputer. Postać kodu maszynowego zależy od architektury procesora, na który dany program jest przeznaczony. Dlatego program musi zostać skompilowany na konkretnej maszynie, ewentualnie na systemie kompatybilnym z systemem docelowym.
Kompilator, translator języka wysokiego poziomu, którego programy wynikowe mogą być wprowadzone do pamięci i wykonane dopiero po zakończeniu tłumaczenia (w odróżnieniu od interpretatora).
Programy wynikowe kompilatora mogą być przechowywane, łączone z innymi programami i wielokrotnie wykonywane znacznie szybciej niż programy interpretowane.
Interpreter, interpretator (angielskie interpreter), translator przekładający instrukcje programu na kod pośredni, który następnie interpretuje przy każdym ich wykonaniu. Ponieważ interpreter nie tworzy przekładu w kodzie maszynowym, lecz wykonuje instrukcje, tłumacząc je na bieżąco za każdym razem, wykonanie programu znacznie się wydłuża. Interpreter nie zmusza z kolei do oczekiwania na wykonanie kompilacji po każdej zmianie programu. Typowymi interpreterami są systemy programowania Basic, Java, Perl;
Oprogramowanie (angielskie software), program lub zbiór programów, umożliwiający korzystanie z komputera oraz ewentualnie ze sprzętu peryferyjnego (modemu, skanera, itp.) bądź pozwalający rozwiązywać konkretne problemy użytkownika.
Ogół programów przyjęto dzielić na oprogramowanie systemowe i oprogramowanie użytkowe. Oprogramowanie jest niezbywalną częścią systemu komputerowego, dzięki swojej wymienności może zmieniać jego przeznaczenie. Ten sam komputer osobisty może być używany jako elektroniczny sekretariat, a w chwilę potem, dzięki użyciu innego oprogramowania przeistacza się w salon gier lub internetową pocztę, telefon i radio, przy czym dzięki wieloprogramowości i środowisku okienkowemu może pełnić wszystkie te funkcje jednocześnie.
Programowanie strukturalne, rodzaj programowania w którym program podzielony jest na niewielkie moduły - procedury, bądź funkcje. Programowanie strukturalne ułatwia projektowanie, testowanie a także utrzymanie kodu programu. Do najpopularniejszych języków strukturalnych zalicza się Pascal, C, Modula-2.
Programowanie obiektowe, rodzaj programowania, w którym dane i wykonywane na nich operacje są połączone. Ten formalny zabieg umożliwia szybsze pisanie większych programów, przez "składanie ich" ze wzajemnie powiązanych obiektów, które odpowiadają za daną funkcję programu (np. przygotowanie danych, wykonanie obliczeń, zaprezentowanie wyników).
Projektowanie obiektowe (angielskie object-oriented design), ogół metod i sposobów rozwiązywania problemów programowania z zastosowaniem metodologii obiektowej, tj. uwzględnianiem takich aspektów, jak ukrywanie informacji, abstrakcja, dziedziczenie i hierarchizowanie, elastyczność i wykorzystanie wtórne oraz środków takich, jak typy definiowane przez użytkownika, hierarchie klas, klasy abstrakcyjne, wielopostaciowość. Diagramy klas zastąpiły w projektowaniu obiektowym dawniejsze schematy blokowe.
Abstrakcja (abstraction), ogólne pojęcie, mocno zadomowione w informatyce, ponieważ komputerowe rozwiązywanie problemów, jak również budowanie informatycznych modeli rzeczywistości wymaga często abstrahowania, tj. zaniedbywania cech szczególnych, utrudniających poszukiwanie rozwiązania, konstrukcję algorytmu lub wyodrębnienie istotnych struktur w danych.
Informatycy posługują się kategoriami abstrakcyjnych typów danych, obiektów, abstrakcyjnego kontrolowania przepływu, abstrakcyjnych plików, operacji itp. W świecie komputerów używa się niekiedy tych samych terminów w odniesieniu do człowieka i działających w jego imieniu programów; taki zakres stosowania ma np. abstrakcyjny termin “użytkownik”.
Twórca algorytmu sortowania nie musi się interesować strukturą sortowanych elementów - skupia ją w abstrakcyjnej relacji porządku, różnej w poszczególnych implementacjach algorytmu sortowania. Uwzględniając różnicę w implementacji relacji porządkującej, tym samym algorytmem można posortować wykaz nazwisk (sortowanie napisów), ustalić punktową kolejność na liście osób przyjętych na I rok studiów informatycznych (sortowanie liczb) czy wykonać komendę: “Według wzrostu zbiórka!” (abstrakcja wzrostu żołnierza).
Cykl życia oprogramowania (z angielskiego software lifecycle), okres od powstania zapotrzebowania na oprogramowanie do wycofania oprogramowania z eksploatacji.
Cykl życia oprogramowania obejmuje wiele etapów składających się na projektowanie, programowanie, testowanie i wdrażanie oprogramowania oraz czas jego użytkowania.
Pogoń za klientem na rynku informatycznym powoduje, że oprogramowanie jest często wycofywane z użytku przedwcześnie. Istnieje też ciekawe sprzężenie między parametrami oprogramowania a możliwościami sprzętu. Nowa wersja oprogramowania na ogół wymaga zmiany lub rozszerzenia wyposażenia sprzętowego.
Hasło opracowano na podstawie “Słownika Encyklopedycznego - Informatyka” Wydawnictwa Europa. Autor - Zdzisław Płoski. ISBN 83-87977-16-0. Rok wydania 1999.
Dane - Informacja (na podstawie Wikipedii, wolnej encyklopedii).
Dane (ang. data) to według Bo Sundgrena (ujęcie infologiczne) wycinek rzeczywistości służący do opisu innego wycinka rzeczywistości. Dane mogą przyjmować różną postać: znaki, mowa, wykresy. Różne dane mogą przedstawiać tę samą informację.
Układ danych przenoszący konkretną informację to komunikat.
Informacja (łac. informatio - wyobrażenie, pojęcie) to pojęcie o wielu definicjach w różnych dziedzinach.
W teorii informacji jest nią prawdopodobieństwo zajścia zdarzenia. Zdarzenia mniej prawdopodobne dają więcej informacji. Dokładny wzór to:
I = -log2(p) bit
Podstawowa jednostka informacji - bit, jest to ilość informacji potrzebna do zakodowania, które z dwóch równie prawdopodobnych zdarzeń alternatywnych naprawdę zaszło. Bit odpowiada ilości informacji zawartej w odpowiedzi na pytanie na które można odpowiedzieć tak lub nie. Wartości bitu przyjęło się oznaczać cyframi dwójkowymi 0 i 1. Mogą istnieć ułamkowe ilości informacji - np. w zajściu zdarzenia którego szansa wynosiła 90% zawiera się 0.152 bitów. Własność ta jest wykorzystywana w niektórych algorytmach kompresji, takich jak kodowanie arytmetyczne.
W ujęciu infologicznym (Bo Sundgren 1973) informacja to treść komunikatu przekazywanego za pomocą danych. Ta sama treść może być przekazywana przy pomocy różnych danych (znaki, mowa, wykres itp.). Informacja jest więc pojęciem szerszym niż dane, chociaż potocznie często używa się tych określeń zamiennie.
Informacja jest też czasem uważana za jeden z "towarów" na rynku, podobny do dóbr materialnych czy energii. Do jakiego jednak stopnia ta analogia jest właściwa, i do jakiego stopnia własności informacji i innych towarów są podobne, jest sprawą dyskusyjną.
system (gr. sýstema)
układ elementów o określonej strukturze, będący uporządkowaną logicznie całością.
fiz., tech. s. metryczny - układ jednostek miar oparty na wzorcach metra i kilograma, stosujący regułę dziesięciokrotnych wielokrotności przy tworzeniu jednostek wtórnych.
mat. s. pozycyjny - technika zapisywania liczb polegająca na tym, że znaczenie cyfry zależy od miejsca, na którym się ona znajduje.
infor. s. operacyjny - program sterujący podstawowymi funkcjami komputera, obsługujący urządzenia peryferyjne, zarządzający pamięcią, procesorem; s. komputerowy - sprzęt komputerowy i jego oprogramowanie.
geol. jednostka podziału utworów geologicznych, zespołu skał powstałych w tym samym czasie.
log. uporządkowany zespół zdań połączonych ze sobą relacjami logicznego wynikania.
uporządkowany zbiór twierdzeń, poglądów składających się na jakąś teorię, np. s. filozoficzny.
sprecyzowany sposób wykonywania jakiejś czynności.
reguły organizacji czegoś; przepisy, zasady obowiązujące w jakiejś dziedzinie.
„Słownika Wyrazów Obcych” Wydawnictwa Europa, pod redakcją naukową prof. Ireny Kamińskiej-Szmaj, autorzy: Mirosław Jarosz i zespół. ISBN 83-87977-08-X. Rok wydania 2001.
System operacyjny (angielskie operating system, OS), program (w sensie ogólnym, w realizacji - układ wielu programów) działający jako pośrednik między użytkownikiem komputera a sprzętem komputerowym.
Zadaniem systemu operacyjnego jest tworzenie bezpiecznego i niezawodnego środowiska, w którym użytkownik może wykonywać swoje programy w sposób wygodny i wydajny.
Nie podaje się jednoznacznej definicji systemu operacyjnego, w zamian operuje się cechami wyróżniającymi ten rodzaj oprogramowania. Są to m. in.:
1) duża złożoność (80 tys. jednostek funkcjonalności i więcej);
2) systemy operacyjne są sterowane przerwaniami (zdarzeniami);
3) system operacyjny rozpoczyna działanie jako pierwszy program w komputerze i nie zaprzestaje działania aż do wyłączenia komputera.
Dla wielu użytkowników kontakt z systemem operacyjnym ogranicza się do systemu plików. Udostępnianie użytecznych i przyjaznych sposobów porozumiewania się z użytkownikiem nie należy do bezpośrednich zadań systemu operacyjnego.
Funkcje SO
Komunikacja z użytkownikiem poprzez INTERFEJS graficzny lub znakowy
Zarządzanie zasobami sprzętowymi (procesor, pamięci wewnętrzne i zewnętrzne, urządzenia we-wy itd.)
Kontrola i zarządzanie programami (aplikacjami) użytkownika
Istnieje wiele systemów operacyjnych różnych rodzajów i przeznaczenia, a wśród nich: systemy z graficznym interfejsem użytkownika, np. Microsoft Windows lub MOS, systemy z interfejsem tekstowym, np. (klasyczny) system UNIX lub MS-DOS, różnorodne odmiany systemów wzorcowych, np. systemy uniksowe, systemy z setkami użytkowników (jak dawne systemy MULTICS, GEORGE 3) i współczesne systemy na miarę telefonu komórkowego (technologia Jini).
O systemach operacyjnych powiada się (zgodnie z rzeczywistością), że są pisane przez jedno pokolenie, a używane przez następne. Systemy operacyjne są kamieniami milowymi w historii informatyki.
Hasło opracowano na podstawie “Słownika Encyklopedycznego - Informatyka” Wydawnictwa Europa. Autor - Zdzisław Płoski. ISBN 83-87977-16-0. Rok wydania 1999.
17
Politechnika śląska w Gliwicach Wydział Górnictwa i Geologii
Katedra Zarządzania i Inżynierii Bezpieczeństwa
Materiały pomocnicze do wykładu z Informatyki opracował dr inż. Tadeusz BURAK
9
9
Nie
Tak
WARUNEK
brak rozwiązania w dziedzinie liczb rzeczywistych
STOP
START
START
STOP
WEJŚCIE - WYJŚCIE
PRZETWARZANIE - PROCES
DECYZJA
PROCEDURA (POWTARZALNY FRAGMENT ZDEFINIOWANY W INNYM MIEJSCU)
PRZENIESIENIE
We
A,B,C
Tak
Tak
STOP
WY X
I<N
X= A(I)
X< A(I)
I=1
X= A(1)
We N, l1,l2,l3,..lN
Umieść w Tab A(I)
START
I=I+1