Wprowadzenie do inżynierii przetwarzania informacji

Podobne dokumenty
1. WSTĘP. Dr inż. Robert Wójcik, p. 313, C-3, tel

Programowanie komputerów

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

algorytm przepis rozwiązania przedstawionego zadania komputer urządzenie, za pomocą którego wykonywane są algorytmy

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

Tranzystor JFET i MOSFET zas. działania

Teoretyczne Podstawy Informatyki

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

LEKCJA TEMAT: Zasada działania komputera.

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

Kod U2 Opracował: Andrzej Nowak

Wstęp do Informatyki. dr inż. Paweł Pełczyński

Techniki multimedialne

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Arytmetyka liczb binarnych

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

dr hab. Joanna Jędrzejowicz Podstawy informatyki i komputeryzacji Gdańska Wyższa Szkoła Humanistyczna

Język ludzki kod maszynowy

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

ćwiczenie 202 Temat: Układy kombinacyjne 1. Cel ćwiczenia

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Architektura komputerów Historia systemów liczących

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Algorytm. a programowanie -

Logiczny model komputera i działanie procesora. Część 1.

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Programowanie sterowników PLC wprowadzenie

Programowanie w języku C++ Grażyna Koba

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

Informatyka. Prowadzący: Dr inż. Sławomir Samolej D102 C, tel: , WWW: ssamolej.prz-rzeszow.

ALGORYTMY I PROGRAMY

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

1.1. Pozycyjne systemy liczbowe

Komputer i urządzenia z nim współpracujące.

Podstawy programowania

INSTYTUT CYBERNETYKI TECHNICZNEJ POLITECHNIKI WROCŁAWSKIEJ ZAKŁAD SZTUCZNEJ INTELIGENCJI I AUTOMATÓW

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Technologie informacyjne - wykład 12 -

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Organizacja typowego mikroprocesora

Języki i metodyka programowania

Cyfrowe układy scalone

Algorytm. Krótka historia algorytmów

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

Definicje. Algorytm to:

Język programowania PASCAL

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Budowa komputera Komputer computer computare

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Historia komputera. Lubię to! - podręcznik

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

O informatyce i jej historii. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Dr inż. Jan Chudzikiewicz Pokój 117/65 Tel Materiały:

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

JAKIE IDEE WPŁYNĘŁY NAJSILNIEJ NA ROZWÓJ I EWOLUCJĘ INFORMATYKI?

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Podstawy programowania wykład

UKŁAD SCALONY. Cyfrowe układy można podzielić ze względu na różne kryteria, na przykład sposób przetwarzania informacji, technologię wykonania.

Podstawy Informatyki Systemy sterowane przepływem argumentów

Wstęp do informatyki- wykład 2

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

Elektronika cyfrowa i mikroprocesory. Dr inż. Aleksander Cianciara

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Programowanie w języku Python. Grażyna Koba

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Zapis liczb binarnych ze znakiem

Budowa i zasada działania komputera. dr Artur Bartoszewski

Pracownia Komputerowa wykład IV

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Podstawy Informatyki dla Nauczyciela

Kodowanie informacji. Kody liczbowe

Informatyka. Michał Rad

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

Technologie Informacyjne

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Stan wysoki (H) i stan niski (L)

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

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

Systemy liczbowe używane w technice komputerowej

Pracownia Komputerowa wyk ad IV

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Wstęp do programowania

Arytmetyka komputera

L6.1 Systemy liczenia stosowane w informatyce

Transkrypt:

Dr inż. Robert Wójcik Wprowadzenie do inżynierii przetwarzania informacji 1. Maszyny i systemy cyfrowe 1.1. Historia komputerów i główne kierunki ich rozwoju 1.2. Reprezentacja informacji w elektronicznych maszynach cyfrowych 1.3. Budowa i zasada działania komputerów 1.4. Metodologia przetwarzania informacji Literatura [1] Skorupski A., Podstawy techniki cyfrowej, WKŁ, Warszawa, 2001. [2] Kaliś A., Podstawy teorii układów logicznych, Wydawnictwo Politechniki Wrocławskiej, Wrocław, 1989. [3] Pieńkos J., Turczyński J., Układy scalone TTL w systemach cyfrowych, WKŁ, Warszawa, 1986. [4] Kącki E., Elektroniczna technika obliczeniowa, PWN, Warszawa, 1986.

