Jerzy Wróbel. Systemy informatyczne

Wielkość: px
Rozpocząć pokaz od strony:

Download "Jerzy Wróbel. Systemy informatyczne"

Transkrypt

1 Jerzy Wróbel Systemy informatyczne Warszawa 2012

2 Politechnika Warszawska Wydział Samochodów i Maszyn Roboczych Kierunek studiów "Edukacja techniczno informatyczna" Warszawa, ul. Narbutta 84, tel. (22) , (22) ipbmvr.simr.pw.edu.pl/spin/, sto@simr.pw.edu.pl Opiniodawca: prof. dr hab. inż. Jerzy POKOJSKI Projekt okładki: Norbert SKUMIAŁ, Stefan TOMASZEK Projekt układu graficznego tekstu: Grzegorz LINKIEWICZ Skład tekstu: Janusz BONAROWSKI Publikacja bezpłatna, przeznaczona dla studentów kierunku studiów "Edukacja techniczno informatyczna" Copyright 2012 Politechnika Warszawska Utwór w całości ani we fragmentach nie może być powielany ani rozpowszechniany za pomocą urządzeń elektronicznych, mechanicznych, kopiujących, nagrywających i innych bez pisemnej zgody posiadacza praw autorskich. ISBN Druk i oprawa: STUDIO MULTIGRAF SP. Z O.O., ul. Ołowiana 10, Bydgoszcz

3 Spis treści Wstęp Elementy teorii informacji Informacja w pracy inżyniera Ilość informacji Entropia informacyjna Redundancja kodowania informacji Kod ASCII jednostki informacji Arytmetyka dwójkowa Systemy liczbowe Kodowanie liczb w komputerze cyfrowym Arytmometr komputera cyfrowego Systemy komputerowe Klasyfikacja systemów komputerowych Komputer analogowy Komputer Johna von Neumanna Oprogramowanie komputera systemy operacyjne Wprowadzenie do programowania Wprowadzenie do inżynierskich baz danych Kanoniczne postacie przetwarzania informacji Definicja bazy danych system zarządzania bazą danych Modele w bazach danych Relacyjne bazy danych Hierarchiczne, sieciowe i obiektowe bazy danych Rysunkowa baza danych w systemach CAD Zarządzanie dokumentacją projektową Projektowanie baz danych...181

4 5. Podstawy języka SQL Główne cechy języka SQL Użytkownicy i ich uprawnienia Definiowanie obiektów Instrukcja SELECT Modyfikacja zawartości bazy danych Zakończenie Literatura

5 Wstęp Niniejsze materiały zostały opracowane w ramach realizacji Programu Rozwojowego Politechniki Warszawskiej, finansowanego ze środków PROGRAMU OPERACYJNEGO KAPITAŁ LUDZKI. Przeznaczone są dla studentów drugiego roku studiów inżynierskich, na kierunku nauczania edukacja techniczno-informatyczna na Wydziale Samochodów i Maszyn Roboczych Politechniki Warszawskiej.. Swoim zakresem obejmują zagadnienia określone w programie studiów dla przedmiotu pt. Systemy informatyczne, opisanym w sylabusie opracowanym dla tego przedmiotu i przyjętym przez Radę Wydziału Samochodów i Maszyn Roboczych Politechniki Warszawskiej. Warto podkreślić, że program tego przedmiotu jest zgodny ze standardami kształcenia dla kierunku studiów Edukacja techniczno-informatyczna na studiach pierwszego stopnia w zakresie informatyki i systemów informatycznych, określonymi przez Ministerstwo Nauki i Szkolnictwa Wyższego. Systemy informatyczne to jeden z pierwszych przedmiotów z grupy przedmiotów informatycznych. W programie studiów jest on umieszczony na drugim roku studiów na trzecim semestrze jako 30-godzinny wykład. Warto podkreślić, że równolegle na trzecim semestrze studenci kierunku studiów Edukacja techniczno-informatyczna mają zajęcia z następujących przedmiotów z grupy przedmiotów informatycznych: Budowa algorytmów i Zaawansowane modelowanie geometryczne. W kolejnych semestrach będą mieć zajęcia z takich przedmiotów jak: Programowanie i programy użytkowe, Inżynieria oprogramowania, Sieci komputerowe i aplikacje sieciowe, Techniki multimedialne w dydaktyce. Informatyczny charakter ma również wiele przedmiotów obieralnych, a także praca przejściowa i praca dyplomowa. Głównym celem podręcznika jest zapoznanie Czytelnika z podstawowymi pojęciami związanymi z systemami informatycznymi a także z podstawowymi zastosowaniami inżynierskich baz danych w pracy współczesnego inżyniera.

6 UWAGA Należy podkreślić, że już samo pojęcie systemu informatycznego ulega ciągłemu rozszerzeniu gdyż dynamicznie rosną możliwości współczesnych komputerów. W pierwszych latach ery komputerowej pod pojęciem systemu informatycznego rozumiano na ogół pewien, logicznie zwarty, powiązany ze sobą, zbiór programów komputerowych, przeznaczonych do realizacji ściśle określonych zadań. Pojęciem systemu informatycznego określano więc na przykład system operacyjny komputera czy system zarządzania bazą danych. Systemem informatycznym nazywano czasem nawet jeden złożony program na przykład pierwsze systemy CAD. Współcześnie pojęcie systemu informatycznego ulega rozszerzeniu. Do zbioru powiązanych ze sobą programów komputerowych, przeznaczonych do realizacji ściśle określonych zadań, dodaje się na ogół niezbędne do realizacji zadań urządzenia. W skład systemu informatycznego wchodzą więc klasyczne urządzenia do przetwarzania informacji (w tym - procesory), do jej zapisu (w tym - pamięci komputerowe), do jej przesyłania i komunikacji pomiędzy ludźmi użytkownikami systemu jak i samymi urządzeniami wchodzącymi w skład systemu, ale także nieklasyczne urządzenia służące na przykład do pobierania (rejestracji) informacji (takie jak czujniki czy sensory) lub urządzenia pełniące funkcje wykonawcze na przykład silniki, sterowniki czy roboty. W skład systemu informatycznego wchodzą także ludzie użytkownicy systemu. Użytkownicy często tworzą odpowiednio zorganizowaną strukturę ze ściśle określonymi zasadami i procedurami pracy z takim systemem. Ważną tendencją rozwojową systemów informatycznych jest dążenie do ich integracji. Dzieje się to dzięki rozwojowi sieci komputerowych a zwłaszcza Internetu oraz dzięki coraz powszechniejszemu stosowaniu metod sztucznej inteligencji. Podręcznik składa się z sześciu rozdziałów, poprzedzonych wstępem a zakończonych spisem literatury. We wstępie omówiono cel i układ pracy. W rozdziale pierwszym przedstawiono elementy teorii informacji Claude a Shannona - w tym samo pojęcie informacji. Jako proces przetwarzania informacji opisano pracę inżynierską, a szczególnie prace związane z procesem projektowania i z zapisem projektu. Sformułowano też podstawowe problemy projektowania wspomaganego komputerowo. W kolejnych podrozdziałach przedstawiono następne elementy teorii informacji. Omawiając systemy kodowania informacji wprowadzono

7 pojęcie komputera cyfrowego i analogowego. Opisano różne miary informacji. Przeprowadzono dyskusję wzoru na ilość informacji. Wprowadzono pojęcie entropii informacyjnej. Opisano redundancję sposobu kodowania informacji z podstawami kontroli parzystości. Rozdział drugi dotyczy arytmetyki dwójkowej. Dokonano podziału i analizy systemów kodowanie liczb. Opisano następujące systemy liczbowe: system dziesiętny, binarny, ósemkowy i szesnastkowy. Przedstawiono zasady kodowania liczb w komputerze i uwarunkowania w kodowaniu liczb, wynikające z binarnego zapisu informacji w komputerze. Przedstawiono zasady deklarowania typów liczb w programie komputerowym oraz opisano arytmometr komputera. W rozdziale trzecim przedstawiono budowę i zasadę działania komputera analogowego i komputera Johna von Neumanna. Opisano podstawowe typy systemów komputerowych i ich elementy składowe. W następnych podrozdziałach opisano oprogramowanie komputera w tym oprogramowanie podstawowe, narzędziowe i użytkowe. Opisano główne sposoby przetwarzania programów komputerowych przez system operacyjny takie jak: przetwarzanie jedno i wieloprogramowe, przetwarzanie wsadowe, przetwarzanie wielodostępne (opisano koncepcję podziału czasu procesora), przetwarzanie w sieci komputerowej, przetwarzanie wieloprocesorowe. Opisano podstawowe możliwości sieci lokalnych i rozległych, w tym Internetu. Rozdział czwarty to wprowadzenie do inżynierskich baz danych. Przedstawiono kanoniczne postacie przetwarzania informacji, a na tym tle dokonano omówienia podstawowych pojęć związanych z definicją bazy danych. Opisano główne funkcje systemu zarządzania bazą danych. Sformułowano pojęcie użytkownika bazy danych i jego uprawnień. Omówiono najważniejsze metody organizacji dostępu do baz danych z powszechnie stosowaną technologią klient - serwer. Wiele uwagi poświecono modelom występującym w bazach danych. Jako przykład modelu konceptualnego opisano schemat E-R, a jako przykład logicznej bazy danych opisano model relacyjny bazy. Dla bazy relacyjnej zdefiniowano pojęcie relacji, atrybutu i klucza relacji. Opisano zasady łączenie relacji za pomocą klucza obcego. W dalszej części rozdziału opisano hierarchiczne, obiektowe (sieciowe) bazy danych. Jako przykład bazy obiektowej przedstawiono organizację bazy rysunkowej, stosowanej w systemach CAD. Opisano taż zasady zarządzania dokumentacją projektową, prezentując przykład systemu do takiego zarządzania. Końcowa część rozdziału poświęcona jest projektowaniu baz danych. Opisano także podstawowe możliwości narzędzi klasy CASE (ang. Computer Aided Software Engineering).

8 Rozdział piąty znajduje się krótkie wprowadzenie do programowania komputerów. Rozdział ten w zasadniczej części poświecony jest wprowadzeniu do języka SQL (ang. Structured Query Language strukturalny język zapytań). Język ten jest powszechnie stosowanym językiem, służącym do zarządzania relacyjnymi bazami danych. Opisano definiowanie w tym języku użytkowników bazy i ich uprawnień oraz definiowanie obiektów w bazie danych. Najwięcej uwagi poświęcono jednak formułowaniu zapytań (czyli kwerend) do bazy danych za pomocą instrukcji SELECT. Opisano przeszukiwanie jednej tabeli, przeszukiwanie wielu tabel, używanie wyrażeń lub funkcji, formułowanie zapytań z obliczeniami zbiorczymi dla grup rekordów danych, zagnieżdżanie zapytań. W końcowej części rozdziału opisano możliwości modyfikacji zawartości bazy danych. W zakończeniu rozdział szósty - dokonano krótkiego podsumowania pracy. Należy podkreślić, że zarówno układ podręcznika jak i dobór treści poszczególnych rozdziałów ma autorski charakter. Wynika on nie tylko z usytuowania przedmiotu systemy informatyczne w programie studiów, ale także z wymagań określonych przez Ministerstwo Nauki i Szkolnictwa Wyższego dla kierunku kształcenia inżynierskiego Edukacja techniczno-informatyczna. Absolwent takich studiów powinien bowiem być przygotowany do: administrowania i obsługi systemów informatycznych w przemyśle, administracji gospodarczej, samorządowej i państwowej, bankowości oraz w szkolnictwie, obsługi oprogramowania specjalistycznego, stosowanego w przemyśle, szkolnictwie lub bankowości, prac wspomagających projektowanie inżynierskie w przemyśle oraz w przemysłowym zapleczu badawczym, zarządzania zespołami ludzkimi w przemyśle oraz w jednostkach gospodarczych, nauczania przedmiotów technicznych oraz informatyki w szkołach podstawowych i gimnazjalnych po ukończeniu specjalności nauczycielskiej.

9 Absolwent powinien być przygotowany do pracy w: małych, średnich i dużych przedsiębiorstwach przemysłowych, bankowości, administracji gospodarczej, samorządowej i państwowej, zapleczu badawczo-rozwojowym przemysłu, szkolnictwie podstawowym i gimnazjalnym. Naprzeciw tym wymaganiom wychodzą przedmioty informatyczne zawarte w programie studiów, a również treści zawarte w przedmiocie Systemy informatyczne. W podręczniku znajdują się rozdziały o ogólno-informatycznym charakterze (rozdz. 1 Elementy teorii informacji, rozdz. 2 Arytmetyka dwójkowa, rozdz. 3 Systemy komputerowe) jak i rozdziały o bardziej aplikacyjnym charakterze, poświęcone bazom danych (rozdz. 4 Wprowadzenie do inżynierskich baz danych, rozdz. 5 Podstawy języka SQL). W rozdziałach ogólno-informatycznych przedstawiono podstawy funkcjonowania współczesnych systemów informatycznych i podstawy zastosowania komputerów we wspomaganiu prac inżynierskich. Opanowanie tych podstaw umożliwi podczas realizacji kolejnych przedmiotów informatycznych zawartych w programie studiów, poznawanie ze zrozumieniem zaawansowanych programów komputerowych. Opanowanie tych podstaw pozwoli także przyszłym absolwentom tych studiów na korzystanie z ciągle zmieniających się nowych narzędzi informatycznych. W rozdziałach poświęconych bazom danych przedstawiono zarówno podstawy teoretyczne jak i zasady projektowania inżynierskich baz danych. Opanowanie tych podstaw umożliwi w następnych przedmiotach poświęconych bazom samodzielne zaprojektowanie baz danych w określonym środowisku informatycznym co może być sfinalizowane pracą przejściową i pracą dyplomową. Opanowanie podstaw baz danych umożliwi także przyszłym absolwentom studiów nie tylko korzystanie z nowych, ciągle zmieniających się narzędzi stosowanych w bazach danych, ale także samodzielne tworzenie lub doskonalenie istniejących baz danych. Warto też wreszcie podkreślić, że w podręczniku świadomie nie opisywano żadnych komercyjnych programów komputerowych. Przedmiot systemy informatyczne jest poświęcony aspektom teoretycznym jest

10 realizowany w formie wykładu. Natomiast w kolejnych przedmiotach informatycznych na zajęciach laboratoryjnych przedstawiane są konkretne przykłady komercyjnych narzędzi informatycznych. W podręczniku pod koniec każdego rozdziału, a czasem nawet w jego środku, umieszczono komentarze, dotyczące zarówno kolejnych przedmiotów informatycznych jak i przykładowych komercyjnych programów komputerowych, związanych z tematyką rozdziału.

11 1 Elementy teorii informacji W tym rozdziale: o Informacja w pracy inżyniera o Ilość informacji o Entropia informacyjna o Redundancja kodowania informacji o Kod ASCII jednostki informacji

12 ROZDZIAŁ Informacja w pracy inżyniera Informacja i komputer Rozwój techniki komputerowej powoduje, że nie ma już dziedziny gospodarki, nauki, techniki, a także życia społecznego właściwie funkcjonującego bez komputerów. Warto zauważyć, że ze względu na dynamiczny rozwój technik komputerowych a szczególnie Internetu i szybko postępujący dzięki temu proces globalizacji, informacja i wiedza są powszechnie uważane za coraz ważniejszy towar na globalnym rynku. Z drugiej strony poziom technologii umożliwia masową produkcję komputerów wraz z odpowiednim oprogramowaniem i ich wykorzystanie we wszystkich dziedzinach działalności ludzkiej. Często mówimy wręcz o rewolucji informacyjnej, gdyż zmiany związane wprowadzaniem komputerów mają zasadniczy, często rewolucyjny charakter a informacja i bezpośrednio związana z nią wiedza staje się podstawową kategorią, podobnie jak dobra materialne, energia czy kapitał. W tym podrozdziale przyjrzyjmy się bardziej samemu pojęciu informacji (łac. informatio przedstawienie, pojęcie). W języku potocznym informacja to niemal synonim komunikatu czy też wiadomości. Wszystkie te określenia w potocznym rozumieniu oznaczają sposób przenoszenia wiedzy o jakimś wydarzeniu. Warto podkreślić, że termin informacja jest różnie definiowanym w różnych dziedzinach nauki. Zakres podręcznika jest ograniczony do wybranych problemów teorii informacji [Shannon 1948]. Teoria ta, powstała w latach II wojny światowej, głównie na zapotrzebowanie wojska, zajmuje się badaniem problemów ilości informacji, sposobów jej zapisu (kodowania) i przesyłania. Jej twórcą jest Claude E. Shannon ( ) - słynny amerykański matematyk i inżynier, profesor MIT. Najbardziej spektakularnym osiągnięciem Shanonna jest zaproponowanie binarnych, więc z wykorzystaniem jedynie dwóch znaków, modeli procesu komunikacyjnego. Modele te, tak jak cała teoria informacji są do dzisiaj wykorzystywane w systemach informatycznych. Strona 12 12

13 ELEMENTY TEORII INFORMACJI Informatyka jest natomiast nauką o przetwarzaniu informacji za pomocą urządzeń (wytworzonych przez ludzi). Urządzeniami tymi są głównie komputery. Warto w tym miejscu podkreślić, że przetwarzaniem, zapisem i przesyłaniem informacji, zajmują się praktycznie wszystkie organizmy żywe. W przyrodzie procesy przetwarzana, zapisu i przesyłania informacji zachodzą na różnych poziomach, począwszy od pojedynczej komórki, poprzez pojedynczych przedstawicieli poszczególnych gatunków a na poziomie społeczności (w tym społeczności ludzkiej) kończąc. Pomimo, że w języku potocznym informacja to niemal synonim komunikatu czy też wiadomości to w teorii informacji pojęcia te są wyraźnie rozgraniczone. UWAGA Informacja jest mierzalną wielkością abstrakcyjną, która może być przetwarzana, przesyłana i przechowywana (kodowana) w pewnych obiektach, a także stosowana do sterowania obiektami, przy czym przez obiekty rozumiemy organizmy żywe, urządzenia techniczne oraz systemy takich obiektów. Komunikat to zakodowana (zapisana) informacja. Wiadomość to znaczenie (treść) informacji zakodowanej w komunikacie. Na rysunku 1.1 przedstawiono graficzne powiązanie pomiędzy informacją, należącą do świata abstrakcji a otaczającym nas światem materialnym. Informacje dotyczą różnych obiektów, przy czym przez obiekty rozumiemy zarówno organizmy żywe, jak i urządzenia techniczne oraz systemy takich obiektów. Należy podkreślić, że informacje mogą też dotyczyć obiektów ze świata abstrakcji. Rysunek 1.1. Ilustracja graficzna pojęcia informacji Na rysunku 1.2 przedstawiono graficzne powiązanie pomiędzy informacją, należącą do świata abstrakcji a komunikatem. Zapis (kodowanie) informacji w postaci komunikatu jest niezbędne w celu jej dalszego przetwarzania, przechowywania i przesyłania. Odczyt informacji (deko- Strona 13 13

14 ROZDZIAŁ 1 dowanie) powinien umożliwić odtworzenie tej samej informacji, co na ogół jest utrudnione zakłóceniami pojawiającymi się w procesie kodowania, dekodowania i ewentualnego przesyłania. Należy wreszcie podkreślić, że aczkolwiek informacja należy do świata abstrakcji to jej zakodowana postać (komunikat) należy do świata materialnego, a sam zapis (kodowanie) informacji może być realizowany na wiele sposobów. Przykładem zakodowanej informacji może być niniejszy podręcznik. Strona Rysunek 1.2. Ilustracja graficzna pojęcia komunikat Na rysunku 1.3 przedstawiono graficzne powiązanie pomiędzy informacją, a wiadomością będącą jej treścią, czyli znaczeniem informacji. Przekazanie wiadomości, czyli określonej treści informacji, jest równie ważne jak jej zakodowanie w postaci komunikatu, w celu dalszego przetwarzania, przechowywania i przesyłania. O ile odczyt informacji jest na ogół utrudniony pojawiającymi się w procesie kodowania, dekodowania i ewentualnego przesyłania zakłóceniami, o tyle przekazanie wiadomości wymaga określonej wiedzy i często uwzględnienia całego kontekstu przesyłanej informacji. W tym celu przeanalizujmy następujący komunikat: ll Komunikat ten, w postaci dwóch pionowych kresek, może zawierać różne wiadomości czyli różne informacje. Może na przykład oznaczać: liczbę naturalną 11, zakodowaną w dziesiętnym systemie pozycyjnym, liczbę naturalną 3, zakodowaną w dwójkowym systemie pozycyjnym, liczbę naturalną 9, zakodowaną w ósemkowym systemie pozycyjnym,

15 ELEMENTY TEORII INFORMACJI liczbę naturalną 2, zakodowaną w rzymskim systemie niepozycyjnym, dwie małe litery 1 wchodzące w skład alfabetu języka polskiego, obraz będący dwiema równoległymi pionowymi kreskami o jednakowej długości, zaszyfrowaną wiadomość, której znaczenie jest znane tylko uprawnionemu odbiorcy komunikatu. Wiadomość zakodowana w analizowanym komunikacie wymaga wiedzy na temat systemów kodowania liczb, ale również wymaga uwzględnienia kontekstu analizowany komunikat jest prawdopodobnie częścią większego komunikatu i z tego wyniknie konkretne jego znaczenie. Wiadomość jest swego rodzaju relacją pomiędzy nadawcą a odbiorcą informacji. Należy podkreślić, że prawidłowe zdekodowanie informacji i zrozumienie jej znaczenia czyli odczyt wiadomości wymaga określonej wiedzy i jej przetworzenia. Na ogół wymaga więc myślenia. Myślenie jest najbardziej złożonym sposobem przetwarzania informacji, właściwym dla organizmów żywych, a głównie dla ludzi. Rysunek 1.3. Ilustracja graficzna pojęcia wiadomości Różnym miarom informacji, sposobom jej przetwarzania i kodowania, szczególnie w komputerach, przyjrzymy się w następnych podrozdziałach. Strona 15 15

16 ROZDZIAŁ 1 UWAGA Komputer jest to programowalne urządzenie do przetwarzania, przesyłania i przechowywania odpowiednio zakodowanych informacji. W następnych podrozdziałach omówimy bliżej budowę komputerów, zasady ich działania a także pojęcie programu komputerowego. Projektowanie Komputery, jako programowalne urządzenia do przetwarzania, przesyłania i przechowywania informacji znajdują szerokie zastosowanie w pracy inżyniera, a szczególnie w procesie projektowania, wytwarzania i eksploatacji maszyn. Ceny, rozmiary i różne warunki eksploatacji pozwalają instalować komputery w bezpośrednim sąsiedztwie pracy konstruktora lub technologa, w hali produkcyjnej, w stacjach obsługi i napraw, czy wreszcie w samych maszynach. Warunkiem wykorzystania komputerów w pracy inżynierskiej jest jednak wcześniejsze opracowanie niezbędnych w tym celu modeli. UWAGA Model (rozważamy tylko modele abstrakcyjne) danego rzeczywistego obiektu lub procesu jest to abstrakcyjny układ (dający się jednak wyobrazić), który, odzwierciedlając lub odtwarzając dany obiekt lub proces, zdolny jest zastępować go tak, że jego badanie dostarcza nowych (nadających się do dalszego sprawdzenia) informacji o modelowanym obiekcie lub procesie. Zauważmy, że model to szczególny rodzaj informacji, a modelowanie to proces tworzenia i zapisu modeli. Możliwości komputerów i zakres ich stosowania w pracy inżynierskiej omówimy na przykładzie procesu projektowania maszyn. Projektowanie jest szczególnym przypadkiem modelowania. Zastanówmy się bliżej czym jest projektowanie. Odpowiedź na to pytanie nie jest prosta, niemniej możemy przyjąć, że jest to obmyślanie nowych wytworów i układów bądź przekształcanie dotychczas istniejących [Osiński 1995]. Projektowanie poprzedza wytwarzanie lub przetwarzanie. Odnosi się do różnych dziedzin życia. Projektujemy zakłady przemysłowe, osiedla, sieci transportowe, systemy organizacji produkcji, maszyny itp. Strona 16 16

17 ELEMENTY TEORII INFORMACJI UWAGA Projekt to model nominalny obiektu (np. maszyny) wraz z dopuszczalnymi odchyłkami, umożliwiającymi realizację (wykonanie). Projekt jest więc abstrakcyjnym modelem, czyli szczególnym rodzajem informacji, tworzonym przez projektantów i kodowanym (zapisywanym) na ogół w postaci dokumentacji projektowej. Projekt stanowi obraz tego co ma być wykonane względnie przetworzone, zaś proces projektowania sprowadza się do przetwarzania wszelkich informacji o obiekcie, który ma być zrealizowany (wykonany). Rysunek 1.4 ilustruje stwierdzenie, że: informacja to szczególny rodzaj abstrakcji (wielkość mierzalna), model to szczególny rodzaj informacji ( obraz realnego obiektu), projekt to szczególny rodzaj modelu (umożliwia realizację) Rysunek 1.4. Ilustracja graficzna relacji abstrakcja informacja model - projekt Zwróćmy uwagę na następujące cechy projektowania (rysunek 1.5): projektowanie jest procesem, często długotrwałym, składającym się z wielu faz w procesie projektowania zwykle bierze udział wielu uczestników projektantów Strona 17 17

18 ROZDZIAŁ 1 projektowanie jest procesem twórczym nie dającym się zalgorytmizować, istota projektowania wymaga zapisu projektu, który jest z punktu widzenia przetwarzania informacji komunikatem, proces projektowania wymaga wyspecjalizowanych narzędzi (np. do zapisu informacji, obliczeń) Rysunek 1.5. Cechy projektowania Szczególnym rodzajem projektowania jest konstruowanie. Dotyczy ono szczegółowego projektowania maszyn, ich zespołów i elementów. Maszyną nazywamy układ materialny złożony z połączonych ze sobą ciał wykonujących określony ruch, służący do wykonania pracy związanej z procesem wytwórczym lub przemianą energii. Projektowanie wspomagane komputerowo Projektowanie jest działalnością twórczą, niemniej myślowy proces tworzenia zawsze był wspomagany dodatkowymi działaniami. Należą do nich zbieranie informacji o poprzednich podobnych rozwiązaniach, o elementach lub zespołach, które mogą być wykorzystane w projektowanym układzie, przeprowadzanie badań doświadczalnych, wykonywanie obliczeń itp. Strona 18 18

19 ELEMENTY TEORII INFORMACJI Projektowanie wymaga także zapisu projektu w różnych fazach projektowania, a zasady tego zapisu ulegały w przeszłości ciągłym ewolucjom. Od lat do zapisu projektu korzystamy z zasad rysunku technicznego (rzutowanie prostokątne) i opisów słownych (np. związanych z obliczeniami inżynierskimi). Pojawienie się komputerów w pierwszej kolejności uprościło i przyspieszyło obliczenia. Początkowo komputery wykorzystywano wyłącznie do klasycznego przetwarzania numerycznego. Oczywiście chodziło tutaj o obliczenia tradycyjne realizowane do tej pory na kalkulatorach. Rozwój techniki komputerowej umożliwił zaprzęgnięcie komputerów do wykonywania obliczeń bardziej skomplikowanych charakteryzujących się większą ilością danych i wymagających większego przetwarzania tych danych. Taki sposób wykorzystania komputerów zaowocował możliwością uzyskania bardziej precyzyjnych wyników. Nastąpił bardzo intensywny rozwój komputerowych metod obliczeniowych, charakteryzujących się bardzo dużą ilością danych i trudnymi lub wręcz niemożliwymi do wykonania na kalkulatorze obliczeniami. Przykładem takiej metody komputerowej jest metoda elementów skończonych (MES) czy też metody symulacji, umożliwiające badanie projektowanych obiektów także z udziałem człowieka (np. za pomocą wyspecjalizowanych symulatorów). Innym przykładem są komputerowe metody optymalizacji konstrukcji. W miarę rozwoju urządzeń komputerowych (szczególnie urządzeń do graficznego przetwarzania informacji) okazało się, że dużo większe korzyści pojawiają się w przypadku zastosowania komputerów nie tylko do obliczeń, ale do całego procesu projektowania a szczególnie do zapisu projektu. Pierwsze opracowane z tą myślą narzędzia symulowały deskę kreślarską, a pierwsze programy do rysowania inżynierskiego, zwane edytorami rysunków, to edytory dwuwymiarowe (2D), w których rysunek - to plik będący zapisem rysunkowej bazy danych składającej się z dwuwymiarowych elementów rysunkowych. Wprowadzenie komputerów do zapisu projektu na tyle zmieniło proces projektowania, że wprowadzono określenie projektowanie wspomagane komputerowo - CAD (Computer Aided Design). Pionierską pracę doktorską Ivana Sutherlanda [Sutherland 1963] dotyczącą koncepcji i wstępnej realizacji takiego edytora rysunków, powszechnie uważa się za początek systemów CAD. Warto podkreślić, że znaczenie terminu projektowanie wspomagane komputerowo (CAD) ulega ciągłemu rozszerzeniu gdyż dynamicznie Strona 19 19

20 ROZDZIAŁ 1 rosną możliwości współczesnych komputerów i w efekcie możliwości systemów CAD. Zasadnicza zmiana w zapisie projektu związana jest z przejściem od modelowania dwuwymiarowego 2D do modelowania trójwymiarowego (3D), ze szczególnym uwzględnieniem reprezentacji bryłowej, zapisywanych w bazie trójwymiarowych elementów rysunkowych. Kolejnym sposobem przyspieszenia i usprawnienia procesu projektowania stała się koncepcja wymiany tej samej dokumentacji pomiędzy różnymi uczestnikami procesu. Stało się to możliwe dzięki rozwojowi sieci komputerowych, a szczególnie Internetu. Koncepcja ta zakłada integrację obiegu informacji w przedsiębiorstwie i integrację różnych narzędzi komputerowych wykorzystywanych w procesie projektowania, takich jak systemy obliczeniowe, czy bazy danych. Podstawą tej koncepcji jest zapis informacji o obiektach, zadaniach i stopniach zaawansowania poszczególnych prac w jednej, spójnej bazie danych zwanej Inżynierską Bazą Danych. System zarządzania taką bazą nosi często nazwę systemu EDM (Engineering Data Management System). Pod pojęciem terminu projektowanie wspomagane komputerowo (CAD) rozumiemy już nie tylko wspomaganie prac związanych z samym zapisem projektu, ale wspomaganie niemal wszelkich innych prac występujących w procesie projektowania. Możemy więc przyjąć, że projektowanie wspomagane komputerowo (CAD) jest to taki proces projektowania, w którym komputer (wraz z oprogramowaniem) wykorzystywany jest na każdym etapie projektowania. Oznacza to, że komputer z zainstalowanym systemem CAD wspomaga projektanta we wszystkich pracach związanych z projektowaniem - od projektowania wstępnego aż do konstruowania poszczególnych elementów i sporządzania końcowej dokumentacji projektowej. Rysunek 1.6 ilustruje zakres CAD. Strona 20 20

21 ELEMENTY TEORII INFORMACJI Rysunek 1.6. Zakres CAD Od początku lat osiemdziesiątych XX wielu systemy CAD stają się istotnym elementem rynku komputerowego i standardowym wyposażeniem biur projektowych. W zakres komputerowego wspomagania (rys. 1.6) wchodzą praktycznie wszystkie czynności związane z projektowaniem. Należy do nich wykonywanie obliczeń inżynierskich, przy czym miejsce klasycznych metod stosowanych w czasach przedkomputerowych zajmują typowo komputerowe metody obliczeniowe, takie jak wspomniana wcześniej metoda elementów skończonych (MES) czy metody symulacji cyfrowej i metody optymalizacji. Metody te będą omawiane na wyższych latach studiów, w ramach studiów magisterskich. Wykonywanie obliczeń inżynierskich było, jak już wspomnieliśmy, historycznie pierwszym wykorzystaniem komputera w pracach projektowych. Następnym ważnym elementem CAD jest możliwość korzystania z wielu niezbędnych w procesie projektowania informacji zgromadzonych w odpowiednio zorganizowanych i stale aktualizowanych bazach danych. Bazy te zawierają informacje o dotychczasowych rozwiązaniach konstrukcyjnych, zbiory metod projektowania, zbiory rysunków powtarzalnych elementów i zespołów maszyn, czy wreszcie zbiory norm, patentów i przepisów. Organizacja baz jest poważnym przedsięwzięciem (często organizuje się jedną bazę np. elementów znormalizowanych dla całej branży). Problematyce inżynierskich baz danych poświęcimy rozdział 4. Z baz danych będą także specjalne zajęcia na wyższych latach studiów. Strona 21 21

22 ROZDZIAŁ 1 Strona W zakres CAD wchodzi przede wszystkim możliwość zapisu i następnie łatwej modyfikacji dokumentacji projektowej zapisanej w pamięci zewnętrznej komputera w postaci rysunkowej bazy danych. Wiąże się to z wykorzystaniem komputerowych programów do rysowania tzw. edytorów rysunków. Jak już wspomnieliśmy pierwsze programy do rysowania inżynierskiego symulowały deskę kreślarską zgodnie z zasadami rysunku technicznego. Nazywamy je edytorami rysunków 2D. Z czasem pojawiła się możliwość przejścia od dość uciążliwego modelowania dwuwymiarowego 2D do bardziej naturalnego modelowania trójwymiarowego 3D. Jak już wspomnieliśmy edytory 3D umożliwiają budowę modeli geometrycznych bezpośrednio w przestrzeni trójwymiarowej (3D), a w rysunkowej bazie danych mogą się znajdować trójwymiarowe bryłowe elementy rysunkowe. Należy pamiętać, że sam zapis projektu jest w formie binarnej i znajduje się w rysunkowej bazie danych, zaś to co ogląda użytkownik projektant na ekranie swojego komputera, powinno mieć z założenia formę możliwie przyjazną. CAD to także wspomaganie prac koncepcyjnych i procesu podejmowania decyzji (modelowanie, problemy optymalizacji i oceny, systemy doradcze z bazami wiedzy). Rynek komputerowy oferuje całą gamę systemów CAD i ich elementów składowych. Możliwości tych systemów są różne w zależności od ceny i specyfiki dziedziny zastosowań. Można wymienić następujące korzyści płynące z zastosowania takich systemów: możliwość optymalizacji konstrukcji (w tym obniżenie kosztów produkcji i eksploatacji czy podwyższenie jakości maszyny); podniesienie stopnia bezpieczeństwa, niezawodności i równomierności zużywania się poszczególnych elementów maszyn dzięki zastosowaniu dokładniejszych modeli matematycznych i metod inżynierskich przy kształtowaniu poszczególnych węzłów konstrukcyjnych; znaczne skrócenie czasu projektowania, co wiąże się ze zmniejszeniem kosztów i zwiększeniem możliwości przerobowych biura konstrukcyjnego; odciążenie projektanta od prac zrutynizowanych i nietwórczych; praca projektanta polega w większym stopniu na

23 ELEMENTY TEORII INFORMACJI działalności koncepcyjnej, co jest istotą twórczego procesu projektowania; prowadzi to do lepszego wykorzystania potencjalnych możliwości projektanta i zwiększa efektywność jego pracy; zwiększenie możliwości korzystania z istniejących rozwiązań projektowych dzięki wykorzystaniu komputerowych baz danych; przeprowadzenie wiarygodnych badań jeszcze w sferze projektu; jest to możliwe dzięki metodom symulacji cyfrowej, które pozwalają na analizowanie wpływu poszczególnych elementów konstrukcji na jakość całej maszyny (także w warunkach obciążeń ekstremalnych) jeszcze na etapie projektowania, bez konieczności budowy prototypu i przeprowadzania badań stanowiskowych lub eksploatacyjnych. Korzyści związane z wykorzystaniem systemów CAD zwielokrotniają się przy połączeniu CAD z komputerowo wspomaganym wytwarzaniem (CAM od ang. Computer Aided Manufacturing). Połączenie systemów CAD i CAM znacznie skraca czas upływający między projektowaniem a wytwarzaniem. Szybsze, tańsze i łatwiejsze jest: przechodzenie do nowych konstrukcji, wprowadzanie zmian konstrukcyjnych w trakcie produkcji, wykonywanie krótkich serii, produkowanie według indywidualnych wymagań stawianych przez klienta. Ważną tendencją jest dążenie do integracji wszystkich prac inżynierskich związanych z pełnym cyklem istnienia ( życia ) maszyny czy innego wyrobu. Na cykl ten składają się wszystkie prace związane z: projektowaniem, wytwarzaniem (w tym planowaniem i organizacją produkcji), eksploatacją, wycofywaniem (kasowaniem) z procesu eksploatacji (w tym recyklingiem). Strona 23 23

24 ROZDZIAŁ 1 Systemy umożliwiające integrację prac inżynierskich związanych z pełnym cyklem istnienia ( życia ) maszyny nazywamy systemami PLM (od ang. Product Lifecycle Management). Stosowanie systemów PLM zakłada też integrację obiegu informacji w przedsiębiorstwie. Podstawą systemów PLM jest zapis informacji o obiektach, zadaniach i stopniach zaawansowania poszczególnych prac w jednej, spójnej inżynierskiej bazie danych (rysunek 1.7). Strona Rysunek 1.7. Koncepcja systemu PLM Wszystkie informacje dotyczące któregokolwiek z etapów czasu życia maszyny zebrane są w inżynierskiej bazie danych. Z zasobów informacji zgromadzonych w inżynierskiej bazie danych korzystamy przez cały czas życia maszyny. Informacje przechowywane w inżynierskiej bazie danych tworzą przede wszystkim projektanci, korzystający z systemów CAD. Równolegle z nimi mogą zacząć pracę technolodzy, specjaliści od przygotowania produkcji, ale także eksperci od marketingu, reklamy, pionu finansowego (koszty) itd. Z inżynierskiej bazy danych korzystają różni ludzie, zaś z jej pewnych zasobów mogą korzystać nie tylko ludzie, ale także np. inne systemy komputerowe. Bazy danych ułatwiają programowanie obrabiarek sterowanych numerycznie czy też robotów przemysłowych. Osiągnięcie wszystkich korzyści wynikających z komputerowo wspomaganego projektowania uzależnione jest od wielu czynników. Do najważniejszych wymagań, oprócz bezpośredniego dostępu do komputera