1. Maszyny i systemy cyfrowe Współcześnie przetwarzanie informacji jest realizowane w oparciu o elektroniczne maszyny cyfrowe komputery. W systemach cyfrowych informacja jest przechowywana w postaci dwuwartościowych sygnałów dyskretnych, nazywanych sygnałami zerojedynkowymi lub binarnymi. Sekwencje wartości binarnych umożliwiają kodowanie liczb w układzie dwójkowym. Przetwarzanie danych na poziomie układów cyfrowych komputera sprowadza się więc do wykonywania operacji na liczbach binarnych. Najmniejszą jednostką informacji w elektronicznych układach cyfrowych jest bit. Za pomocą pojedynczego bitu można zakodować jeden z dwóch alternatywnych stanów prawdę lub fałsz, 1 albo 0. 1.1. Historia komputerów i główne kierunki ich rozwoju Zdalne przekazywanie dwuwartościowych wiadomości było znane od dawna, np. jako zakrywanie i odkrywanie ogniska lub przesyłanie błysków światła. Za jedną z pierwszych form maszyn liczących można uważać liczydła (np. abakus deska pokryta piaskiem z wyznaczonymi liniami, na których znajdowały się kamienie służące do liczenia). Pierwsze mechaniczne urządzenia do liczenia pojawiły się w XVII wieku. Od tej pory, aż do dzisiaj, wraz z rozwojem nowych technologii następuje ciągły rozwój maszyn liczących. W roku 1623 Wilhelm Schickald skonstruował maszynę umożliwiającą sumowanie liczb kilkucyfrowych; wszystkie mechanizmy urządzenia były zrobione z drewna. W roku 1642 Blaise Pascal zbudował maszynę realizującą operacje dodawania i odejmowania liczb. W roku 1694 G. W. Leibniz opracował maszynę liczącą, która wykonywała cztery działania arytmetyczne; od tej pory datuje się powstanie pierwszego arytmometru; maszyny tego typu były pierwszymi maszynami cyfrowymi produkowanymi seryjnie; w latach 1821-1878 wyprodukowano ich ponad tysiąc. W kolejnych latach wprowadzono szereg ulepszeń arytmometrów. Około roku 1920 wyeliminowano ręczny napęd arytmometru przez zastosowanie silników elektrycznych.

Znaczny rozwój zastosowań cyfrowych maszyn liczących datuje się od 1889 roku, kiedy to H. Hollerith zbudował pierwsze maszyny analityczne, pozwalające na mechanizację prac statystycznych i obrachunkowych. Maszyny te pracowały na zasadzie wykorzystania kart dziurkowanych jako nośników informacji. Wynalazek ten umożliwił zmechanizowanie odczytywania informacji, wykonywania obliczeń w formie wielokrotnych działań i wyprowadzania wyników. Dalszy rozwój maszyn cyfrowych można sklasyfikować z punktu widzenia rozwoju ich konstrukcji. Były to maszyny programowalne w specjalnych językach. Generacje maszyn cyfrowych Generacja zerowa: maszyny cyfrowe zbudowane na przekaźnikach (połączenie szeregowe AND; połączenie równoległe OR); lata 1937-1944 pod kierunkiem H. Aikena powstała pierwsza maszyna cyfrowa, w pełni zautomatyzowana, o nazwie Mark I. Generacja pierwsza: maszyny zbudowane na lampach elektronicznych; w 1942 roku powstała pierwsza na świecie maszyna cyfrowa oparta na technice elektronicznej; maszyna o nazwie ENIAC była wyposażona w 18000 lamp elektronowych; została zaprojektowana przez J.W. Mauchly ego i J. P. Eckerta. Generacja druga: maszyny zbudowane na tranzystorach; pojawienie się pierwszych maszyn tego typu w 1958 roku zapoczątkowało dynamiczny rozwój elektronicznych maszyn cyfrowych, urządzeń peryferyjnych ułatwiających komunikację użytkownika z maszyną oraz algorytmicznych języków programowania. Generacja trzecia: maszyny cyfrowe zbudowane na układach scalonych średniej skali integracji układy MSI (ang. Medium Scale Integration) oraz wielkiej skali integracji układy LSI (ang. Large Scale Integration), będących elementami mikroelektronicznymi; pierwsze maszyny tego typu powstały w 1964 roku. Generacja czwarta: maszyny cyfrowe budowane w oparciu o układy bardzo wysokiej skali integracji VLSI (ang. Very Large Scale Integration); pierwsze maszyny tego typu zaczęły powstawać pod koniec lat 80-tych; współczesne komputery PC są budowane w tej technologii.

Obecnie trwają przygotowania do budowy maszyn piątej generacji, których działanie ma być oparte na zjawiskach elektroniki molekularnej i efektach kwantowo-mechanicznych oraz budowy maszyn biologicznych, wykorzystujących cząsteczki kodu DNA do wykonywania obliczeń. Technologie te umożliwiają w naturalny sposób wprowadzenie obliczeń równoległych oraz zwiększenie pojemności pamięci operacyjnej komputerów. Wpłynie to na zwiększenie efektywności obliczeń. 1.2. Reprezentacja informacji w elektronicznych maszynach cyfrowych W elektronicznych maszynach cyfrowych informacje są przekazywane za pomocą dwóch stanów elektrycznych: brak napięcia (stan niski) i jest napięcie (stan wysoki). Taki dwuwartościowy sposób przedstawiania informacji znany jest jako logika binarna. W praktyce stan niski i stan wysoki są reprezentowane przez pewne zakresy napięć różniące się poziomami (np. w układach TTL stan niski reprezentują wartości napięcia z zakresu 0..0.7 V, natomiast stan wysoki napięcia z zakresu 2.4..5 V). W konwencji logiki dodatniej stanowi wysokiemu odpowiada logiczna jedynka a stanowi niskiemu logiczne 0. Pojedyncza linia przesyłania danych reprezentuje 1 bit informacji, który pozwala zakodować tylko dwa alternatywne stany: stan logiczny 0 i stan logiczny 1. Za pomocą odpowiedniej liczby bitów można zakodować w dwójkowym układzie pozycyjnym dowolną liczbę rzeczywistą. Na przykład liczba rzeczywista R może być zapisana w postaci: R = ±a n-1 a n-2... a 1 a 0. a -1 a -2 a -3..., gdzie a k {0,1} są cyframi w układzie binarnym, n numer pozycji o największej wadze. Wartość R jest obliczana ze wzoru: R = ±(a n-1 2 n-1 + a n-2 2 n-2 +... + a 1 2 1 + a 0 2 0 + a -1 2-1 + a -2 2-2 + a -3 2-3 +...). Na przykład liczba 10.5 w układzie dziesiętnym jest reprezentowana w układzie binarnym w postaci: 10.5 (10) = 1 2 3 + 0 2 2 + 1 2 1 + 0 2 0 + 1 2-1 = 8 + 2 + 0.5 = 1010.1 (2).

W praktyce wszelkie informacje są przedstawiane w maszynach cyfrowych jako ciągi zer i jedynek. Ciąg taki można traktować jako liczbę zapisaną w pozycyjnym systemie dwójkowym. Naturalne jest więc, wykorzystywanie w komputerach reguł arytmetyki binarnej. Również stan dyskretnego systemu sterowania w maszynie cyfrowej daje się w każdej chwili opisać za pomocą skończonych ciągów zer i jedynek. Fakt ten pozwolił konstruktorom na wykorzystanie teorii funkcji boolowskich do opisu systemu sterowania i każdej operacji przetwarzania informacji, zarówno logicznych, jak i arytmetycznych. Realizacja pozycyjnego systemu dwójkowego do przedstawiania liczb oraz dowolnej informacji w maszynie cyfrowej, zapewnia z technicznego punktu widzenia: dużą niezawodność, możliwość przetwarzania danych w układach prostej konstrukcji przy małym prawdopodobieństwie występowania błędów; możliwość miniaturyzacji maszyn cyfrowych dzięki zastosowaniu układów cyfrowych bardzo wysokiej skali integracji VLSI.