25 ELEMENTY TEORII INFORMACJI (o odpowiednich cechach zezwalających na dialog graficzny za pomocą rysunku), odpowiednio przeszkolonej kadry inżynierskiej, odpowiednio zorganizowanego biura konstrukcyjnego, zakładu przemysłowego, a nawet całej gospodarki narodowej, należy odpowiednie oprogramowanie. Warto podkreślić, że koszt oprogramowania szczególnie w dużych systemach CAD wielokrotnie przewyższa koszt zainstalowanego sprzętu komputerowego. W rozdziale 4 przedstawimy więcej informacji na temat inżynierskich baz danych w tym baz rysunkowych stosowanych w systemach CAD. Opisowi wybranych systemów CAD poświęconych jest wiele podręczników. Przykładowo w pracy [Wróbel 2011] przedstawiono w zarysie popularne systemy takie jak: AutoCAD, AutoCAD Mechanical i Autodesk Inventor. W obszernym (875 stron) podręczniku Andrzeja Jaskulskiego [Jaskulski, 2011a] przestawiono w przystępny sposób zasady korzystania z najnowszej wersji systemu AutoCAD Opisano, wraz ze starannie dobranymi przykładami, zarówno polską jak i angielską wersję językową tego systemu. W innym równie obszernym (1128 stron) podręczniku tego samego autora [Jaskulski, 2011b] przestawiono w przystępny sposób zasady korzystania z najnowszej wersji systemu Autodesk Inventor Tu również starannie dobrano przykłady i opisano zarówno polską jak i angielską wersję językową tego systemu. Warto podkreślić, że studenci studiów inżynierskich na kierunku nauczania edukacja techniczno-informatyczna na Wydziale Samochodów i Maszyn Roboczych Politechniki Warszawskiej, mają w programie studiów na II semestrze laboratorium Podstawy modelowania geometrycznego a na III semestrze laboratorium Zaawansowane modelowanie geometryczne. Laboratoria te poświęcone są praktycznemu zapoznaniu się z zastosowaniem współczesnych systemów CAD 3D, w tym modelowania bryłowego, w procesie projektowania maszyn. W kolejnych semestrach studenci w ramach zajęć z takich przedmiotów jak: programowanie i programy użytkowe (semestr IV i V), inżynieria oprogramowania (semestr V), sieci komputerowe i aplikacje sieciowe (semestr VI) oraz w ramach pracy przejściowej i pracy dyplomowej będą mieli możliwość rozszerzenia wiedzy na temat programowania, języków, systemów CAD, inżynierskich baz danych i praktycz- Strona 25 25

26 ROZDZIAŁ 1 nego poznania kolejnych metod i narzędzi wspomagających inżyniera w pracy projektowej. W programie studiów inżynierskich nie ma niestety przedmiotów poświęconych metodzie elementów skończonych (MES), metodom symulacji, metodom optymalizacji czy metodom sztucznej inteligencji w tym systemom doradczym. Wszystkie te metody mają duże znaczenie w komputerowym wspomaganiu prac inżynierskich. Przedmioty poświęcone tym metodom znajdują się w programie studiów magisterskich na kierunku studiów edukacja techniczno-informatyczna Ilość informacji Miara ilości informacji W poprzednim podrozdziale podkreśliliśmy znaczenie informacji we współczesnym świecie i rolę komputerów jako narzędzi do przetwarzania informacji. Stwierdziliśmy też, że proces projektowania może być traktowany jako proces przetwarzania informacji a systemy CAD wspomagające projektantów w zasadniczy sposób zmieniają ich pracę. W tym podrozdziale bliżej przyjrzymy się problemom związany z ilością, kodowaniem i przetwarzaniem informacji. Przypomnijmy, że zgodnie z teorią informacji - informacja jest mierzalną wielkością abstrakcyjną, która może być przechowywana, przesyłana i przetwarzana w pewnych obiektach, a także stosowana do sterowania obiektami, przy czym przez obiekty rozumie się organizmy żywe, urządzenia techniczne oraz systemy takich obiektów. Do przesyłania informacji służą komunikaty. Należy podkreślić, że aczkolwiek sama informacja należy do świata abstrakcji to jej zapis (kodowanie) może być realizowany na wiele sposobów. Kodowanie informacji w postaci komunikatu może być realizowane za pomocą głosu, za pomocą rysunku czy za pomocą tekstu. Specjalne metody kodowania informacji występują w przyrodzie (np. kod DNA). Wiele sposobów kodowania zostało opracowanych do bardzo specyficznych zastosowań (na przykład nutowy zapis muzyki czy zapis dokumentacji projektowej). Strona 26 26

27 ELEMENTY TEORII INFORMACJI Wiadomość to znaczenie (treść) informacji zakodowanej w komunikacie. Przekazanie wiadomości, czyli określonej treści informacji, jest równie ważne jak jej zakodowanie w postaci komunikatu. Należy podkreślić, że prawidłowe zdekodowanie informacji i zrozumienie jej znaczenia czyli odczyt wiadomości wymaga określonej wiedzy i jej przetworzenia. Na ogół wymaga więc myślenia. Myślenie będące najbardziej złożonym sposobem przetwarzania informacji, właściwym dla organizmów żywych a głównie dla ludzi nie daje się w żaden sposób zmierzyć. Możemy natomiast mówić o ogólnych własnościach informacji i sposobach jej kodowania w postaci komunikatu. W podobny sposób możemy mówić o miarach ilości własnościach informacji. Za zgodną z naszą intuicją miarę ilości informacji można przyjąć wielkość niepewności odbiorcy, która została usunięta w wyniku otrzymania i odczytania określonego komunikatu. Niepewność odbiorcy może zaś być opisana za pomocą prawdopodobieństwa. Możemy uznać, że komunikat zawiera tym więcej informacji, im mniejsze jest prawdopodobieństwo wystąpienia zdarzenia, które zakodowano w komunikacie. UWAGA W teorii informacji miara ilości informacji jest oparta na prawdopodobieństwie zajścia zdarzenia zapisanego w komunikacie. Jako miarę ilości informacji przyjmuje się wielkość niepewności, która została usunięta w wyniku zajścia zdarzenia zapisanego w otrzymanym i zdekodowanym komunikacie. Komunikat o zdarzeniu mniej prawdopodobnym zawiera więcej informacji. Podkreślmy, że przedstawione powyżej podejście do mierzenia ilości informacji za pomocą prawdopodobieństwa zajścia zdarzenia zapisanego w komunikacie pomija znaczenie czyli treść zakodowanej w komunikacie informacji. Możemy powiedzieć, że nie uwzględnia semantyki (czyli znaczenia) zakodowanej informacji. Skupia się jedynie na jego składni, a więc na syntaktyce. Przykłady miary ilości informacji Jak już stwierdziliśmy za miarę ilości informacji przyjmuje się wielkość niepewności, która została usunięta w wyniku zajścia zdarzenia zapisanego w otrzymanym i zdekodowanym komunikacie. Czyli komunikat zawiera tym więcej informacji, im mniejsze jest prawdopodobieństwo jego wystąpienia. Aby przybliżyć to ważne, zgodne z intuicją, założenie teorii informacji, rozważmy trzy proste przykłady. Strona 27 27

28 ROZDZIAŁ 1 Strona Przykład I Źródłem komunikatów jest zdarzenie będące rzutem monetą. Źródło może nadawać 2 różne komunikaty: orzeł lub reszka. Oba zdarzenia są jednakowo prawdopodobne a prawdopodobieństwo ich zdarzenia wynosi p=1/2. Komunikat orzeł a także komunikat reszka ma więc zakodowaną jednakową ilość informacji czyli w jednakowym stopniu usuwa naszą niepewność związaną ze zdarzeniem jakim jest rzut monetą. Przykład II Źródłem komunikatów jest zdarzenie będące wyciągnięciem jednej karty do gry z 24-kartowej talii. Źródło może nadawać różne komunikaty z różnym prawdopodobieństwem. Komunikaty karta czerwona i karta czarna opisują jednakowo prawdopodobne zdarzenia, a prawdopodobieństwo ich zdarzenia wynosi p=1/2. Komunikaty karta - kier i karta - karo również opisują jednakowo prawdopodobne zdarzenia, ale prawdopodobieństwo ich zdarzenia wynosi p=1/4. W talii są 4 kolory kart. Komunikaty karta król kier lub karta król karo również opisują jednakowo prawdopodobne zdarzenia, ale prawdopodobieństwo ich zdarzenia wynosi p=1/24. W 24-kartowej talii jest tylko jeden król kier i jeden król karo. Zgodnie z naszą intuicją, komunikat karta czerwona w mniejszym stopniu niż komunikat karta - kier i w jeszcze mniejszym stopniu niż komunikat karta król kier usuwa naszą niepewność związaną ze zdarzeniem jakim jest wyciągnięcie jednej karty do gry z 24-kartowej talii. Komunikat karta czerwona niesie więc mniej informacji niż komunikat karta - kier. Najwięcej informacji niesie komunikat karta król kier. Przykład III Źródłem komunikatów jest zdarzenie będące rzutem specjalną 5-ścienną kostką. Źródło to może nadawać 5 różnych komunikatów oznaczających upadek kostki na odpowiednią ściankę, a zapisanych jako a,b,c,d,e (rysunek 1.8).