1.3. Budowa i zasada działania komputerów Z punktu widzenia organizacji pracy każda uniwersalna elektroniczna maszyna cyfrowa może być rozpatrywana jako urządzenie (system komputerowy) składające się z następujących zasadniczych elementów: jednostki arytmetyczno-logicznej ALU (arytmometr); pamięci operacyjnej wewnętrznej (RAM); pamięci zewnętrznej (np. dyskowej, taśmowej); urządzenia sterującego (US) i pamięci stałej (ROM); układów wejścia / wyjścia. US ALU Pamięć zewnętrzna Pamięć operacyjna (RAM) ROM Wejście Wyjście Przetwarzanie informacji przez maszynę cyfrową sprowadza się do wykonywania podstawowych działań arytmetycznych oraz logicznych na wyrażeniach reprezentujących informację zakodowaną w postaci binarnej. Kolejność wykonywania tych prostych działań jest narzucona maszynie przez tzw. program, który stanowi odpowiednio zakodowany algorytm przetwarzania informacji.

Zasada działania systemu komputerowego Program przetwarzania informacji zostaje wprowadzony do pamięci operacyjnej komputera za pomocą odpowiedniego urządzenia wejścia, np. klawiatury lub wprowadzony do pamięci operacyjnej bezpośrednio z pamięci zewnętrznej (dyskowej), w której wcześniej został zapisany. Program zawarty w pamięci operacyjnej ma zasadniczy wpływ na układ sterowania, który musi tak sterować działaniem maszyny cyfrowej, by zadany algorytm przetwarzania informacji został prawidłowo zrealizowany. Do podejmowania decyzji sterujących są wykorzystywane dane zawarte w pamięci stałej komputera. Jednostka arytmetyczno-logiczna jest urządzeniem wykonującym cztery podstawowe działania arytmetyczne (+,-,*,/) oraz elementarne działania logiczne (suma i iloczyn). Wyniki operacji, realizowanych przez arytmometr zgodnie z programem zapisanym w pamięci operacyjnej, są ponownie zapisywane w pamięci operacyjnej. Wyniki końcowe przetwarzania są wyprowadzane na urządzenie wyjścia w postaci monitora ekranowego lub zapisywane w pamięci dyskowej.

1.4. Metodologia przetwarzania informacji Problem zadanie do rozwiązania. Specyfikacja zadania określenie danych wejściowych oraz wyników, które powinny być uzyskane, a także warunków jakie powinny one spełniać; może zawierać również związki pomiędzy danymi a wynikami; definiuje abstrakcyjny model rzeczywistego problemu. Algorytm jest skończonym ciągiem czynności, które prowadzą do rozwiązania zadania lub osiągnięcia określonego celu. Komputer urządzenie elektroniczne służące do automatycznego przetwarzania danych według zadanego algorytmu. Algorytm sposób przetwarzania danych wejściowych na dane wyjściowe (wyniki) w skończonej liczbie kroków. Algorytm definiuje: abstrakcyjne obiekty, na których wykonywane są działania, reprezentowane przez odpowiednie struktury danych; operacje realizujące cel algorytmu; kolejność wykonywania działań. Program komputerowy algorytm zapisany w odpowiednim języku programowania zrozumiałym przez komputer (np. w języku maszynowym procesora ciąg liczb stanowiących rozkazy i dane dla procesora). Język maszynowy jest trudno przyswajalny przez człowieka, gdyż składa się z liczb reprezentujących instrukcje procesora (programy maszynowe są przechowywane w pamięci komputera w kodzie binarnym). W praktyce algorytmy są zapisywane za pomocą instrukcji języków programowania wyższego poziomu, które udostępniają podstawowe elementy programowania strukturalnego (np. Pascal, C, Java, Fortran, Cobol, Modula). Kod źródłowy kod programu zapisany w języku algorytmicznym, który jest czytelny dla programisty (np. Pascal, C).

Przed wykonaniem program źródłowy należy przetłumaczyć na postać zrozumiałą dla komputera czyli na kod wynikowy. Kod wynikowy - kod pośredni w języku maszynowym, który jest zrozumiały dla komputera; ciąg rozkazów i danych procesora, zapisanych w pamięci komputera w kodzie binarnym. Kod wynikowy jest przekształcany przez program linkera do postaci wykonywalnej. Linker program łączący kody wynikowe odpowiednich modułów programu w kod wykonywalny, który może być wielokrotnie uruchamiany w komputerze. W praktyce linker łączy w jeden plik wykonywalny następujące elementy: pliki wynikowe (obiektowe), otrzymane w wyniku kompilacji modułów programu; standardowy kod startowy programu dla danego systemu operacyjnego; kody wynikowe funkcji, wykorzystywanych w programie, zapisane w odpowiednich bibliotekach. Kod wykonywalny - zawiera liczby, które są pobierane z pamięci komputera przez procesor i interpretowane jako rozkazy podlegające wykonaniu lub jako dane stanowiące argumenty rozkazów. Translator realizuje przekształcenie programu z postaci źródłowej na postać wynikową. Rodzaje translatorów: kompilatory, interpretatory. Kompilator program przetwarzający kod źródłowy na kod wynikowy (kod pośredni w języku maszynowym, który jest zrozumiały dla komputera). Interpretator realizuje translację instrukcji naprzemiennie z ich wykonywaniem; przy zastosowaniu interpretatora każde wykonanie programu jest związane z jego ponowną translacją (np. Basic, SQL).

Plik wydzielony fragment pamięci (najczęściej dyskowej) posiadający nazwę. Z punktu widzenia języków programowania plik jest ciągiem danych o odpowiedniej strukturze (w najprostszym przypadku ciągiem bajtów). Każdy plik posiada rozmiar określony w bajtach. 1 Bajt [B] = 1 znak, 1 KB = 1024 B, 1MB = 1024 KB, 1 GB = 1024 MB. Etapy rozwiązywania problemów z wykorzystaniem komputera Rozwiązywanie problemów z wykorzystaniem komputerów składa się z następujących etapów: specyfikacja problemu, określenie danych wejściowych, określenie celu (wyniku końcowego), analiza problemu i wybór modelu, synteza algorytmu prowadzącego do rozwiązania, przedstawienie algorytmu: - w postaci opisu słownego, - w postaci listy kroków, - w postaci schematu blokowego (postać graficzna algorytmu), - za pomocą jednego z języków formalnych (np. UML). analiza poprawności rozwiązania, ocena efektywności algorytmu (złożoności obliczeniowej), kodowanie algorytmu w postaci instrukcji języka programowania (projekt programu komputerowego), zapis programu do pliku, kompilacja i usuwanie usterek, utworzenie wersji wykonywalnej, automatyczne wykonanie programu w komputerze, analiza wyników. Problem Algorytm Program Komputer Model Kodowanie Plik

Etapy programowania 1. Utworzenie za pomocą edytora tekstu pliku źródłowego zawierającego algorytm zapisany w wybranym języku programowania, np. program.pas (program w języku Pascal), program.cpp (program w języku C++). 2. Kompilacja programu za pomocą kompilatora i utworzenie pliku wynikowego (obiektowego), np. program.obj. 3. Połączenie za pomocą linkera kodu wynikowego programu, kodów wynikowych funkcji bibliotecznych oraz kodu startowego w jeden plik wykonywalny, np. program.exe. DANE Programy (algorytmy) WYNIKI Kod źródłowy programu Kompilacja Kod wynikowy programu Łączenie Kod wykonywalny programu Kod startowy Kod wynikowy z bibliotek System operacyjny komputera zbiór programów sterujących pracą urządzeń wchodzących w skład systemu komputerowego i nadzorujących wykonywanie programów użytkowników. Oprogramowanie użytkowe programy uruchamiane pod kontrolą systemu operacyjnego.

Podczas projektowania algorytmów należy pamiętać, aby opracowywane algorytmy posiadały niską złożoność obliczeniową. Czasowa złożoność obliczeniowa określa liczbę elementarnych kroków obliczeniowych (tzw. operacji elementarnych, np. porównań, sumowań, itp.). Pamięciowa złożoność obliczeniowa określa rozmiar pamięci niezbędnej do wykonania programu. W praktyce złożoność obliczeniową określa się za pomocą funkcji ograniczających z góry ponoszony nakład obliczeniowy, np. O(n), O(nlogn). Algorytmy efektywne posiadają wielomianową lub logarytmiczną złożoność obliczeniową. Przetwarzanie sekwencyjne wykonywanie instrukcji programów kolejno jedna za drugą. Przetwarzanie współbieżne wykonywanie instrukcji programów równocześnie na tym samym procesorze (z podziałem czasu procesora). Przetwarzanie równoległe wykonywanie instrukcji programów równocześnie na różnych procesorach.