29 ELEMENTY TEORII INFORMACJI Załóżmy, że kostka upada trzystopniowo. W pierwszym stopniu - upada na I grupę ścianek (a,b) lub na II (c,d,e) a nadanie komunikatu z I grupy (a,b) jest tak samo prawdopodobne, jak nadanie komunikatu z II grupy (c,d,e). Jeśli już upadnie na I grupę to załóżmy, że prawdopodobieństwo wystąpienia komunikatu a lub b jest także jednakowe. W drugim i trzecim stopniu upadku naszej kostki jest analogiczna sytuacja. Załóżmy również jednakowe prawdopodobieństwo nadania komunikatu z grupy IIA (c) i grupy IIB (d,e). Na koniec załóżmy, że prawdopodobieństwo wystąpienia komunikatów d i e jest również jednakowe. Rysunek 1.8. Struktura komunikatów w przykładzie III Oznaczając przez P(a v b v c) prawdopodobieństwo zdarzenia, że wystąpi komunikat a lub b lub c, zauważamy natychmiast, że P(a v b) = P(c v d v e) (1.1) P(a) = P(b) = P(c) = P(d v e) (l.2) P(d) = P(e) (1.3) Jeśli został nadany komunikat, to nastąpiło zdarzenie (a v b) lub (c v d v e), więc a uwzględniając (1.1) otrzymamy P(a v b) + P(c v d v e) = l (1.4 P(a v b) = P(c v d v e) = 2 1 (1.5) Strona 29 29

30 ROZDZIAŁ 1 Jeśli zaistniało zdarzenie (a v b), to musiało nastąpić nadanie komunikatu a lub b. Korzystając ze znanego wzoru na prawdopodobieństwo warunkowe i uwzględniając (1.2) otrzymujemy P(a) = P(b) = = = (1.6) analogicznie P(c) = P(d v e) = = = (1.7) P(d) = P(e) = = 8 2 (1.8) Z przykładu jednoznacznie wynika, zgodnie z naszą intuicją, że najwięcej informacji niosą komunikaty d i e (prawdopodobieństwo p=1/8) natomiast komunikaty a, b i c zawierają mniejszą ilość informacji (prawdopodobieństwo p=1/4). Przedstawione powyżej trzy przykłady różnych źródeł informacji i różnych generowanych przez nie komunikatów potwierdzają przyjęte w teorii informacji założenie, że miarą ilości informacji może być wielkość niepewności opisana za pomocą prawdopodobieństwa, która została usunięta w wyniku zajścia zdarzenia zapisanego w otrzymanym i zdekodowanym komunikacie. Zgodne z naszą intuicją jest więc stwierdzenie, że komunikat zawiera tym więcej informacji, im mniejsze jest prawdopodobieństwo jego wystąpienia. Wzór Shannona na ilość informacji Zależność pomiędzy ilością informacji a prawdopodobieństwem jej wystąpienia określona jest następującym wzorem (zwanym często wzorem Shannona): 1 k = log 2 (1.9) p Komunikat, którego prawdopodobieństwo wystąpienia wynosi p, zawiera k jednostek informacji. Strona 30 30

31 ELEMENTY TEORII INFORMACJI Definicja jednostki informacji Bezpośrednio ze wzoru Shanonna wynika definicja jednostki informacji. UWAGA Jednostką informacji jest bit (oznaczenie b), tzn. taka jej ilość, jaką uzyskujemy po stwierdzeniu, że zaszło jedno z dwu jednakowo prawdopodobnych zdarzeń. Rzeczywiście jeśli w zależności (1.9) podstawimy p=1/2 to otrzymamy k=1b. Bit (ang. kawałek) jest podstawową jednostką informacji. Dla uczczenia pamięci twórcy teorii informacji dopuszczalne jest także określenie shannon lub w spolszczonej formie szanon. Inne jednostki poznamy w dalszej części tego rozdziału. Zauważmy, że w I przykładzie komunikat orzeł a także komunikat reszka niesie jednakową ilość informacji k=1b gdyż p=1/2. Podobnie zauważmy, że w II przykładzie komunikaty karta czerwona i karta czarna opisujące jednakowo prawdopodobne zdarzenia, z prawdopodobieństwem ich wystąpienia p=1/2 niosą jednakową ilość informacji k=1b. Komunikaty karta - kier i karta - karo, opisujące jednakowo prawdopodobne zdarzenia, ale z prawdopodobieństwem ich zdarzenia p=1/4 niosą jednakową ilość informacji k=2b. Komunikaty karta król kier lub karta król karo również opisujące jednakowo prawdopodobne zdarzenia, ale z prawdopodobieństwem ich zdarzenia p=1/24. niosą jednakową ilość informacji równą k=log 2 (24) b. Zgodnie z wzorem Shannona ilość informacji może również przyjmować wartości nie całkowite. W III przykładzie komunikaty a, b, c dla których prawdopodobieństwo wystąpienia wynosi p=1/4 zawierają po dwie jednostki informacji k=2b, natomiast komunikaty d, e dla których prawdopodobieństwo wystąpienia wynosi p=1/8 zawierają po trzy jednostki k=3b. Strona 31 31

32 ROZDZIAŁ 1 Strona UWAGA Jeśli rozpatrywane źródło może nadawać tylko jeden komunikat, którego prawdopodobieństwo wynosi jeden (p=1), to taki komunikat niesie k=log 2 (1/1)=0b (zero bitów informacji). Jeśli rozpatrywane źródło może nadawać komunikat, którego prawdopodobieństwo jest bardzo małe i dąży do zera (p 0), to taki komunikat niesie k=log 2 (1/0) b (nieskończenie wiele bitów informacji). Ilość informacji może się więc zmieniać od zera do plus nieskończoności. Kodowanie informacji Każdą informację można zakodować w różny sposób, zaś odbiorca znając sposób kodowania może odczytać (zdekodować) początkową postać zakodowanej informacji. Jeden z najważniejszych podziałów systemów kodowania informacji to podział na: kodowanie naturalne, kodowanie sztuczne. Kodowanie naturalne dotyczy różnych systemów występujących w przyrodzie. Przykładem może być kod DNA, czy kodowanie informacji w mózgu ludzi i zwierząt. W tym podręczniku zajmiemy się jednak sztucznymi systemami kodowania wymyślonymi i stosowanymi przez ludzi. Podkreślmy jednak, że kodowanie naturalne jest inspiracją do nowych sztucznych systemów kodowania. Zarówno naturalne jak i sztuczne systemy kodowania możemy podzielić na: kodowanie dyskretne, kodowanie ciągłe. Przy kodowaniu dyskretnym (znakowym) zapis dowolnej informacji powstaje z elementów pewnego, z góry ustalonego zbioru symboli (znaków). Ten zbiór symboli nazywamy alfabetem. Kodowanie dyskretne jest stosowane przede wszystkim w językach naturalnych (np. w języku polskim) i stąd nazwa alfabetu dla zbioru dopuszczalnych do kodowania znaków.

33 ELEMENTY TEORII INFORMACJI Z kodowaniem dyskretnym mamy także do czynienia w językach sztucznych, stosowanych w ściśle określonych celach. Przykładem może być notacja nutowa do zapisu muzyki (alfabet to zbiór nut i innych stosowanych w tej notacji znaków), dziesiętny system zapisu liczb (alfabet to zbiór cyfr i innych znaków), ale także zapis projektu (alfabet to zbiór elementów rysunkowych: odcinków, wymiarów, tekstów itp. stosowanych do zapisu). Z kodowaniem dyskretnym mamy także do czynienia w językach programowania, stosowanych w komputerach cyfrowych. Językom programowania przyjrzymy się bliżej w dalszej części podręcznika. Rysunek 1.9. Systemy kodowania informacji Przy kodowaniu ciągłym zbiór stosowanych znaków jest nieskończenie liczny. Nie możemy więc mówić o alfabecie. Przykładem kodowania ciągłego jest dźwięk może to być mowa ludzka czy muzyka pochodząca z instrumentu muzycznego. Innym przykładem jest obraz malarski. Uznajemy, że informacje dotyczące naszych zmysłów (dźwięk, obraz, dotyk, smak) są kodowane w sposób ciągły. Również zapis dźwięku na starej winylowej płycie gramofonowej czy na taśmie magnetofonowej jest uważany za kodowanie ciągłe. Natomiast zapis tego samego dźwięku na współczesnej płycie kompaktowej nie jest ciągły, gdyż do kodowania stosujemy jedynie dwa znaki (bity). Taki dyskretny dwuznakowy system kodowania nazywamy binarnym (cyfrowym). Kodowanie, w którym korzystamy jednocześnie z obu systemów kodowania nazywamy dyskretno-ciągłym. Binarne kodowanie informacji W systemach kodowania dyskretnego stosuje się różne zbiory dopuszczalnych do kodowania symboli czyli różne alfabety (np. alfabet języka Strona 33 33

34 ROZDZIAŁ 1 polskiego, rosyjskiego, arabskiego, zbiór nut i innych znaków stosowanych do zapisu muzyki). Różna jest też liczba znaków w alfabetach od dwóch (minimalna liczba) do nawet kilku tysięcy (język chiński). Zauważmy, że im więcej jest dopuszczalnych znaków alfabetu w danym systemie kodowania tym krótsze mogą być komunikaty. Mniejsza liczba znaków alfabetu oznacza dłuższe komunikaty zaletą jest łatwiejsza realizacja techniczna. Przykładem może być popularny kod Morse'a (stworzony w 1840r) stosowany do tworzenia klasycznych komunikatów w językach naturalnych, składających się ze znaków alfabetu łacińskiego, cyfr i znaków specjalnych, za pomocą impulsów elektrycznych, błysków światła lub dźwięków, a także znaków graficznych popularnie zwanych kreską i kropką. Kreska i kropka to dwa znaki tego systemu kodowania łatwe do technicznej realizacji. W kodzie Morse a potrzebny jest jednak dodatkowy znak (separator) przedzielający poszczególne litery, cyfry lub inne znaki specjalne. System kodowania dyskretnego, którego alfabet składa się jedynie z dwóch różnych znaków nazywamy dwójkowym, binarnym lub cyfrowym, a znaki te nazywamy cyframi binarnymi lub po prostu bitami (bit ang. binary digit). Bity na ogół oznaczamy przez zero i jeden (0, 1). Kodowanie binarne jest też niezwykle praktyczne. Łatwo i tanio daje się je zrealizować technicznie, korzystając z różnych zjawisk fizycznych (np. przepływ prądu elektrycznego, ferromagnetyzm czy przechodzenie impulsu świetlnego). Kodowanie informacji, w którym używa się alfabetu dwuznakowego (cyfrowego), jest właśnie stosowane we współczesnych komputerach zwanych komputerami cyfrowymi. Do określenia komunikatu zakodowanego binarnie (cyfrowo) stosuje się często termin dane (ang. data). UWAGA Określenie bit oznacza zarówno jednostkę informacji jak i znak alfabetu dwójkowego. Są to jednak dwa różne pojęcia! Pewnym usprawiedliwieniem ich stosowania może być to, że przy założeniu jednakowego prawdopodobieństwa, komunikat składający się z jednego znaku alfabetu binarnego (jednego bitu) czyli z zera lub jedynki (0 lub 1) niesie 1 bit informacji. Jednakowe prawdopodobieństwo Strona 34 34

35 ELEMENTY TEORII INFORMACJI oznacza tu p=1/2 i z wzoru Shannona wynika od razu, że ilość informacji jaką niesie ten komunikat jest równa jeden bitowi (k=1b). Zauważmy także, że cyfry (znaki alfabetu do kodowania liczb) mogą też oznaczać liczby. Przykładowo komunikat 3 może oznaczać zarówno liczbę jak i cyfrę! Komputer cyfrowy i analogowy W poprzednim podrozdziale stwierdziliśmy, że komputer (ang. computer liczydło, łac. computare liczyć, sumować) jest programowalnym urządzeniem, służącym do przetwarzania, przesyłania i przechowywania odpowiednio zakodowanych informacji. Komputery, w zależności od sposobu kodowania informacji, możemy podzielić na: komputery cyfrowe, komputery analogowe, komputery hybrydowe, Komputery cyfrowe przetwarzają informacje kodowane binarnie. Komputery analogowe przetwarzają informacje kodowane w sposób ciągły. Komputery hybrydowe są połączeniem obu typów komputerów - zawierają część analogową i część cyfrową oraz urządzenia pozwalające na wymianę informacji kodowanych binarnie i w sposób ciągły. W dalszej części podręcznika opiszemy budowę i zasadę działania tych komputerów. Strona 35 35

36 ROZDZIAŁ Entropia informacyjna Definicja entropii informacyjnej Pojęcie entropii informacyjnej należy do najważniejszych w teorii informacji i jest szczególnie przydatne w problemach kompresji danych. Jest także doskonałą analogią pojęcia entropii znanego w termodynamice. W celu przybliżenia tego dosyć trudnego pojęcia przypomnijmy, że ze wzoru Shannona (1.9) na ilość informacji jednoznacznie wynika, że jeśli rozpatrywane źródło może nadawać komunikat, którego prawdopodobieństwo jest równe jeden (p=1), to taki komunikat niesie k=log 2 (1/1)=0b (zero bitów informacji), jeśli rozpatrywane źródło może nadawać komunikat, którego prawdopodobieństwo jest bardzo małe i dąży do zera (p 0), to taki komunikat niesie k=log 2 (1/0) b (nieskończenie wiele bitów informacji). Każde źródło informacji, co zilustrowaliśmy trzema przykładami, może nadawać n różnych komunikatów, opisujących n możliwych zdarzeń, występujących z różnymi prawdopodobieństwami p i i=1,2,3,...,n. Entropia informacyjna (oznaczenie - H) definiowana jest następującym wzorem: H = n i= 1 1 p i log (1.10) 2 pi gdzie: n - liczba możliwych zdarzeń generowanych przez źródło, p i i=1,2,3,...,n - prawdopodobieństwo wystąpienia i-tego zdarzenia. Ponieważ czynnik Strona 36 36

37 ELEMENTY TEORII INFORMACJI log 2 1 p i we wzorze (1.10) określa ilość informacji więc entropię informacyjną źródła informacji możemy interpretować jako ważoną średnią ilość informacji zawartej w komunikatach generowanych przez to źródło, a wzór (1.10) możemy zapisać w postaci: H = n i= 1 p i k i (1.11) gdzie: n - liczba możliwych zdarzeń generowanych przez źródło, p i i=1,2,3,...,n - prawdopodobieństwo wystąpienia i-tego zdarzenia, k i i=1,2,3,...,n - ilość informacji związana z wystąpieniem i-tego zdarzenia. Przykłady określania entropii informacyjnej Dla pierwszego przykładu rzut monetą liczba możliwych zdarzeń wynosi dwa (n=2) a prawdopodobieństwo wystąpienia zdarzenia orzeł i zdarzenia reszka jest jednakowe i wynosi p=1/2. Entropia informacyjna tego źródła jest więc po podstawieniu do wzoru (1.10): H 1 1 log 2 = p1 log 2 + p2 log pi p1 2 = p 2 i i= 1 p = log 2 + log = 1+ 1 = = 2 1 ( log ( 2) + log ( 2) ) 2 2 = = (1.12) Dla trzeciego przykładu rzut 5-ścienną kostką liczba możliwych zdarzeń wynosi pięć (n=5) a prawdopodobieństwa wystąpienia poszczególnych zdarzeń nie są jednakowe i wynoszą: dla zdarzeń a, b, c p 1 = p 2 = p 3 = 1/4 a dla zdarzeń d, e p 4 = p 5 = 1/8 Strona 37 37

38 ROZDZIAŁ 1 Strona Entropia informacyjna tego źródła jest więc po podstawieniu do wzoru (1.10): log log log log log log 1 log 1 log 1 log 1 log 1 log = + = = = = = = = = = p p p p p p p p p p p p H i i i (1.13) Gdyby w trzecim przykładzie rzut 5-ścienną kostką prawdopodobieństwa wystąpienia poszczególnych zdarzeń były jednakowe i wynosiły: dla zdarzeń a, b, c, d, e p 1 = p 2 = p 3 = p 4 = p 5 = 1/5 to wtedy entropia informacyjna tego źródła po podstawieniu do wzoru (1.10) byłaby: ( ) 5 log log log log log log log = = = = = i i i p p H (1.14) Zauważmy, że wartość entropii informacyjnej źródła, przy jednakowych prawdopodobieństwach jest większa (1.14) niż przy różnych prawdopodobieństwach (1.13). Łatwo też zauważyć, że wartość entropii informa-

39 ELEMENTY TEORII INFORMACJI cyjnej osiąga maksimum, gdy prawdopodobieństwa wszystkich możliwych zdarzeń są jednakowe. W drugim przykładzie, gdzie źródłem komunikatów jest zdarzenie będące wyciągnięciem jednej karty do gry z 24-kartowej talii, załóżmy dodatkowo, że źródło to może nadawać tylko jeden komunikat (n=1), oznaczający wyciągnięcie konkretnej karty (np. karta król kier ). Prawdopodobieństwo takiego zdarzenia jest p 1 = 1/24. Entropia informacyjna tego źródła jest więc po podstawieniu do wzoru (1.10): H 1 24 log 1 1 log2 = p1 log 2 = pi 1 1 = pi i= 1 p = 2 ( 24) 1 24 log = (1.15) Własności entropii informacyjnej Gdyby źródło komunikatów mogło nadawać tylko jeden komunikat (n=1) z prawdopodobieństwem p 1 = 1 co oznacza zdarzenie pewne, to entropia informacyjna tego źródła jest, po podstawieniu do wzoru (1.10) równa zeru: H log 1 log = p 2 = 2 = 1 0 = 0 1 (1.16) i 1 i= 1 pi 1 Jak już zauważyliśmy entropię informacyjną można interpretować jako ważoną średnią ilość informacji zawartej w komunikatach generowanych przez źródło, będącą miarą naszej niepewności. Przykładowo, jeśli źródło generuje tylko jedno zdarzenie z prawdopodobieństwem jeden, to entropia tego źródła jest równa zeru. Oznacza to, że nie ma żadnej niepewności przy zerowej entropii wiadomo (z prawdopodobieństwem jeden) co się stanie! UWAGA Im więcej komunikatów generuje dane źródło tym większa jest jego entropia informacyjna. Analiza wzoru (1.10) na entropię informacyjną pozwala zauważyć, że: entropia informacyjna jest wielkością nieujemną, Strona 39 39

40 ROZDZIAŁ 1 entropia informacyjna jest równa zeru gdy komunikat opisuje zdarzenie pewne (prawdopodobieństwa p = 1), entropia informacyjna osiąga maksimum, gdy prawdopodobieństwa wszystkich możliwych zdarzeń są jednakowe, entropia informacyjna rośnie, wraz z liczbą generowanych komunikatów. 1.4 Redundancja kodowania informacji Słowo kodowe komunikatu Jak już podkreśliliśmy do kodowania komunikatów wygodnie jest stosować alfabet binarny. Znaki tego alfabetu bity oznaczane jako (0, 1), są bowiem łatwe w realizacji technicznej i dlatego są stosowane w komputerach cyfrowych. Kodowanie binarne komunikatów jest także naturalne i bardzo oszczędne. Aby to zilustrować powróćmy do trzeciego przykładu, w którym źródłem komunikatów jest zdarzenie będące rzutem specjalną 5-ścienną kostką. Źródło to może nadawać 5 różnych komunikatów, oznaczających upadek kostki na odpowiednią ściankę, a zapisanych jako a,b,c,d,e (rysunek 1.8). Przypomnijmy, że kostka upada trzystopniowo, a dla każdego stopnia występują jednakowe, równe jednej drugiej (p=1/2) prawdopodobieństwa związanych z tym zdarzeń. W celu opisu drogi jaką trzeba przebyć od wierzchołka rysunku 1.8 do finalnych komunikatów zapisanych jako a,b,c,d,e przyporządkujmy jeden bit na oznaczenie każdego stopnia. Załóżmy także, że przy opisie tej drogi przyjmiemy cyfrę binarną zero jeśli trzeba wybrać lewą gałąź każdego stopnia oraz cyfrę binarną jeden jeśli trzeba wybrać prawą gałąź każdego stopnia. W efekcie dla poszczególnych komunikatów otrzymamy następujące opisy drogi : Strona 40 40

41 ELEMENTY TEORII INFORMACJI a 00 b 01 c 10 (1.17) d 110 e 111 Wyznaczone w ten sposób opisy drogi nazywamy kodami poszczególnych komunikatów. Binarny kod danego komunikatu nazywamy słowem kodowym komunikatu (albo ciągiem kodowym komunikatu). Długością słowa kodowego jest liczba znaków w nim występujących. Dla komunikatów (1.17) a, b, c długość słowa kodowego jest równa 2, a dla komunikatów d, e długość słowa kodowego jest równa 3. Zauważmy, że minimalna długość słowa kodowego N min dla komunikatu zawierającego n bitów informacji jest równa N min = n (1.18) Oczywiście komunikat zawierający n bitów informacji może być zapisany za pomocą słowa kodowego o długości większej niż N min Średnia ważona długość słowa kodowego Załóżmy, że źródło informacji może nadawać n różnych komunikatów, o zdarzeniach występujących z różnymi prawdopodobieństwami p i (i=1,2,3,...,n), którym przypisano słowa kodowe o różnej długości N i (i=1,2,3,...,n). Wtedy wielkość L: L = n i= 1 p i N i (1.19) gdzie: n - liczba możliwych zdarzeń generowanych przez źródło, p i i=1,2,3,...,n - prawdopodobieństwo wystąpienia i-tego zdarzenia, N i i=1,2,3,...,n - długość słowa kodowego i-tego komunikatu, jest nazywana średnią ważoną długością słowa kodowego tego sposobu kodowania informacji. Strona 41 41

42 ROZDZIAŁ 1 Dla naszego przykładu będącego rzutem specjalną 5-ścienną kostką - liczba możliwych zdarzeń wynosi pięć (n=5), a prawdopodobieństwa wystąpienia poszczególnych zdarzeń nie są jednakowe i wynoszą: dla zdarzeń a, b, c p 1 = p 2 = p 3 = 1/4 a dla zdarzeń d, e p 4 = p 5 = 1/8. Również długości słów kodowych poszczególnych zdarzeń nie są jednakowe i wynoszą: dla zdarzeń a, b, c N 1 = N 2 = N 3 = 2 a dla zdarzeń d, e N 4 = N 5 = 3. Dla tego źródła średnia ważona długość słowa kodowego opisanego w przykładzie sposobu kodowania informacji wynosi zgodnie ze wzorem (1.19): L 5 = i= 1 6 = p i N i = = = (1.20) Redundancja kodowania Różnicę pomiędzy średnią ważoną długością słowa kodowego L, a entropią H danego źródła informacji nazywamy redundancją R tego sposobu kodowania: R = L H (1.21) UWAGA Redundancja (łac. redundantia nadmiar) czyli nadmiarowość jest miarą świadomego lub nieświadomego powtarzania pewnych elementów (np. w zapisie informacji czy w systemie sterowania elektrownią) w stosunku do tego co jest niezbędne. Redundancja może odnosić się do nadmiaru niepotrzebnego, czasem nawet szkodliwego, jak i do nadmiaru potrzebnego, czasem nawet niezbędnego na przykład w celu zwiększenia niezawodności lub bezpieczeństwa. Dla naszego przykładu będącego rzutem specjalną 5-ścienną kostką - średnia ważona długość słowa kodowego wynosi Strona 42 42

43 ELEMENTY TEORII INFORMACJI L = natomiast entropia również wynosi H = 1 2 wzór (1.20), wzór (1.13). 4 Redundancja R tego sposobu kodowania wynosi więc zgodnie z zależnością (1.21) zero. R = L H = = 0 (1.22) 4 UWAGA Zerowa czy też bardzo mała redundancja sposobu kodowania informacji nie zawsze jest korzystna przy technicznej realizacji procesu przesyłania komunikatów. Zauważmy, że w naszym przykładzie długości słów kodowych poszczególnych zdarzeń nie są jednakowe i wynoszą dla zdarzeń a, b, c 2 a dla zdarzeń d, e - 3. Taka sytuacja wymaga dodatkowego specjalnego znaku separatora oddzielającego komunikaty o poszczególnych zdarzeniach. Dwa występujące po sobie komunikaty mogłyby się bowiem zlewać w inny dopuszczalny ciąg kodowy. Sytuacja taka występuje też w kodzie Morse'a, gdzie za pomocą kreski i kropki kodujemy poszczególne litery, cyfry lub inne znaki specjalne jednak ponieważ długości słów kodowych poszczególnych znaków są różne - potrzebny jest dodatkowy znak (separator) przedzielający znaki co jest istotną wadą takiego sposobu kodowania. Dodatkowego separatora można uniknąć stosując jednakowe długości słów kodowych. W naszym przykładzie zamiast kodowania o różnych długościach słów kodowych ale za to o zerowej redundancji (1.23): a 00 b 01 c 10 (1.23) d 110 e 111 Strona 43 43

44 ROZDZIAŁ 1 zastosujmy kodowanie o jednakowych długościach słów kodowych do komunikatów a, b, c dodaliśmy po jednym zerze z lewej strony słowa kodowego, ale za to z większą redundancją (1.24): a 000 b 001 c 010 (1.24) d 110 e 111 Dla tego sposobu kodowania średnia ważona długość słowa kodowego wynosi: L 5 = i= p i N i = = = + = (1.25) Redundancja jest za to większa i wynosi R = L H = = 4 4 (1.26) Kontrola parzystości Jak już wykazaliśmy zerowa czy też bardzo mała redundancja sposobu kodowania informacji nie zawsze jest korzystna przy technicznej realizacji procesu przesyłania komunikatów. UWAGA Umiejętne zwiększenie redundancji może przede wszystkim przyczynić się poprawy niezawodności transmisji komunikatów. Zauważmy, że podczas procesu przesyłania komunikatów mogą pojawić się przypadkowe przekłamania wynikające z występujących zakłóceń. Zakłócenie zmieniające nawet jeden znak (bit) w ciągu kodowym może przekształcić to słowo w inne dopuszczalne ale o zupełnie odmiennym znaczeniu. Na przykład jeśli w kodzie komunikatu c (010) przypadkowo zmieni się pierwszy bit z zera na jeden to odbiorca otrzyma zupełnie inny komunikat d (110). Zwiększając długość słów kodowych, kosztem zwiększenia redundancji możemy wyraźnie poprawić niezawodność transmisji komunikatów. Strona 44 44

45 ELEMENTY TEORII INFORMACJI W tym celu zwiększamy długość słowa kodowego o jeden, w specjalny sposób. Na dodatkowej, ostatniej pozycji słowa kodowego dopiszmy zero lub jeden w taki sposób, aby każde słowo kodowe zawierało nieparzystą liczbę znaków jeden. Czyli jeśli liczba jedynek jest parzysta to dopisujemy dodatkowo jeden, natomiast jeśli liczba jedynek jest nieparzysta to dopisujemy dodatkowo zero. Zauważmy, że tak prosta modyfikacja słowa kodowego poprawia niezawodność i bezpieczeństwo transmisji komunikatów. Jeśli w procesie dekodowania (odczytu) będziemy dodatkowo sprawdzać, czy każde słowo zawiera parzystą liczbę jedynek, to natychmiast zlokalizujemy jednostkowe przekłamanie w procesie transmisji. Dodajmy, że praktyczne sprawdzenie czy każde słowo zawiera parzystą liczbę jedynek jest prostym do realizacji technicznej zabiegiem. Taka metoda poprawy niezawodności transmisji komunikatów jest nazywana metodą kontroli parzystości. Pamiętajmy jednak, że zastosowanie kontroli parzystości powoduje zwiększenie redundancji kodowania. Opisaną powyżej metodę kontroli parzystości zastosujmy dla naszego przykładu będącego rzutem specjalną 5-ścienną kostką. Zastosujmy kodowanie wszystkich komunikatów o jednakowych długościach słów kodowych (1.24) a 000 parzyste a staje się 0001 a 001 nieparzyste b staje się 0010 c 010 nieparzyste c staje się 0100 (1.27) d 110 parzyste d staje się 0101 e 111 nieparzyste e staje się 1110 Ponieważ komunikat a zawiera parzystą (zerową) liczbę jedynek do końca zmodyfikowanego komunikatu dopisujemy jeden. Podobnie ponieważ komunikat b zawiera nieparzystą (jeden) liczbę jedynek do końca zmodyfikowanego komunikatu dopisujemy zero. Ponieważ komunikat c zawiera nieparzystą (jeden) liczbę jedynek do końca zmodyfikowanego komunikatu dopisujemy zero. Ponieważ komunikat d zawiera parzystą (dwie) liczbę jedynek do końca zmodyfikowanego komunikatu dopisujemy jeden. Wreszcie - komunikat e zawiera nieparzystą (trzy) liczbę jedynek do końca zmodyfikowanego komunikatu dopisujemy więc zero. Strona 45 45

46 ROZDZIAŁ 1 Po takiej modyfikacji kody (1.27) przyjmą postać: a 0001 b 0010 c 0100 (1.28) d 1101 e 1110 Zauważmy, że dla tego sposobu kodowania średnia ważona długość słowa kodowego wynosi: L 5 = i= p i N i = = = 3 + = 4 8 (1.29) Redundancja jest za to większa i wynosi: R = L H = = (1.30) Przy transmisji komunikatów zakodowanych zgodnie z metodą kontroli parzystości w postaci (1.28), wystarczy każdorazowo sprawdzać, czy komunikaty zawierają parzystą liczbę jedynek. Jeśli tak to oznacza przekłamanie w procesie transmisji. Ilość informacji a sposób jej kodowania Na początku tego rozdziału podkreślaliśmy, że zgodnie z wzorem Shannona, ilość informacji zależy od prawdopodobieństwa zdarzenia generowanego przez określone źródło informacji. W drugiej części rozdziału stwierdziliśmy, że ta sama informacja może być zakodowana w różny sposób. Ograniczając rozważania do kodowania binarnego (stosowanego w komputerach cyfrowych) zauważyliśmy, że wprawdzie minimalna długość słowa kodowego jest równa liczbie bitów informacji, ale w praktycznych sposobach kodowania w zamierzony sposób wprowadzamy często dłuższe słowo kodowe. Przykładowo w rozważanym w podrozdziale 1.4 przykładzie będącym rzutem specjalną 5-ścienną kostką komunikat a może być binarnie zakodowany na przynajmniej trzy sposoby: Strona 46 46

47 ELEMENTY TEORII INFORMACJI a 00 a 000 (1.31) a 0001 W pierwszym przykładzie (00) długość kodu jest równa dwa. Jest minimalna i równa ilości bitów informacji zakodowanym w tym komunikacie (k=2b), zgodnie z wzorem Shannona (prawdopodobieństwo p=1/4). W drugim przykładzie (000) długość kodu jest równa trzy, co wynika z postulatu, aby wszystkie komunikaty generowane przez źródło, miały jednakową długość kodu. Nie trzeba wtedy stosować separatorów przy transmisji komunikatów. Powoduje to jednak zwiększenie redundancji kodowania. W trzecim przykładzie (0001) długość kodu jest równa cztery, co wynika z zastosowania metody kontroli parzystości. Powoduje to wyraźną poprawę niezawodności transmisji komunikatów, jednak kosztem dalszego zwiększenia redundancji kodowania. UWAGA Zauważmy, że im mniejsza jest redundancja, czyli im bardziej zwięźle kodujemy informacje, tym większe wymagania muszą spełniać urządzenia do transmisji komunikatów. Większa redundancja prowadzi do wydłużenia komunikatów i zwiększenia kosztów transmisji. Należy więc poszukiwać kompromisu pomiędzy zwiększeniem bezpieczeństwa (co wymaga większej redundancji) a minimalizacją kosztów transmisji (co wymaga mniejszej redundancji). Mimo, że formalnie ilość informacji wynika ze wzoru Shannona i zależy od prawdopodobieństwa to w wielu opracowaniach, a nawet podręcznikach, pojęcie ilości informacji w systemach kodowania binarnego jest rozszerzone na długość słowa kodowego stosowanego przy praktycznym sposobie kodowania. Ilość informacji mierzymy wtedy liczbą bitów, jako znaków alfabetu, praktycznie stosowanych do kodowania danej informacji. Strona 47 47

48 ROZDZIAŁ Kod ASCII jednostki informacji Kod ASCII kodowanie znaków alfanumerycznych Komputer cyfrowy przetwarza informacje zapisane w kodzie binarnym. Taka postać jest bardzo niewygodna dla użytkowników, przyzwyczajonych do znakowego kodowania w tradycyjnie stosowanych alfabetach języków naturalnych (np. alfabet polski czy łaciński). Powstała więc konieczność opracowania umowy zaakceptowanej przez wszystkich użytkowników komputerów oraz urządzenia przetwarzającego kody. Istota takiego przetwarzania jest bardzo prosta. Posługując się tablicą, w której w jednej kolumnie zgromadzono wszystkie symbole alfabetu komunikatu zewnętrznego, a w drugiej odpowiadające im ciągi znaków binarnych, zamieniamy poszczególne symbole komunikatu zewnętrznego na żądaną postać wewnętrzną lub odwrotnie ciąg znaków binarnych może być zastąpiony odpowiednimi symbolami komunikatu zewnętrznego. Przykładem takiej tablicy jest kod ASCII (American Standard Code for Information Interchange), który jest zgodny z międzynarodowym kodem ISO-7 (International Organization for Standarization). W wersji podstawowej kod ASCII składa się ze 128 znaków, którym przyporządkowano liczby z zakresu i odpowiadające im kody binarne składające się z 7 bitów. W kodzie ASCII występują: litery (małe i duże) alfabetu angielskiego, cyfry, znaki przestankowe (kropka, przecinek,...) i inne symbole znajdujące się na klawiaturze np.: Strona kody poleceń sterujących.

49 ELEMENTY TEORII INFORMACJI Litery, cyfry, znaki przestankowe i inne symbole znajdujące się na klawiaturze nazywamy znakami alfanumerycznymi albo znakami ASCII. Jest ich w sumie 95. Przyporządkowano im liczby z zakresu i odpowiadające im 7-bitowe kody binarne. Pozostałe 33 kody dotyczą poleceń sterujących, służących do sterowania pracą takich urządzeń jak klawiatura, monitor czy drukarka. Przyporządkowano im liczby z zakresu 0-31 i 127 i odpowiadające im 7-bitowe kody binarne. Jak już stwierdziliśmy w wersji podstawowej kod ASCII jest 7-bitowy. Ponieważ w komputerach cyfrowych, ze względów technicznych, wygodniej jest operować słowami kodowymi o długości będącej potęgą dwójki (2, 4, 8, 16,...) znaki ASCII kodowane są w słowach 8-bitowych, a ósmy bit przeznaczany jest na bit kontrolny np. kontroli parzystości w celu poprawy niezawodności transmisji komunikatów. Poniżej przedstawiono przykłady kodów dla trzech znaków ASCII (A, a, 1) i dwóch poleceń sterujących (początek tekstu, kasowanie): A a początek tekstu kasowanie W przykładach przedstawiono kod 8-bitowy i odpowiadającą mu liczbę zapisaną dziesiętnie. UWAGA W trzecim przykładzie 1 oznacza znak ASCII (cyfrę) a nie liczbę całkowitą! Kodowaniu liczb w komputerze cyfrowym poświęcimy następny rozdział. Ósmy bit w kodzie ASCII można także wykorzystać na powiększenie zbioru kodowanych znaków. Powstało wiele rozszerzeń kodu ASCII nazywanych stronami kodowymi. Przykładem strony kodowej umożliwiającej kodowanie polskich znaków specjalnych (znaków diakrytycznych) takich jak ą, ć, ę, ł... jest strona ISO zgodna ze standardem ISO Latin-2 i PN-93 T Poniżej przedstawiono przykłady kodów ze strony kodowej ISO dla trzech polskich znaków diakrytycznych - ą, ć, ę Strona 49 49

50 ROZDZIAŁ 1 ą ć ę W przykładach przedstawiono kod 8-bitowy i odpowiadającą mu liczbę. Przykładem urządzenia przekształcającego symbole alfanumeryczne na ciągi impulsów elektrycznych o dwu wyraźnie różnych napięciach odpowiadających dwóm bitom zeru i jedynce jest klawiatura komputera cyfrowego. Naciśnięcie klawisza opatrzonego np. znakiem litery A powoduje wysłanie ciągu impulsów odpowiadającego tej literze. W pracy [Wróbel 2011] przedstawiono zbiór wszystkich 128 (od 0 do 127) podstawowych znaków kodu ASCII. Jednostki informacji Na początku tego rozdziału omawiając wzór Shannona (wzór 1.9) na ilość informacji zdefiniowaliśmy podstawową jednostkę informacji bit. Przypomnijmy, że komunikat, którego prawdopodobieństwo wystąpienia wynosi p, zawiera k jednostek informacji i bezpośrednio ze wzoru Shanonna wynika definicja jednostki informacji - czyli bitu. Bit (oznaczenie b) jest to taka ilość informacji, jaką uzyskujemy po stwierdzeniu, że zaszło jedno z dwu jednakowo prawdopodobnych zdarzeń (p=1/2). W tym podrozdziale stwierdziliśmy już, omawiając binarne kodowanie znaków alfanumerycznych, że w komputerach cyfrowych, ze względów technicznych, wygodniej jest operować słowami kodowymi o długości będącej potęgą dwójki (2, 4, 8, 16,...). Ponieważ znaki te są powszechnie stosowane a w kodzie ASCII kodowane są w słowach 8-bitowych zdecydowano się wprowadzić pochodną jednostkę informacji zwaną bajtem (ang. byte), w skrócie B. Jak wspomniano jeden bajt zawiera osiem bitów l B = 8 b (1.32) W jednym bajcie (1B) można zapisać 2 8 = 256 różnych symboli. Strona 50 50

51 ELEMENTY TEORII INFORMACJI UWAGA Jeden bajt (1B) to w kodzie ASCII jeden znak alfanumeryczny. Jeden bajt (1B) to także najmniejsza adresowalna jednostka pamięci w komputerze cyfrowym. Organizacji pamięci w komputerze cyfrowym poświęcimy więcej uwagi w następnych rozdziałach. Zarówno jeden bit (1b) jak i jeden bajt (1B) to w praktycznych zastosowaniach niewielka ilość informacji (w kodzie ASCII jeden bajt to tylko jeden znak alfanumeryczny). Dlatego stosujemy większe jednostki informacji będące wielokrotnościami bitu i bajtu. I tak kilobajt l KB = 2 10 B = 1024 B to 1024 bajty, a kilobit to 1024 bity. Kolejne wielokrotności bitu i bajtu to: megabit i megabajt l Mb = 2 20 b = 2 10 Kb l MB = 2 20 B = 2 10 KB gigabit i gigabajt l Gb = 2 30 b = 2 10 Mb l GB = 2 30 B = 2 10 MB terabit i terabajt l Tb = 2 40 b = 2 10 Gb l TB = 2 40 B = 2 10 GB petabit i petabajt l Pb = 2 50 b = 2 10 Tb l PB = 2 50 B = 2 10 TB eksabit i eksabajt l Eb = 2 60 b = 2 10 Pb Strona 51 51

52 ROZDZIAŁ 1 l EB = 2 60 B = 2 10 PB zettabit i zettabajt l Zb = 2 70 b = 2 10 Eb l ZB = 2 70 B = 2 10 EB jottabit i jottabajt l Yb = 2 80 b = 2 10 Zb l YB = 2 80 B = 2 10 ZB UWAGA Stosowanie przedrostków kilo, mega, giga itd. do określania odpowiednich wielokrotności bitu i bajtu jest niezgodne z wytycznymi międzynarodowego układu jednostek SI. Przykładowo przedrostek kilo w układzie SI oznacza jak wiadomo 1000, a nie 1024 (210). W celu odróżnienia przedrostków o mnożniku 1000 od przedrostków o mnożniku 1024 zaproponowano (już w 1997r) zmianę nazewnictwa poprzez dodanie w nazwie przedrostka liter bi (zamianę kilobajtu na kibibajt, megabajtu na mebibajt, gigabajtu na gibibajt,... ) oraz poprzez dodanie do symbolu przedrostka litery i (zamianę KB na KiB, MB na MiB, GB na GiB,... ). Nowe przedrostki nazywano przedrostkami dwójkowymi (binarnymi). Propozycja rozwiązania tego problemu niejednoznaczności przedrostków nie została jednak dobrze przyjęta i nadal powszechnie korzystamy z przedrostków układu SI, co niestety może być źródłem nieporozumień. Strona 52 52

53 2 Arytmetyka dwójkowa W tym rozdziale: o Systemy liczbowe o Kodowanie liczb w komputerze cyfrowym o Arytmometr komputera cyfrowego

54 ROZDZIAŁ Systemy liczbowe Arytmetyka Poprzedni rozdział poświęcony był kodowaniu informacji, w tym także kodowaniu liter i cyfr. Nie pisaliśmy jednak dotąd o kodowaniu liczb i wykonywaniu obliczeń. Problemom zapisu liczb i wykonywania podstawowych działań na liczbach poświęcona jest najstarsza część matematyki zwana arytmetyką. Starożytny Babilon, Egipt czy Grecja to przykłady cywilizacji, w których już kilka tysięcy lat temu opracowano podstawy arytmetyki, a pitagorejczycy (Grecja - VI wiek p.n.e.) uważali arytmetykę za jedną z czterech najważniejszych nauk. Podstawowe operacje (działania) arytmetyczne to dodawanie, odejmowanie, mnożenie i dzielenie. Ponieważ powszechnie stosowanym sposobem kodowania liczb jest dziesiętny system pozycyjny możemy mówić o arytmetyce dziesiętnej. Rozwój komputerów cyfrowych w znacznym stopniu jest możliwy dzięki arytmetyce dwójkowej. Arytmetyka dwójkowa (binarna) to dział arytmetyki dotyczący systemów zapisu i wykonywania podstawowych działań na liczbach kodowanych dwuznakowo (binarnie). Podstawom arytmetyki dwójkowej poświęcony jest ten rozdział. Podział liczb Liczba jest jednym z najczęściej stosowanych pojęć w matematyce. Jest pojęciem abstrakcyjnym (należy do świata abstrakcji ) jest to specjalna informacja, która służy do porównywania różnych wielkości zarówno w świecie materialnym jak i abstrakcyjnym. W matematyce definiowanych jest wiele rodzajów liczb. Na rysunku 2.1 zaznaczono powiązania pomiędzy najważniejszymi rodzajami liczb. Strona 54 54

55 ARYTMETYKA DWÓJKOWA Rysunek 2.1. Powiązania pomiędzy najważniejszymi rodzajami liczb Najstarszymi i najczęściej stosowanymi liczbami są liczby naturalne. UWAGA W matematyce istnieją dwa różne podejścia do definiowania liczb naturalnych, związane z liczbą zero. W pierwszym, najbardziej naturalnym podejściu, związanym ze zliczaniem elementów zbioru - liczby naturalne to 0, 1, 2, 3,.... Liczba zero odpowiada liczności zbioru pustego. W drugim, bardziej historycznym podejściu, liczby naturalne nie zawierają zera, a zaczynają się od jedynki 1, 2, 3,.... Zauważmy, ze zera nie ma w niepozycyjnych systemach kodowania liczb (np. w systemie rzymskim). Warto przypomnieć, że w Europie liczba zero zaczyna być powszechnie stosowana dopiero w XVII wieku wraz z wprowadzeniem pozycyjnego dziesiętnego systemu kodowania liczb. W informatyce i w tym podręczniku korzystamy z pierwszego podejścia. Liczby naturalne to: 0, 1, 2, 3,.... Liczby całkowite zawierają liczby naturalne 0, 1, 2, 3,... zero oraz liczby przeciwne do naturalnych, czyli liczby ujemne -1, -2, -3,.... Liczby wymierne to ułamki i liczby całkowite. Ułamki powstają przez podzielenie jednej liczby całkowitej (licznik) przez drugą, różną od zera, liczbę całkowitą (mianownik). Wśród ułamków wyróżnimy ułamki dwójkowe gdzie mianownikiem jest dwa lub potęga liczby dwa oraz ułamki dziesiętne gdzie mianownikiem jest dziesięć lub potęga liczby dziesięć. Liczby rzeczywiste to liczby wymierne i liczby niewymierne. Liczby niewymierne to takie, których nie można wyrazić w postaci ułamka. Na osi liczbowej znajdują się one pomiędzy liczbami wymiernymi. Strona 55 55

56 ROZDZIAŁ 2 UWAGA Jako ciekawostkę można przytoczyć fakt, że już starożytni pitagorejczycy zauważyli, że istnieją liczby, których nie da się przedstawić w postaci ułamka, takie jak na przykład 2. Liczba ta jest jak wiadomo długością przekątnej kwadratu o boku jednostkowym. Pitagorejczycy liczby niewymierne uznawali nawet za głęboko skrywany symbol doskonałości. Liczby zespolone to liczby powstałe przez zsumowanie liczby rzeczywistej i liczby urojonej. Liczba urojona to taka liczba, której kwadrat jest niedodatnią liczbą rzeczywistą. Specjalną liczbą urojoną jest liczba i (jednostka urojona), dla której i 2 =-1. Przykłady liczb zespolonych: 5+3i 3i 5 W drugim przykładzie część rzeczywista jest zerowa, a w trzecim - część urojona jest zerowa. Opisane powyżej cztery rodzaje liczb (naturalne, całkowite, rzeczywiste i zespolone) są najczęściej przetwarzanymi liczbami w komputerach cyfrowych. UWAGA Zbiór zasad zapisu liczb i nazewnictwa liczb nazywamy systemem liczbowym. Do zapisu liczb w każdym systemie liczbowym stosuje się skończony zbiór dopuszczalnych znaków zwanych cyframi. Warto podkreślić, że istnieje wiele systemów liczbowych. Praktycznie każda starożytna cywilizacja miała własny system liczbowy, a wiele systemów jest nadal stosowanych, pomimo powszechnej dominacji dziesiętnego systemu pozycyjnego. Systemy liczbowe możemy podzielić na pozycyjne i niepozycyjne. Na rysunku 2.2 przestawiono klasyfikację i przykłady najczęściej stosowanych systemów liczbowych. Strona 56 56

57 ARYTMETYKA DWÓJKOWA Rysunek 2.2. Klasyfikacja i przykłady najczęściej stosowanych systemów liczbowych Niepozycyjne systemy liczbowe Najbardziej naturalnym i jednocześnie najprostszym systemem liczbowym jest system jedynkowy. W systemie tym jest tylko jeden znak (cyfra) najczęściej - pionowa kreska np., a kolejne liczby naturalne są tworzone przez proste powtarzanie tego znaku. Przykładowo liczba 3 jest zapisywana jako, a liczba 10 to. System jedynkowy w prehistorii stosowany był w pierwotnych społecznościach ludzkich a współcześnie posługują się jedynie nieliczne plemiona, np. Pigmeje w Afryce. System jedynkowy jest w praktyce bardzo niewygodny, zwłaszcza w przypadku kodowania większych liczb (np ale nawet 100) i dlatego został wyparty przez systemy addytywne. UWAGA Idea systemów addytywnych polega na grupowaniu pewnych symboli na przykład po 5. Mogą to być cztery równoległe pionowe kreski, przekreślone piątą, ale na ogół jest to nowy symbol (nowa cyfra). W addytywnym systemie liczbowym wartość liczby jest sumą występujących w niej kolejnych symboli (cyfr). Zarówno system jedynkowy jak i systemy addytywne należą do systemów niepozycyjnych, gdyż wartość symbolu (cyfry) nie zależy od pozycji, którą zajmuje w liczbie. Przykładem niepozycyjnego systemu addytywnego jest rzymski system zapisu liczb. W systemie tym występuje 7 podstawowych symboli (cyfr): I - 1 V - 5 X - 10 Strona 57 57

58 ROZDZIAŁ 2 L - 50 C D M Przykładowo rzymski zapis: CXXI oznacza liczbę będącą sumą 4 symboli: =121, MMXII oznacza liczbę będącą sumą 5 symboli: =2012, MCMXLV oznacza następującą liczbę: =1945. W zapisie rzymskim poszczególne symbole są dodawane i generalnie zapisywane w nie rosnącej kolejności. Zauważmy jednak, że w trzecim przykładzie niektóre symbole są odejmowane. Takie symbole poprzedzają symbol o większej wartości i tak: CM oznacza =900 XL oznacza =40 IV oznacza -1+5=4 IX oznacza -1+10=9 Innym przykładem niepozycyjnego systemu addytywnego jest egipski system zapisu liczb stosowany w starożytnym Egipcie. W systemie tym używano specjalnych hieroglifów (symboli) dla potęg dziesiątki, aż do 7 potęgi (10 0, 10 1, 10 2,..., 10 7 ). Przykładem systemu addytywno-pozycyjnego (częściowo addytywnego i częściowo pozycyjnego) jest system babiloński stosowany w starożytnej Mezopotanii. W systemie tym podstawowe symbole są wielokrotnościami liczb 10 i 60. Ślady babilońskiego systemu liczbowego występują w stosowanym współcześnie podziale godziny na minuty i sekundy oraz w podziale kąta na stopnie, minuty i sekundy kątowe. UWAGA Podstawową wadą systemów niepozycyjnych, w tym także systemów addytywnych, jest skomplikowany sposób dokonywania za ich pomocą nawet prostych operacji arytmetycznych. Wady tej nie mają systemy pozycyjne i dlatego wyparły systemy niepozycyjne i są współcześnie powszechnie stosowane. Strona 58 58

59 ARYTMETYKA DWÓJKOWA Pozycyjne systemy liczbowe Podkreślmy, że o ile w niepozycyjnych systemach liczbowych wartość symbolu (cyfry) nie zależy od pozycji, którą zajmuje w liczbie, o tyle w pozycyjnych systemach liczbowych wartość symbolu (cyfry) zależy od pozycji, którą zajmuje w liczbie. Liczby naturalne (czyli nieujemne liczby całkowite) zapisuje się w systemie pozycyjnym w następujący sposób: w którym c n c n-1...c 0 są cyframi. Zapis (2.1) oznacza liczbę c n c n-1...c 0 (2.1) c n p n + c n-1 p n c 0 p 0 (2.2) gdzie p jest podstawą systemu pozycyjnego. Podstawą może być dowolna liczba naturalna większa niż jeden. W praktyce korzystamy tylko z kilku rodzajów systemów pozycyjnych: dla p=2 mamy dwójkowy (binarny) pozycyjny system liczbowy, powszechnie stosowany w komputerach cyfrowych z uwagi na binarny zapis wszelkich informacji, dla p=8 mamy ósemkowy (oktalny) pozycyjny system liczbowy, stosowany zwłaszcza w pierwszych komputerach cyfrowych z uwagi na łatwiejszy dostęp do binarnych zapisów innych informacji, dla p=10 mamy dziesiętny (decymalny) pozycyjny system liczbowy powszechnie stosowany do klasycznego zapisu liczb, dla p=16 mamy szesnastkowy (heksadecymalny) pozycyjny system liczbowy stosowany w komputerach głównie z uwagi na szybki i łatwy dostęp do kodowanych binarnie adresów pamięci komputera. Zauważmy, jeśli p jest podstawą systemu to zbiór cyfr w takim systemie liczbowym jest równy: (0, 1, 2,...p-1) (2.3) Strona 59 59

60 ROZDZIAŁ 2 Zbiór cyfr systemu pozycyjnego o podstawie p składa się z p znaków: cyfry systemu dwójkowego dla p=2 to: 0,1, cyfry systemu ósemkowego dla p=8 to: 0,1,2,3,4,5,6,7, cyfry systemu dziesiętnego dla p=10 to: 0,1,2,3,4,5,6,7,8,9, cyfry systemu szesnastkowego dla p=16 to: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. W systemie szesnastkowym A oznacza 10, B oznacza 11, C oznacza 12, D oznacza 13, E oznacza 14, F oznacza 15, UWAGA Cyfry dziesiętnego systemu pozycyjnego często nazywane są cyframi arabskimi. Pochodzą one z Indii a Arabowie jedynie sprowadzili je do Europy miedzy X a XIII wiekiem wraz z jedną z pierwszych maszyn liczących zwaną abakusem. Abakus to urządzenie zbliżone do dzisiejszego liczydła. W Europie dopiero w XVI wieku cyfry arabskie wyeliminowały powszechnie stosowane, jeszcze od czasów starożytnego Rzymu, cyfry rzymskie. Dziesiętny system pozycyjny Liczby naturalne zapisuje się w dziesiętnym systemie pozycyjnym w następujący sposób: c n 10 n + c n-1 10 n c (2.3) gdzie: c n c n-1...c 0 są cyframi dziesiętnymi równymi 0,1,...,9. Przykładowo zapis 582 (co czytamy: pięćset osiemdziesiąt dwa), zgodnie z definicją dziesiętnego systemu pozycyjnego reprezentuje liczbę: Strona * * *10 0 =582

61 ARYTMETYKA DWÓJKOWA Liczby ujemne są poprzedzone znakiem minus (-12 oznacza liczbę ujemną minus dwanaście). Do zapisu ułamkowych liczb wymiernych stosuje się często zapis dziesiętny zawierający część całkowitą i część ułamkową (ułamek dziesiętny) ze znakiem separatora dziesiętnego w postaci kropki lub przecinka oddzielającego część całkowitą od części ułamkowej. Przykładowo w liczbie 135, to część całkowita liczby natomiast 0,25 - to część ułamkowa (ułamek dziesiętny), a separatorem jest przecinek. Innym sposobem zapisu liczb wymiernych jest zapis wykładniczy ±m 10 c (2.4) gdzie m jest mantysą, będącą ułamkiem dziesiętnym, c jest cechą (jest to liczba całkowita), będącą wykładnikiem potęgi podstawy równej 10. Przykładowo w zapisie wykładniczym 0, ,135 - to mantysa, a 3 - to cecha. Zapis ten oznacza liczbę 135. Dwójkowy system pozycyjny Stwierdziliśmy już, że do zapisu dowolnych informacji w komputerze korzystnie jest stosować kod dwójkowy. Z tego względu również liczby przedstawiamy w kodzie dwójkowym. Najczęściej stosuje się do tego celu dwójkowy system pozycyjny. Liczby naturalne zapisuje się w dwójkowym systemie pozycyjnym w następujący sposób: c n 2 n + c n-1 2 n c (2.5) w którym c n c n-1...c 0 są cyframi dwójkowymi. Cyfry dwójkowe (0,1) są również zwane bitami. Przykładowo zapis liczby naturalnej w dwójkowym systemie pozycyjnym, co oznaczamy (2), oznacza liczbę: 1* * * * *2 0 = = 19 (10) (2.6) Strona 61 61

62 ROZDZIAŁ 2 Strona Indeksy (2) i (10) oznaczają odpowiednio - liczbę dwójkową i dziesiętną. Tego typu indeksy stosujemy tam, gdzie podstawa zapisu nie jest oczywista. W podobny sposób jak liczby naturalne przedstawiamy w postaci rozwinięcia dwójkowego dodatnie ułamki właściwe (w ułamkach właściwych ich wartość bezwzględna jest mniejsza od jedności). W dwójkowym systemie pozycyjnym zapis c -1 c -2...c -n (2.7) w którym c -1 c -2...c -n są cyframi dwójkowymi, oznacza w dziesiętnym systemie pozycyjnym liczbę c c c -n 2 -n (2.8) Przykładowo zapis dodatniego ułamka dwójkowego w dwójkowym systemie pozycyjnym, co oznaczamy (-2), oznacza liczbę 1* * * * *2-5 = 1/2+1/16+1/32 =19/32 (2.9) Indeks (-2) oznacza tu ułamkową liczbę dwójkową. Ósemkowy system pozycyjny System dwójkowy kodowania liczb jest bardzo wygodny z punktu widzenia konstruktorów komputerów, natomiast jest kłopotliwy dla ich użytkowników (kody binarne stają się bardzo długie). Powstał więc problem takiego zapisu liczb, który byłby bardziej zwięzły niż dwójkowy, a jednocześnie pozwalałby na natychmiastowe odtworzenie ciągu bitów liczby dwójkowej. W praktyce stosuje się dwa takie sposoby. Są to ósemkowy i szesnastkowy system pozycyjny. W ósemkowym systemie pozycyjnym (zwanym też systemem oktalnym) korzysta się z ośmiu cyfr: 0, l, 2, 3, 4, 5, 6, 7. Liczby naturalne zapisuje się w ósemkowym systemie pozycyjnym w następujący sposób: w którym c n c n-1...c 0 są cyframi ósemkowymi. c n 8 n + c n-1 8 n c (2.10) Przykładowo zapis liczby naturalnej 127 w ósemkowym systemie pozycyjnym, co oznaczamy 127 (8), oznacza liczbę: 1* * *8 0 = = 87 (10) (2.11)

63 ARYTMETYKA DWÓJKOWA Indeksy (8) i (10) oznaczają odpowiednio - liczbę ósemkową i dziesiętną. Zauważmy, że natychmiastowa jest konwersja zapisu liczby w systemie ósemkowym do zapisu w systemie dwójkowym i odwrotnie, co ilustruje następujący przykład (rysunek 2.3): Rysunek 2.3. Konwersja zapisu liczby w systemie ósemkowym do zapisu w systemie dwójkowym i odwrotnie Szesnastkowy system pozycyjny W szesnastkowym systemie pozycyjnym (zwanym też systemem heksadecymalnym) korzysta się z cyfr: 0, 1,2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Liczby naturalne zapisuje się w tym systemie w następujący sposób: c n 16 n + c n-1 16 n c (2.10) w którym c n c n-1...c 0 są cyframi szesnastkowymi. Przykładowo zapis liczby naturalnej 1E w szesnastkowym systemie pozycyjnym, co oznaczamy 1E (16), oznacza liczbę: 1* *16 0 = = 30 (10) (2.11) Indeksy (16) i (10) oznaczają odpowiednio - liczbę szesnastkową i dziesiętną. Zauważmy, że natychmiastowa jest konwersja zapisu liczby w systemie szesnastkowym do zapisu w systemie dwójkowym i odwrotnie, co ilustruje następujący przykład (rysunek 2.4): Strona 63 63

64 ROZDZIAŁ 2 Rysunek 2.4. Konwersja zapisu liczby w systemie szesnastkowym do zapisu w systemie dwójkowym i odwrotnie 2.2. Kodowanie liczb w komputerze cyfrowym Strona Uwarunkowania dotyczące kodowanie liczb w komputerze cyfrowym Jak podkreśliliśmy, kodowanie wszelkiej informacji w komputerze cyfrowym (znaków tekstowych, liczb, rysunków itp.) odbywa się za pomocą dwóch znaków (bitów). Taka postać jest bardzo niewygodna dla użytkowników, przyzwyczajonych do kodowania w tradycyjnie stosowanych alfabetach (np. alfabet polski czy łaciński) lub w innych tradycyjnych systemach kodowania informacji np. kodowania liczb w dziesiętnym systemie pozycyjnym. Rozwiązaniem tego problemu jest przyjęcie powszechnie akceptowanej i stosowanej umowy dotyczącej systemu kodowania przykładem takiej umowy jest omówiony już kod ASCII do kodowania znaków alfanumerycznych (tekstowych). Podobne umowy dotyczą także kodowania liczb. Liczby podobnie jak znaki tekstowe (i inne bardziej złożone obiekty) koduje się w bajtach. Warto w tym miejscu podkreślić, że w jednym bajcie (8 bitach) można zapisać zarówno jeden znak tekstowy zgodnie z kodem ASCII jak i liczbę naturalną z zakresu (0, 255).

65 ARYTMETYKA DWÓJKOWA Zauważmy, że jednobajtowy zapis: może oznaczać zarówno znak NUL (brak informacji) w kodzie ASCII jak i liczbę naturalną 0! Komputer cyfrowy powinien więc rozróżnić czy informacja zapisana w tym bajcie to znak ASCII czy też liczba!!! A jeśli liczba to jaka naturalna, ujemna czy może ułamkowa? Programiści to oni są twórcami programów komputerowych w celu jednoznacznego poinformowania komputera jaki rodzaj informacji jest zapisany w poszczególnych bajtach, muszą w procesie programowania czyli przygotowania programów komputerowych przeprowadzić proces zwany deklarowaniem obiektów występujących w danym programie. W językach programowania programiści mają ściśle określony zbiór obiektów, które mogą wystąpić w programie w danym języku. Ściśle określony jest też proces deklarowania tych obiektów. Językom programowania poświęconych jest wiele podręczników (np. [Wróbel 2011]). W tej pracy do języków programowania wrócimy w rozdziale trzecim. W tym rozdziale opiszemy jedynie podstawowe sposoby kodowania najważniejszych rodzajów liczb w komputerze cyfrowym. Kodowanie liczb naturalnych Jak już podkreśliliśmy, liczby są kodowane w komputerach cyfrowych w postaci ciągu bajtów. Poszczególne rodzaje liczb (naturalne, całkowite, liczby rzeczywiste, liczby zespolone) mogą być kodowane w różny sposób jednak w praktyce i w stosowanych językach programowania używa się jedynie kilka podstawowych standardów. W większości języków programowania programista może stosować liczby naturalne, całkowite, rzeczywiste i zespolone. Do kodowania liczb naturalnych (tu zawsze z zerem) korzysta się z 1, 2 lub 4 bajtów (może być także większa liczba bajtów, będąca potęgą liczby 2, np. 8). Strona 65 65

66 ROZDZIAŁ 2 Liczby naturalne nazywa się często liczbami bez znaku (ang. unsigned integers), a do ich deklaracji w programie korzysta się ze specjalnych słów kluczowych (np. unsigned int, unsigned long int). Zauważmy, że w jednym bajcie można zakodować liczby naturalne z przedziału (od 0 do 2 8-1). Analogicznie zauważmy, że w dwóch bajtach można zakodować liczby naturalne z przedziału ((od 0 do )). W czterech bajtach można zakodować liczby naturalne z przedziału (od 0 do ). Ogólnie - w n bajtach można zakodować 2 8n liczb naturalnych. W niektórych zastosowaniach stosowane są jeszcze większe liczby naturalne, ale wtedy należy na to poświęcić jeszcze więcej bajtów. Przykładowo w języku C, liczby naturalne można zapisywać nawet w 8 bajtach (deklarując je w programie, jako unsigned _int64 lub unsigned long long int). UWAGA W kodowaniu liczb w komputerze cyfrowym, w tym także liczb naturalnych, nie można zapisać liczby (nieskończoność). Można natomiast zapisać liczbę dowolnie wielką, korzystając z odpowiednio dużej liczby bajtów. Na rysunku 2.5 zaznaczono schematycznie, na osi liczbowej, zakres liczb naturalnych, możliwych do zakodowania w 1, 2 i 4 bajtach. Strona Rysunek 2.5. Zakres liczb naturalnych, możliwych do zakodowania w 1, 2 i 4 bajtach W komputerach cyfrowych stosuje się także inne sposoby zapisu liczb naturalnych. Przykładem może być kod BCD (ang. binary coded deci-

67 ARYTMETYKA DWÓJKOWA mal), gdzie kolejne cyfry dziesiętne są zapisywane w pewnych porcjach danych długości 4 bitów (4 bity to niezbędna długość słowa do zapisu 10 cyfr). Zaletą kodu BCD jest proste przeliczanie zapisu binarnego na system dziesiętny, jednak wykonywanie obliczeń w tym systemie jest bardzo złożone i dlatego zapis ten jest stosowany bardzo rzadko. Kodowanie liczb całkowitych Do kodowania liczb całkowitych, podobnie jak w przypadku liczb naturalnych, korzysta się z 1, 2 lub 4 bajtów (może być także większa liczba, będąca potęgą liczby 2, np. 8). Ten typ liczb nazywa się często liczbami ze znakiem (ang. signed integers), gdyż przy ich kodowaniu należy zakodować także znak liczby całkowitej. Do deklaracji liczb całkowitych w programie korzysta się ze specjalnych słów kluczowych (np. int, integer, long integer). W celu zakodowania liczb całkowitych powszechnie stosuje się tzw. kod uzupełnień do dwóch (ang. two s complement code - w skrócie kod U2). W kodzie tym bit najbardziej znaczący (pierwszy od lewej strony) jest bitem znaku, ponieważ świadczy o znaku liczby. Jeśli bit najbardziej znaczący zwany też bitem najstarszym równa się jedności to liczba jest ujemna. Jeśli równa się zeru to liczba jest dodatnia. Liczba dodatnia jest w kodzie U2 zapisywana tak jak liczba naturalna z dodatkowym zerowym bitem znaku. Liczba ujemna jest w kodzie U2 zapisywana w specjalny sposób. W pierwszym etapie kodujemy binarnie liczbę przeciwną (jest ona liczbą dodatnią) tak jak liczbę naturalną z zerowym bitem znaku. Następnie należy dokonać inwersji bitów w binarnym zapisie tej liczby, czyli zamienić 0 na 1 i odwrotnie a następnie zwiększyć uzyskany wynik o 1. Pokażemy to na przykładzie zapisu w kodzie U2 liczby ujemnej -25 (10) Liczbą przeciwną jest liczba naturalna 25 (10). Jej zapis binarny jest (2) gdyż: 1* * * * *2 0 = = 25 (10) (2.12) W kodzie U2 należy dodać jeszcze bit znaku. Liczbę naturalną 25 (10) w kodzie U2 zapisujemy w następujący sposób: 0*(-2 5 ) + 1* * * * *2 0 = = 25 (10) (2.13) Strona 67 67

68 ROZDZIAŁ 2 zapis ten jest więc (U2). Teraz możemy dokonać inwersji bitów otrzymując (U2-inw) W ostatnim kroku należy zwiększyć uzyskany wynik o 1 otrzymując (U2) Ostatecznie liczba przeciwna do liczby naturalnej 25 (10) ma wartość 1*(-2 5 ) + 0* * * * *2 0 = = = -25 (10) (2.14) a więc uzyskaliśmy zamierzony efekt czyli liczbę -25 (10). Uwaga w zapisie (2.13 i 2.14) przy bicie znaku występuje znak minus. Powyższy przykład powtórzmy rozpatrując zapis w kodzie U2 w całym (jednym) bajcie. Aby zapisać w kodzie U2 w całym bajcie ujemną liczbę całkowitą 25 należy najpierw zapisać w tym kodzie liczbę przeciwną czyli 25, otrzymując: 0*(-2 7 ) + 0* * * * * * *2 0 = = = 25 (10) (2.15) zapis ten jest więc (U2). Teraz możemy dokonać inwersji bitów otrzymując (U2-inw) W ostatnim kroku należy zwiększyć uzyskany wynik o 1 otrzymując (U2) Ostatecznie liczba ujemna -25 (10) ma wartość 1*(-2 7 ) + 1* * * * * * *2 0 = = = -25 (10) (2.16) Strona 68 68

69 ARYTMETYKA DWÓJKOWA a więc uzyskaliśmy zamierzony efekt czyli liczbę -25 (10). Uwaga w zapisie (2.16) przy bicie znaku występuje znak minus. Popularność kodu uzupełnień do dwóch do zapisu liczb całkowitych wynika z tego, że operacje dodawania i odejmowania są w nim wykonywane tak samo jak dla liczb naturalnych, czyli liczb binarnych bez znaku. Pokażemy to w następnym podrozdziale. Warto podkreślić, że nazwa tego kodu U2, wynika ze sposobu obliczania liczb przeciwnych. Dla jednobitowej liczby, na przykład 1, wartość przeciwną (-1) obliczamy zgodnie opisaną metodą dodając najpierw bit znaku i otrzymując 01 (U2) Następnie dokonujemy inwersji otrzymując 10 (U2-inw) W ostatnim kroku należy zwiększyć uzyskany wynik o 1 otrzymując Ostatecznie liczba ta ma wartość 11 (U2) 1*(-2 1 ) + 1*2 0 = -2+1 = -1 (10) (2.17) Dla jednobitowej liczby liczbę przeciwną uzyskujemy odejmując daną liczbę od 2. Zauważmy, że w jednym bajcie można zakodować 258 czyli 2 8 liczb całkowitych z przedziału od 128 do 127. Analogicznie - w dwóch bajtach można zakodować czyli 2 16 liczb całkowitych z przedziału od do W czterech bajtach można zakodować czyli 2 32 całkowitych z przedziału od do liczb Ogólnie - w n bajtach można zakodować 2 8n liczb całkowitych. UWAGA W kodowaniu liczb całkowitych w komputerze cyfrowym, nie można zapisać liczby + i - (plus i minus nieskończoność). Można natomiast zapisać liczbę dowolnie wielką korzystając z odpowiednio dużej liczby bajtów. Strona 69 69

70 ROZDZIAŁ 2 Na rysunku 2.6 zaznaczono schematycznie, na osi liczbowej, zakres liczb całkowitych, możliwych do zakodowania w 1, 2 i 4 bajtach. Rysunek 2.6. Zakres liczb całkowitych, możliwych do zakodowania w 1, 2 i 4 bajtach Kodowanie liczb rzeczywistych Do tej pory pisaliśmy o binarnym kodowaniu w komputerze cyfrowym liczb naturalnych i całkowitych i związanych z tym uwarunkowaniach. Podkreślaliśmy, że liczby te zapisujemy dokładnie, ale nie możemy zapisać liczby + i - (plus i minus nieskończoność). Możemy natomiast zapisać liczbę dowolnie wielką, korzystając z odpowiednio dużej liczby bajtów. W przypadku binarnego kodowania liczb rzeczywistych, składających się z liczb wymiernych i niewymiernych sytuacja jest bardziej złożona. W przypadku liczb wymiernych dokładnie możemy zapisać tylko liczby całkowite i ułamki dwójkowe. Pozostałe ułamki możemy zapisać jedynie w przybliżony sposób w postaci rozwinięcia okresowego w dwójkowym systemie pozycyjnym. Liczb niewymiernych nie można natomiast wyrazić w postaci ułamka, a na osi liczbowej znajdują się one pomiędzy liczbami wymiernymi. Liczby niewymierne możemy jednak zapisać w przybliżony sposób w postaci rozwinięcia nieokresowego w dwójkowym systemie pozycyjnym. W komputerach cyfrowych liczby rzeczywiste przedstawia się w postaci stałoprzecinkowej lub zmiennoprzecinkowej. Powszechnie stosowany jest zapis zmiennoprzecinkowy (ang. floating point). Zapis stałoprzecinkowy omówimy w końcowej części tego podrozdziału. Liczby rzeczywiste zmiennoprzecinkowe zapisywane są w postaci wykładniczej (z podstawą zapisu równą dwa) składającej się z: Strona części ułamkowej zwanej mantysą (m),

71 ARYTMETYKA DWÓJKOWA części całkowitej zwanej cechą (c), znaku liczby (s). Wartość liczby określa zależność gdzie: x 2 c = s m (2.18) Mantysa (m) jest właściwym ułamkiem dwójkowym. Cecha (c) jest wykładnikiem potęgi podstawy zapisu (liczba 2). Cecha jest liczbą całkowitą. Znak liczby (s) jest cyfrą dwójkową zwaną bitem znaku, która poprzedza cyfry określające cechę i mantysę. Cyfra 1 na pozycji bitu znaku oznacza liczbę ujemną, a cyfra 0 oznacza liczbę nieujemną. Do kodowania liczb rzeczywistych w postaci zmiennoprzecinkowej korzysta się na ogół, z 4 bajtów (32 bitów), a do deklaracji w programie komputerowym również korzysta się ze specjalnych słów kluczowych (np. float, real). Liczby zmiennoprzecinkowe 32-bitowe nazywamy często liczbami pojedynczej precyzji. Aby zwiększyć dokładność zapisu liczb rzeczywistych oraz ich zakres korzysta się z 8 bajtów (64 bitów). Liczby zmiennoprzecinkowe 64-bitowe nazywamy często liczbami podwójnej precyzji. Do deklaracji tych liczb w programie korzysta się ze specjalnych słów kluczowych (np. double, double precision). W niektórych zastosowaniach w celu dalszego zwiększenia dokładności zapisu liczb rzeczywistych oraz ich zakresu, korzysta się nawet z 16 bajtów (128 bitów). Aby ujednolicić system zapisu liczb w postaci zmiennoprzecinkowej a tym samym ujednolicić również wyniki obliczeń numerycznych wykonywanych na różnych platformach sprzętowych, wprowadzono standard zapisu zmiennoprzecinkowego IEEE 754. Standard ten jest powszechnie stosowany zarówno w urządzeniach, w tym w procesorach, jak i w programach obliczeniowych. Standard IEEE 754 definiuje dwa rodzaje liczb zmiennoprzecinkowych: 32-bitowe liczby pojedynczej precyzji (ang. single precision), Strona 71 71

72 ROZDZIAŁ 2 64-bitowe liczby podwójnej precyzji (ang. double precision). Kod binarny liczby zmiennoprzecinkowej zarówno pojedynczej jak i podwójnej precyzji podzielony jest na trzy pola zawierające poszczególne składowe zapisu: bit znaku, cecha, mantysa. Najstarszy bit (pierwszy od lewej strony kodu) zwany jest bitem znaku. Stan 1 oznacza liczbę ujemną a dodatnią, a stan 0 oznacza liczbę nieujemną, Na rysunku 2.7 przedstawiono schematycznie zapis liczby rzeczywistej zmiennoprzecinkowej pojedynczej precyzji zwany też formatem IEEE-754 single. Rysunek 2.7. Schemat zapisu liczby rzeczywistej zmiennoprzecinkowej pojedynczej precyzji w formacie IEEE-754 Na rysunku 2.7 przyjęto powszechnie stosowany sposób numeracji bitów w kodzie. Bit najmłodszy (pierwszy z prawej strony kodu) ma numer 0, a bit najstarszy, o numerze 31 - to bit znaku. Zgodnie z formatem IEEE-754 cecha posiada 8 bitów (zatem w polu cechy można zapisać wartości od -127 (wszystkie bity wyzerowane) do 128 (wszystkie bity ustawione na 1). Mantysa posiada 23 bity. Taka forma zapisu daje dokładność około 7-8 cyfr znaczących w dziesiętnym zapisie liczb. Zakres zapisywanych liczb to od około ± do około ± Na rysunku 2.8 przedstawiono schema- Strona 72 72

73 ARYTMETYKA DWÓJKOWA tycznie na osi liczbowej zakres liczb rzeczywistych zmiennoprzecinkowych pojedynczej precyzji. Rysunek 2.8. Zakres liczb rzeczywistych zmiennoprzecinkowych pojedynczej precyzji Na rysunek 2.9 przedstawiono schematycznie zapis liczby rzeczywistej zmiennoprzecinkowej podwójnej precyzji zwany też formatem IEEE-754 double. Rysunek 2.9. Schemat zapisu liczby rzeczywistej zmiennoprzecinkowej podwójnej precyzji w formacie IEEE-754 Na rysunku 2.9 bit najmłodszy (pierwszy z prawej strony kodu) ma numer 0, a bit najstarszy, będący bitem znaku, ma numer 63. Zgodnie z formatem IEEE-754 cecha posiada 11 bitów (zatem w polu cechy można zapisać wartości od (wszystkie bity wyzerowane) do 1024 (wszystkie bity ustawione na 1). Mantysa posiada 52 bity. Taka forma zapisu daje dokładność około 16 cyfr znaczących w dziesiętnym zapisie liczb. Zakres zapisywanych liczb to od około ± do około ± Na rysunku 2.10 przedstawiono schematycznie na osi liczbowej zakres liczb rzeczywistych zmiennoprzecinkowych podwójnej precyzji. Strona 73 73

74 ROZDZIAŁ 2 Rysunek Zakres liczb rzeczywistych zmiennoprzecinkowych podwójnej precyzji Jak już wspominaliśmy inną, współcześnie prawie nie stosowaną, formą zapisu liczb rzeczywistych jest zapis stałoprzecinkowy albo stałopozycyjny (fixedpoint). Do zapisu liczby stałoprzecinkowej przeznaczona jest z góry określona ilość cyfr dwójkowych (n) a pozycję przecinka ustala się arbitralnie, w zależności od wymaganej dokładności. Ideę zapisu liczby stałoprzecinkowej przedstawiono na rysunku Rysunek Idea zapisu liczby stałoprzecinkowej Zwykle długość słowa (n) w zapisie stałoprzecinkowym jest wielokrotnością bajtów (2,4,8,16,...). Arbitralnie ustala się liczbę bitów (m) na część ułamkową, zapisywaną jako ułamek binarny. Liczba bitów na część całkowitą, zapisywaną jako liczba całkowita, wynosi (n-m). Najstarszy bit o numerze (n-1) jest bitem znaku, co wynika z koncepcji zapisu liczby całkowitej w kodzie U2. Na przykład mając do dyspozycji słowo 32-bitowe (n=32), można wydzielić 24 bity na część całkowitą, 8 bitów na część ułamkową, albo po 16 bitów na część całkowitą i ułamkową, albo 30 bitów na część całkowitą i zostawić tylko 2 bity do zapisu części ułamkowej. Za każdym razem uzyskujemy inny zakres i dokładność zapisu. Jest to podstawowa wada zapisu stałoprzecinkowego. Strona 74 74

75 ARYTMETYKA DWÓJKOWA UWAGA W kodowaniu liczb rzeczywistych w komputerze cyfrowym i to zarówno w zapisie stałoprzecinkowym jak i zmiennoprzecinkowym nie można zapisać liczby + i - (plus i minus nieskończoność). Nie możemy też zapisać dokładnie liczb niewymiernych. Przy zapisie liczb wymiernych dokładny zapis uzyskujemy tylko dla liczb całkowitych i ułamków dwójkowych. Dla pozostałych liczb uzyskujemy jedynie zapis przybliżony. Można natomiast zapisać liczbę dowolnie wielką lub dowolnie małą i z dowolną precyzją zapisu, korzystając z odpowiednio dużej liczby bajtów. Kodowanie liczb zespolonych Liczby zespolone to liczby powstałe przez zsumowanie liczby rzeczywistej i liczby urojonej. Do kodowania tych liczb zespolonych korzysta się na ogół z 8 bajtów. Po 4 bajty są przeznaczone na kodowanie części rzeczywistej i części urojonej. Każda z tych części jest kodowana jako liczba rzeczywista zmiennoprzecinkowa pojedynczej precyzji. W językach programowania do deklaracji tych liczb w programie komputerowym korzysta się ze specjalnych słów kluczowych (np. complex). W celu podniesienia precyzji zapisu i zakresu do kodowania liczb zespolonych można korzystać z 16 bajtów. Wtedy po 8 bajtów jest przeznaczonych na kodowanie części rzeczywistej i części urojonej. Każda z tych części jest kodowana jako liczba rzeczywista zmiennoprzecinkowa podwójnej precyzji. Do deklaracji tych liczb w programie komputerowym korzysta się ze specjalnych słów kluczowych (np. double complex) Arytmometr komputera cyfrowego Uwarunkowania dotyczące wykonywania obliczeń w komputerze cyfrowym Jak podkreśliliśmy, kodowanie wszelkiej informacji w komputerze cyfrowym (znaków tekstowych, rysunków itp.) odbywa się za pomocą dwóch znaków (bitów). Za pomocą bitów są także kodowane liczby. Strona 75 75

76 ROZDZIAŁ 2 W pierwszej części tego rozdziału opisaliśmy podstawowe rodzaje liczb (naturalne, całkowite, rzeczywiste i zespolone) oraz zasady i metody ich kodowania w komputerze. Zwróciliśmy także uwagę na uwarunkowania wynikające z koncepcji pozycyjnego dwójkowego (binarnego) systemu kodowania liczb, podkreślając na przykład brak możliwości zapisu liczb + i - (plus i minus nieskończoność). Opisując zasady kodowania liczb rzeczywistych podkreśliliśmy, że nie możemy też zapisać dokładnie liczb niewymiernych a przy zapisie liczb wymiernych dokładny zapis uzyskujemy tylko dla liczb całkowitych i ułamków dwójkowych. Dla pozostałych liczb rzeczywistych możemy uzyskać jedynie zapis przybliżony. Stwierdziliśmy także, że można natomiast zapisać liczbę dowolnie wielką lub dowolnie małą i z dowolną precyzją zapisu, korzystając z odpowiednio dużej liczby bajtów. Przyjrzymy się teraz zasadom wykonywania podstawowych obliczeń w komputerze cyfrowym. Obliczenia te dotyczą dodawania, odejmowania, mnożenia i dzielenia zakodowanych binarnie liczb i są wykonywane w arytmometrze komputera. Budowa arytmometru Arytmometr jest jednym z podstawowych elementów procesora. Procesor jest zaś jednym z najważniejszych elementów komputera cyfrowego. Budową i zasadami pracy komputera, w tym także procesora, zajmiemy się w następnym rozdziale. Arytmometr jest często nazywany jednostką arytmetyczno-logiczną, gdyż wykonuje podstawowe operacje arytmetyczne, takie jak dodawanie, odejmowanie, mnożenie i dzielenie oraz operacje logiczne na zakodowanych binarnie liczbach. Liczby te procesor pobiera z pamięci operacyjnej komputera. Arytmometr składa się z trzech zasadniczych elementów: sumator, pamięć rejestrowa, układ sterowania. Sumator to podstawowy element arytmometru. Służy do wykonywania operacji dodawania. Pozostałe operacje arytmetyczne są w sumatorze sprowadzane do dodawania i prostych operacji pomocniczych. Strona 76 76

77 ARYTMETYKA DWÓJKOWA Pamięć rejestrowa, często nazywana rejestrami, służy do przechowywania liczby w czasie wykonywania operacji arytmetycznych. Przechowuje także wyniki obliczeń. Układ sterowania kieruje pracą sumatora i pamięci rejestrowej. Steruje także wymianą danych między rejestrami i innymi elementami składowymi procesora. Zasady wykonywania podstawowych operacji arytmetycznych pokażemy w tym podrozdziale na przykładzie operacji dodawania i odejmowania liczb naturalnych i liczb całkowitych. Dodawanie liczb naturalnych Dodawanie liczb naturalnych kodowanych w dwójkowym systemie pozycyjnym jest operacją bardzo prostą i łatwą do realizacji technicznej w arytmometrze. Przy dwóch cyfrach (0,1) możliwe są trzy proste przypadki: 1+0=1 1+1=10 (2.19) 0+0=0 Przy dodawaniu większych liczb obowiązują te same zasady co przy dodawaniu klasycznym (w dziesiętnym systemie pozycyjnym). Jest to również operacja bardzo prosta i łatwa do realizacji technicznej w arytmometrze co wykażemy na przykładzie dodawania dwóch liczb naturalnych zakodowanych w jednym bajcie. Przykład dodawania liczb naturalnych W tym przykładzie do liczby 25 (10) dodajmy liczbę 27 (10). Suma jest równa 52 (10). Zapis binarny pierwszej liczby jest Zapis binarny drugiej liczby jest (2) (2) Zgodnie z klasycznymi zasadami dodawania otrzymamy Strona 77 77

78 ROZDZIAŁ (2.20) Przykład ten wymaga komentarza. Zgodnie z klasycznymi zasadami dodawanie zaczynamy od dodawania cyfr od prawej strony zapisu, czyli od najmłodszych bitów. Dla pierwszego bitu otrzymujemy 1+1=10 Zero piszemy pod kreską ułamkową a jedynkę przenosimy do pamięci w zapisie (2.20) jest to jedynka zapisana pismem pochyłym. W arytmometrze taki zabieg nazywamy przeniesieniem, a pamięć jest odpowiednim rejestrem arytmometru. Dla drugiego bitu mamy 0+1+1=10 Tu jedynka zapisana pismem pochyłym jest przeniesieniem, w arytmometrze pobranym z odpowiedniego rejestru. Podobnie jak przy pierwszym bicie zero piszemy pod kreską ułamkową a jedynkę przenosimy do pamięci w zapisie (2.20) jest to jedynka zapisana pismem pochyłym. Dla trzeciego bitu mamy 0+0+1=1 Tu jedynka zapisana pismem pochyłym jest przeniesieniem, pobranym z rejestru Dla czwartego bitu mamy 1+1=10 Zero piszemy pod kreską ułamkową a jedynkę przenosimy do pamięci w zapisie (2.20) jest to jedynka zapisana pismem pochyłym. Dla piątego bitu mamy 1+1+1=10 Tu jedynka zapisana pismem pochyłym jest przeniesieniem, pobranym z rejestru. Podobnie jak przy pierwszym bicie zero piszemy pod kreską Strona 78 78

79 ARYTMETYKA DWÓJKOWA ułamkową a jedynkę przenosimy do pamięci w zapisie (2.20) jest to jedynka zapisana pismem pochyłym. Dla szóstego bitu mamy 0+0+1=1 Tu jedynka zapisana pismem pochyłym jest przeniesieniem, pobranym z rejestru. Bit siódmy i ósmy są zerami. Przykład dodawania liczb naturalnych z przepełnieniem W kolejnym przykładzie do liczby 25 (10) dodajmy liczbę 240 (10). Suma jest równa 265 (10). Zapis binarny pierwszej liczby jest Zapis binarny drugiej liczby jest (2) (2) Zgodnie z klasycznymi zasadami dodawania i notacją opisaną w poprzednim przykładzie otrzymamy (2.21) Przykład ten wymaga także dodatkowego komentarza. Suma równa (2) = 265 (10) przekracza zakres liczb naturalnych możliwych do zakodowania w jednym bajcie, który wynosi 255. Do zapisu niezbędne jest wykorzystanie 9 bitów. Taką sytuację nazywamy przepełnieniem. W celu zniwelowania złych skutków przepełnienia należy na przykład zwiększyć liczbę bajtów do kodowania wyniku. Strona 79 79

80 ROZDZIAŁ 2 Strona Odejmowanie liczb naturalnych Odejmowanie liczb naturalnych kodowanych w dwójkowym systemie pozycyjnym jest operacją równie prostą i łatwą do realizacji technicznej w arytmometrze jak dodawanie. Przy dwóch cyfrach (0,1) możliwe są cztery proste przypadki: 1-0=1 1-1=0 (2.22) 0-0=0 0-1 w tej sytuacji pożyczamy jedynkę i mamy 10-1=1 Przy odejmowaniu większych liczb obowiązują te same zasady co przy odejmowaniu klasycznym (w dziesiętnym systemie pozycyjnym). Pamiętajmy jednak, że odjemna (I liczba) musi być nie mniejsza od odjemnika (II liczba), aby różnica była liczbą naturalną. Jest to również operacja bardzo prosta i łatwa do realizacji technicznej w arytmometrze co wykażemy na przykładzie odejmowania dwóch liczb naturalnych zakodowanych w jednym bajcie. Przykład odejmowania liczb naturalnych Od liczby 25 (10) odejmijmy liczbę 11 (10). Różnica jest równa 14 (10). Zapis binarny pierwszej liczby (odjemnej) jest (2) Zapis binarny drugiej liczby (odjemnika) jest (2) Zgodnie z klasycznymi zasadami dodawania otrzymamy (2.23) Przykład ten wymaga komentarza. Zgodnie z klasycznymi zasadami odejmowanie zaczynamy od odejmowania cyfr od prawej strony zapisu, czyli od najmłodszych bitów.

81 ARYTMETYKA DWÓJKOWA Dla pierwszego bitu otrzymujemy Pod kreską ułamkową piszemy zero. Dla drugiego bitu mamy 1-1=0 0-1 pożyczamy jedynkę i mamy 10-1=1 Jeden piszemy pod kreską ułamkową, a drugą jedynkę przenosimy do pamięci w zapisie (2.23) jest to jedynka zapisana pismem pochyłym. W arytmometrze taki zabieg nazywamy pożyczką, a pamięć jest odpowiednim rejestrem arytmometru. Uwaga: pożyczka jest ujemna. Dla trzeciego bitu mamy pożyczamy jedynkę i mamy 10-1=1 Jeden piszemy pod kreską ułamkową a drugą jedynkę będącą pożyczką przenosimy do pamięci w zapisie (2.23) jest to jedynka zapisana pismem pochyłym. Dla czwartego bitu mamy pożyczamy jedynkę i mamy 10-1=1 Jeden piszemy pod kreską ułamkową a drugą jedynkę będącą pożyczką przenosimy do pamięci w zapisie (2.23) jest to jedynka zapisana pismem pochyłym. Dla piątego bitu mamy =0 Tu jedynka zapisana pismem pochyłym jest przeniesieniem, pobranym z rejestru. Bit szósty, siódmy i ósmy są zerami. Jeżeli odjemna (I liczba) jest mniejsza od odjemnika (II liczba) wtedy różnica jest liczbą ujemną nie jest liczbą naturalną. Wtedy takie zadanie najlepiej jest rozwiązać jako zadanie odejmowania liczb całkowitych. Dodawaniu i odejmowaniu liczb całkowitych poświęcimy następny punkt. Strona 81 81

82 ROZDZIAŁ 2 Dodawanie i odejmowanie liczb całkowitych Dodawanie i odejmowanie liczb całkowitych kodowanych w dwójkowym systemie pozycyjnym jest operacją równie prostą i łatwą do realizacji technicznej w arytmometrze jak dodawanie i odejmowanie liczb naturalnych. Przypomnijmy, że kodowanie liczb całkowitych odbywa się w kodzie uzupełnień do dwóch U2. Przy dodawaniu i odejmowaniu liczb całkowitych zapisanych w kodzie U2 obowiązują te same zasady, co przy odejmowaniu klasycznym (w dziesiętnym systemie pozycyjnym). Wynik sumę lub różnicę również otrzymujemy w kodzie U2. Dodawanie i odejmowanie liczb całkowitych jest to również operacją bardzo prosta i łatwą do realizacji technicznej w arytmometrze, co wykażemy na dwóch przykładach. Pierwszy przykład dotyczy dodawania dwóch liczb całkowitych zakodowanych w jednym bajcie. Do ujemnej liczby -25 (10) dodamy liczbę 11 (10) Drugi przykład dotyczy odejmowania dwóch liczb całkowitych zakodowanych w jednym bajcie. Od liczby 11 (10) odejmiemy liczbę 25 (10) Przykład dodawania liczb całkowitych W tym przykładzie do ujemnej liczby -25 (10) dodamy liczbę 11 (10). Obie liczby są zakodowane w jednym bajcie. W pierwszym kroku należy obie liczby zapisać w kodzie U2. Aby zapisać w jednym bajcie ujemną liczbę całkowitą 25 należy najpierw zapisać w tym kodzie liczbę przeciwną czyli 25, otrzymując: 0*(-2 7 ) + 0* * * * * * *2 0 = = = 25 (10) (2.24) zapis dodatniej liczby 25 (10) w kodzie U2 jest więc (U2). Teraz możemy dokonać inwersji bitów otrzymując Strona (U2-inw)

83 ARYTMETYKA DWÓJKOWA W ostatnim kroku należy zwiększyć uzyskany wynik o 1 otrzymując (U2) Ostatecznie liczba ujemna -25 (10) ma wartość 1*(-2 7 ) + 1* * * * * * *2 0 = = = -25 (10) (2.25) Zapis w jednym bajcie liczby dodatniej całkowitej 11 (10) w kodzie U2 jest znacznie prostszy, gdyż każda liczba dodatnia w kodzie U2 jest zapisywana za pomocą dwójkowego systemu pozycyjnego, otrzymując: 0*(-2 7 ) + 0* * * * * * *2 0 = zapis dodatniej liczby 11 (10) w kodzie U2 jest więc = = 11 (10) (2.26) (U2). W drugim kroku możemy przystąpić do dodawania. Zgodnie klasycznymi zasadami dodawania otrzymamy (2.27) Przykład ten wymaga komentarza. Zgodnie z klasycznymi zasadami dodawanie zaczynamy od dodawania cyfr od prawej strony zapisu, czyli od pierwszego najmłodszego bitu. Dla pierwszego bitu otrzymujemy 1+1=10 Zero piszemy pod kreską ułamkową a jedynkę przenosimy do pamięci w zapisie (2.27) jest to jedynka zapisana pismem pochyłym. Przypominamy, że taki zabieg nazywamy przeniesieniem, a pamięć jest odpowiednim rejestrem arytmometru. Dla drugiego bitu mamy 1+1+1=11 Strona 83 83

84 ROZDZIAŁ 2 Tu jedynka zapisana pismem pochyłym jest przeniesieniem, w arytmometrze pobranym z odpowiedniego rejestru. Pod kreską ułamkową piszemy jedynkę a kolejną jedynkę przenosimy do pamięci w zapisie (2.27) jest to jedynka zapisana pismem pochyłym. Dla trzeciego bitu mamy 1+0+1=10 Tu jedynka zapisana pismem pochyłym jest przeniesieniem pobranym z rejestru. Pod kreską ułamkową piszemy zero a jedynkę przenosimy do pamięci w zapisie (2.27) jest to jedynka zapisana pismem pochyłym. Dla czwartego bitu mamy 1+0+1=10 Tu jedynka zapisana pismem pochyłym jest przeniesieniem pobranym z rejestru. Pod kreską ułamkową piszemy zero a jedynkę przenosimy do pamięci w zapisie (2.27) jest to jedynka zapisana pismem pochyłym. Dla piątego bitu mamy 0+0+1=1 Tu jedynka zapisana pismem pochyłym jest przeniesieniem, pobranym z rejestru. Pod kreską ułamkową piszemy jeden. Dla szóstego, siódmego i ósmego bitu mamy identyczną sytuację 1+0=1 Pod kreską ułamkową piszemy jeden. Na zakończenie tego przykładu podkreślmy, że uzyskana w zapisie (2.27) suma jest w kodzie U (U2) Ostatecznie wartość dziesiętna sumy jest 1*(-2 7 ) + 1* * * * * * *2 0 = = = -14 (10) (2.28) Strona 84 84

85 ARYTMETYKA DWÓJKOWA UWAGA Powyższy przykład potwierdza wszystkie opisane wcześniej zalety kodu U2. Kod U2 umożliwia łatwą z technicznego punktu widzenia realizację operacji dodawania zarówno dodatnich jak i ujemnych liczb całkowitych w arytmometrze. Przy dodawaniu liczb całkowitych, tak samo jak przy dodawaniu liczb naturalnych (opisaliśmy taki przykład patrz zapis (2.21)) może dojść do przepełnienia. W celu zniwelowania złych skutków przepełnienia należy na zwiększyć liczbę bajtów do kodowania wyniku. Przykład odejmowania liczb całkowitych W tym przykładzie od liczby 11 (10) odejmiemy liczbę 25 (10). Obie liczby są zakodowane w jednym bajcie. W pierwszym kroku należy obie liczby zapisać w kodzie U2. Zapis w jednym bajcie obu dodatnich liczb w kodzie U2 jest bardzo prosty, gdyż każda liczba dodatnia w kodzie U2 jest zapisywana za pomocą dwójkowego systemu pozycyjnego. Dla liczby 11 (10) otrzymamy *(-2 7 ) + 0* * * * * * *2 0 = Zapis dodatniej liczby 11 (10) w kodzie U2 jest więc Dla liczby 25 (10) otrzymamy = = 11 (10) (2.29) (U2). 0*(-2 7 ) + 0* * * * * * *2 0 = = = 25 (10) (2.30) Zapis dodatniej liczby 25 (10) w kodzie U2 jest więc (U2). Strona 85 85

86 ROZDZIAŁ 2 W drugim kroku możemy przystąpić do odejmowania. Zgodnie z klasycznymi zasadami odejmowania otrzymamy (2.31) Przykład ten wymaga komentarza. Zgodnie z klasycznymi zasadami odejmowanie zaczynamy od odejmowania cyfr od prawej strony zapisu, czyli od pierwszego najmłodszego bitu. Dla pierwszego bitu otrzymujemy Pod kreską ułamkową piszemy zero. Dla drugiego bitu otrzymujemy 1-1=0 1-0=1 Pod kreską ułamkową piszemy jeden. Dla trzeciego bitu otrzymujemy Pod kreską ułamkową piszemy zero. Dla czwartego bitu otrzymujemy Pod kreską ułamkową piszemy zero. Dla piątego bitu mamy pożyczamy jedynkę i mamy 0-0=0 1-1= =1 Jeden piszemy pod kreską ułamkową a drugą jedynkę przenosimy do pamięci w zapisie (2.31) jest to jedynka zapisana pismem pochyłym. Przypomnijmy, że taki zabieg nazywamy pożyczką, a pamięć jest Strona 86 86

87 ARYTMETYKA DWÓJKOWA odpowiednim rejestrem arytmometru. Pamiętajmy także, że pożyczka jest ujemna. Dla szóstego bitu mamy pożyczamy jedynkę i mamy =1 Jeden piszemy pod kreską ułamkową a drugą jedynkę, będącą pożyczką przenosimy do pamięci w zapisie (2.31) jest to jedynka zapisana pismem pochyłym. Dla siódmego bitu mamy pożyczamy jedynkę i mamy =1 Jeden piszemy pod kreską ułamkową a drugą jedynkę, będącą pożyczką przenosimy do pamięci w zapisie (2.31) jest to jedynka zapisana pismem pochyłym. Dla najstarszego ósmego bitu mamy =-1 Jeden piszemy pod kreską ułamkową. Ponieważ ósmy bit jest bitem znaku proces odejmowania jest zakończony. Na zakończenie tego przykładu podkreślmy, że uzyskana w zapisie (2.31) różnica jest w kodzie U (U2) Ostatecznie wartość dziesiętna różnicy jest 1*(-2 7 ) + 1* * * * * * *2 0 = = = -14 (10) (2.32) Przykład ten, podobnie jak poprzedni, potwierdza wszystkie opisane wcześniej zalety kodu U2. Strona 87 87

88 ROZDZIAŁ 2 UWAGA Kodowanie liczb całkowitych w kodzie uzupełnień do dwóch U2 umożliwia w arytmometrze, łatwą z technicznego punktu widzenia realizację wszystkich operacji dodawania i odejmowania i to zarówno dodatnich jak i ujemnych liczb całkowitych. Strona 88 88

89 3 Systemy komputerowe W tym rozdziale: o Klasyfikacja systemów komputerowych o Komputer analogowy o Komputer Johna von Neumanna o Oprogramowanie komputera - systemy operacyjne o Wprowadzenie do języków programowania

90 ROZDZIAŁ Klasyfikacja systemów komputerowych Strona Porównanie definicji komputera, systemu komputerowego i systemu informatycznego W pierwszym rozdziale opisaliśmy podstawowe pojęcia teorii informacji. W drugim rozdziale przedstawiliśmy zasady kodowania liczb w komputerze cyfrowym i zasady pracy arytmometru. W tym rozdziale dokonamy krótkiego przeglądu systemów komputerowych. Na wstępie przyjrzyjmy się bliżej pojęciom komputer, system komputerowy i system informatyczny. W wielu podręcznikach pojęcia te bywają traktowane jako niemal synonimy. Komputer (ang. computer liczydło, łac. computare liczyć, sumować) jest programowalnym urządzeniem służącym do przetwarzania, przesyłania i przechowywania odpowiednio zakodowanych informacji. System komputerowy (ang. computer system) to system składający się z dwóch, powiązanych ze sobą i niezbędnych do działania, dwóch podstawowych elementów składowych: sprzętu komputerowego oraz oprogramowania, działających coraz częściej również w ramach sieci komputerowej. System informatyczny (ang. information system) to system składający się ze zbioru powiązanych ze sobą programów komputerowych, przeznaczonych do realizacji ściśle określonych zadań. W skład systemu informatycznego wchodzą też klasyczne urządzenia (takie jak procesor, pamięć, monitor) do przetwarzania, zapisu i przesyłania informacji i do komunikacji pomiędzy użytkownikami systemu jak i samymi urządzeniami wchodzącymi w skład systemu, ale także nieklasyczne urządzenia służące na przykład do pobierania informacji (takie jak czujniki czy sensory) lub urządzenia pełniące funkcje wykonawcze (np.: silniki, sterowniki czy roboty). W skład systemu wchodzą także ludzie użytkownicy systemu. Użytkownicy często tworzą odpowiednio zorganizowaną strukturę ze ściśle określonymi zasadami i procedurami pracy z takim systemem.

91 SYSTEMY KOMPUTEROWE UWAGA Pochodzący z języka angielskiego termin komputer próbowano w Polsce zastępować określeniem maszyna matematyczna a nawet mózg elektronowy. Dobrze, że nie wprowadzono też, wzorem innych krajów, terminu liczydło, będącego dosłownym tłumaczeniem z języka angielskiego, mimo że pierwsze komputery służyły wyłącznie do wykonywania obliczeń! Kolejnym wymagającym komentarza, a różnie definiowanym pojęciem, jest pojęcie systemu. UWAGA System to zbiór elementów (materialnych i lub abstrakcyjnych) wzajemnie ze sobą powiązanych, realizujących jako całość pewną nadrzędną funkcję lub zbiór takich funkcji. Ponieważ w praktyce wyodrębnienie wszystkich elementów systemu jest niekiedy bardzo trudne, dlatego do badania systemów wykorzystuje się ich uproszczone modele. Jak wynika z przedstawionych powyżej definicji pojęciem o najszerszym zakresie jest system informatyczny. Pojęcie to zawiera w sobie system komputerowy, a system komputerowy zawiera w sobie komputer. Wprawdzie w określeniu komputera podkreśla się, że jest to urządzenie programowalne, ale w pojęciu system komputerowy oba elementy: sprzęt komputerowy (urządzenia) (ang. hardware) i oprogramowanie (ang. software) są wyraźnie ze sobą powiązane. Zauważmy, że urządzenia czyli sprzęt komputerowy to elementy należące do świata materialnego. Są one wytworem człowieka. Natomiast oprogramowanie czyli programy komputerowe to elementy należące do świata abstrakcyjnego. Programy również są dziełem (mówimy często utworem) opracowanym przez człowieka - programistę. Przedstawiono to schematycznie na rysunku 3.1. Rys Schemat systemu komputerowego Strona 91 91

92 ROZDZIAŁ 3 Należy podkreślić, że aczkolwiek sam program komputerowy jest specjalną postacią informacji czyli elementem świata abstrakcji to w celu przetwarzania, przesyłania czy odczytu musi być w odpowiedni sposób zakodowany jako komunikat na przykład w pamięci komputerowej, która jest urządzeniem materialnym. Każdy system komputerowy funkcjonuje według pewnych reguł i zasad, a jego wszystkie elementy składowe (zarówno hardware jak i software) współpracują ze sobą w celu realizacji określonych zadań związanych z przetwarzaniem, przesyłaniem i przechowywaniem odpowiednio zakodowanych informacji. Podkreślmy, że w pełni zautomatyzowany system komputerowy może działać bez udziału człowieka. Przypomnijmy, że w zależności od sposobu kodowania informacji systemy komputerowe możemy podzielić na: cyfrowe, analogowe, hybrydowe. Systemy cyfrowe przetwarzają informacje kodowane binarnie. Systemy analogowe przetwarzają informacje kodowane w sposób ciągły. Systemy hybrydowe są połączeniem obu typów systemów - zawierają część analogową i część cyfrową oraz urządzenia pozwalające na wymianę informacji kodowanych binarnie i w sposób ciągły. Komputery i systemy analogowe i hybrydowe w przeszłości (nawet do końca lat 80-tych ubiegłego wieku) znajdowały zastosowanie do symulacji różnego rodzaju procesów ciągłych. Wzrost możliwości komputerów cyfrowych spowodował zanik stosowania tych maszyn. Zasadę działania komputerów analogowych omówimy w następnym podrozdziale. W dalszej części podręcznika pisząc komputer lub system komputerowy będziemy rozumieć przez ten termin komputer cyfrowy lub cyfrowy system komputerowy. Strona 92 92

93 SYSTEMY KOMPUTEROWE Zarys historii maszyn liczących W tym punkcie przypomnimy kilka faktów z historii maszyn liczących i komputeryzacji. Historia rozwoju maszyn liczących jest długa - za jedną z pierwszych prymitywnych form maszyn liczących można uważać liczydła, stosowane już w czasach starożytnych. Mechaniczne urządzenia do liczenia pojawiły się jednak dopiero w XVII wieku, a Leibniza ( ), uważa się za twórcę pierwszego arytmometru, tj. maszyny wykonującej cztery podstawowe działania arytmetyczne. Za początek ery komputerów zgodnie uznaje się rok 1946, w którym zbudowano pierwszą elektroniczną maszynę cyfrową ENIAC (Electronic Numerical Interpreter And Calculator) Był to pierwszy na świecie komputer, skonstruowany przez J. P. Eckerta i J. W. Mauchly'ego na Uniwersytecie Pensylwanii w latach , dla potrzeb obliczeń balistycznych Marynarki Wojennej USA. Posiadał lamp elektronowych, a pobór mocy wynosił aż 130 kw. Masowe przetwarzanie informacji w ośrodkach komputerowych stało się jednak możliwe dopiero od 1964 roku, kiedy to firma IBM wyprodukowała komputer o nazwie IBM 360. Prawdziwą rewolucję spowodowało pojawienie się na rynku komputerowym mikroprocesorów i mikrokomputerów klasy PC (komputer osobisty personal computer) w 1981 roku, a następnie upowszechnienie sieci komputerowych, a szczególnie Internetu. Odtąd obserwujemy gwałtowny rozwój zastosowań zarówno mikrokomputerów, jak i komputerów o większej mocy obliczeniowej, połączonych w sprawnie działające sieci komputerowe. Rynek komputerowy jest zaś jedną z najbardziej dynamicznie rozwijających się dziedzin gospodarki. Klasyfikacja systemów komputerowych Warto też przypomnieć, że aczkolwiek mechaniczne maszyny liczące istniały od wielu stuleci, to dopiero w drugiej połowie XX wieku, gdy zbudowano pierwsze komputery elektroniczne a szczególnie po wprowadzeniu na rynek komputerów osobistych komputery stały się symbolem rewolucji informacyjnej. Strona 93 93

94 ROZDZIAŁ 3 Współczesne systemy komputerowe można podzielić na: komputery osobiste (personal computer) o rozmiarach umożliwiających ich umieszczenie na biurku, używane zazwyczaj przez pojedyncze osoby, konsole i komputery domowe - korzystające z telewizora jako monitora i z ograniczonym oprogramowaniem, komputery mainframe - o większych rozmiarach, których zastosowaniem jest przetwarzanie dużych ilości danych, pełnienie roli serwerów itp., superkomputery - największe komputery o dużej mocy obliczeniowej, używane do czasochłonnych obliczeń naukowych, komputery wbudowane (embedded computer) specjalizowane komputery służące do sterowania różnego rodzaju urządzeniami (np. automatyki, telekomunikacji, elektroniki). Komputery osobiste mogą występować jako komputer stacjonarny to komputer, który w odróżnieniu od komputera przenośnego, jest na stałe umieszczony w jednym miejscu, zwykle na biurku (stąd angielska nazwa desktop na biurko) i składa się z co najmniej trzech zwykle niezależnych elementów: jednostki centralnej, monitora i klawiatury, laptop (z ang. na kolanach) to komputer przenośny, ze zintegrowaną klawiaturą i monitorem tworzącymi jedną całość, który po zamknięciu ma rozmiary zbliżone do dużego notatnika (i dlatego zwany też notebookiem); można go używać bez zewnętrznego źródła energii (aż do wyczerpania akumulatorów umieszczonych w obudowie), komputer kieszonkowy - palmtop (z ang. na dłoni) komputer rozmiarami podobny do kalkulatora, używa się go trzymając w jednej dłoni; można go również używać go bez zewnętrznego źródła energii, telefon komórkowy przenośne urządzenie telefoniczne, współcześnie wyposażane w dodatkowe oprogramowanie i dodatkowe funkcje, np. GPS, Strona 94 94

95 SYSTEMY KOMPUTEROWE smartfon (ang. smartphone) przenośne urządzenie telefoniczne integrujące w sobie funkcje telefonu komórkowego i komputera kieszonkowego, odbiornik sygnału GPS (ang. Global Positioning System) - przenośne urządzenie dostarczające użytkownikowi informacji o jego położeniu oraz ułatwiające nawigację po terenie, Warto zauważyć, że komputerem jest też cyfrowy aparat fotograficzny czy cyfrowa kamera wideo. Należy podkreślić, że najliczniejszymi przedstawicielami komputerów są komputery wbudowane sterujące najróżniejszymi urządzeniami od odtwarzaczy MP3 i zabawek po roboty przemysłowe. Komputery mogą być połączone w sieci komputerowe. Sieciom komputerowym poświęcimy więcej uwagi w następnych podrozdziałach. Zauważmy też, że w wielu podręcznikach w definicji komputera występuje określenie, że jest to urządzenie elektroniczne, gdyż właściwie wszystkie współczesne komputery to urządzenia elektroniczne. Warto jednak wspomnieć o udanych próbach budowy innych komputerów a zwłaszcza: komputerów optycznych (wykorzystujących przełączniki optyczne), komputerów optoelektronicznych (wykorzystujących elementy optyczne i elektroniczne), komputerów biologicznych (wykorzystujących odpowiednio wypreparowane komórki nerwowe), komputerów molekularnych (wykorzystujących jako elementy składowe pojedyncze cząstki materii molekuły), komputerów kwantowych (w których układ przetwarzający dane wykorzystuje prawa mechaniki kwantowej). W wielu podręcznikach pod pojęciem systemu komputerowego rozumie się nie tylko sprzęt i oprogramowanie, ale dodaje się także użytkowników. Strona 95 95

96 ROZDZIAŁ 3 Sprzęt (hardware) zapewnia przetwarzanie, przesyłanie i przechowywanie informacji, a procesor, pamięć i urządzenia wejścia/wyjścia to podstawowe zasoby systemu komputerowego. Oprogramowanie (software) to: system operacyjny, programy narzędziowe i programy użytkowe. System operacyjny kontroluje i koordynuje prace całego systemu komputerowego. Sklada się zwykle z wielu programów. Programy narzędziowe to programy wspomagające zarządzanie zasobami sprzętowymi oraz usprawniające lub modyfikujące system operacyjny. Programy użytkowe służą do rozwiązywania różnych problemów przetwarzania, przesyłania i przechowywania odpowiednio zakodowanych informacji. Użytkownicy to ludzie, maszyny, inne komputery, mający bezpośredni kontakt z oprogramowaniem użytkowym Komputer analogowy Strona Definicja komputera analogowego W tym podrozdziale przedstawimy podstawową ideę określającą zasadę działania komputera analogowego oraz jego zalety i wady w porównaniu z komputerem cyfrowym. Przypomnijmy, że w zależności od sposobu kodowania informacji komputery możemy podzielić na: cyfrowe, analogowe i hybrydowe. Komputery cyfrowe przetwarzają informacje kodowane binarnie. Komputery analogowe przetwarzają informacje kodowane w sposób ciągły. Komputery hybrydowe są połączeniem obu typów komputerów - zawierają część analogową i część cyfrową oraz urządzenia pozwalające na wymianę informacji kodowanych binarnie i w sposób ciągły. Komputery analogowe i hybrydowe w przeszłości (nawet do końca lat 80-tych ubiegłego wieku) znajdowały zastosowanie do symulacji róż-

97 SYSTEMY KOMPUTEROWE nego rodzaju procesów ciągłych. Wzrost możliwości komputerów cyfrowych spowodował zanik stosowania tych maszyn. Idea komputera analogowego Podstawową ideą określającą zasadę działania komputera analogowego jest spostrzeżenie, że modele wielu systemów opisywane są identycznymi lub podobnymi modelami matematycznymi na przykład równaniami czy układami równań. Jako przykład rozważmy prosty układ mechaniczny o jednym stopniu swobody, składający z ciała o masie m, zawieszonego na sprężynie o sztywności k i tłumiku o współczynniku tłumienia c. Na układ działa zewnętrzna siła F(t). Układ ten jest przedstawiony na rysunku 3.2. Rysunek 3.2. Przykład układu mechanicznego o jednym stopniu swobody Załóżmy dodatkowo, że jest to układ liniowy. Równanie opisujące ruch tego ciała wokół położenia równowagi statycznej, wynikające z drugiej zasady dynamiki Newtona, jest gdzie: ( t) m & x + cx& + kx = F (3.1) x współrzędna określająca przemieszczenie ciała (pochodne określają prędkość i przyspieszenie), m masa ciała zawieszonego na sprężynie, k - współczynnik sztywności sprężyny, c - współczynniku tłumienia tłumika, F(t) - zewnętrzna siła. Strona 97 97

98 ROZDZIAŁ 3 Rozważmy teraz prosty układ elektryczny obwód RLC, składający z opornika o rezystancji R, połączonego z cewką o indukcyjności L i kondensatorem o pojemności C. Przepływ prądu w tym obwodzie zapewnia siła elektromotoryczna E(t). Układ ten jest przedstawiony na rysunku 3.3. Rysunek 3.3. Przykład układu elektrycznego obwodu RLC Równanie opisujące spadki napięć na poszczególnych elementach tego wynika z drugiego prawa Kirchhoffa i jest gdzie: U R - spadek napięcia na oporniku, U L - spadek napięcia na cewce, U C - spadek napięcia na kondensatorze, E(t) - siła elektromotoryczna. U R + U L + U C = E(t) (3.2) Spadki napięć na poszczególnych elementach obwodu można w prosty sposób zapisać w funkcji natężenia prądu w obwodzie I i przepływu ładunku elektrycznego q U R = R I ponieważ I = q& to = R q& (3.3) U R U L di = L = L q& (3.4) dt Wtedy równanie (3.2) przyjmie postać q U C = (3.5) C Strona 98 98

99 SYSTEMY KOMPUTEROWE 1 L q& + Rq& + q = E( t) (3.6) C gdzie q współrzędna określająca przepływ ładunku elektrycznego (pochodna określa natężenie prądu), L - indukcyjność cewki, R - rezystancja opornika, C - pojemność kondensatora, E(t) siła elektromotoryczna. Porównując równania (3.1) i (3.6) widzimy, że istnieje pełna analogia pomiędzy wielkościami mechanicznymi i elektrycznymi, co schematycznie zapisano poniżej (3.7): wielkości mechaniczne x q x & = v q & = I m L wielkości elektryczne C R (3.7) k Opisany powyżej przykład analogii pomiędzy wielkościami mechanicznymi i elektrycznymi można uogólnić. Dla niemal dowolnego modelu systemu (np. układu fizycznego, biologicznego, logistycznego) opisywanego nawet złożonym modelem matematycznym można zbudować odpowiednio złożony obwód elektryczny w taki sposób, aby pomiar wiel- Strona 99 1 C F ( t) E ( t) Zamiast mierzyć wielkości mechaniczne takie jak przemieszczenie czy prędkość, bądź zamiast rozwiązywać równanie (3.1) wystarczy zmierzyć odpowiednie wielkości elektryczne (odpowiednie spadki napięć). Warto podkreślić, że pomiary wielkości elektrycznych są dużo łatwiejsze niż pomiary wielkości mechanicznych.

100 ROZDZIAŁ 3 kości elektrycznych stanowił rozwiązanie równań wchodzących w skład modelu matematycznego. Zamiast rozwiązywać złożone równania matematyczne, wystarczy zbudować odpowiedni (analogiczny) obwód elektryczny i zmierzyć odpowiednie wielkości elektryczne. Idea ta jest przedstawiona schematycznie na rysunku 3.4. Rysunek 3.4. Idea komputera analogowego Taki obwód elektryczny jest komputerem analogowym, gdyż informacje są w nim przetwarzane w sposób ciągły. Ciągłym sygnałem jest bowiem przepływ prądu. UWAGA Nazwa komputer analogowy pochodzi od analogii pomiędzy wielkościami elektrycznymi a modelowanymi wielkościami. Programem w tym komputerze jest odpowiednio zbudowany obwód elektryczny. Programowanie to przygotowanie takiego programu. Wykonanie programu polega na zamknięciu obwodu i pomiarze odpowiednich wielkości elektrycznych. Zalety i wady komputera analogowego Najważniejsza zaletą komputera analogowego jest możliwość rozwiązywania złożonych problemów obliczeniowych poprzez pomiar odpowiednich wielkości elektrycznych w obwodzie elektrycznym, będącym programem w tym komputerze. Ponieważ wykonanie programu polega na zamknięciu obwodu i stosunkowo łatwym pomiarze i nawet zapisie odpowiednich wielkości elektrycznych, komputery analogowe były przez długie lata konkurencyjne do drogich i mało efektywnych komputerów cyfrowych. Komputer analogowy posiada jednak wiele wad, szczególnie w porównaniu z szybko rosnącymi możliwościami komputerów cyfrowych. Jedną z najważniejszych jest ograniczony zakres możliwości przetwarzania informacji sprowadza się on jedynie do rozwiązywania równań lub układów równań różniczkowych. Brak jest możliwości modelowania procesów dyskretnych, wykonywania obliczeń cyklicznych i bardziej złożonych obliczeń logicznych. Dokładność i zakres obliczeń jest ograniczona niewielką w porównaniu z komputerem cyfrowym dokładnością Strona

101 SYSTEMY KOMPUTEROWE i zakresem pomiarów elektrycznych urządzeń pomiarowych. Brak jest możliwości zapisu i późniejszego porównania wyników obliczeń. Poważną wadą jest skomplikowany proces programowania, a więc budowy odpowiedniego obwodu elektrycznego. Utrudniony jest proces edycji takiego programu i nawet przechowywania różnych programów. Pewną niezbyt udaną próbą zmniejszenia niektórych wad komputerów analogowych było utworzenie komputerów hybrydowych, będących połączeniem komputera cyfrowego i analogowego. Komputery takie zawierają część analogową i część cyfrową oraz urządzenia, pozwalające na wymianę informacji kodowanych binarnie i w sposób ciągły. Pomimo opisanych powyżej wad, komputery i systemy analogowe i hybrydowe nawet do końca lat 80-tych ubiegłego wieku znajdowały zastosowanie do symulacji różnego rodzaju procesów ciągłych. Wzrost możliwości komputerów cyfrowych spowodował zanik stosowania tych maszyn i dlatego w dalszej części podręcznika pisząc komputer lub system komputerowy będziemy rozumieć przez ten termin komputer cyfrowy lub cyfrowy system komputerowy Komputer Johna von Neumanna Elementy składowe komputera Johna von Neumanna W tym podrozdziale przyjrzymy się bliżej budowie i zasadzie działania komputerów cyfrowych. Jak wiemy komputery te przetwarzają informacje kodowane w sposób binarny i mimo że na rynku dostępnych jest wiele różniących się bardzo rozwiązań, rodzajów i typów komputerów to zasada ich działania jest wspólna i opracowana została przez Johna von Neumanna w 1945r. Dlatego mówimy, że współczesne komputery cyfrowe oparte są na architekturze Johna von Neumanna albo w uproszczeniu, że są komputerami Johna von Neumanna. Cechą charakterystyczną tej architektury jest to, że program komputerowy, składający się ze zrozumiałych dla procesora instrukcji, jest kodowany w pamięci w ten sam sposób jak dane niezbędne do wykonania programu. Strona

102 ROZDZIAŁ 3 Komputer w architekturze Johna von Neumanna składa się z trzech podstawowych elementów (rysunek 3.5): procesora, pamięci, urządzeń zewnętrznych. Procesor (ang. processor) wraz z pamięcią (ang. memory) tworzą jednostkę centralną komputera (ang. central processing unit - CPU) i są najważniejszą częścią komputera. Urządzenia zewnętrzne służą do wprowadzania programu wraz z danymi do pamięci i do szeroko rozumianej komunikacji jednostki centralnej z otoczeniem (w tym z użytkownikami). Strona Rysunek 3.5. Architektura komputera Johna von Neumanna W pamięci umieszczony jest zakodowany binarnie program komputerowy i dane niezbędne do jego wykonania. Procesor składa się z jednostki arytmetyczno logicznej (ang. arithmetic logic unit) i jednostki sterującej (ang. control unit). Procesor przetwarza program komputerowy za pomocą jednostki arytmetyczno logicznej i jednostki sterującej. Jednostka arytmetyczno-logiczna zwana także arytmometrem wykonuje podstawowe operacje arytmetyczno-logiczne i stanowi główną część procesora. W rozdziale drugim opisaliśmy zasady wykonywania podstawowych obliczeń w arytmometrze.

103 SYSTEMY KOMPUTEROWE Jednostka sterująca odpowiada za sterowanie całym procesem wykonywania programu komputerowego, a więc za właściwą kolejność przetwarzania danych, za pobieranie poszczególnych instrukcji programu i danych z pamięci do arytmometru i za przekazywanie wyników działań arytmometru do pamięci. Odpowiedzialna jest także za sekwencyjne przetwarzanie instrukcji programu. Rejestry są podręczną pamięcią procesora, gdzie przechowuje się adresy wybranych komórek pamięci a także dane i wyniki obliczeń. W wyróżnionym rejestrze nazywanym licznikiem rozkazów jest umieszczony adres pamięci, określający lokalizację (czyli adres w pamięci) aktualnie wykonywanej instrukcji programu. Długość słowa zapisywanego w rejestrach jest zwykle wielokrotnością bajta (1, 2, 4, 8, 16, 32, 64,...) - nazywana jest słowem maszynowym i jest jednym z ważniejszych parametrów procesora. Pamięć zwana jest często pamięcią operacyjną lub pamięcią wewnętrzną w odróżnieniu od pamięci zewnętrznej. Pamięć operacyjna jest to pamięć adresowalna i dostępna bezpośrednio przez procesor. Adresowalność pamięci oznacza, że jest ona podzielona logicznie na komórki pamięci, składające się ze ściśle określonej liczby bitów będącej zwykle wielokrotnością bajta (1, 2, 4, 8, 16, 32, 64,...). W każdej komórce pewna, stała dla całej pamięci, liczba bitów (n) jest przeznaczona na adres komórki jednoznacznie wyznaczający daną komórkę w całej pamięci. Pozostałe bity (m) służą do zapisu zawartości komórki. Zawartością może być binarny kod instrukcji programu komputerowego bądź zapis danych niezbędnych do wykonania programu (rysunek 3.6). Rysunek 3.6. Organizacja pamięci operacyjnej komputera Johna von Neumanna Strona

104 ROZDZIAŁ 3 Jeśli n jest liczbą bitów przeznaczoną na adres komórki to pamięć operacyjną można podzielić na komórek ponumerowanych od zera do L max. L max = 2 n 1 (3.8) Długość komórki jest równa n+m bitów. Jest jednym z ważniejszych parametrów pamięci równym zwykle długości słowa zapisywanego w rejestrach procesora. UWAGA Adres komórki składający się z n bitów nazywany jest często adresem fizycznym. Programiści korzystają w procesie programowania z adresów symbolicznych. Adres symboliczny jest symbolem (np. x) - co ułatwia proces programowania. W trakcie ładowania programu do pamięci operacyjnej adres symboliczny musi być zastąpiony adresem fizycznym. W pamięci operacyjnej są umieszczane programy komputerowe zawierające instrukcje, czyli kody operacji zrozumiałych przez procesor oraz inne dane niezbędne do wykonania programu. Pamięć operacyjna może być podzielona na: pamięć ulotną zwaną pamięcią zapisywalną lub pamięcią RAM (ang. Random Access Memory); jest to pamięć o bezpośrednim dostępie, ale zapis w tej pamięci znika wraz z wyłączeniem zasilania, pamięć stałą zwaną pamięcią tylko do odczytu lub pamięcią ROM (ang. Read Only Memory); zapis w tej pamięci nie znika wraz z wyłączeniem zasilania. Pamięć RAM to układy scalone, które przechowują program i dane oraz bieżące wyniki obliczeń procesora i wielkości stałe. Procesor na bieżąco wymienia te dane z pamięcią RAM. Jest to pamięć ulotna. Pamięć tylko do odczytu ROM jest również dostępna bezpośrednio przez procesor. Zawiera ona miedzy innymi programy i dane niezbędne do uruchomienia komputera, zwane BIOS (ang. Basic Input-Output System). Są to: Program rozruchowy (ang. set-up), przygotowujący komputer do pracy. Program ten testuje sprawność poszczególnych Strona

105 SYSTEMY KOMPUTEROWE elementów systemu komputerowego i wpisuje niezbędne wartości początkowe do rejestrów procesora. Program ładowania systemu operacyjnego (ang. bootstrap loader), który ładuje z pamięci zewnętrznej do pamięci operacyjnej niezbędne elementy systemu operacyjnego. Programy sterujące poszczególnymi urządzeniami systemu komputerowego. Wielkość pamięci operacyjnej określana jest w bajtach lub w słowach maszynowych będących wielokrotnością bajtu. Urządzenia zewnętrzne służą do komunikacji komputera z otoczeniem. Bezpośrednią komunikację człowieka z komputerem zapewnia monitor z klawiaturą. Z wielu innych urządzeń zewnętrznych wyróżnijmy pamięć zewnętrzną, która zapewnia bezpieczne przechowywanie informacji. W podsumowaniu tej części rozdziału podkreślmy, że każdy system komputerowy zbudowany w oparciu o architekturę von Neumanna powinien: mieć skończoną i funkcjonalnie pełną listę poleceń wykonywanych przez procesor, które mogą znaleźć się jako instrukcje w programie komputerowym umieszczonym w pamięci operacyjnej, mieć możliwość wprowadzenia programu komputerowego, w taki sam sposób jak innych danych, do jednostki centralnej systemu komputerowego, poprzez urządzenia zewnętrzne i jego przechowywanie w pamięci operacyjnej, mieć możliwość sekwencyjnego odczytu instrukcji programu z pamięci operacyjnej i wykonywania tych instrukcji w procesorze. Podane warunki pozwalają przełączać system komputerowy z wykonania jednego zadania (programu) na inne bez fizycznej ingerencji w strukturę systemu, a tym samym gwarantują jego uniwersalność. Cykl pracy komputera Johna von Neumanna Komputer Johna von Neumanna pracuje w sposób cykliczny. Przebieg takiego cyklu zwanego cyklem rozkazowym (lub cyklem wykonawczym) związanym z wykonaniem pojedynczej instrukcji programu jest następujący: Strona

106 ROZDZIAŁ 3 Jednostka sterująca procesora pobiera z pamięci instrukcję programu, określając jej lokalizację za pomocą licznika rozkazów. Zawartość tej instrukcji zostaje przekazana do układu zwanego dekoderem. Pobrana instrukcja jest dekodowana w dekoderze do poziomu zrozumiałego dla arytmometru. Arytmometr wykonuje instrukcję, a z pamięci pobierane są ewentualne dane niezbędne do wykonania tej instrukcji i są one zapisywane w rejestrach procesora. Wyniki wykonanej instrukcji są umieszczone w rejestrach bądź w pamięci. Po wykonaniu instrukcji następuje zmiana wartości licznika rozkazów tak, aby wskazywał kolejną instrukcję dla procesora. Rysunek 3.7 ilustruje przebieg cyklu rozkazowego komputera. Jednostka sterująca procesora pobiera z pamięci instrukcję programu zapisaną w pamięci operacyjnej pod adresem L. Po zdekodowaniu i wykonaniu tej instrukcji jednostka sterująca zmienia wartość licznika rozkazów na L+1, a więc na kolejną instrukcję. Strona Rysunek 3.7. Cykl pracy komputera Johna von Neumanna Komputer Johna von Neumanna jest komputerem sekwencyjnym co oznacza, że instrukcje programu są wykonywane jedna po drugiej. Oczywiście w programie mogą się znaleźć instrukcje zmieniające kolejność wykonywania (np. instrukcja skoku, czy instrukcja warunkowa).

107 SYSTEMY KOMPUTEROWE Opisany cykl rozkazowy komputera Johna von Neumanna określa się też jako cykl pobierz, dekoduj, wykonaj. Warto zauważyć, że wykonywanie programu komputerowego może zostać w każdej chwili przerwane np. w celu odwołania się do urządzeń zewnętrznych (monitor, pamięć zewnętrzna, drukarka itp.). W związku z tym procesor sprawdza czy nie było żądania przerwania wykonywania programu, po każdorazowej zmianie wartości licznika rozkazów, a więc przed przejściem do wykonania następnej instrukcji. Jeśli było takie żądanie, co sygnalizuje stan odpowiedniego rejestru, to procesor zawiesza wykonanie programu, zapamiętuje stan licznika rozkazów i przechodzi do obsługi przerwania a po jej wykonaniu wznawia wykonanie programu. Jeśli nie było żądania przerwania to procesor rozpoczyna wykonywanie następnego cyklu rozkazowego. Na zakończenie tego punktu podkreślmy raz jeszcze, że praktycznie wszystkie współczesne komputery pomimo olbrzymiej różnorodności są komputerami Johna von Neumanna Oprogramowanie komputera systemy operacyjne Oprogramowanie komputera Jak już stwierdziliśmy w poprzednim rozdziale, omawiając budowę i działanie komputera Johna von Neumanna - integralną częścią każdego komputera jest program komputerowy. Podstawową zaletą komputerów jest możliwość wykonywania wielu różnych programów. Zauważmy, że program komputerowy, to w specjalny sposób zapisana w pamięci operacyjnej informacja, a więc wielkość abstrakcyjna, natomiast procesor, pamięć operacyjna, urządzenia zewnętrzne - to wytwory materialne. Aby podkreślić znaczenie programu komputerowego, zwykle mówimy oprogramowania (może być wiele programów) wprowadzamy pojęcie systemu komputerowego. Strona

108 ROZDZIAŁ 3 System komputerowy to system będący połączeniem sprzętu komputerowego (hardware) z oprogramowaniem (software). Systemy komputerowe coraz częściej działają w ramach sieci komputerowej. Z systemu komputerowego może korzystać jeden lub wielu użytkowników Użytkownikami mogą być ludzie ale także maszyny lub inne komputery. Zauważmy, że zautomatyzowany system komputerowy może działać bez udziału człowieka. W skład oprogramowania wchodzi: system operacyjny, programy narzędziowe, programy użytkowe. System operacyjny (ang. Operating System) to zbiór programów komputerowych zarządzających pracą całego systemu komputerowego. Oprogramowanie narzędziowe wspomaga zarządzanie zasobami sprzętowymi oraz usprawnia pracę systemu operacyjnego. Oprogramowanie użytkowe są to wszystkie pozostałe programy, przeznaczone dla konkretnych użytkowników, a służące do przetwarzania, przesyłania i przechowywania różnych użytecznych informacji takich jak na przykład rozwiązywanie problemów obliczeniowych, korzystanie z baz danych. Rozwój systemów operacyjnych Przejdziemy teraz do opisu podstawowych rodzajów systemów operacyjnych i związanych z tym sposobów przetwarzania programów komputerowych. Przeglądu tego dokonamy w ujęciu historycznym, zaczynając od przetwarzania programów przez pierwsze komputery lampowe z końca lat czterdziestych. Strona

109 SYSTEMY KOMPUTEROWE Omówimy następujące rodzaje przetwarzania programów przez system komputerowy: przetwarzanie jednoprogramowe, przetwarzanie wielozadaniowe, przetwarzanie wsadowe, przetwarzanie wielodostępne, przetwarzanie wielodostępne z systemem operacyjnym czasu rzeczywistego, przetwarzanie wieloprocesorowe, przetwarzanie sieciowe, przetwarzanie programów w komputerach wbudowanych. Są to najczęściej stosowane rodzaje przetwarzania programów przez system komputerowy. Przetwarzanie jednoprogramowe Pierwsze komputery przetwarzały jeden program od momentu jego załadowania do pamięci operacyjnej aż do zakończenia pracy programu. Takie przetwarzanie zwane tradycyjnym lub jednoprogramowym jest najbliższe koncepcji komputera Johna von Neumanna. Było ono bardzo nieefektywne a samo wprowadzanie programu i danych z ówczesnych nośników informacji jakimi były papierowe karty lub taśmy z odpowiednio perforowanymi otworami czy też taśmy magnetyczne trwało dużo dłużej niż same obliczenia. Również drukowanie wyników na ówczesnych drukarkach było długotrwałym procesem. Ponieważ jednocześnie same komputery były urządzeniami bardzo kosztownymi, wobec tego poszukiwano możliwości zwiększenia ich efektywności. System przetwarzania jednoprogramowego został ponownie zastosowany w pierwszych komputerach osobistych. Stosunkowo niskie koszty zakupu pierwszych komputerów osobistych spowodowały, że straty wynikające z nawet długich przestojów jednostki centralnej były zaniedbywalnie małe w porównaniu z zyskami, wynikającymi z łatwej dostępności i wyłączności użytkowania całego komputera. Strona

110 ROZDZIAŁ 3 Strona Przetwarzanie wielozadaniowe Ważnym usprawnieniem było umieszczenie na stałe w pamięci komputera oprogramowania realizującego obsługę wszystkich urządzeń wchodzących w skład komputera oraz komunikację tych urządzeń z użytkownikiem. Oprogramowanie takie jest poprzednikiem systemu operacyjnego. Kolejne usprawnienie polega tym, aby procesor mógł przetwarzać inny program w trakcie korzystania z urządzeń zewnętrznych np. z drukarki. Taka cecha, w której komputer wykonuje równolegle różne zadania nazywa się wielozadaniowością i jest jedną z podstawowych cech współczesnych systemów operacyjnych. UWAGA W przetwarzaniu wielozadaniowym w danej chwili czasu wykonywany jest tylko jeden program. Komputer z takim systemem przetwarzania jest więc komputerem Johna von Neumanna. Przetwarzanie wsadowe Przy przetwarzaniu wsadowym programy komputerowe są przygotowywane wcześniej w tzw. wsad (batch), a następnie są po kolei wykonywane. Przetwarzanie wsadowe to do dzisiaj stosowany tryb przetwarzania programów. Wadą przetwarzania wsadowego jest brak możliwości dialogu użytkownika z komputerem. Zaletą jest zwiększenie efektywności całego systemu komputerowego. UWAGA We wsadowym przetwarzaniu programów w danej chwili czasu wykonywany jest tylko jeden program. Komputer z takim systemem przetwarzania jest więc komputerem Johna von Neumanna. Programy sterujące przetwarzaniem wsadowym nazywano programami monitora, gdyż operator systemu siedząc przy swoim monitorze, uruchamiał kolejne wsady programów komputerowych i ręcznie sterował pracą systemu. Pierwsze monitory były dalekopisami czyli elektrycznymi maszynami do pisania i były bardzo niewygodne w praktycznym użyciu. Przetwarzanie wielodostępne Miano systemu operacyjnego przypisuje się dopiero systemowi OS/360 (ang. Operational System) opracowanemu dla komputerów IBM 360,

111 SYSTEMY KOMPUTEROWE produkowanych od 1965r. W komputerach tych zapewniono możliwość dialogu użytkowników z komputerem za pomocą terminali (końcówek). OS/360 jest systemem wielodostępnym, gdyż każdy z użytkowników zgromadzonych przy swoich terminalach otrzymuje cyklicznie dostęp do procesora w celu wykonania swojego programu. Na rys. 3.7 przedstawiono schemat ideowy systemu wielodostępnego. Rysunek 3.7. Schemat ideowy systemu wielodostępnego Pierwszymi terminalami były monitory alfanumeryczne z klawiaturą, co umożliwiało dialog alfanumeryczny. Współcześnie terminale są na ogół specjalizowanymi komputerami. Przykładem takiego terminalu może być bankomat, wchodzący w skład wielodostępnego systemu komputerowego obsługującego banki. Współczesnymi następcami systemu operacyjnego OS/360 dla komputerów IBM 360 jest popularny system operacyjny UNIX i system LINUX. Wielodostęp realizowany jest poprzez tzw. podział czasu (time sharing) procesora. Czas pracy procesora dzieli się na odcinki czasowe, w czasie których wykonywany jest program konkretnego użytkownika. Po wykonaniu jednego cyklu procesor realizuje kolejny cykl a system operacyjny nadzoruje wykonywanie przełączeń. Mimo, że czas wykonywania pro- Strona

112 ROZDZIAŁ 3 gramu w jednym cyklu może być bardzo krótki, to użytkownik ma wrażenie wyłącznego korzystania z komputera. Nie odczuwa on w praktyce przerw w połączeniu z jednostką centralną i stąd nieco myląca nazwa system wielodostępny. UWAGA W wielodostępnym systemie operacyjnym w danej chwili czasu wykonywany jest tylko jeden program. Komputer z takim systemem operacyjnym jest więc komputerem Johna von Neumanna. Systemy wielodostępne stwarzają możliwość korzystania ze wspólnych zasobów, w tym z urządzeń zewnętrznych, ale także z bibliotek i baz danych. System operacyjny w systemie wielodostępnym powinien jednak dodatkowo zapewnić: obsługę transmisji danych pomiędzy terminalami a jednostką centralną (procesorem), obsługę transmisji danych pomiędzy poszczególnymi terminalami, weryfikację użytkowników, realizację priorytetów poszczególnych zadań. Przetwarzanie wielodostępne z systemem operacyjnym czasu rzeczywistego Specjalną odmianą systemu wielodostępnego jest system operacyjny czasu rzeczywistego (ang. real-time operating system). W takim systemie procesor jest połączony z innymi urządzeniami, tworząc np. komputerowy system sterowania procesem technologicznym, sterowania procesem kontrolno-pomiarowym, czy też sterowania pociskiem rakietowym. Rolę urządzeń wejścia spełniają czujniki mierzące stan układu np. temperaturę, ciśnienie, czy prędkość. Rolę urządzeń wyjściowych spełniają układy przetwarzające polecenia wydawane z komputera na czynności regulujące, np. włączanie i wyłączanie zaworów, silników, hamulców. Zadaniem systemu operacyjnego czasu rzeczywistego oraz oprogramowania pracującego pod jego kontrolą jest więc opracowywanie odpowiedzi (np. sygnałów sterujących kontrolowanym obiektem) na skutek wystąpienia pewnych zdarzeń (np. zmiany sygnałów z czujników). Strona

113 SYSTEMY KOMPUTEROWE UWAGA W wielodostępnym systemie operacyjnym czasu rzeczywistego w danej chwili czasu wykonywany jest tylko jeden program. Komputer z takim systemem operacyjnym jest więc komputerem Johna von Neumanna. Przetwarzanie wieloprocesorowe Przetwarzanie wieloprocesorowe jest kolejną naturalną formą przetwarzania programów komputerowych wprowadzoną, wraz z obniżeniem kosztów procesorów, w celu zwiększenia niezawodności działania (wprowadzenie rezerwowych procesorów), ale głównie w celu zwiększenia szybkości obliczeń, poprzez równoległe przetwarzanie informacji w tym poprzez obliczenia równoległe. Obliczenia równoległe to zaawansowana forma wykonywania programu (w tym obliczeń), w której wiele instrukcji jest wykonywanych jednocześnie. Taka forma przetwarzania danych była wykorzystywana od wielu lat, głównie w superkomputerach, ale zyskała na znaczeniu w ostatnich latach, z uwagi na upowszechnienie procesorów wielordzeniowych. UWAGA W przetwarzaniu wieloprocesorowym w danej chwili czasu każdy procesor wykonuje tylko jeden program. Każdy procesor wykonuje własną część tego jednego programu. Komputer z takim systemem przetwarzania jest więc także komputerem Johna von Neumanna. Do prowadzenia obliczeń równoległych, oprócz sprzętu, konieczne są również odpowiednie algorytmy nazywane równoległymi. Są one trudniejsze w implementacji komputerowej niż klasyczne sekwencyjne algorytmy, ponieważ współbieżność wprowadza dodatkowe możliwości popełnienia błędu. Powstają również dodatkowe problemy w uzyskaniu wysokiej wydajności z powodu dodatkowych nakładów na komunikację i konieczność synchronizacji obliczeń. Przetwarzanie sieciowe Przetwarzanie sieciowe (wielokomputerowe) jest kolejną naturalną formą przetwarzania programów komputerowych wprowadzoną wraz z pojawieniem się sieci komputerowych i obniżeniem kosztów poszczególnych elementów sieci, w celu zwiększenia niezawodności działania ale głównie w celu zwiększenia dostępności i efektywności przetwarzania, przesyłania i przechowywania informacji. Strona

114 ROZDZIAŁ 3 Strona UWAGA W przetwarzaniu sieciowym w danej chwili czasu każdy procesor, będący elementem składowym sieci, czy jako procesor serwera czy jako procesor komputera klienckiego (podległego) wykonuje tylko jeden program. Oprogramowanie sieciowe umożliwia natomiast efektywną wymianę informacji pomiędzy poszczególnymi elementami składowymi sieci w tym efektywną pracę, każdego procesora. Komputer z takim systemem przetwarzania jest więc także komputerem Johna von Neumanna. Do przetwarzania sieciowego oprócz sprzętu, konieczne są również odpowiednio zorganizowane algorytmy. Są one trudniejsze w implementacji komputerowej niż klasyczne sekwencyjne algorytmy do przetwarzania informacji w jednym komputerze. Powstają również dodatkowe problemy w uzyskaniu wysokiej wydajności z powodu dodatkowych nakładów na komunikację i konieczność synchronizacji przetwarzania danych. Krótkiemu wprowadzeniu do sieci komputerowych poświęcimy następny podpunkt. Studenci studiów inżynierskich na kierunku nauczania edukacja techniczno-informatyczna na Wydziale Samochodów i Maszyn Roboczych Politechniki Warszawskiej, dla których przeznaczony jest ten podręcznik, mają w programie studiów na VI semestrze specjalny przedmiot poświęcony sieciom komputerowym pt.: Sieci komputerowe i aplikacje sieciowe. Przetwarzanie programów w komputerach wbudowanych - wbudowane systemy operacyjne Wszystkie do tej pory opisywane rodzaje przetwarzania programów komputerowych i związane z tym typy systemów operacyjnych zakładały daleko posuniętą uniwersalność i otwartość. Takie systemy operacyjne nazywamy otwartymi w opozycji do systemów wbudowanych, stosowanych w komputerach wbudowanych. Przypomnijmy, że komputery wbudowane (embedded computer) to specjalizowane komputery, służące do sterowania różnego rodzaju urządzeniami (np. automatyki, telekomunikacji, elektroniki). Komputery wbudowane sterują pracą tak różniących się urządzeń jak: roboty, maszyny, pojazdy, telefony komórkowe czy nawet zabawki. Systemy otwarte można uruchomić na dowolnym komputerze i w określonym stopniu można je modyfikować.

115 SYSTEMY KOMPUTEROWE Systemy wbudowane jak sama nazwa wskazuje są zaszyte (wbudowane) wewnątrz urządzeń. Aby uzyskać wysoką niezawodność pracy minimalizuje się w takich przypadkach możliwość dokonywania zmian w konfiguracji takiego systemu operacyjnego. Elementy składowe systemu operacyjnego System operacyjny składa się z : jądra systemu wykonującego i kontrolującego realizację programów komputerowych, powłoki czyli specjalnego programu komunikującego użytkownika z jądrem systemu operacyjnego powłoka pełni rolę pośrednika pomiędzy systemem operacyjnym lub innymi programami a użytkownikiem, przyjmując jego polecenia i wyprowadzając wyniki działania programów. systemu plików, który określa sposób zapisu danych na nośnikach informacji (pamięci zewnętrznej). Podstawowe funkcje systemu operacyjnego Najważniejsze funkcje systemu operacyjnego to: Zarządzanie procesem proces to program komputerowy w stanie uruchomionym. Każdy proces wymaga przydziału pewnych zasobów, włączając w to czas procesora, pamięć, pliki oraz urządzenia wejścia/wyjścia, aby w pełni wykonać swoje zadanie. System operacyjny jest odpowiedzialny w fazie zarządzania procesami za tworzenie i usuwanie procesu, wstrzymywanie i przywracanie procesu, zapewnienie mechanizmów pozwalających na synchronizację procesów oraz komunikację między procesami. Zarządzanie pamięcią operacyjną system operacyjny jest odpowiedzialny za przydzielanie i zwalnianie pamięci dla poszczególnych procesów. Zarządzanie plikami plik (ang. file) jest zbiorem informacji zdefiniowanym przez twórcę pliku. Plik posiada nazwę. Pliki mogą być zapisane w pamięci zewnętrznej w katalogach (folderach). System operacyjny umożliwia między innymi: tworzenie i kasowanie plików, tworzenie i kasowanie katalogów, Strona

116 ROZDZIAŁ 3 Strona zarządzanie pamięcią zewnętrzną, zarządzanie urządzeniami wejścia/wyjścia (np. monitory, drukarki). Sieci komputerowe Sieć komputerowa to grupa komputerów lub innych urządzeń połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów. Sieć komputerowa umożliwia w szczególności wspólne korzystanie z urządzeń zewnętrznych (pamięci, drukarek, ploterów itp.), korzystanie ze wspólnych programów i baz danych, przesyłanie informacji między poszczególnymi komputerami. Wyróżniamy sieci lokalne (zazwyczaj ograniczone do jednego lub kilku pobliskich budynków) i sieci rozległe (np. Internet). Sieci lokalne mogą być budowane w oparciu o różne topologie, takie jak gwiazda (najczęściej stosowana), magistrala, pierścień, drzewo czy siatka. Sieci lokalne mogą być podłączone do Internetu. Podstawowe elementy sieci komputerowej to: serwer sieciowy jest to komputer o dużej mocy obliczeniowej i dużej pamięci zewnętrznej niezbędnej do przechowywania oprogramowania i danych użytkowników. Na komputerze tym można uruchomić programy realizujące usługi sieciowe, również nazywane serwerami (np. serwer baz danych), pozostałe komputery (stacje robocze), na których zainstalowano oprogramowanie sieciowe nazywane oprogramowaniem klienckim, media do transmisji danych (np. kable miedziane, światłowody, fale radiowe), osprzęt sieciowy (w tym karty sieciowe, modemy, routery, koncentratory, przełączniki, punkty dostępowe), zasoby sieciowe wspólne dla wszystkich użytkowników sieci (sprzęt, programy, bazy danych). oprogramowanie sieciowe to programy komputerowe, dzięki którym możliwe jest przesyłanie informacji między urządzeniami sieciowymi.

117 SYSTEMY KOMPUTEROWE Rozróżnia się trzy podstawowe rodzaje oprogramowania sieciowego: - klient-serwer w tym przypadku serwer świadczy usługi dołączonym stacjom roboczym a programy wykonywane są w całości lub częściowo na stacjach roboczych. - host-terminal do komputera głównego (hosta) dołączone zostają terminale lub komputery emulujące terminale. W systemie tym wszystkie programy wykonywane są na hoście. - peer-to-peer w tym przypadku każdy komputer w sieci ma takie same prawa i zadania. Każdy pełni funkcję klienta i serwera. Internet Internet (International network) to ogólnoświatowa sieć komputerowa, która jest połączona w jednolitą sieć adresową opartą na protokole IP (Internet Protocol). Początki Internetu wiążą się z powstaniem sieci ARPANET i sięgają końca lat 60-tych XX wieku, kiedy to w USA prowadzono badania nad możliwościami dowodzenia i łączności w warunkach wojny nuklearnej i budową sieci komputerowej, mogącej funkcjonować pomimo zniszczenia jej części. Internet w Polsce dostępny jest od roku. Połączenie komputera z Internetem możliwe jest przez wykorzystanie różnych technologii przewodowych i bezprzewodowych. Do technologii przewodowych można zaliczyć transmisję za pośrednictwem linii telefonicznych (analogowych z modemem i cyfrowych), przez sieci energetyczne, a także telewizję kablową. Do technologii bezprzewodowych można zaliczyć transmisję za pośrednictwem GPRS, łącz satelitarnych czy też techniką Wi-Fi. Aby korzystać z Internetu komputer musi posiadać oprogramowanie klienckie (np. przeglądarka internetowa). Z wielu dostępnych poprzez Internet usług warto wymienić: dostęp do stron internetowych WWW, dostęp do poczty elektronicznej, telefonię internetową, telewizję i radio internetowe, sklepy internetowe, bankowość elektroniczną czy giełdę internetową. Strona

118 ROZDZIAŁ 3 Strona Studenci studiów inżynierskich na kierunku studiów edukacja techniczno-informatyczna na Wydziale Samochodów i Maszyn Roboczych Politechniki Warszawskiej, dla których przeznaczony jest ten podręcznik, mają w programie studiów na VI semestrze przedmiot poświęcony sieciom komputerowym p.t.: Sieci komputerowe i aplikacje sieciowe. Interfejs użytkownika Lawinowy rozwój zastosowań systemów komputerowych a zwłaszcza Internetu spowodował i ciągle powoduje gwałtowny wzrost liczby użytkowników. Rośnie też szybko ilość ale przede wszystkim jakość eksploatowanych programów komputerowych. Jednym z elementów wpływających na efektywność korzystania z oprogramowania jest możliwie przyjazna organizacja interfejsu użytkownika. W tym punkcie przyjrzymy się bliżej organizacji interfejsu. Na wstępie wyjaśnimy samo pojęcie interfejsu. Interfejs użytkownika (ang. user interface sprzęg użytkownika) to oprogramowanie pozwalające na interakcję między programem komputerowym a jego użytkownikiem. Interfejsy możemy podzielić na: bezdialogowe, dialogowe. Interfejs bezdialogowy jest historycznie pierwszą formą interakcji między programem komputerowym a jego użytkownikiem. Sprowadza się do zastosowania prostych instrukcji tzw. wejścia/wyjścia w językach programowania. Instrukcje te umożliwiają czytanie danych niezbędnych do wykonania programu bezpośrednio z pliku z danymi lub zapis wyników do pliku lub na urządzeniu zewnętrznym. Stosowanie interfejsu bezdialogowego ma wiele wad a wynikało niemal wyłącznie z możliwości pierwszych systemów komputerowych. Na przykład przy przetwarzaniu wsadowym dialog nie jest możliwy. Współcześnie interfejs bezdialogowy jest stosowany jedynie w szczególnych przypadkach na przykład w komputerach wbudowanych (embedded computer), gdy użytkownikiem programu nie jest człowiek. Podstawową postacią interfejsu jest dialog.

119 SYSTEMY KOMPUTEROWE Interfejs dialogowy możemy podzielić na: alfanumeryczny (tekstowy), graficzny, multimedialny. Interfejs alfanumeryczny (tekstowy) jest historycznie pierwszą formą dialogu między programem komputerowym a jego użytkownikiem. Warunkiem jest dostęp użytkownika do monitora alfanumerycznego z klawiaturą. Sprowadza się do bardziej zaawansowanego zastosowania instrukcji wejścia/wyjścia w językach programowania. Instrukcje te umożliwiają czytanie danych niezbędnych do wykonania programu bezpośrednio z klawiatury lub z pliku, a zapis wyników na ekranie monitora (lub innego wyświetlacza) lub do pliku. Stosowanie interfejsu alfanumerycznego ma wiele zalet w stosunku do interfejsu bezdialogowego. Ma jednak także wady bardziej efektywny jest jak wiadomo dialog graficzny. Stosowanie interfejsu alfanumerycznego wynikało niemal wyłącznie z możliwości pierwszych systemów komputerowych. Prawdziwą rewolucję przyniosły w tym zakresie karty graficzne i myszki, które umożliwiły stosowanie interfejsu graficznego. Interfejs graficzny GUI (ang. Graphic User Interface) jest współcześnie najbardziej popularną formą dialogu między programem komputerowym a jego użytkownikiem. Warunkiem jest dostęp użytkownika do monitora graficznego lub innego wyświetlacza oraz dostęp do urządzenia wskazującego (np.: mysz, touchpad, tablet, dżojstik) i klawiatury. Powszechnie stosowana formą interfejsu graficznego (GUI) jest technologia określana skrótem WIMP od (ang. Window, Icon, Mouse, Pull down menu). Window oznacza, że ekran graficzny może być podzielony na okna, najczęściej prostokątne, w których można realizować różne funkcje związane z komunikacją użytkownika z programem może to być na przykład okno do wprowadzania danych. Icon oznacza ikonę (piktogram) piktogram jest przedstawieniem pewnego wyrazu lub całego pojęcia za pomocą małego obrazka w oderwaniu od zapisu tekstowego. Pełni ważną funkcję w tworzeniu interfejsu, gdyż dzięki zastąpieniu tekstu elementem graficznym zwiększa się Strona

120 ROZDZIAŁ 3 czytelność przekazu oraz omija się barierę językową. Użycie piktogramów ułatwia też korzystanie z komputera osobom niepełnosprawnym. Mouse oznacza mysz lub dowolne urządzenie wskazujące (np.: mysz, touchpad, tablet, dżojstik). Urządzenie to umożliwia poruszanie kursorem po ekranie graficznym co jest warunkiem dialogu graficznego. Pull down menu oznacza menu rozwijalne. Jest to popularna forma prezentacji oferty interfejsu. Użytkownik programu ma zwykle dostęp do wielu poleceń hierarchicznie pogrupowanych w pewne grupy tak, jak menu w restauracji. Wybór jednej opcji w menu może spowodować wyświetlenie rozwiniecie się podmenu. Organizacja interfejsu graficznego jest na ogół bardzo zaawansowanym zadaniem programowania. Stosowanie interfejsu graficznego ma wiele zalet w stosunku do interfejsu alfanumerycznego. Jest jednak powoli wypierany przez dialog multimedialny. Dialog multimedialny polega na komunikacji użytkownika nie tylko za pomocą grafiki, ale także za pomocą innych mediów takich jak dźwięk, film a nawet zapach. W przyszłości będzie dominującą formą interfejsu. Szczególnie obiecujące są perspektywy bezpośredniej rozmowy komputera z człowiekiem w języku naturalnym. Wynika to z dynamicznego rozwoju metod semantycznego przetwarzania informacji czyli tzw. sztucznej inteligencji. Studenci studiów inżynierskich na kierunku studiów edukacja techniczno-informatyczna na Wydziale Samochodów i Maszyn Roboczych Politechniki Warszawskiej, dla których przeznaczony jest ten podręcznik, mają w programie studiów na VI semestrze przedmiot poświęcony głównie organizacji dialogu multimedialnego p.t.: Techniki multimedialne w dydaktyce. Ochrona danych i oprogramowania Jak już wspominaliśmy lawinowy rozwój zastosowań systemów komputerowych a zwłaszcza Internetu powoduje gwałtowny wzrost liczby użytkowników. Rośnie też szybko liczba eksploatowanych w sieciach lokalnych i w Internecie programów komputerowych i liczba ich użytkowników. Strona

121 SYSTEMY KOMPUTEROWE Dążenie do udostępniania danych i oprogramowania jak największej liczbie użytkowników niesie konieczność ochrony danych i oprogramowania. W tym punkcie przyjrzymy się bliżej podstawowym problemom ochrony danych i oprogramowania. Współczesne systemy komputerowe posiadają dosyć rozbudowane i skuteczne mechanizmy ochrony danych i oprogramowania. Są one zarówno na poziomie systemu operacyjnego jak i oprogramowania użytkowego. Najczęściej stosowanym mechanizmem jest identyfikacja użytkowników. Polega ona na sprawdzeniu ich wiarygodności i zakresu uprawnień poprzez tzw. logowanie. Logowanie (ang. logging in) to proces identyfikacji użytkownika, polegający na podaniu przez niego identyfikatora czyli tzw. numeru logowego (ang. username) i hasła uwierzytelniającego znanego tylko użytkownikowi (ang. password) w celu uzyskania dostępu oraz ściśle określonych uprawnień do korzystania z określonego systemu, sieci czy programu. Procesem odwrotnym do logowania jest wylogowanie (ang. logout), czyli rezygnacja z uprzednio uzyskanego dostępu. W bardziej odpowiedzialnych systemach zabezpieczeń sprawdzenie poprawności identyfikatora to coraz bardziej złożona procedura. Wynika to z zagrożeń jakie mogą stworzyć tzw. hakerzy. Haker to osoba o wysokich umiejętnościach informatycznych, szukająca i ewentualnie wykorzystująca słabości w zabezpieczeniach systemów informatycznych. UWAGA Obserwujemy nieustanny wyścig pomiędzy rosnącymi możliwościami systemów ochrony danych i oprogramowania przed nieuprawnionym dostępem a stale rosnącymi możliwościami hakerów lub całych instytucji hakerskich. Istotnym zabezpieczeniem w procesie identyfikacji użytkowników staje się coraz bardziej dostępne zabezpieczenie biometryczne. Zabezpieczenie biometryczne to niezwykle skuteczny rodzaj zabezpieczenia opartego na danych biometrycznych: wizerunku twarzy, zapisu linii papilarnych palców lub zapisu obrazu tęczówki. Zabezpieczenie to skutecznie eliminuje wszelkie fałszerstwa w procesie logowania. Zabezpieczenie biometryczne jest już stosowane w odpowiedzialnych systemach informatycznych, ale także dokumentach niektórych krajów, np. w paszportach. Strona

122 ROZDZIAŁ 3 Dla systemów o najwyższym poziomie zabezpieczeń stosuje się powszechnie algorytmy szyfrowania wszystkich wiadomości. Wiąże się to z szybkim rozwojem kryptografii. Kryptografia dotyczy przekazywaniu informacji w sposób zabezpieczony przed niepowołanym dostępem. Jest uznawana za gałąź zarówno matematyki jak i informatyki. Algorytmy szyfrowania wykorzystuje się coraz powszechniej w celu zapewnienia bezpieczeństwa kart bankomatowych, w handlu elektronicznym, ale głównie w systemach związanych z obronnością Ochrona prawna oprogramowania Jak już wspominaliśmy lawinowy rozwój zastosowań systemów komputerowych, a zwłaszcza Internetu powoduje gwałtowny wzrost liczby użytkowników, a dążenie do udostępniania danych i oprogramowania jak największej liczbie użytkowników niesie ryzyko nieuprawnionego dostępu czy wręcz kopiowania danych i programów. Obserwujemy wzrost liczby przypadków nieuprawnionego dostępu i kopiowania danych i programów często określanych mianem piractwa medialnego, co wymusza konieczność technicznej ale również prawnej ochrony. W poprzednim punkcie opisaliśmy ogólne zasady technicznej ochrony danych i oprogramowania. W tym punkcie przyjrzymy się bliżej podstawowym problemom związanym z prawną ochroną danych i oprogramowania. Prawną ochronę danych i oprogramowania reguluje głównie prawo autorskie (ang. copyright). Prawo autorskie zabezpiecza szeroko rozumiane interesy autorów, w tym twórców oprogramowania oraz ewentualnych wydawców w przypadku oprogramowania są nimi dystrybutorzy. Prawo autorskie określa też normy prawne upoważniające autora do decydowania o użytkowaniu dzieła i ewentualnym czerpaniu z niego korzyści majątkowych. Autor, w tym autor oprogramowania, może sam zdecydować o rozpowszechnianiu swoich dzieł bez czerpania korzyści majątkowych czyli za darmo. Strona

123 SYSTEMY KOMPUTEROWE Warto podkreślić, że skutkiem naruszenia praw autorskich może być: utrata przez twórców zysków z tytułu rozpowszechniania utworów, strata firm zajmujących się dystrybucją i promocją utworów, strata państwa związana z nie odprowadzonymi podatkami. Przedmiotem prawa autorskiego jest każdy przejaw działalności twórczej o indywidualnym charakterze, ustalony w jakiejkolwiek postaci, niezależnie od wartości, przeznaczenia i sposobu wyrażenia. W szczególności przedmiotem prawa autorskiego są utwory: wyrażone słowem, symbolami matematycznymi, znakami graficznymi są to utwory literackie, publicystyczne, naukowe, kartograficzne oraz programy komputerowe, plastyczne, fotograficzne, architektoniczne, muzyczne i słowno-muzyczne, sceniczne, audiowizualne. Prawem autorskim nie są chronione między innymi idee i pomysły, opublikowane opisy patentowe lub ochronne, pomysły i tematy badawcze oraz teorie i fakty naukowe, znaki firmowe użyte w celach informacyjnych. UWAGA Zgodnie z prawem autorskim można bez zgody autora przytaczać, w utworach stanowiących samoistną całość, urywki rozpowszechnionych utworów lub drobne utwory w całości, lecz trzeba podać autora i dzieło. Jest to tzw. prawo cytatu. Z prawa cytatu korzysta też autor tego podręcznika. 123 Strona 12

124 ROZDZIAŁ 3 Według niektórych ekspertów, majątkowe prawa autorskie i patenty są w wielu przypadkach nieuzasadnione. Dobrym przykładem dyskusji na temat zakresu praw autorskich w Internecie jest ogólnoświatowa dyskusja na temat globalnego porozumienia, ustalającego międzynarodowe standardy w walce z naruszeniami własności intelektualnej. Opracowana w 2010r Umowa handlowa dotycząca zwalczania obrotu towarami podrabianymi powszechnie znana jako ACTA (ang. Anti- Counterfeiting Trade Agreement) reguluje zasady obrotu dobrami podrabianymi, zasady obrotu lekami generycznymi, ale przede wszystkim zasady rozpowszechniania dzieł prawnie chronionych poprzez Internet. ACTA jest dokumentem o globalnym zasięgu. Do porozumienia ACTA może przyłączyć się każde państwo zainteresowane współpracą w ramach powstających struktur. ACTA ma także ograniczyć tzw. piractwo medialne. Istnieje jednak uzasadniona obawa, że może stać się nieuzasadnioną formą cenzury Wprowadzenie do programowania Strona Modele numeryczne Do tej pory pisaliśmy o programach komputerowych już napisanych przez programistów. W tym podrozdziale zajmiemy się samodzielnym pisaniem programów użytkowych. Będzie to tylko krótkie wprowadzenie do pisania programów i do niezbędnych w tym celu języków programowania. Warunkiem napisania programu służącego do założonego przetwarzania informacji, na przykład do wykonywania obliczeń, jest opracowanie odpowiedniego modelu. Jest oczywistym, że metoda postępowania przy opracowaniu programu komputerowego zależy od przyjętego modelu. Pojęcie modelu jest bardzo ważne w pracy inżynierskiej i w czasie studiów będzie jeszcze wielokrotnie rozważane. W pracy [Sztoff 1997] wyjaśniono, że modelem danego rzeczywistego obiektu jest układ, dający się wyobrazić lub materialnie zrealizować,

125 SYSTEMY KOMPUTEROWE który, odzwierciedlając lub odtwarzając obiekt, zdolny jest zastępować go tak, że jego badanie dostarcza nowych, nadających się do dalszego sprawdzenia informacji o obiekcie. Model powinien dostatecznie wiernie odtwarzać badany obiekt rzeczywisty (np. maszynę lub jej element) pod wybranym kątem widzenia, jednocześnie być możliwie prosty i łatwy do badania. Rozróżniamy modele abstrakcyjne (wyrażające się w postaci pewnych pojęć, właściwych dla danej dziedziny) i modele materialne, ale nasze rozważania dotyczą modeli abstrakcyjnych. Należy podkreślić, że zbytnie uproszczenie modelu może doprowadzić do pominięcia istotnych własności obiektów, a zbytnie rozbudowanie do niepotrzebnych kosztów związanych z jego budową i badaniem. Proces modelowania abstrakcyjnego składa się z budowy modelu nominalnego i następnie modelu numerycznego (matematycznego). Model nominalny stanowi wyidealizowany opis obiektu za pomocą pewnych pojęć. W mechanice modele nominalne (np. punkt materialny, ciało sztywne, pręt) zwane są modelami fizycznymi, gdyż są wyrażane za pomocą pojęć fizycznych. W działalności inżynierskiej występują także problemy ekonomiczne, organizacyjne, społeczne itp., do modelowania których nie wystarczą pojęcia fizyczne. W dalszej części zajmować się będziemy modelami fizycznymi. Informacje niezbędne do budowy modelu fizycznego można uzyskać w wyniku badań eksperymentalnych, krytycznej analizy podobnych problemów, korzystając z dotychczasowej wiedzy (publikacje) a także doświadczenia inżynierskiego. Proces modelowania polega na wydzieleniu obiektu z jego otoczenia z jednoczesnym ustaleniem jego struktury i analizą oddziaływań zewnętrznych i wewnętrznych. Im prostsza jest struktura, tym łatwiej ją badać. W układach mechanicznych istotną decyzją jest, czy układ należy traktować jako dyskretny (o skończonej liczbie stopni swobody), czy też ciągły (z nieskończoną liczbą stopni swobody). Po utworzeniu modelu fizycznego można przystąpić do budowy modelu matematycznego. Ustala się zbiory zmiennych stanu (np. przemieszczeń) i parametrów (np. wymiarów), a następnie korzystając z praw fizyki (lub innych nauk) buduje się zależności matematyczne (równania lub nierówności). Model numeryczny odpowiada jednoznacznie modelowi fizycznemu. Strona

126 ROZDZIAŁ 3 Algorytm Wszechstronność zastosowań komputerów wynika głównie z ogromnej różnorodności programów, w mniejszym zaś stopniu z samej konstrukcji urządzeń komputerowych. Ten sam komputer może w różnych sytuacjach wykonywać różne programy. Nowe zastosowanie wymaga na ogół napisania jedynie nowego programu. Programy te mogą być oferowane przez wyspecjalizowane firmy komputerowe lub też mogą być przygotowywane przez samych użytkowników. Jak to podkreśliliśmy w punkcie 3.3 poświęconym budowie komputera Johna von Neumann, dla procesora program komputerowy jest ciągiem zrozumiałych przez procesor poleceń. Dla użytkownika program komputerowy służy do rozwiązywania określonych zadań. Opracowując rozwiązanie zadania" należy dobrać odpowiednią metodę i plan stosowania tej metody, a następnie przystąpić do wykonania tego planu (a więc opisu poszczególnych obiektów i czynności). Informatycznym opisem planu rozwiązywania zadania jest algorytm. UWAGA Nazwa algorytmu pochodzi od nazwiska arabskiego matematyka Muhammeda ibn Musy al-chorezmi, który około 820 roku opisał pozycyjny system kodowania dziesiętnego liczb wraz z techniką liczenia w tym systemie. Jego praca, przetłumaczona w XII wieku na łacinę, zapoczątkowała w Europie rozwój sztuki rachowania piórem na papierze. Jej zwolennicy, zwani algorytmistami, długo jeszcze toczyli spory z abacystami, posługującymi się liczydłami i z tzw. kalkulatorami, będącymi zwolennikami posługiwania się przy rachowaniu kamykami. Pojęcie algorytmu (klasycznie - przepisu na postępowanie rachunkowe) uległo rozszerzeniu i zawiera w sobie opis obiektów oraz opis czynności, które należy wykonać, aby osiągnąć określony cel (rozwiązać zadanie). Opisy obiektów występujące w algorytmie nazywa się deklaracjami, zaś opisy czynności instrukcjami. Do poglądowego przedstawiania algorytmów w postaci graficznej stosuje się schematy blokowe (sieci działań). Schematy blokowe rysuje się korzystając ze zbioru ściśle określonych figur geometrycznych (bloków) i przestrzegając pewnych reguł ich łączenia. We wnętrzu tych bloków zapisuje się umownie występujące w algorytmie obiekty i instrukcje. Strona

127 SYSTEMY KOMPUTEROWE Poniżej przedstawimy prosty przykład budowy algorytmu. Algorytm rozwiązywania równania kwadratowego ax 2 + bx + c = 0 Zadanie to jest dobrze znane i bez zbędnych komentarzy można zapisać algorytm rozwiązywania w następujący sposób: Jeżeli a = 0, to równanie nie jest kwadratowe. Jeżeli a 0, to oblicz wartość wyznacznika = b 2 4ac (3.9) Jeżeli = 0, równanie ma jeden pierwiastek podwójny x b = (3.10) 2a 1,2 Jeżeli > 0, równanie ma dwa pierwiastki rzeczywiste, przy czym należy wcześniej obliczyć wtedy p = (3.11) x 1 b + p =, 2a x 2 b p = (3.12) 2a Jeżeli < 0, równanie ma dwa pierwiastki zespolone, przy czym należy wcześniej obliczyć wtedy p = (3.13) x 1 b + ip =, 2a x 2 b ip = (3.14) 2a Schemat blokowy tego algorytmu przestawiono na rysunku 3.8. Na schemacie tym zaznaczono również bloki wprowadzania danych i wyprowadzania wyników. Studenci studiów inżynierskich na kierunku studiów edukacja techniczno-informatyczna na Wydziale Samochodów i Maszyn Roboczych Strona

128 ROZDZIAŁ 3 Politechniki Warszawskiej, dla których przeznaczony jest ten podręcznik, mają w programie studiów na III semestrze przedmiot poświęcony algorytmom pt.: Budowa algorytmów. Języki programowania Podczas formułowania algorytmów czy też ich schematów blokowych należy posługiwać się określonym językiem zrozumiałym dla odbiorcy. Jeśli odbiorcą jest człowiek, to można pozwolić sobie na pewną swobodę w formułowaniu algorytmów. Korzysta się wtedy z języków etnicznych (języków naturalnych), takich jak polski czy angielski, z całym ich bogactwem. Jeśli wykonawcą algorytmów ma być komputer, to należy stosować sztuczny język (język formalny), w którym każdy zapis ma ściśle określoną jednoznaczną interpretację. Przykładem sztucznego języka są języki programowania służące do zapisu algorytmów przeznaczonych do wykonywania przez komputer. Algorytm zapisany w języku programowania nazywa się programem komputerowym. Należy podkreślić, że algorytm jest w zasadzie niezależny od języka programowania. Ten sam algorytm (sposób rozwiązywania zadania) można zapisać jako program w różnych językach programowania. Głównym problemem przy rozwiązywaniu zadań jest więc budowa algorytmu. Zapis algorytmu w postaci programu wymaga zasadniczo tylko znajomości określonego języka programowania. Istnieje wiele języków programowania i różne są kryteria ich klasyfikacji. Języki różnią się głównie przeznaczeniem. Najwcześniej pojawił się podział języków na języki wewnętrzne i języki zewnętrzne. Strona

129 SYSTEMY KOMPUTEROWE Rysunek 3.8. Schemat blokowy algorytmu rozwiązywania równania kwadratowego Strona

130 ROZDZIAŁ 3 Język wewnętrzny Komputer może realizować tylko program zapisany w zrozumiałym dla niego języku wewnętrznym (języku maszynowym). Przydatność komputerów polega więc na zdolności do wykonywania programu (w języku wewnętrznym) wprowadzonego do adresowalnej pamięci operacyjnej. Program w języku wewnętrznym zakodowany jest binarnie i składa się jedynie z deklaracji i instrukcji należących do listy rozkazów procesora. Program taki jest mało czytelny i może być wykorzystywany tylko dla jednego typu komputera. Najbardziej uciążliwe jest dokonywanie zmian w programie. Dlatego programiści w procesie budowy programu komputerowego (programowania) korzystają z zewnętrznych języków programowania. Języki zewnętrzne Języki zewnętrzne są przeznaczone dla programistów i są najbardziej zbliżone do naturalnego zapisu algorytmów. Należy podkreślić, że języki zewnętrzne nie są związane z konkretnym typem komputera. Najważniejszą zaletą języków zewnętrznych w stosunku do języków wewnętrznych jest możliwość zapisu algorytmu w języku zbliżonym do naturalnego i korzystania z naturalnych dla programisty znaków ASCII a nie w abstrakcyjnym binarnym kodzie języka wewnętrznego. UWAGA Tylko program w języku wewnętrznym jest zrozumiały przez procesor. Program w języku zewnętrznym nie jest zrozumiały przez procesor i musi być przetłumaczony na język wewnętrzny. Ponieważ jedna instrukcja języka zewnętrznego jest często równoważna kilkudziesięciu instrukcjom języka wewnętrznego, więc efektywność pracy programistów programujących w językach zewnętrznych jest dużo wyższa niż efektywność programistów programujących w językach wewnętrznych. Programy w językach zewnętrznych są krótsze i bardziej czytelne a nauka programowania łatwiejsza. W językach tych wprowadzono także diagnostykę poprawności programów, umożliwiającą kontrolę występowania błędów. Program napisany w języku zewnętrznym zwany jest programem źródłowym. Strona

131 SYSTEMY KOMPUTEROWE Aby algorytm zapisany w postaci programu w języku zewnętrznym mógł być wykonany przez komputer, program taki musi być przetłumaczony na język wewnętrzny. Program tłumaczący zwany jest translatorem. Translatory dzieli się na dwie grupy: kompilatory i interpretery. Kompilator jest translatorem, który operuje na całym tekście programu źródłowego (napisanego w języku zewnętrznym) i generuje tekst tłumaczenia (program w języku wewnętrznym) jako całość. Interpreter operuje na poszczególnych jednostkach składniowych (syntaktycznych) programu i generuje ich tłumaczenia. Składnia, tj. syntaktyka języka jest to zbiór reguł, które pozwalają generować syntaktycznie poprawne zdania (np. instrukcje) rozważanego języka formalnego. Używając kompilatora można przystąpić do wykonania programu dopiero po zakończeniu procesu translacji, natomiast używając interpretera można wykonywać tłumaczenia poszczególnych jednostek składniowych (syntaktycznych), nie czekając na zakończenie translacji całości. Oznacza to, że po kompilacji uzyskuje się przetłumaczony program w języku wewnętrznym i wprowadza się go do pamięci komputera, natomiast przy translacji interpretacyjnej korzysta się z programu źródłowego, tłumacząc poszczególne jednostki syntaktyczne jedynie wtedy, gdy przychodzi kolej ich wykonania. Proces tłumaczenia odbywa się tu przy każdorazowym uruchamianiu programu, co zdecydowanie wydłuża czas wykonywania algorytmu realizowanego w programie. W wielu istniejących translatorach łączy się zasady kompilacji i interpretacji. Istnieje wiele zewnętrznych języków programowania. Każdy z nich ma wiele odmian a na rynku komputerowym można spotkać wiele translatorów oferowanych dla poszczególnych odmian języków na różne typy komputerów. W podręczniku [Wrobel 2011] jako przykład języka zewnętrznego przedstawimy język Visual Basic. Studenci studiów inżynierskich na kierunku studiów edukacja techniczno-informatyczna na Wydziale Samochodów i Maszyn Roboczych Politechniki Warszawskiej, dla których przeznaczony jest ten podręcznik, mają w programie studiów na IV i V semestrze przedmiot poświęcony praktycznej nauce wybranych języków programowania takich jak C i C++, pt.: Programowanie i programy użytkowe. Strona

132 ROZDZIAŁ 3 Języki programowania często dzieli się także na generacje: pierwsza generacja to języki wewnętrzne, druga generacja to asemblery natomiast języki zewnętrzne to języki trzeciej i czwartej generacji. Asemblery Asemblery (ang. assemble składać) to zewnętrzne języki programowania niskiego poziomu, w których jedno polecenie odpowiada na ogól jednemu poleceniu (instrukcji) procesora. Powstają one poprzez parametryzację niektórych części instrukcji w języku wewnętrznym. Parametryzacja polega na możliwości posługiwania się nazwami symbolicznymi zamiast umieszczania w programie jawnych nazw obiektów, których dotyczy wykonanie poszczególnych instrukcji. Parametryzacja dotyczy najczęściej adresów i dlatego asemblery nazywa się też językami adresów symbolicznych. W asemblerach dodatkowo binarne kody operacji zrozumiałych przez procesor zastępuje się kilkuliterowymi skrótami zwanymi mnemonikami. Dzięki stosowaniu tych kilkuliterowych skrótów, zrozumiałych dla programisty, możliwe jest tworzenie bardziej efektywnego programu. Z drugiej strony bezpośrednia odpowiedniość mnemoników oraz kodu maszynowego umożliwia zachowanie wysokiego stopnia kontroli programisty nad działaniem procesora. Wszystkie te udogodnienia znacznie ułatwiają i przyśpieszają proces pisania i uruchamiania (wykonywania poprawek) programów, natomiast programista ma pełny dostęp do wszystkich elementów komputera, do których istnieje dostęp na poziomie języka wewnętrznego Każdy typ komputera ma własny asembler. Zwykle jednak instrukcja w asemblerze składa się z następujących czterech elementów: pola etykiety, pola operacji, pola argumentów i pola komentarza. Etykieta jest symbolicznym adresem danej instrukcji, do której mogą się odwoływać inne instrukcje programu (np. instrukcje skoku). Pole operacji zawiera symboliczny kod rozkazu (dobrany tak, aby łatwo kojarzył się z jego funkcją, np. MOV, MOVe prześlij). Pole argumentów zawiera identyfikatory argumentów rozkazu (może być puste). Pole komentarza stanowi element dokumentacji, a w fazie tłumaczenia jest pomijane. Do najpopularniejszych odmian języka asemblera, ze względu na popularność architektury procesora firmy Intel znanej pod nazwą x86, zaliczyć można Asembler x86. Przykładowe polecenie (mnemoniki) w języku Asembler x86: MOV x, 10 ; prześlij do rejestru x wartość 10 Strona

133 SYSTEMY KOMPUTEROWE Oznacza prześlij do pamięci rejestrowej o symbolicznym adresie x wartość 10. UWAGA W pierwszych komputerach asembler był podstawowym językiem programowania. W wyniku poszukiwania efektywniejszych metod programowania i w wyniku pojawiania się języków programowania wyższego poziomu asemblery straciły na znaczeniu. Z tego powodu współcześnie prawie się z nich nie korzysta. Jednak istnieją zastosowania, np. w przypadku programowania mikrokontrolerów, systemów wbudowanych czy sterowników sprzętu, gdzie nadal znajdują one swoje miejsce. Korzysta się z nich także do pisania kluczowych fragmentów kodu wymagających najwyższej wydajności i wyjątkowo małych rozmiarów kodu wynikowego. Aby program napisany w języku asemblera mógł być wykonany przez komputer, musi być wcześniej przetłumaczony na jego język wewnętrzny. Program tłumaczący nazywa się programem asemblera lub programem zestawiająco-adresującym. Programowanie w języku asemblera pomimo oczywistych zalet w stosunku do języka wewnętrznego (uwolnienie od adresowania fizycznego (binarnego), czytelność, łatwość dokonywania poprawek) ma jednak szereg wad w stosunku do programowania w językach zewnętrznych wyższego poziomu (wyższej generacji). Do wad tych należą: czasochłonność, możliwość uruchamiania programów tylko na określonego typu komputerach, konieczność pamiętania wielu szczegółowych informacji o organizacji komputera przy pisaniu programów, utrudnienie w porozumiewaniu się z potencjalnymi odbiorcami programów. Języki asemblera są jednak podstawą do budowy programów tłumaczących (translatorów) dla języków zewnętrznych wyższych poziomów. Języki zewnętrzne trzeciej i czwartej generacji W językach trzeciej generacji, zwanych językami algorytmicznymi lub proceduralnymi, należy w programie źródłowym napisanym w tym języku (w postaci procedury) odpowiedzieć na pytanie JAK należy przetwarzać informacje np. poprzez napisanie stosownego algorytmu. Procedura jest bowiem algorytmem zapisanym w formalizmie języka trzeciej generacji. Program w języku trzeciej generacji musi być przetłumaczony na język wewnętrzny za pomocą translatora. W przypadku tych języków na ogół preferuje się translację z kompilacją. W wyniku kompilacji uzyskuje się Strona

134 ROZDZIAŁ 3 bowiem przetłumaczony program w języku wewnętrznym. Taki program może być następnie wielokrotnie wprowadzany do pamięci operacyjnej komputera i wielokrotnie uruchamiany. Przykładem języka proceduralnego trzeciej generacji jest Visual Basic opisany w podręczniku [Wróbel 2011]. W językach czwartej generacji, zwanych językami zapytań lub językami nieproceduralnymi, nie musimy już definiować JAK przetwarzać informacje ale wystarczy poprawnie sformułować CO ma być zrobione! Program w języku czwartej generacji musi być również przetłumaczony na język wewnętrzny za pomocą translatora. W przypadku tych języków na ogół preferuje się translację z interpretacją. W takim procesie translacji nie trzeba bowiem tłumaczyć, przy każdym zapytaniu, całego programu na język wewnętrznym. Wymaga to jednak bardziej rozbudowanych interpreterów. W interpretery zapytań napisanych w języku czwartej generacji wyposażone są systemy zarządzania bazą danych (DBMS). W rozdziale piątym jako przykład języka nieproceduralnego czwartej generacji przedstawimy język SQL. Strona

135 ` 4 Wprowadzenie do inżynierskich baz danych W tym rozdziale: o Kanoniczne postacie przetwarzania informacji o Definicja bazy danych - system zarządzania bazą danych o Modele w bazach danych o Relacyjne bazy danych o Hierarchiczne, sieciowe i obiektowe bazy danych o Rysunkowa baza danych w systemach CAD o Zarządzanie dokumentacja projektową o Projektowanie baz danych

136 ROZDZIAŁ Kanoniczne postacie przetwarzania informacji Klasyfikacja postaci przetwarzania informacji W pierwszym rozdziale podręcznika, opisując podstawowe pojęcia teorii informacji i komputerowego wspomagania procesu projektowania, wielokrotnie podkreślaliśmy jak zasadnicze znaczenie we wspomaganiu wszelkich prac inżynierskich mają inżynierskie bazy danych. Dlatego w tym rozdziale skoncentrujemy się na problematyce inżynierskich bazy danych. Na początek omówimy podstawowe pojęcia związane z bazami danych w powiązaniu z teorią informacji C. Shannona. Przetwarzanie informacji można podzielić na: przetwarzanie numeryczne (numeryka), przetwarzanie morfologiczne (morfologia), przetwarzanie semantyczne (semantyka). Kryterium klasyfikacji przedstawionego powyżej podziału jest klasa obiektów, których dotyczy przetwarzanie informacji. Przetwarzanie informacji wiążemy bowiem zwykle z jakimiś obiektami bądź ze świata materialnego bądź ze świata abstrakcji. Numeryczne przetwarzanie informacji Numeryka to sposób przetwarzania informacji właściwy ludziom. Obiekty są tu bardzo specjalne, bowiem dają się bowiem zapisać za pomocą liczb. W numeryce - obiekty są liczbami! Na liczbach wykonujemy działania. Przetwarzaniem numerycznym zajmuje się matematyka. Na rysunku 4.1 przedstawiono schematycznie podział najczęściej stosowanych w praktyce rodzajów liczb i przykłady ich przetwarzania. znaczenie narzędzi do obliczeń (czyli do przetwarzania informacji). Strona

137 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH Rysunek 4.1. Numeryka Coraz częściej stosowanym narzędziem do wykonywania obliczeń czyli do numerycznego przetwarzania informacji staje się komputer. Należy zauważyć, że potrzeba przetwarzania numerycznego pojawiała się w naturalny sposób i to już na wczesnym etapie rozwoju każdej cywilizacji. W naturalny sposób pojawiły się też różne systemy kodowania (zapisu) liczb (np. 1, -2, 2 1 ) i metod związanych z ich przetwarzaniem (czyli obliczeniami). Przeglądowi różnych systemów liczbowych, metod ich kodowania, w tym kodowania w komputerze poświęcilismy w znacznej części rozdział drugi. W rozdziale drugim opisalismy też podstawowe zasady wykonywania obliczeń w komputerze cyfrowym.. W celu numerycznego przetwarzania informacji musimy opracować przepis, opisujący jak należy wykonać przetwarzanie. W ten sposób powstają algorytmy (algorytm przepis na przetwarzanie numeryczne). Mając algorytmy można tworzyć efektywne narzędzia (np. programy komputerowe) do przetwarzania numerycznego. W poprzednim rozdziale opisaliśmy przykład budowy algorytmu do rozwiązywania równania kwadratowego. Strona

138 ROZDZIAŁ 4 Morfologiczne przetwarzanie informacji Przetwarzanie morfologiczne jest takim rodzajem przetwarzania informacji, w którym obiekty nie są już liczbami. Obiekty w przetwarzaniu morfologicznym mogą byc dowolne. Na ogół są elementami składowymi większego systemu (modelu systemu), modelującego konkretny fragment świata realnego lub abstrakcyjnego. Wszystkie obiekty należy jednoznacznie opisać. Na ogół wszystkie obiekty są także powiązane ze sobą. Obiektem w przetwarzaniu morfologicznym może być np. student. Mamy świadomość, że nie da się zbudować pełnego modelu studenta, ale dla pewnych celów, na przykład do obsługi pracy dziekanatu, można zbudować wystarczający a jednoczesnie jednoznaczny opis sprowadzający się do numeru indeksu, nazwiska, imienia i innych danych. Student (nr_indeksu, Nazwisko, Imię,...) W analogiczny sposób można opisać krew lub część maszyny: Krew (OB., RBC, WBC,...) Część (ŚREDNICA, DŁUGOŚĆ, MASA, MATERIAŁ,...) Proces przetwarzania morfologicznego polega przede wszystkim na umiejętności tworzenia zapisu obiektu, ale także na jego modyfikowaniu. Ważnym procesem w przetwarzaniu morfologicznym jest pozyskiwanie nowych informacji poprzez tworzenie zapytań. Tak więc proces przetwarzania morfologicznego jest zupełnie inny niż w przypadku numeryki nie dodaje się numerów indeksów studentów, ale np. wybiera studentów, którzy mają ocenę bardzo dobrą z chemii i jednocześnie ocenę bardzo dobrą z matematyki. Semantyczne przetwarzanie informacji W przetwarzaniu semantycznym obiekty podobnie jak w przetwarzaniu morfologicznym są także dowolne, ale dotyczą pewnej specyficznej sfery abstrakcji, jaką jest wiedza. Należy podkreślić, że wiedza tylko w nieznacznym zakresie daje się sformalizować. Oznacza to, że nie mamy pełnych modeli wiedzy. Można ją jednak pozyskiwać, zapisywać i następnie przetwarzać. Strona

139 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH Do nielicznych sformalizowanych modeli wiedzy można zaliczyć: modele wiedzy deklaratywnej - zapis wiedzy jest w postaci deklaratywnej np. w postaci faktów czy reguł przykładem wiedzy deklaratywnej mogą być prawa dynamiki Newtona. modele wiedzy proceduralnej - zapis wiedzy jest w postaci procedury postępowania przykładem wiedzy proceduralnej może być opisany w poprzednim rozdziale algorytm rozwiązywania równania kwadratowego budowa algorytmu poprzedza zapis procedury. Proces przetwarzania semantycznego (przetwarzania wiedzy) polega na wnioskowaniu, ale również na pozyskiwaniu i zapisie wiedzy, jej modyfikacji i edycji. W przetwarzaniu semantycznym wyróżnia się zazwyczaj: analizę semantyczną jest to rozpoznawanie znaczenia analizowanych danych ( porcji informacji), zapisanych w języku naturalnym lub w języku sztucznym; przeprowadzenie analizy semantycznej jest warunkiem tłumaczenia informacji z jednego języka na drugi i w coraz większym stopniu korzystamy w tym zakresie z narzędzi komputerowych, rozpoznawanie postaci jest to rozpoznawanie postaci za pomocą zmysłów wzroku, słuchu, dotyku, smaku, węchu; to powszechna forma przetwarzania semantycznego właściwa dla człowieka i innych organizmów żywych; w rozpoznawaniu postaci w coraz większym stopniu korzystamy z narzędzi komputerowych, heurystykę jest to proces wyciągania wniosków na podstawie niepełnych informacji, a zwykle taka sytuacja towarzyszy procesom decyzyjnym; komputery umożliwiają budowę systemów doradczych, zwanych też systemami eksperckimi (ang. expert system), które na podstawie zgromadzonej wiedzy wspomagają proces podejmowania decyzji; wśród systemów doradczych wyróżniamy systemy diagnostyczne systemy takie obserwują symptomy (informacje wejściowe) diagnozowanych obiektów i na ich podstawie stawiają diagnozę. Strona

140 ROZDZIAŁ 4 Metody przetwarzania semantycznego (przetwarzania wiedzy) za pomocą systemów komputerowych należą do najszybciej rozwijających się kierunków nauki a szczególnie informatyki. W zastosowaniach komercyjnych często nazywane są niezbyt słusznie metodami sztucznej inteligencji. Numeryka, morfologia i semantyka w systemach komputerowych Warto zauważyć, że w pracach inżynierskich a szczególnie w procesie projektowania występują wszystkie postacie kanoniczne przetwarzania informacji, co ilustruje rys Częścią tego przetwarzania są obliczenia inżynierskie, a więc przetwarzanie numeryczne. Ale dużo większe znaczenie ma przetwarzanie morfologiczne, związane z zapisem projektu (rysowaniem) czy sporządzaniem różnych opisów. Najważniejsze jest jednak przetwarzanie wiedzy niezbędnej w procesie projektowania, czyli przetwarzanie semantyczne. Rysunek 4.2. Trzy postacie przetwarzania informacji w procesie projektowania Każdy z trzech opisanych powyżej rodzajów przetwarzania informacji może być realizowany przez komputery. Na rys. 4.3 zilustrowano udział komputerów w przetwarzaniu informacji na przestrzeni ostatnich lat. Strona

141 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH Rysunek 4.3. Udział komputerów w przetwarzaniu informacji na przestrzeni ostatnich lat. Pierwszym historycznie zastosowaniem komputerów jest przetwarzanie numeryczne wynikało ono z możliwości pierwszych komputerów i z zapotrzebowania na obliczenia. Przetwarzanie morfologiczne jest powszechnie utożsamiane z wykorzystaniem komputerowych baz danych obiekty, odpowiednio zamodelowane są zapisywane w postaci baz danych. Przetwarzanie semantyczne jest dominujące w praktycznie każdym procesie przetwarzania informacji także w procesie projektowania. Stosowanie komputerów w przetwarzaniu semantycznym jest dużo mniejsze. Obserwujemy jednak dynamiczny rozwój zastosowań komputerów również w tym zakresie. Strona

142 ROZDZIAŁ Definicja bazy danych system zarządzania bazą danych Definicja bazy danych Dane to komunikaty zapisywane w komputerze (binarnie), które mogą być przez komputer jednoznacznie odczytane, przesyłane i przetwarzane. Baza danych (ang. data base) to zbiór danych (komunikatów) o obiektach lub procesach: zapisywany w pamięci zewnętrznej komputera w postaci plików (jest to tzw. fizyczna baza danych), zamodelowanych i wzajemnie powiązanych (zgodnie ze strukturą logiczną zwaną logiczną bazą danych), przygotowanych do wielu różnych zastosowań (czasami nawet nieznanych w momencie tworzenia bazy), związanych z przetwarzaniem morfologicznym (np.: modyfikacje, zapytania), udostępnianych różnym użytkownikom o różnych uprawnieniach, odpowiednio zabezpieczonych (zarówno na etapie przechowywania jak i przetwarzania informacji) w celu realizacji różnych zadań. Zauważmy, że logiczna baza danych jest specjalnym modelem (modelem systemu) opisującym konkretny, celowo wybrany fragment świata realnego lub abstrakcyjnego. Wszystkie obiekty modelowane w bazie należy jednoznacznie opisać. Wszystkie obiekty są także powiązane ze sobą. Należy też podkreślić różnice pomiędzy przetwarzaniem numerycznym, znanym z matematyki a przetwarzaniem bazodanowym (morfologicznym). Strona

143 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH W przetwarzaniu morfologicznym mogą być z definicji różne (na ogół bardzo liczne) zastosowania, a także wielu użytkowników o różnych uprawnieniach. Istnieje wiele innych nieco różniących się definicji baz danych. Na przykład w wikipedii - encyklopedii pisanej i redagowanej przez internautów [Wikipedia 2012] baza danych jest definiowana jako kolekcja danych, zapisanych zgodnie z określonymi regułami. W węższym znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zasadami przyjętymi dla danego programu komputerowego, specjalizowanego do gromadzenia i przetwarzania tych danych. Program taki (często pakiet programów) nazywany jest systemem zarządzania bazą danych (ang. Data Base Management System - DBMS). Wprawdzie większość baz danych przechowuje głównie dane tekstowe i liczbowe, to coraz więcej baz umożliwia przechowywanie innych danych takich jak rysunek inżynierski, mapa kartograficzna czy muzyka. System zarządzania bazą danych Jak już wspomniano w poprzednim punkcie, do korzystania z zasobów zgromadzonych w bazie danych niezbędne jest specjalne oprogramowanie, które nazywamy systemem zarządzania bazą danych (ang. DBMS Data Base Management System). Na rysunku 4.4 przedstawiono schemat systemu zarządzania bazą danych. Fizyczna baza danych to pliki zapisane binarnie w pamięci zewnętrznej komputera. Fizyczna baza danych może być zapisana na jednym komputerze (zwykle jest to tzw. serwer bazodanowy), ale często dane są zapisywane na wielu różnych serwerach. Mówimy wtedy o bazach rozproszonych. Zapis fizycznej bazy danych w postaci binarnych plików jest nieczytelny i niedostępny bezpośrednio dla użytkowników. Użytkownicy bazy danych to na ogół ludzie są oni często niewykwalifikowani (np. sprzedawcy w sklepie). Pamiętajmy, że użytkownikiem może być także urządzenie np. czujnik w instalacji przemysłowej. System zarządzania bazą danych przede wszystkim zarządza fizyczną bazą danych, zapewniając w pośredni sposób komunikację użytkowników z fizyczną bazą danych. Programy zarządzające fizyczną bazą danych nazywamy interfejsem bazy danych - DBI (ang. Data Base Interface). Strona

144 ROZDZIAŁ 4 Rysunek 4.4. Schemat systemu zarządzania bazą danych System zarządzania bazą danych w swojej pracy korzysta ze zbudowanych wcześniej modeli. Są nimi logiczna baza danych oraz model użytkowników i ich uprawnień. Bardzo ważnym elementem systemu zarządzania bazą danych jest system komunikacji użytkownika z bazą danych zwany interfejsem użytkownika (ang. User Interface - UI). W pierwszych bazach danych interfejs użytkownika umożliwiał jedynie dialog alfanumeryczny (tekstowy). Rozwój urządzeń grafiki komputerowej umożliwia dialog za pomocą rysunków i powszechne korzystanie z tzw. graficznego interfejsu użytkownika (ang. GUI Graphic User Interface). Kolejnym bardzo ważnym elementem systemu zarządzania bazą danych są użytkownicy bazy. Struktura użytkowników jest hierarchiczna. Spośród wielu grup użytkowników bazy danych, najważniejszym jest tzw. administrator bazy (rysunek 4.5). Strona

145 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH Rysunek 4.5. Użytkownicy bazy danych Użytkownicy końcowi to najważniejsza grupa bezpośrednich użytkowników bazy danych. UWAGA Nazwa użytkownik końcowy ma historyczny charakter. W pierwszych systemach baz danych użytkownicy pracowali przy terminalach końcówkach systemów wielodostępnych. Pierwsze takie końcówki były dalekopisami a następnie monitorami alfanumerycznymi. Użytkownikami końcowymi są na przykład projektanci pracujący z systemami CAD, czy sprzedawcy pracujący z programami kasowymi. System zarządzania bazą danych powinien umożliwić wszystkim użytkownikom, a szczególnie użytkownikom końcowym, naturalny i możliwie przyjazny sposób komunikacji z bazą, zwany interfejsem użytkownika (bez konieczności samodzielnego programowania). Użytkownicy końcowi mogą być podzieleni na grupy (na rys. 4.5 węzeł pośredni). Programiści to użytkownicy bardziej zaawansowani z punktu widzenia obsługi systemu zarządzania bazą danych. Definiują i oprogramowują nowe polecenia, projektują organizację dialogu w postaci formularzy, raportów, zapytań, itp. W swojej pracy programiści korzystają ze specjalizowanych narzędzi. Technologia klient serwer Z definicji bazy danych, wynika możliwość dostępu do zasobów informacyjnych, zgromadzonych w fizycznej bazie danych, przez wielu różnych użytkowników o różnych uprawnieniach. W początkowych latach rozwoju komputerowych baz danych (lata 60-te, 70-te, a nawet 80-te XX wieku) fizyczna baza danych była zapisana w pamięci zewnętrznej komputera, a jej zasoby były udostępniane użytkownikom zgromadzonym przy terminalach tego komputera. Przykła- Strona

146 ROZDZIAŁ 4 dem może tu być komputer IBM 360 z systemem operacyjnym OS (będącym pierwowzorem systemu operacyjnego Unix), umożliwiającym pracę w wielodostępie. Organizację systemów wielodostępnych opisaliśmy w poprzednim rozdziale. Rozwój technologii mikroprocesorowych spowodował też dynamiczny rozwój sieci komputerowych i programów bazodanowych dostępnych sieciowo. Powszechną technologią organizacji dostępu do bazy stała się technologia klient serwer. W technologii klient serwer fizyczna baza danych posadowiona jest na dedykowanym komputerze zwanym serwerem, wraz z oprogramowaniem obsługującym tą bazę, będącym zasadniczą częścią systemu zarządzania bazą danych (DBMS) zwanym też oprogramowaniem działającym po stronie serwera. Na komputerze użytkownika bazy (klienta) znajduje się jedynie niewielka część oprogramowania zwana oprogramowaniem po stronie klienta. Rysunek 4.6 jest ilustracją idei technologii klient serwer w sieci lokalnej. Serwer bazy danych w sieci lokalnej jest też na ogół serwerem sieciowym. Rysunek 4.6. Ilustracja idei technologii klient serwer w sieci lokalnej W internetowych systemach baz danych użytkownicy powszechnie korzystają z możliwości, jakie daje Internet. Rysunek 4.7 jest ilustracja, idei technologii klient serwer w sieci rozległej, jaką jest Internet. Użytkownicy zgromadzeni przy swoich komputerach mogą uzyskać dostęp do serwera bazy poprzez popularne przeglądarki internetowe. Rysunek 4.7. Ilustracja idei technologii klient serwer w Internecie Strona

147 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH Studenci studiów inżynierskich na kierunku nauczania edukacja techniczno-informatyczna na Wydziale Samochodów i Maszyn Roboczych Politechniki Warszawskiej, dla których przeznaczony jest ten podręcznik, mają w programie studiów na V semestrze kolejny przedmiot poświęcony w znacznej części bazom danych pt.: Inżynieria oprogramowania, a na VI semestrze specjalny przedmiot poświęcony sieciom komputerowym pt.: Sieci komputerowe i aplikacje sieciowe Modele w bazach danych Konceptualna baza danych W procesie projektowania baz danych kluczową rolę odgrywają modele. Modelem najbardziej związanym z naturalnym opisem pewnego fragmentu świata realnego lub abstrakcyjnego, który chcemy zamodelować w bazie danych jako pewien system, jest konceptualna baza danych (rysunek 4.8). Rysunek 4.8. Modele w bazach danych Konceptualna baza danych jest próbą wydzielenia z otaczającego nas świata realnego lub abstrakcyjnego pewnego fragmentu, który chcemy zamodelować w bazie danych jako pewien system powiązanych ze sobą obiektów (elementów składowych systemu). Obiektem w bazie może być na przykład: samochód, student, opłata, książka Strona

148 ROZDZIAŁ 4 Zauważmy, że obiektom nadaliśmy nazwy. Przykłady powiązania dwóch obiektów: student jeździ samochodem student wypożycza książkę student wnosi opłatę Zauważmy, że powiązaniom również nadaliśmy nazwy w postaci czasowników. Zauważmy, że zarówno student jak i samochód, opłata, książka są tu jedynie elementami większego systemu. Wszystkie te elementy można stosunkowo prosto jednoznacznie opisać, stosownie do potrzeb przyszłych potencjalnych zastosowań w bazie danych. Można więc stosunkowo łatwo zbudować model każdego z elementów a następnie model całej bazy danych. Pojęcie encji Obiekty modelowane w konceptualnej bazie danych są nazywane encjami (ang. entity). Encją jest wiec samochód, student, opłata, książka. Encją może być zarówno element świata materialnego np.: samochód, student, książka jak i swiata niematerialnego - abstrakcyjnego np.: opłata. Każda encja w bazie danych ma unikalną nazwę. Każda encja ma także atrybuty, będące jej jednoznacznym opisem. Na rys. 4.9 przedstawiono schematyczny zapis przykładowych encji. Encja jest na ogół schematycznie zapisywana w postaci prostokąta, a atrybuty encji w postaci owalu. Przykładowo atrybutami encji samochód mogą być: marka, model, numer rejestracyjny. Każdy atrybut w encji ma swoją nazwę i jest określonego typu. W powyższym przykładzie wszystkie atrybuty są tekstami (typ tekstowy). Strona

149 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH Dobór atrybutów zależy od przyszłych zastosowań. Opis samochodu za pomocą 3 atrybutów może być wystarczający w bazie do obsługi parkingu, ale będzie nie wystarczający w bazie do obsługi stacji napraw. Rysunek 4.9 Schematyczny zapis przykładowych encji Diagramy związków encji Konceptualna baza danych składa się z powiązanych ze sobą encji. Najczęściej do zapisu konceptualnej bazy danych korzysta się z tzw. diagramów związków encji (ang. Entity Relationship Diagram) zwanych też schematami E-R (ang. Entity Relationship) czyli schematami encja powiązanie Diagramy związków encji pokazują logiczne związki pomiędzy różnymi encjami. Na rysunku 4.10 przedstawiono przykład schematu E-R czyli diagramu związków encji. Diagram ten jest zapisem konceptualnej bazy danych, czyli modelem opisującym proces wnoszenia opłat przez studentów. W modelu tym występują dwie powiązane ze sobą encje - opłata i student. studentów. Powiązanie (związek logiczny) ma nazwę u nas jest nią wnosi jest to na ogół czasownik a schematycznie powiązanie zapisywane jest w postaci rombu. Na rysunku 4.10 nie zaznaczono już atrybutów poszczególnych encji. Strona

150 ROZDZIAŁ 4 Rysunek Przykład schematu E-R i powiązania 1:N Uwaga W schematach E-R poszczególne encje mogą albo muszą być ze sobą powiązane. W przykładzie na rysunku 4.10 każdy student może wnieść jedną lub wiele opłat. Z drugiej strony każda opłata musi być wniesiona przez konkretnego studenta. Powiązanie, w którym jednej encji odpowiada jedna lub więcej encji, tak jak w przykładzie na rys. 4.10, gdzie każdy student może wnieść jedną lub wiele opłat, nazywamy powiązaniem jeden do wielu często oznaczanym 1:N tak jak na rysunku W schematach E-R mogą występować trzy rodzaje powiązań (związków logicznych) pomiędzy encjami: 1:1 (jeden do jednego) jednej encji odpowiada dokładnie jedna encja, 1:N (jeden do wielu) jednej encji odpowiada jedna lub więcej encji, N:N (wiele do wielu) jednej lub więcej encjom odpowiada jedna lub więcej encji. Na rysunku 4.11 przedstawiono przykład schematu E-R i powiązania jeden do jednego oznaczanym 1:1. W przykładzie tym każdy student może (lepiej powinien) mieć swoje dane osobowe, takie jak PESEL, adres, data urodzenia, będące atrybutami encji dane osobowe. Z drugiej strony każde dane osobowe muszą się odnosić do konkretnego studenta. Powiązanie (związek logiczny) pomiędzy encjami jest nazwane ma jest to czasownik a schematycznie zapisane jest w postaci rombu. Rysunek Przykład schematu E-R i powiązania 1:1 Strona

151 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH Na rysunku 4.12 przedstawiono przykład schematu E-R i powiązania wiele do wielu oznaczanym N:M. W przykładzie tym każdy student może wypożyczyć wiele książek. Z drugiej strony każda książka może być wypożyczona każdemu ale konkretnemu studentowi. Powiązanie (związek logiczny) pomiędzy encjami jest nazwane wypożycza jest to czasownik a schematycznie zapisane jest w postaci rombu. Rys Przykład schematu E-R i powiązania N:M UWAGA Na podstawie konceptualnej bazy danych zapisanej w postaci schematu E-R czyli diagramów związków encji tworzona jest struktura logiczna bazy danych (logiczna baza danych). Klasyfikacja logicznych baz danych Wyróżniamy trzy podstawowe sposoby organizacji logicznej bazy danych: relacyjne bazy danych, hierarchiczne bazy danych, sieciowe i obiektowe bazy danych. W niektórych podręcznikach i w [Wikipedia 2012] wyróżnia się dodatkowo bazy kartotekowe, bazy relacyjno-obiektowe, bazy strumieniowe, bazy temporalne. Baza kartotekowa to dwuwymiarowa tabela (tablica) danych, będąca samodzielnym dokumentem. Z baz tego typu korzystają liczne programy typu: książka telefoniczna, książka kucharska, spisy książek, kaset. Baza kartotekowa jest zdegenerowaną bazą relacyjną, składająca się tylko z jednej relacji (tabeli). Baza relacyjno-obiektowa to baza będąca połączeniem bazy relacyjnej i obiektowej. Baza strumieniowa to baza będąca aktywną bazą relacyjną w której dane są przedstawione w postaci zbioru strumieni danych. W modelu Strona

152 ROZDZIAŁ 4 strumieni danych zakłada się, że niektóre lub wszystkie dane napływają na bieżąco. Baza temporalna (czasowa) to baza będąca odmianą bazy relacyjnej, w której każdy wiersz tabeli (tablicy) posiada tzw. stempel czasowy, określający czas w jakim zapisana w nim wartość jest prawdziwa. UWAGA Schematy logicznej bazy danych pozwalają przedstawić (zamodelować) otaczający nas świat językiem baz danych. Można powiedzieć, że schematy logicznej bazy danych to sposób, w jaki widzimy otaczający nas świat posługując się językiem baz danych Relacyjne bazy danych Strona Definicja relacyjnej bazy danych Najbardziej podstawową i najczęściej spotykaną strukturą logiczną baz danych jest relacyjna baza danych. Relacyjna baza danych to zbiór powiązanych ze sobą relacji. Ponieważ relacja jest przedstawiana w formie dwuwymiarowych tabel (tablic), dlatego relacyjną bazę danych często definiuje się jako zbiór powiązanych ze sobą tabel [Wikipedia 2012]. Twórcą teorii relacyjnych baz danych jest brytyjski informatyk Edgar Frank Codd ( ). Teorię tę przedstawił w 1970r w pracy A relational model of data for large shared data banks. UWAGA Relacyjne bazy danych oparte są na matematycznym pojęciu relacji i rachunku relacyjnego. To formalne podejście zostanie przedstawione studentom studiów inżynierskich na kierunku nauczania edukacja techniczno-informatyczna na Wydziale Samochodów i Maszyn Roboczych Politechniki Warszawskiej na V semestrze w ramach przedmiotu pt.: Inżynieria oprogramowania. W tym podręczniku skupimy się na praktycznym, intuicyjnym podejściu do relacyjnych baz danych. W polskojęzycznej literaturze na angielskie określenie table pojawia się tłumaczenie w postaci tabeli lub tablicy. Ponieważ termin tabela jest

153 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH bliższy znaczeniowo angielskiemu table, w dalszej części podręcznika będziemy korzystać z terminu tabela. Każda tabela zawiera zero lub więcej wierszy, zwanych krotkami i jedną lub więcej kolumn zwanych atrybutami. Po wprowadzeniu danych do bazy możliwe jest porównywanie wartości z różnych wierszy i kolumn, również z różnych tabel i wykonywanie bardziej złożonych operacji. Umożliwia to wiązanie danych i wykonywanie złożonych operacji w granicach całej bazy danych. Przykład relacji Na rysunku 4.13 przedstawiono przykład zapisu relacji o nazwie STUDENCI z czterema atrybutami (kolumnami), a na rys przykład tej samej relacji w postaci wypełnionej przykładowymi danymi tabeli (w żargonie informatycznym mówimy w postaci nawodnionej ). Zapis jak na rysunku 4.13, gdzie występuje jedynie nazwa relacji i nazwy atrybutów (czasem z określeniem ich typów), jest powszechnie stosowany w systemach zarządzania bazą danych (DBMS) do tworzenia logicznych baz danych. Rysunek Przykład zapisu relacji Każdy wiersz w tej relacji jest zapisem konkretnego studenta zamodelowanego w tym przypadku za pomocą czterech atrybutów: Nr_indeksu Nazwisko Imię Data_urodzenia Uwaga Każdą relację można zapisać jako tabelę, która ma nazwę i której kolumny odpowiadają poszczególnym atrybutom. Kolumny również posiadają nazwę. Każdej kolumnie (atrybutowi) należy przypisać określony typ (np. liczbowy, tekstowy, daty, logiczny). Strona

154 ROZDZIAŁ 4 Rysunek Przykład relacji w postaci tabeli Reasumując należy podkreślić, że każda relacja ma unikalną w bazie nazwę (np. STUDENCI), natomiast poszczególne atrybuty mają nazwę, również unikalną ale tylko wewnątrz danej relacji (np. Nr_indeksu, nazwisko, imię, datę urodzenia) oraz są określonego typu (np. liczbowy, tekstowy, data, logiczny). Na rysunku 4.16 zebrano trzy podstawowe pojęcia związane z relacyjnymi bazami danych niezależnie definiowane poprzez: teorię relacyjnych baz danych, język SQL do obsługi relacyjnych baz danych (omówimy go w następnym rozdziale), system operacyjny komputera i związany z tym system organizacji plików. Rysunek Podstawowe pojęcia związane z relacyjnymi bazami danych Powiązania pomiędzy relacjami klucz relacji Powiązanie relacji (tabel) w relacyjnych bazach danych realizowane jest za pomocą specjalnych atrybutów zwanych kluczami. Strona

155 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH Kolumna, która jednoznacznie określa daną krotkę w relacji nosi nazwę klucza np. Nr_indeksu. Klucz ten jest przypisany tylko jednemu studentowi, a więc jednoznacznie go opisuje. Klucz główny (ang. Primary key) to klucz jednoatrybutowy. Na rys przedstawiono dwie powiązane ze sobą w ten sposób relacje: STUDENCI oraz OPŁATY. Kluczem głównym w relacji STUDENCI jest Nr_indeksu. Kluczem głównym w relacji OPŁATY jest Nr_opłaty. Należy zauważyć, że w praktyce, stosując komercyjne systemy zarządzania bazą danych (DBMS), korzystamy na ogół ze specjalnie dedykowanego na klucz główny atrybutu typu ID_nazwa_tabeli. STUDENCI OPŁATY Rysunek Powiązanie pomiędzy relacjami za pomocą kluczy Klucz obcy (ang. Foreign key) to taki klucz, który w innej tabeli jest kluczem głównym. Klucze obce służą do łączenia ze sobą różnych tabel. Ważnym pojęciem w relacyjnych bazach danych jest referencyjna integralność danych. Są to wymagania stawiane wartościom kluczy. Można je sformułować w następujący sposób: wartość klucza głównego nie może być wartością pustą (NULL), Strona

156 ROZDZIAŁ 4 nie mogą istnieć niedopasowane wartości klucza obcego, co oznacza że wartość każdego klucza obcego musi być wcześniej określona w innej tabeli, w tej samej bazie, gdzie jest on kluczem głównym Referencyjną integralność danych zapewnia system zarządzania bazą danych (DBMS). Przykład relacyjnej bazy z powiązaniem między relacjami 1:1 Jak pamiętamy z poprzedniego podrozdziału w schematach E-R występują powiązane ze sobą encje. Wyróżniliśmy 3 rodzaje powiązania encji: powiązanie 1:1 ( jeden do jednego ), powiązanie 1:N ( jeden do wielu ), powiązanie N:M ( wiele do wielu ). Poniżej omówimy każde z tych powiązań wraz z przykładami budowy na podstawie schematów E-R modeli logicznych relacyjnych baz danych. W powiązaniu 1:1 ( jeden do jednego ) jednej encji odpowiada dokładnie jedna encja. Na rysunku 4.18 przedstawiono przykład schematu E-R z takim właśnie powiązaniem. Przy budowie modelu relacyjnego każdej encji można w naturalny sposób przypisać relację, co pokazano na rysunku Rysunek Przykład schematu E-R z powiązaniem 1:1 Strona

157 WPROWADZENIE DO INŻYNIERSKICH BAZ DANYCH Rysunek Przykład logicznej bazy danych uzyskanej ze schematu na rysunku 4.18 Ten typ powiązania w praktyce stosowany jest niezbyt często. Znajduje jednak zastosowanie w następujących przypadkach: kiedy istnieje potrzeba wprowadzenia racjonalnych uprawnień dostępu dla użytkowników do wybranych tabel, co może wynikać na przykład z ustawy o ochronie danych osobowych; możemy zapewnić dostęp praktycznie wszystkim użytkownikom do listy studentów (np. możliwość przeglądania, czy wydruku tej listy), ale bez możliwości dostępu do ich danych osobowych, kiedy istnieje potrzeba zwiększenia szybkości pracy bazy; nie zawsze korzystamy ze wszystkich danych; na przykład z danych osobowych korzystamy stosunkowo rzadko, głównie przetwarzamy dane podstawowe studentów tzn. imię, nazwisko i numer indeksu. Przykład relacyjnej bazy z powiązaniem między relacjami 1:N Powiązanie jeden do wielu 1:N polega na tym, że jednej encji odpowiada jedna lub więcej encji. Na rysunku 4.20 przedstawiono przykład schematu E-R z takim właśnie powiązaniem. Tu również, przy budowie modelu relacyjnego każdej encji można w naturalny sposób przypisać relację, co pokazano na rysunku Rysunek Przykład schematu E-R z powiązaniem 1:N Strona

158 ROZDZIAŁ 4 Rysunek Przykład logicznej bazy danych uzyskanej ze schematu na rysunku 4.20 Zauważmy, że w przykładzie tym każdy student może dokonać wiele wpłat (powiązanie jeden do wielu). Powiązanie typu 1:N występuje najczęściej w relacyjnych bazach danych. Przykład relacyjnej bazy z powiązaniem między encjami N:M Powiązanie wiele do wielu N:M polega na tym, że jednej lub więcej encjom odpowiada jedna lub więcej encji. Na rys przedstawiono przykład schematu E-R z takim właśnie powiązaniem. W przykładzie, modelującym proces wypożyczania książek każdy student może wypożyczyć wiele książek. Jednocześnie każda książka może być wypożyczona wielokrotnie różnym studentom. W tym przypadku przy budowie modelu relacyjnego każdej encji można w naturalny sposób przypisać relację, co pokazano na rys. 4.23, ale dodatkowo do zamodelowania powiązania N:M należy zastosować dodatkową tabelę (relację) - w przykładzie nazwaną WYPOŻYCZENIA. Schemat z powiązaniem N:M należy więc rozdzielić na dwa powiązania 1:N oraz 1:M. RysUNWK Przykład schematu E-R z powiązaniem N:M Strona

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU I. KARTA PRZEDMIOTU 1. Nazwa przedmiotu: TECHNOLOGIA INFORMACYJNA 2. Kod przedmiotu: Ot 3. Jednostka prowadząca: Wydział Mechaniczno-Elektryczny 4. Kierunek: Automatyka i Robotyka 5. Specjalność: Informatyka

Bardziej szczegółowo

Wykład I. Wprowadzenie do baz danych

Wykład I. Wprowadzenie do baz danych Wykład I Wprowadzenie do baz danych Trochę historii Pierwsze znane użycie terminu baza danych miało miejsce w listopadzie w 1963 roku. W latach sześcdziesątych XX wieku został opracowany przez Charles

Bardziej szczegółowo

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU I. KARTA PRZEDMIOTU 1. Nazwa przedmiotu: TECHNOLOGIA INFORMACYJNA 2. Kod przedmiotu: Ot 3. Jednostka prowadząca: Wydział Mechaniczno-Elektryczny 4. Kierunek: Automatyka i Robotyka 5. Specjalność: Elektroautomatyka

Bardziej szczegółowo

Wykład I: Kodowanie liczb w systemach binarnych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wykład I: Kodowanie liczb w systemach binarnych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład I: Kodowanie liczb w systemach binarnych 1 Część 1 Dlaczego system binarny? 2 I. Dlaczego system binarny? Pojęcie bitu Bit jednostka informacji

Bardziej szczegółowo

PROGRAM STUDIÓW WYŻSZYCH ROZPOCZYNAJĄCYCH SIĘ W ROKU AKADEMICKIM 2015/2016

PROGRAM STUDIÓW WYŻSZYCH ROZPOCZYNAJĄCYCH SIĘ W ROKU AKADEMICKIM 2015/2016 PROGRAM STUDIÓW WYŻSZYCH ROZPOCZYNAJĄCYCH SIĘ W ROKU AKADEMICKIM 2015/2016 data zatwierdzenia przez Radę Wydziału kod programu studiów pieczęć i podpis dziekana Wydział Matematyczno-Fizyczno-Techniczny

Bardziej szczegółowo

Baza danych to zbiór wzajemnie powiązanych ze sobą i zintegrowanych danych z pewnej dziedziny.

Baza danych to zbiór wzajemnie powiązanych ze sobą i zintegrowanych danych z pewnej dziedziny. PI-14 01/12 Baza danych to zbiór wzajemnie powiązanych ze sobą i zintegrowanych danych z pewnej dziedziny.! Likwidacja lub znaczne ograniczenie redundancji (powtarzania się) danych! Integracja danych!

Bardziej szczegółowo

Projektowanie inżynierskie Engineering Design

Projektowanie inżynierskie Engineering Design KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2013/201 Projektowanie inżynierskie Engineering Design A. USYTUOWANIE MODUŁU W

Bardziej szczegółowo

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU I. KARTA PRZEDMIOTU. Nazwa przedmiotu: TECHNOLOGIA INFORMACYJNA 2. Kod przedmiotu: Ot 3. Jednostka prowadząca: Wydział Mechaniczno-Elektryczny 4. Kierunek: Mechanika i budowa maszyn 5. Specjalność: Eksploatacja

Bardziej szczegółowo

kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr VI semestr letni (semestr zimowy / letni)

kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr VI semestr letni (semestr zimowy / letni) Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu ETI 6/8 Nazwa modułu Komputerowe wspomaganie prac inżynierskich Computer aided engineering

Bardziej szczegółowo

Podsumowanie wyników ankiety

Podsumowanie wyników ankiety SPRAWOZDANIE Kierunkowego Zespołu ds. Programów Kształcenia dla kierunku Informatyka dotyczące ankiet samooceny osiągnięcia przez absolwentów kierunkowych efektów kształcenia po ukończeniu studiów w roku

Bardziej szczegółowo

UCHWAŁA NR 46/2013. Senatu Akademii Marynarki Wojennej im. Bohaterów Westerplatte z dnia 19 września 2013 roku

UCHWAŁA NR 46/2013. Senatu Akademii Marynarki Wojennej im. Bohaterów Westerplatte z dnia 19 września 2013 roku UCHWAŁA NR 46/2013 Senatu Akademii Marynarki Wojennej im. Bohaterów Westerplatte z dnia 19 września 2013 roku w sprawie: korekty efektów kształcenia dla kierunku informatyka Na podstawie ustawy z dnia

Bardziej szczegółowo

EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW

EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW WYDZIAŁ KIERUNEK z obszaru nauk POZIOM KSZTAŁCENIA FORMA STUDIÓW PROFIL JĘZYK STUDIÓW Podstawowych Problemów Techniki Informatyka technicznych 6 poziom, studia inżynierskie

Bardziej szczegółowo

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10). Wprowadzenie do inżynierii przetwarzania informacji. Ćwiczenie 1. Systemy liczbowe Cel dydaktyczny: Poznanie zasad reprezentacji liczb w systemach pozycyjnych o różnych podstawach. Kodowanie liczb dziesiętnych

Bardziej szczegółowo

Techniki multimedialne

Techniki multimedialne Techniki multimedialne Digitalizacja podstawą rozwoju systemów multimedialnych. Digitalizacja czyli obróbka cyfrowa oznacza przetwarzanie wszystkich typów informacji - słów, dźwięków, ilustracji, wideo

Bardziej szczegółowo

KIERUNKOWE EFEKTY KSZTAŁCENIA

KIERUNKOWE EFEKTY KSZTAŁCENIA WYDZIAŁ INFORMATYKI I ZARZĄDZANIA Kierunek studiów: INFORMATYKA Stopień studiów: STUDIA II STOPNIA Obszar Wiedzy/Kształcenia: OBSZAR NAUK TECHNICZNYCH Obszar nauki: DZIEDZINA NAUK TECHNICZNYCH Dyscyplina

Bardziej szczegółowo

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni Akademia Morska w Gdyni Gdynia 2004 1. Podstawowe definicje Baza danych to uporządkowany zbiór danych umożliwiający łatwe przeszukiwanie i aktualizację. System zarządzania bazą danych (DBMS) to oprogramowanie

Bardziej szczegółowo

Efekty kształcenia dla makrokierunku: INFORMATYKA STOSOWANA Z KOMPUTEROWĄ NAUKĄ O MATERIAŁACH Wydział: MECHANICZNY TECHNOLOGICZNY

Efekty kształcenia dla makrokierunku: INFORMATYKA STOSOWANA Z KOMPUTEROWĄ NAUKĄ O MATERIAŁACH Wydział: MECHANICZNY TECHNOLOGICZNY Efekty kształcenia dla makrokierunku: INFORMATYKA STOSOWANA Z KOMPUTEROWĄ NAUKĄ O MATERIAŁACH Wydział: MECHANICZNY TECHNOLOGICZNY nazwa kierunku studiów: Makrokierunek: Informatyka stosowana z komputerową

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH Modeling and analysis of computer systems Kierunek: Informatyka Forma studiów: Stacjonarne Rodzaj przedmiotu: Poziom kwalifikacji: obowiązkowy

Bardziej szczegółowo

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa Autorzy scenariusza: SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

Bardziej szczegółowo

Uchwała obowiązuje od dnia podjęcia przez Senat. Traci moc Uchwała nr 144/06/2013 Senatu Uniwersytetu Rzeszowskiego z 27 czerwca 2013 r.

Uchwała obowiązuje od dnia podjęcia przez Senat. Traci moc Uchwała nr 144/06/2013 Senatu Uniwersytetu Rzeszowskiego z 27 czerwca 2013 r. Rektor Uniwersytetu Rzeszowskiego al. Rejtana 16c; 35-959 Rzeszów tel.: + 48 17 872 10 00 (centrala) + 48 17 872 10 10 fax: + 48 17 872 12 65 e-mail: rektorur@ur.edu.pl Uchwała nr 282/03/2014 Senatu Uniwersytetu

Bardziej szczegółowo

Spis treści. Analiza i modelowanie_nowicki, Chomiak_Księga1.indb :03:08

Spis treści. Analiza i modelowanie_nowicki, Chomiak_Księga1.indb :03:08 Spis treści Wstęp.............................................................. 7 Część I Podstawy analizy i modelowania systemów 1. Charakterystyka systemów informacyjnych....................... 13 1.1.

Bardziej szczegółowo

Sylwetki absolwenta kierunku Informatyka dla poszczególnych specjalności :

Sylwetki absolwenta kierunku Informatyka dla poszczególnych specjalności : INFORMATYKA Studia I stopnia Celem kształcenia na I stopniu studiów kierunku Informatyka jest odpowiednie przygotowanie absolwenta z zakresu ogólnych zagadnień informatyki. Absolwent powinien dobrze rozumieć

Bardziej szczegółowo

Kierunek Informatyka. Specjalność Systemy i sieci komputerowe. Specjalność Systemy multimedialne i internetowe

Kierunek Informatyka. Specjalność Systemy i sieci komputerowe. Specjalność Systemy multimedialne i internetowe Kierunek Informatyka Studiowanie na kierunku Informatyka daje absolwentom dobre podstawy z zakresu matematyki, fizyki, elektroniki i metrologii, teorii informacji, języka angielskiego oraz wybranych zagadnień

Bardziej szczegółowo

Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne

Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH Kierunek: Informatyka Modeling and analysis of computer systems Forma studiów: Stacjonarne Rodzaj przedmiotu: obowiązkowy w ramach specjalności:

Bardziej szczegółowo

Opis podstawowych modułów

Opis podstawowych modułów Opis podstawowych modułów Ofertowanie: Moduł przeznaczony jest dla działów handlowych, pozwala na rejestrację historii wysłanych ofert i istotnych zdarzeń w kontaktach z kontrahentem. Moduł jest szczególnie

Bardziej szczegółowo

KATALOG PRZEDMIOTÓW (PAKIET INFORMACYJNY ECTS) KIERUNEK INFORMATYKA STUDIA PIERWSZEGO STOPNIA

KATALOG PRZEDMIOTÓW (PAKIET INFORMACYJNY ECTS) KIERUNEK INFORMATYKA STUDIA PIERWSZEGO STOPNIA KATALOG PRZEDMIOTÓW (PAKIET INFORMACYJNY ECTS) KIERUNEK INFORMATYKA STUDIA PIERWSZEGO STOPNIA Legnica 2011/2012 Kierunek Informatyka Studiowanie na kierunku Informatyka daje absolwentom dobre podstawy

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Podniesienie poziomu wiedzy studentów z inżynierii oprogramowania w zakresie C.

Bardziej szczegółowo

Narzędzia Informatyki w biznesie

Narzędzia Informatyki w biznesie Narzędzia Informatyki w biznesie Przedstawiony program specjalności obejmuje obszary wiedzy informatycznej (wraz z stosowanymi w nich technikami i narzędziami), które wydają się być najistotniejsze w kontekście

Bardziej szczegółowo

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym konceptualnym modelem danych jest tzw. model związków encji (ERM

Bardziej szczegółowo

Ćwiczenie nr 4 INSTRUKCJA LABORATORYJNA

Ćwiczenie nr 4 INSTRUKCJA LABORATORYJNA WAT - WYDZIAŁ ELEKTRONIKI INSTYTUT SYSTEMÓW ELEKTRONICZNYCH ZAKŁAD EKSPLOATACJI SYSTEMÓW ELEKTRONICZNYCH Przedmiot: Konstrukcja Urządzeń Elektronicznych Ćwiczenie nr 4 INSTRUKCJA LABORATORYJNA Temat: PROJEKTOWANIE

Bardziej szczegółowo

WYDZIAŁ TRANSPORTU I INFORMATYKI MECHANIKA I BUDOWA MASZYN I STOPIEŃ PRAKTYCZNY

WYDZIAŁ TRANSPORTU I INFORMATYKI MECHANIKA I BUDOWA MASZYN I STOPIEŃ PRAKTYCZNY WYDZIAŁ TRANSPORTU I INFORMATYKI Nazwa kierunku Poziom Profil Symbole efektów na kierunku K_W01 K _W 02 K _W03 K _W04 K _W05 K _W06 MECHANIKA I BUDOWA MASZYN I STOPIEŃ PRAKTYCZNY Efekty - opis słowny Po

Bardziej szczegółowo

KIERUNKOWE EFEKTY KSZTAŁCENIA

KIERUNKOWE EFEKTY KSZTAŁCENIA WYDZIAŁ INFORMATYKI I ZARZĄDZANIA Kierunek studiów: INFORMATYKA Stopień studiów: STUDIA I STOPNIA Obszar Wiedzy/Kształcenia: OBSZAR NAUK TECHNICZNYCH Obszar nauki: DZIEDZINA NAUK TECHNICZNYCH Dyscyplina

Bardziej szczegółowo

Mechanika i Budowa Maszyn I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Mechanika i Budowa Maszyn I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2015/2016

Bardziej szczegółowo

Projektowanie inżynierskie Engineering Design

Projektowanie inżynierskie Engineering Design Załącznik nr 7 do Zarządzenia Rektora nr 10/1 z dnia 1 lutego 01r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu ETI 6/1 Nazwa modułu Projektowanie inżynierskie Engineering Design Nazwa modułu w języku angielskim

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: Podstawy Informatyki Basic Informatics Kierunek: Zarządzanie i Inżynieria Produkcji Rodzaj przedmiotu: ogólny Poziom studiów: studia I stopnia forma studiów: studia stacjonarne Rodzaj

Bardziej szczegółowo

Odniesienie do obszarowych efektów kształcenia 1 2 3. Kierunkowe efekty kształcenia WIEDZA (W)

Odniesienie do obszarowych efektów kształcenia 1 2 3. Kierunkowe efekty kształcenia WIEDZA (W) EFEKTY KSZTAŁCENIA NA KIERUNKU "MECHATRONIKA" nazwa kierunku studiów: Mechatronika poziom kształcenia: studia pierwszego stopnia profil kształcenia: ogólnoakademicki symbol kierunkowych efektów kształcenia

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: Bazy danych Database Kierunek: Rodzaj przedmiotu: obieralny Rodzaj zajęć: wykład, laboratorium Matematyka Poziom kwalifikacji: I stopnia Liczba godzin/tydzień: 2W, 2L Semestr: III Liczba

Bardziej szczegółowo

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II Zespół TI Instytut Informatyki Uniwersytet Wrocławski ti@ii.uni.wroc.pl http://www.wsip.com.pl/serwisy/ti/ Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II Rozkład wymagający

Bardziej szczegółowo

Transformacja wiedzy w budowie i eksploatacji maszyn

Transformacja wiedzy w budowie i eksploatacji maszyn Uniwersytet Technologiczno Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy Wydział Mechaniczny Transformacja wiedzy w budowie i eksploatacji maszyn Bogdan ŻÓŁTOWSKI W pracy przedstawiono proces

Bardziej szczegółowo

prawda symbol WIEDZA DANE komunikat fałsz liczba INFORMACJA (nie tyko w informatyce) kod znak wiadomość ENTROPIA forma przekaz

prawda symbol WIEDZA DANE komunikat fałsz liczba INFORMACJA (nie tyko w informatyce) kod znak wiadomość ENTROPIA forma przekaz WIEDZA prawda komunikat symbol DANE fałsz kod INFORMACJA (nie tyko w informatyce) liczba znak forma ENTROPIA przekaz wiadomość Czy żyjemy w erze informacji? TAK Bo używamy nowego rodzaju maszyn maszyn

Bardziej szczegółowo

a) Szczegółowe efekty kształcenia i ich odniesienie do opisu efektów

a) Szczegółowe efekty kształcenia i ich odniesienie do opisu efektów 1. PROGRAM KSZTAŁCENIA 1) OPIS EFEKTÓW KSZTAŁCENIA a) Szczegółowe efekty kształcenia i ich odniesienie do opisu efektów kształcenia dla obszaru nauk społecznych i technicznych Objaśnienie oznaczeń: I efekty

Bardziej szczegółowo

INFORMATYKA. PLAN STUDIÓW STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2019/2020.

INFORMATYKA. PLAN STUDIÓW STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2019/2020. PLAN STUDIÓ STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA 2019-2023 STUDIA ROZPOCZYNAJĄCE SIĘ ROKU AKADEMICKIM 2019/2020 Semestr I stęp do matematyki 20 20 zal z oc. 3 Podstawy programowania* 20 45 65 zal z

Bardziej szczegółowo

Opis efektów kształcenia dla modułu zajęć

Opis efektów kształcenia dla modułu zajęć Nazwa modułu: Formalne podstawy informatyki Rok akademicki: 2013/2014 Kod: EIB-1-220-s Punkty ECTS: 2 Wydział: Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Kierunek: Inżynieria Biomedyczna

Bardziej szczegółowo

Rozkład materiału do realizacji informatyki w szkole ponadgimnazjalnej w zakresie rozszerzonym

Rozkład materiału do realizacji informatyki w szkole ponadgimnazjalnej w zakresie rozszerzonym Rozkład materiału do realizacji informatyki w szkole ponadgimnazjalnej w zakresie rozszerzonym opracowany na podstawie podręcznika, MIGRA 2013 Autor: Grażyna Koba W rozporządzeniu Ministra Edukacji Narodowej

Bardziej szczegółowo

Uchwała Nr 59/2016/IX Senatu Politechniki Lubelskiej z dnia 15 grudnia 2016 r.

Uchwała Nr 59/2016/IX Senatu Politechniki Lubelskiej z dnia 15 grudnia 2016 r. Uchwała Nr 59/2016/IX Senatu Politechniki Lubelskiej z dnia 15 grudnia 2016 r. w sprawie określenia efektów kształcenia dla studiów podyplomowych Grafika komputerowa w technice i reklamie prowadzonych

Bardziej szczegółowo

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL Podstawy baz danych: Rysunek 1. Tradycyjne systemy danych 1- Obsługa wejścia 2- Przechowywanie danych 3- Funkcje użytkowe 4- Obsługa wyjścia Ewolucja baz danych: Fragment świata rzeczywistego System przetwarzania

Bardziej szczegółowo

Kierunek: INFORMATYKA Specjalność PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH I SIECI KOMPUTEROWYCH

Kierunek: INFORMATYKA Specjalność PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH I SIECI KOMPUTEROWYCH Załącznik nr 7 do Uchwały nr 42 Rady WMiI z dnia 13 czerwca 2017 roku Kierunek: INFORMATYKA Specjalność PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH I SIECI KOMPUTEROWYCH Profil kształcenia: ogólnoakademicki

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: Podstawy Projektowania Foundation of design in technical engineering Kierunek: Zarządzanie i Inżynieria Produkcji Rodzaj przedmiotu: Poziom studiów: obowiązkowy studia I stopnia Rodzaj

Bardziej szczegółowo

Zakładane efekty kształcenia dla kierunku

Zakładane efekty kształcenia dla kierunku Załącznik nr 1a do wytycznych dla rad podstawowych jednostek organizacyjnych do tworzenia nowych i weryfikacji istniejących programów studiów I i II stopnia w UTP w Bydgoszczy Zakładane efekty kształcenia

Bardziej szczegółowo

Wymagania ogólne. Załącznik nr 1 do Uchwały nr 42 Rady WMiI z dnia 13 czerwca 2017 roku

Wymagania ogólne. Załącznik nr 1 do Uchwały nr 42 Rady WMiI z dnia 13 czerwca 2017 roku Załącznik nr 1 do Uchwały nr 42 Rady WMiI z dnia 13 czerwca 2017 roku Kierunek: INFORMATYKA Specjalność PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH I SIECI KOMPUTEROWYCH Profil kształcenia: ogólnoakademicki

Bardziej szczegółowo

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I Zespół TI Instytut Informatyki Uniwersytet Wrocławski ti@ii.uni.wroc.pl http://www.wsip.com.pl/serwisy/ti/ Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I Rozkład zgodny

Bardziej szczegółowo

Po ukończeniu studiów pierwszego stopnia absolwent studiów I stopnia na kierunku fizyka techniczna: WIEDZA

Po ukończeniu studiów pierwszego stopnia absolwent studiów I stopnia na kierunku fizyka techniczna: WIEDZA Załącznik nr 2 Efekty kształcenia dla kierunku studiów FIZYKA TECHNICZNA - studia I stopnia, inżynierskie, profil ogólnoakademicki - i ich odniesienia do efektów kształcenia w obszarze nauk ścisłych oraz

Bardziej szczegółowo

Odniesienie do efektów kształcenia dla obszaru nauk EFEKTY KSZTAŁCENIA Symbol

Odniesienie do efektów kształcenia dla obszaru nauk EFEKTY KSZTAŁCENIA Symbol KIERUNKOWE EFEKTY KSZTAŁCENIA Wydział Informatyki i Zarządzania Kierunek studiów INFORMATYKA (INF) Stopień studiów - pierwszy Profil studiów - ogólnoakademicki Projekt v1.0 z 18.02.2015 Odniesienie do

Bardziej szczegółowo

Kierunek: INFORMATYKA Specjalność: TECHNIKI MULTIMEDIALNE

Kierunek: INFORMATYKA Specjalność: TECHNIKI MULTIMEDIALNE Kierunek: INFORMATYKA Specjalność: TECHNIKI MULTIMEDIALNE Profil kształcenia: ogólnoakademicki Forma studiów: niestacjonarne Forma kształcenia/poziom studiów: II stopnia Uzyskane kwalifikacje: II stopnia

Bardziej szczegółowo

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015 Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015 1 Metody numeryczne Dział matematyki Metody rozwiązywania problemów matematycznych za pomocą operacji na liczbach. Otrzymywane

Bardziej szczegółowo

zna podstawową terminologię w języku obcym umożliwiającą komunikację w środowisku zawodowym

zna podstawową terminologię w języku obcym umożliwiającą komunikację w środowisku zawodowym Wykaz kierunkowych efektów kształcenia PROGRAM KSZTAŁCENIA: Kierunek Edukacja techniczno-informatyczna POZIOM KSZTAŁCENIA: studia pierwszego stopnia PROFIL KSZTAŁCENIA: praktyczny Przyporządkowanie kierunku

Bardziej szczegółowo

Efekt kształcenia. Wiedza

Efekt kształcenia. Wiedza Efekty dla studiów drugiego stopnia profil ogólnoakademicki na kierunku Informatyka na specjalności Przetwarzanie i analiza danych, na Wydziale Matematyki i Nauk Informacyjnych, gdzie: * Odniesienie oznacza

Bardziej szczegółowo

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas Analiza i projektowanie obiektowe 2016/2017 Wykład 10: Tworzenie projektowego diagramu klas Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Projektowy

Bardziej szczegółowo

Efekty kształcenia dla kierunku studiów INFORMATYKA, Absolwent studiów I stopnia kierunku Informatyka WIEDZA

Efekty kształcenia dla kierunku studiów INFORMATYKA, Absolwent studiów I stopnia kierunku Informatyka WIEDZA Symbol Efekty kształcenia dla kierunku studiów INFORMATYKA, specjalność: 1) Sieciowe systemy informatyczne. 2) Bazy danych Absolwent studiów I stopnia kierunku Informatyka WIEDZA Ma wiedzę z matematyki

Bardziej szczegółowo

[1] [2] [3] [4] [5] [6] Wiedza

[1] [2] [3] [4] [5] [6] Wiedza 3) Efekty dla studiów drugiego stopnia - profil ogólnoakademicki na kierunku Informatyka w języku angielskim (Computer Science) na specjalności Sztuczna inteligencja (Artificial Intelligence) na Wydziale

Bardziej szczegółowo

Wydział Matematyki Stosowanej. Politechniki Śląskiej w Gliwicach

Wydział Matematyki Stosowanej. Politechniki Śląskiej w Gliwicach Wydział Matematyki Stosowanej Politechniki Śląskiej w Gliwicach Wydział Matematyki Stosowanej jeden z 13 wydziałów Politechniki Śląskiej w Gliwicach. Od kilkunastu lat główną siedzibą Wydziału oraz Instytutu

Bardziej szczegółowo

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika: PRZYPOMNIJ SOBIE! Matematyka: Dodawanie i odejmowanie "pod kreską". Elektronika: Sygnały cyfrowe. Zasadę pracy tranzystorów bipolarnych i unipolarnych. 12. Wprowadzenie 12.1. Sygnały techniki cyfrowej

Bardziej szczegółowo

WIEDZA T1P_W06. K_W01 ma podstawową wiedzę o zarządzaniu jako nauce, jej miejscu w systemie nauk i relacjach do innych nauk;

WIEDZA T1P_W06. K_W01 ma podstawową wiedzę o zarządzaniu jako nauce, jej miejscu w systemie nauk i relacjach do innych nauk; SYMBOL Efekty kształcenia dla kierunku studiów: inżynieria zarządzania; Po ukończeniu studiów pierwszego stopnia na kierunku inżynieria zarządzania, absolwent: Odniesienie do obszarowych efektów kształcenia

Bardziej szczegółowo

Zakładane efekty kształcenia dla kierunku Wydział Telekomunikacji, Informatyki i Elektrotechniki

Zakładane efekty kształcenia dla kierunku Wydział Telekomunikacji, Informatyki i Elektrotechniki Jednostka prowadząca kierunek studiów Nazwa kierunku studiów Specjalności Obszar kształcenia Profil kształcenia Poziom kształcenia Forma kształcenia Tytuł zawodowy uzyskiwany przez absolwenta Dziedziny

Bardziej szczegółowo

Arytmetyka komputera

Arytmetyka komputera Arytmetyka komputera Systemy zapisu liczb System dziesiętny Podstawą układu dziesiętnego jest liczba 10, a wszystkie liczby można zapisywać dziesięcioma cyframi: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Jednostka

Bardziej szczegółowo

PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA DLA KIERUNKU MATEMATYKA NA WYDZIALE MATEMATYKI, INFORMATYKI I EKONOMETRII UNIWERSYTETU ZIELONOGÓRSKIEGO

PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA DLA KIERUNKU MATEMATYKA NA WYDZIALE MATEMATYKI, INFORMATYKI I EKONOMETRII UNIWERSYTETU ZIELONOGÓRSKIEGO PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA DLA KIERUNKU MATEMATYKA NA WYDZIALE MATEMATYKI, INFORMATYKI I EKONOMETRII UNIWERSYTETU ZIELONOGÓRSKIEGO rekrutacja w roku akademickim 2011/2012 Zatwierdzono:

Bardziej szczegółowo

Uchwała Nr./2012 Senatu Państwowej Wyższej Szkoły Zawodowej w Nowym Sączu z dnia 29 czerwca 2012 r.

Uchwała Nr./2012 Senatu Państwowej Wyższej Szkoły Zawodowej w Nowym Sączu z dnia 29 czerwca 2012 r. PSP.40-17/12 (projekt) Uchwała Nr./2012 Senatu Państwowej Wyższej Szkoły Zawodowej w Nowym Sączu z dnia 29 czerwca 2012 r. w sprawie uchwalenia programu kształcenia dla studiów podyplomowych Grafika inżynierska

Bardziej szczegółowo

Grafika inżynierska i podstawy projektowania Kod przedmiotu

Grafika inżynierska i podstawy projektowania Kod przedmiotu Grafika inżynierska i podstawy projektowania - opis przedmiotu Informacje ogólne Nazwa przedmiotu Grafika inżynierska i podstawy projektowania Kod przedmiotu 06.9-WM-BHP-P-18_14L_pNadGenAF7UG Wydział Kierunek

Bardziej szczegółowo

Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej.

Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej. Efekty dla studiów pierwszego stopnia profil ogólnoakademicki na kierunku Informatyka w języku polskim i w języku angielskim (Computer Science) na Wydziale Matematyki i Nauk Informacyjnych, gdzie: * Odniesienie-

Bardziej szczegółowo

OPERATOR OBRABIAREK SKRAWAJĄCYCH

OPERATOR OBRABIAREK SKRAWAJĄCYCH OPERATOR OBRABIAREK SKRAWAJĄCYCH Operator obrabiarek skrawających jest to zawód występujący także pod nazwą tokarz, frezer, szlifierz. Osoba o takich kwalifikacjach potrafi wykonywać detale z różnych materiałów

Bardziej szczegółowo

PROGRAM STUDIÓW WYŻSZYCH ROZPOCZYNAJĄCYCH SIĘ W ROKU AKADEMICKIM 2015/16

PROGRAM STUDIÓW WYŻSZYCH ROZPOCZYNAJĄCYCH SIĘ W ROKU AKADEMICKIM 2015/16 PROGRAM STUDIÓW WYŻSZYCH ROZPOCZYNAJĄCYCH SIĘ W ROKU AKADEMICKIM 2015/16 data zatwierdzenia przez Radę Wydziału kod programu studiów pieczęć i podpis dziekana Wydział Matematyczno-Fizyczno-Techniczny Studia

Bardziej szczegółowo

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Krzysztof Kadowski. PL-E3579, PL-EA0312, Krzysztof Kadowski PL-E3579, PL-EA0312, kadowski@jkk.edu.pl Bazą danych nazywamy zbiór informacji w postaci tabel oraz narzędzi stosowanych do gromadzenia, przekształcania oraz wyszukiwania danych. Baza

Bardziej szczegółowo

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI

Dr inż. Grażyna KRUPIŃSKA.  D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl http://orion.fis.agh.edu.pl/~grazyna/ D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI Plan wykładu 2 Wprowadzenie, trochę historii, systemy liczbowe

Bardziej szczegółowo

Rok akademicki: 2014/2015 Kod: CCB s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Rok akademicki: 2014/2015 Kod: CCB s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: - Nazwa modułu: Technologie informacyjne Rok akademicki: 2014/2015 Kod: CCB-1-104-s Punkty ECTS: 3 Wydział: Inżynierii Materiałowej i Ceramiki Kierunek: Chemia Budowlana Specjalność: - Poziom studiów: Studia

Bardziej szczegółowo

L6.1 Systemy liczenia stosowane w informatyce

L6.1 Systemy liczenia stosowane w informatyce L6.1 Systemy liczenia stosowane w informatyce Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Publikacja jest dystrybuowana bezpłatnie Program Operacyjny Kapitał

Bardziej szczegółowo

PROGRAM KSZTAŁCENIA NA STUDIACH III STOPNIA Informatyka (nazwa kierunku)

PROGRAM KSZTAŁCENIA NA STUDIACH III STOPNIA Informatyka (nazwa kierunku) PROGRAM KSZTAŁCENIA NA STUDIACH III STOPNIA Informatyka (nazwa kierunku) 1. OPIS ZAKŁADANYCH EFEKTÓW KSZTAŁCENIA: 1) Tabela odniesień kierunkowych efektów kształcenia (EKK) do obszarowych efektów kształcenia

Bardziej szczegółowo

Plan nauczania informatyki Opracował: mgr Daniel Starego

Plan nauczania informatyki Opracował: mgr Daniel Starego Obowiązuje od roku szkolnego 000/00 Plan nauczania informatyki Opracował: mgr Daniel Starego Szkoła podstawowa klasy IV VI Dział, tematyka L. godz. I rok II rok. TECHNIKA KOMPUTEROWA W ŻYCIU CZŁOWIEKA

Bardziej szczegółowo

INŻYNIERIA OPROGRAMOWANIA

INŻYNIERIA OPROGRAMOWANIA INSTYTUT INFORMATYKI STOSOWANEJ 2013 INŻYNIERIA OPROGRAMOWANIA Inżynieria Oprogramowania Proces ukierunkowany na wytworzenie oprogramowania Jak? Kto? Kiedy? Co? W jaki sposób? Metodyka Zespół Narzędzia

Bardziej szczegółowo

Grafika inżynierska - opis przedmiotu

Grafika inżynierska - opis przedmiotu Grafika inżynierska - opis przedmiotu Informacje ogólne Nazwa przedmiotu Grafika inżynierska Kod przedmiotu 06.9-WM-IBezp-P-14_15L_pNadGenXQK7T Wydział Kierunek Wydział Mechaniczny Inżynieria bezpieczeństwa

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW INFORMATYKA

EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW INFORMATYKA EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW INFORMATYKA poziom kształcenia profil kształcenia tytuł zawodowy uzyskiwany przez absolwenta studia drugiego stopnia ogólnoakademicki magister inżynier 1. Umiejscowienie

Bardziej szczegółowo

Roman Mocek Zabrze 01.09.2007 Opracowanie zbiorcze ze źródeł Scholaris i CKE

Roman Mocek Zabrze 01.09.2007 Opracowanie zbiorcze ze źródeł Scholaris i CKE Różnice między podstawą programową z przedmiotu Technologia informacyjna", a standardami wymagań będącymi podstawą przeprowadzania egzaminu maturalnego z przedmiotu Informatyka" I.WIADOMOŚCI I ROZUMIENIE

Bardziej szczegółowo

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy 1 Wprowadzenie do informatyki i użytkowania komputerów Kodowanie informacji System komputerowy Kodowanie informacji 2 Co to jest? bit, bajt, kod ASCII. Jak działa system komputerowy? Co to jest? pamięć

Bardziej szczegółowo

Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy. Dokumentacja specjalności. Sieci komputerowe

Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy. Dokumentacja specjalności. Sieci komputerowe Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Dokumentacja specjalności Sieci komputerowe prowadzonej w ramach kierunku Informatykana wydziale Informatyki 1. Dane ogólne Nazwa kierunku: Informatyka

Bardziej szczegółowo

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki

Bardziej szczegółowo

KIERUNKOWE EFEKTY KSZTAŁCENIA

KIERUNKOWE EFEKTY KSZTAŁCENIA KIERUNKOWE EFEKTY KSZTAŁCENIA WYDZIAŁ INFORMATYKI I ZARZĄDZANIA Kierunek studiów: INFORMATYKA Stopień studiów: STUDIA II STOPNIA Obszar Wiedzy/Kształcenia: OBSZAR NAUK TECHNICZNYCH Obszar nauki: DZIEDZINA

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE. Grafika inżynierska. Logistyka (inżynierskie) niestacjonarne. I stopnia. dr inż. Marek Krynke. ogólnoakademicki.

PRZEWODNIK PO PRZEDMIOCIE. Grafika inżynierska. Logistyka (inżynierskie) niestacjonarne. I stopnia. dr inż. Marek Krynke. ogólnoakademicki. Politechnika Częstochowska, Wydział Zarządzania PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu Kierunek Forma studiów Poziom kwalifikacji Rok Grafika inżynierska Logistyka (inżynierskie) niestacjonarne I stopnia

Bardziej szczegółowo

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W KONINIE

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W KONINIE CZŁOWIEK NAJLEPSZA INWESTYCJA PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W KONINIE realizuje projekt WZMOCNIENIE POTENCJAŁU PWSZ W KONINIE DROGĄ DO WZROSTU LICZBY ABSOLWENTÓW KIERUNKU O KLUCZOWYM ZNACZENIU DLA GOSPODARKI

Bardziej szczegółowo

Baza danych. Baza danych to:

Baza danych. Baza danych to: Baza danych Baza danych to: zbiór danych o określonej strukturze, zapisany na zewnętrznym nośniku (najczęściej dysku twardym komputera), mogący zaspokoić potrzeby wielu użytkowników korzystających z niego

Bardziej szczegółowo

PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II. Uczeń umie: Świadomie stosować się do zasad regulaminów (P).

PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II. Uczeń umie: Świadomie stosować się do zasad regulaminów (P). PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II DZIAŁ I: KOMPUTER W ŻYCIU CZŁOWIEKA. 1. Lekcja organizacyjna. Zapoznanie uczniów z wymaganiami edukacyjnymi i PSP. 2. Przykłady zastosowań komputerów

Bardziej szczegółowo

Podstawy Informatyki dla Nauczyciela

Podstawy Informatyki dla Nauczyciela Podstawy Informatyki dla Nauczyciela Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 2 1 / 1 Informacja

Bardziej szczegółowo

Uchwała Nr 17/2013/III Senatu Politechniki Lubelskiej z dnia 11 kwietnia 2013 r.

Uchwała Nr 17/2013/III Senatu Politechniki Lubelskiej z dnia 11 kwietnia 2013 r. Uchwała Nr 17/2013/III z dnia 11 kwietnia 2013 r. w sprawie określenia efektów kształcenia dla studiów podyplomowych Projektowanie i Eksploatacja Energooszczędnych Systemów Automatyki Przemysłowej, prowadzonych

Bardziej szczegółowo

PLAN STUDIÓW STACJONARNYCH II STOPNIA

PLAN STUDIÓW STACJONARNYCH II STOPNIA Zał. nr 1 do uchwały nr 77/2009 Rady Wydziału Elektrycznego PB z dnia 24.09.2009 r. POLITECHNIKA BIAŁOSTOCKA WYDZIAŁ ELEKTRYCZNY PLAN STUDIÓW STACJONARNYCH II STOPNIA kierunek studiów ELEKTROTECHNIKA Plan

Bardziej szczegółowo

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH Transport, studia niestacjonarne I stopnia, semestr I Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Adam Wosatko Ewa Pabisek Reprezentacja

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: Zarządzanie produkcją metalurgiczną Management of Metallurgical Production Kierunek: Kod przedmiotu: Zarządzanie i Inżynieria Produkcji ZiIP.PK.OF.3.1. Management and Engineering of Production

Bardziej szczegółowo

Wstęp do informatyki- wykład 1

Wstęp do informatyki- wykład 1 MATEMATYKA 1 Wstęp do informatyki- wykład 1 Systemy liczbowe Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy

Bardziej szczegółowo

WYTYCZNE DOTYCZĄCE REALIZACJI PRAC DYPLOMOWYCH W INSTYTUCIE ORGANIZACJI SYSTEMÓW PRODUKCYJNYCH NA KIERUNKU ZARZĄDZANIE I INŻYNIERIA PRODUKCJI

WYTYCZNE DOTYCZĄCE REALIZACJI PRAC DYPLOMOWYCH W INSTYTUCIE ORGANIZACJI SYSTEMÓW PRODUKCYJNYCH NA KIERUNKU ZARZĄDZANIE I INŻYNIERIA PRODUKCJI Wersja z dnia 1 kwietnia 2015 r. WYTYCZNE DOTYCZĄCE REALIZACJI PRAC DYPLOMOWYCH W INSTYTUCIE ORGANIZACJI SYSTEMÓW PRODUKCYJNYCH NA KIERUNKU ZARZĄDZANIE I INŻYNIERIA PRODUKCJI stanowiące uzupełnienie Zasad

Bardziej szczegółowo

Projektowanie Wirtualne bloki tematyczne PW I

Projektowanie Wirtualne bloki tematyczne PW I Podstawowe zagadnienia egzaminacyjne Projektowanie Wirtualne - część teoretyczna Projektowanie Wirtualne bloki tematyczne PW I 1. Projektowanie wirtualne specyfika procesu projektowania wirtualnego, podstawowe

Bardziej szczegółowo

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych Laboratorium Technologii Informacyjnych Projektowanie Baz Danych Komputerowe bazy danych są obecne podstawowym narzędziem służącym przechowywaniu, przetwarzaniu i analizie danych. Gromadzone są dane w

Bardziej szczegółowo