030 OPROGRAMOWANIE. Prof. dr hab. Marek Wisła



Podobne dokumenty
Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

System komputerowy. System komputerowy

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

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Język programowania. Andrzej Bobyk

Wstęp do Informatyki. Klasyfikacja oprogramowania

Programowanie komputerów

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

System operacyjny wstęp

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Podstawy programowania

Podstawy Informatyki Systemy operacyjne

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska

(O)programowanie. Wykład 3. Zagadnienia szczegółowe:

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

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

Programowanie w C. dr inż. Stanisław Wszelak

Działanie systemu operacyjnego

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Działanie systemu operacyjnego

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

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

UML w Visual Studio. Michał Ciećwierz

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Języki i paradygmaty programowania - 1

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Działanie systemu operacyjnego

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

SYSTEMY OPERACYJNE. kik.pcz.czest.pl/so. (C) KIK PCz Materiały pomocnicze 1 PROWADZI: PODSTAWOWA LITERATURA: ZAJĘCIA: STRONA

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Podstawy programowania wykład

Programowanie w języku Python. Grażyna Koba

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

PROGRAM PRAKTYKI ZAWODOWEJ. Technikum Zawód: technik informatyk

Java jako język programowania

Podstawa programowa Technik informatyk PODSTAWA PROGRAMOWA KSZTAŁCENIA W ZAWODZIE TECHNIK INFORMATYK SYMBOL CYFROWY 312[01]

Król Łukasz Nr albumu:

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

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

4. Procesy pojęcia podstawowe

Struktury systemów operacyjnych

Środowiska i platformy programistyczne

Narzędzia CASE dla.net. Łukasz Popiel

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

Podstawy Programowania 2

Podstawy programowania III WYKŁAD 4

Tomasz Grześ. Systemy zarządzania treścią

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Programowanie MorphX Ax

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

Wykład 1 Inżynieria Oprogramowania

Systemy operacyjne III

Działanie systemu operacyjnego

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Technologia Informacyjna

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Programowanie na poziomie sprzętu. Programowanie w Windows API

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Podstawy programowania. Wprowadzenie

4. Procesy pojęcia podstawowe

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Jądro systemu operacyjnego

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

Języki i metodyka programowania

Technologie informacyjne - wykład 12 -

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Modelowanie i Programowanie Obiektowe

Wykład I. Wprowadzenie do baz danych

Bazy danych 2. Wykład 1

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


Projektowanie i wdrażanie systemów informatycznych (materiały do wykładu cz. II)

Systemy operacyjne i sieci komputerowe Szymon Wilk System operacyjny 1

Programowanie obiektowe - 1.

Zarządzanie pamięcią operacyjną

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego. Opis oferowanego przedmiotu zamówienia

Java EE produkcja oprogramowania

Historia modeli programowania

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Podstawy programowania.

Komputery przemysłowe i systemy wbudowane

Wprowadzenie do biblioteki klas C++

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

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

1.Wstęp. 2.Generowanie systemu w EDK

Transkrypt:

030 OPROGRAMOWANIE Prof. dr hab. Marek Wisła

Oprogramowanie Oprogramowanie (software) to całość informacji w postaci zestawu instrukcji, zaimplementowanych interfejsów i zintegrowanych danych przeznaczonych dla komputera do realizacji wyznaczonych celów. Celem oprogramowania jest przetwarzanie danych w określonym zakresie. Oprogramowanie jest synonimem terminów program komputerowy oraz aplikacja, przy czym stosuje się je zazwyczaj do określania większych programów oraz ich zbiorów.

Oprogramowanie Oprogramowanie tworzą programiści w procesie programowania. Oprogramowanie jako przejaw twórczości jest chronione prawem autorskim, twórcy zezwalają na korzystanie z niego na warunkach określanych w licencji. Oprogramowanie pisane jest zazwyczaj przy użyciu różnych języków programowania z wykorzystaniem algorytmów.

Podział oprogramowania Podstawowy podział oprogramowania wyróżnia: oprogramowanie systemowe - zestaw programów, które pozwalają zrealizować podstawowe zadania za pomocą komputera, pozwalają zarządzać zasobami systemu komputerowego oraz umożliwiają pracę użytkowników (duża część tego oprogramowania dostarczana jest wraz ze sprzętem) oprogramowanie narzędziowe i użytkowe - programy ułatwiające pracę i poruszanie się użytkownika w systemie komputerowym oprogramowanie aplikacyjne - zestawy programów lub pakietów programowych realizujących konkretne zadania merytoryczne i spełniających określone potrzeby użytkowników komputerów

Oprogramowanie systemowe Oprogramowanie systemowe systemy operacyjne, programy i systemy diagnostyki sprzętu, systemy programowania (translatory), pakiety programów obsługi wielodostępu i sieci komputerowych, pomocnicze programy i pakiety usługowe: programy do kompresji zbiorów, programy antywirusowe, programy archiwizujące.

Oprogramowanie narzędziowe Oprogramowanie narzędziowe i użytkowe edytory tekstów, arkusze kalkulacyjne, narzędzia wspomagające programowanie, bazy danych, programy do tworzenia grafiki komputerowej, programy do tworzenia multimediów (dźwięki, wideo), pakiety organizacji prac biurowych.

Oprogramowanie aplikacyjne Oprogramowanie aplikacyjne obszar użytkowania: indywidualne - wykonane na potrzeby pojedynczego użytkownika, standardowe, powszechne - rozpowszechniane w ramach grupy użytkowników o jednorodnych potrzebach, poziom specjalizacji: pakiety ogólnego przeznaczenia, pakiety specjalizowane - do ściśle określonych celów.

Miejsce oprogramowania w systemie komputerowym

System operacyjny System operacyjny (operating system) to zbiór programów: umożliwiających uruchamianie programów użytkownika, przeznaczonych do dynamicznego zarządzania zasobami komputera i umożliwiających wykorzystanie tych zasobów, umożliwiających wszechstronne wykorzystanie samego sprzętu komputerowego. Gdy użytkownik końcowy uruchamia aplikację, na jej potrzeby przydzielane są zasoby systemu komputerowego. Przydziałem tym zarządza system operacyjny, dzięki czemu można uzyskać stosunkowo duży stopień niezależności programów od konkretnego sprzętu oraz odpowiedni poziom bezpieczeństwa i sprawności działania.

System operacyjny - definicje Per Brinch Hansen: System operacyjny jest zbiorem automatycznych i ręcznych procedur, które pozwalają grupie osób na efektywne współdzielenie urządzeń maszyny cyfrowej. Alan Shaw: System operacyjny (nadzorczy, nadrzędny, sterujący) jest to zorganizowany zespół programów pośredniczących między sprzętem a użytkownikami, dostarczając użytkownikom zestawu środków ułatwiających projektowanie, kodowanie, uruchamianie i eksploatację programów oraz w tym samym czasie sterują przydziałem zasobów dla zapewnienia efektywnego działania.

System operacyjny - definicje Abraham Silberschatz: System operacyjny jest programem, który działa jako pośrednik między użytkownikiem komputera, a sprzętem komputerowym. Zadaniem systemu operacyjnego jest tworzenie środowiska, w którym użytkownik może wykonywać programy w sposób wygodny i wydajny. Andrew Tanenbaum: System operacyjny jest warstwą oprogramowania operującą bezpośrednio na sprzęcie, której celem jest zarządzanie zasobami systemu komputerowego i stworzenie użytkownikowi środowiska łatwiejszego do zrozumienia i wykorzystania.

Zasoby (resources) Zasób systemu komputerowego (resource) to każdy środek, niekoniecznie fizyczny, o który mogą ubiegać się użytkownicy i ich programy, zwykle niezbędny do wykonania przez komputer postawionego mu zadania. Zasoby zarządzane przez system operacyjny: procesor przydział czasu procesora, pamięć alokacja przestrzeni adresowej dla procesów, urządzenia zewnętrzne: alokacja przestrzeni dyskowej, udostępnianie i sterowanie pamięciami zewnętrznymi, udostępnianie i sterowanie urządzeniami zewnętrznymi. informacja (system plików) organizacja i udostępnianie informacji, ochrona i autoryzacja dostępu do informacji.

Procesy Proces to obiekt opisujący pracę systemu komputerowego, któremu przydzielony został czas procesora, własny obszar pamięci operacyjnej oraz zbiór innych, potrzebnych zasobów. Proces określany jest przez kod programu wykonywanego w trakcie swego istnienia: kod programu użytkownika (proces użytkownika), kod systemowy (proces systemowy). Proces może posiadać wiele podobiektów wątków. Wątek to część programu (procesu), która może być wykonywana asynchronicznie, podczas gdy główny kod programu zajmuje się innymi zadaniami. Wątek jest podstawową jednostką, której przydzielony jest czas pracy procesora. Wątki są wykonywane we wspólnej przestrzeni adresowej i współdzielą zasoby.

Sterta Sterta (ang. heap) to obszar pamięci, udostępniony przez system operacyjny na wyłączność uruchomionemu programowi (procesowi) służący do przechowywania zmiennych dynamicznych.

Struktura systemu operacyjnego jądro systemu wykonuje główne zadania systemu powłoka pośredniczy w komunikacji użytkownika z systemem operacyjnym i sprzętem system plików określa sposób zapisu danych na nośnikach

Jądro systemu Jądro systemu (kernel) podstawowa część systemu operacyjnego, wykonuje główne zadania systemu, ukrywa szczegóły sprzętowej realizacji systemu komputerowego: jądro monolityczne wszystkie zadania są wykonywane przez jądro, będące jednym, dużym programem działającym w trybie jądra (Linux), mikrojądro z monolitycznego jądra zostaje tylko jego podstawowa część, części odpowiedzialne za bardziej wyrafinowane funkcje są wydzielone do funkcjonalnych bloków albo realizowane jako zwykłe procesy (Windows), jądro hybrydowe kompromis między architekturą jądra monolitycznego i mikrojądra (Windows).

Powłoka (shell) Powłoka (shell) pośredniczy w komunikacji użytkownika z systemem operacyjnym i sprzętem tworzą ją: interpreter poleceń komunikujący użytkownika z systemem, który: pobiera polecenia od użytkownika. interpretuje polecenia. wykonuje polecenia. przekazuje użytkownikowi wyniki wykonania poleceń oraz informuje o problemach lub błędach. programy systemowe do obsługi poleceń. Przykłady: cmd.exe (Windows), sh (UNIX), KDE (Linux)

Translacja Komputer bez dodatkowego oprogramowania potrafi jedynie wykonywać programy napisane w języku maszynowym. Wszystkie inne programy wymagają przetłumaczenia na język maszynowy. Służą do tego specjalne programy zwane translatorami. Proces tłumaczenia programu z jednego języka na inny nazywa się translacją. Danymi dla tego rodzaju programów jest program źródłowy napisany w języku wysokiego poziomu, a wynikiem jest program w języku maszynowym. Translacja uniezależnia programistę od komputera, procesora i jego języka maszynowego. Dwa główne rodzaje translacji to: kompilacja (z linkowaniem) i interpretacja.

Kompilacja Kompilacja ma miejsce, gdy program zwany kompilatorem tłumaczy (automatycznie) program źródłowy na inny język (język maszynowy lub kod pośredni, np. kod bajtowy), poddając go ewentualnej optymalizacji. Efektem pracy kompilatora jest kod wynikowy.

Linkowanie Po kompilacji następuje tzw. linkowanie (konsolidacja), dołączające do kodu wynikowego niezbędne biblioteki i inne elementy już skompilowane, aby otrzymać wynik końcowy w postaci programu wykonywalnego (.EXE). Kompilator operuje na całym tekście programu źródłowego i generuje tekst przekładu jako całość. Do wykonania programu możemy przystąpić dopiero po zakończeniu procesu kompilacji i linkowania.

Interpretacja Interpretacja ma miejsce, gdy interpreter na bieżąco tłumaczy i wykonuje każdą instrukcję (lub ich bloki) osobno nie czekając na zakończenie całości translacji. Z tego powodu nie jest możliwa optymalizacja kodu i nie uzyskuje się pełnego kodu wynikowego. Ponadto język musi mieć specjalną budowę, aby dał się interpretować. Interpreter jest translatorem, który operuje na poszczególnych jednostkach syntaktycznych programu źródłowego i generuje ich przekłady. Wprowadzony podział na kompilatory i interpretery nie jest sztywny, buduje się bowiem translatory mające cechy zarówno kompilatorów, jak i interpreterów.

Narzędzia wspomagające programowanie Współcześni programiści korzystają z wielu specjalistycznych narzędzi wspomagających tworzenie i zarządzanie złożonymi aplikacjami. Najczęściej stosowane narzędzia to: podświetlanie składni, debugowanie, framework, interfejsy programowania aplikacji, CASE, UML, zintegrowane środowiska programistyczne (IDE).

Podświetlanie, debugowanie Podświetlanie (kolorowanie) składni to wyróżnianie elementów składni kodu źródłowego programu (np. słów kluczowych,) w edytorze tekstu za pomocą koloru oraz atrybutów (funkcja dostępna w większości edytorów programów). Podświetlanie składni znakomicie poprawia czytelność tekstu. Debugowanie to proces systematycznego redukowania liczby błędów w oprogramowaniu, który zazwyczaj polega na kontrolowanym wykonaniu programu pod nadzorem debuggera.

Debugger Debugger to program komputerowy służący do dynamicznej analizy innych programów, w celu odnalezienia i identyfikacji zawartych w nich błędów. Debugger umożliwia: wykonywanie programu w trybie pracy krokowej lub z zastawianiem tzw. pułapek (breakpoints), podglądanie i ewentualną zmianę zawartości rejestrów i komórek pamięci, zlokalizowanie instrukcji odpowiedzialnych za wadliwe działanie programu. Debugger jest standardowym wyposażeniem większości współczesnych środowisk programistycznych.

Framework Framework to struktura wspomagająca tworzenie, rozwój i testowanie powstającej aplikacji. Na framework składają się programy wspomagające, biblioteki kodu źródłowego i inne przydatne narzędzia. Framework to szkielet działania aplikacji, który zapewnia podstawowe mechanizmy i może być wypełniany właściwą treścią programu. ASP.NET (Microsoft) framework służący do budowania dynamicznych stron internetowych, aplikacji internetowych i XML-owych usług sieciowych, część platformy.net Eclipse (IBM) - framework napisany w Javie do tworzenia aplikacji typu Rich Client, zintegrowane środowisko programistyczne do tworzenia programów w Javie.

API Interfejs programowania aplikacji (Application Programming Interface, API) - interfejs programu użytkownika to specyfikacja procedur, funkcji lub interfejsów umożliwiających tworzonej aplikacji komunikację z biblioteką programów, systemem operacyjnym itp. Interfejs API ułatwia proces tworzenia oprogramowania poprzez ukrycie szczegółów implementacyjnych oraz gwarantuje podobny interfejs dla wszystkich opartych na nim aplikacji. Popularne API: Win32 API dla Windows, DirectX - zestaw funkcji API dla generowanie grafiki i dźwięku, OpenGL (Open Graphics Library) - uniwersalne API do generowania grafiki.

CASE CASE (Computer-Aided Software Engineering, Computer- Aided Systems Engineering) to oprogramowanie używane do komputerowego wspomagania projektowania oprogramowania. Funkcje CASE: analiza, projektowanie i programowanie. Narzędzia CASE: automatyzują metody projektowania, dokumentacji oraz tworzenia struktury kodu programu w wybranym języku programowania. Typowe narzędzia CASE: narzędzia do modelowania w języku UML, narzędzia do zarządzania konfiguracją programu zawierające system kontroli wersji służący do śledzenia zmian w kodzie źródłowym oraz pomocy w łączeniu i modyfikacji zmian dokonanych przez wiele osób, narzędzia do wprowadzania zmian w programie.

UML UML (Unified Modeling Language) (Object Management Group) to język formalny służący do opisu świata obiektów w analizie obiektowej oraz programowaniu obiektowym. Służy do opisywania i modelowania fragmentu istniejącej rzeczywistości np. modelowania tego, czym zajmuje się jakiś dział w firmie oraz do modelowania rzeczywistości, która ma dopiero powstać tworzy się w nim głównie modele systemów informatycznych. UML stał się standardowym językiem do tworzenia planów oprogramowania, używanym przez analityków, projektantów i programistów. UML jest używany wraz z jego reprezentacją graficzną jego elementom przypisane są symbole, które wiązane są ze sobą na diagramach UML.

Diagramy UML Modele składają się z obiektów, które wchodzą w interakcje, przesyłając sobie nawzajem komunikaty. Klasy to wzorce obiektów. diagramy przypadków użycia - opisują, co robi system z punktu widzenia zewnętrznego obserwatora diagramy klas - przedstawiają ogólnie klasy i ich wzajemne relacje diagramy obiektów - zamiast klas pokazują ich instancje - obiekty diagramy sekwencji - opisują, jak obiekty ze sobą współpracują diagramy współpracy - skupiają się na rolach obiektów diagramy stanów - pokazują możliwe stany obiektu oraz przejścia, które powodują zmianę stanu diagramy aktywności - pokazują wzajemne zależności między obiektem przechodzącym pewien proces i operacjach związanych z tym procesem diagramy komponentów - są fizycznymi odpowiednikami diagramów klas diagramy wdrożenia - pokazują fizyczną konfigurację oprogramowania i sprzętu

Diagramy UML http://pl.wikipedia.org/wiki/plik:uml_diagrams.jpg

IDE Zintegrowane środowisko programistyczne (Integrated Development Environment, IDE) to aplikacja lub zespół aplikacji (środowisko) służących do tworzenia, modyfikowania, testowania i konserwacji oprogramowania: edycja kodu źródłowego, kompilacja kodu źródłowego, tworzenie zasobów programu (formatek, ekranów, okien dialogowych, menu, raportów, elementów graficznych - ikon itp.), tworzenie baz danych, komponentów i innych.

RAD Narzędzia RAD (Rapid Application Development) są rozwinięciem pomysłu IDE. Wygląd aplikacji projektuje się ustawiając kontrolki w obszarze okna projektowanego programu (np. przy użyciu myszy - przeciągnij i upuść). Przykładowe narzędzia RAD to: Dev-C++ dla języków C i C++, Delphi, Visual Studio i.net dla Windows Kylix dla Linux.

Programowanie zdarzeniowe Programowanie sterowane zdarzeniami (Programowanie zdarzeniowe) jest to metodologia tworzenia programów komputerowych, która określa sposób ich pisania z punktu widzenia procesu przekazywania sterowania między poszczególnymi modułami tej samej aplikacji. Programowanie sterowane zdarzeniami jest mocno powiązane ze środowiskami wieloprocesowymi, z graficznymi środowiskami systemów operacyjnych oraz z programowaniem obiektowym. Jest to odpowiedź na paradygmat programowania, według którego program jest cały czas bombardowany zdarzeniami (events), na które musi odpowiedzieć, i że przepływ sterowania w programie jest całkowicie niemożliwy do przewidzenia z góry.

Programowanie zdarzeniowe Programowanie zdarzeniowe jest dominującym typem programowania GUI zdarzenia to naciśnięcia myszy, klawiszy, żądania odświeżenia przez system okienkowy, różne zdarzenia sieciowe i inne. W starych systemach operacyjnych (np. DOS), w jednej chwili mogła pracować tylko jedna aplikacja. Sterowanie jej działaniem odbywało się bądź poprzez jawne zadeklarowanie kolejności wykonania kodu (w programie jednoprzebiegowym), bądź poprzez pętlę obsługi wyboru opcji (w programie interaktywnym).

Błędy Błąd oprogramowania (bug) usterka programu komputerowego powodująca jego nieprawidłowe działanie, wynikająca z błędu człowieka na jednym z etapów tworzenia oprogramowania - zwykle podczas tworzenia kodu źródłowego, lecz niekiedy także na etapie projektowania. Wyróżnia się dwa główne typy błędów: Błędy składniowe nie pozwalają na kompilację programu np. literówka w nazwie zmiennej. Są one najczęściej dość łatwe do usunięcia. Błędy logiczne nie przerywają kompilacji, lecz powodują niewłaściwe działanie warstwy logicznej. Ten typ błędów jest znacznie trudniejszy do wykrycia i usunięcia.

Wyjątki Wyjątek (ang. exception) jest mechanizmem przepływu sterowania używanym w mikroprocesorach oraz współczesnych językach programowania do obsługi zdarzeń wyjątkowych, a w szczególności błędów, których wystąpienie zmienia prawidłowy przebieg wykonywania programu. W momencie zajścia niespodziewanego zdarzenia generowany jest wyjątek, który musi zostać obsłużony poprzez zapamiętanie bieżącego stanu programu i przejście do procedury jego obsługi. W niektórych sytuacjach po obsłużeniu wyjątku można powrócić do wykonywania przerwanego kodu, korzystając z zapamiętanych informacji stanu. Na przykład obsługa błędu braku strony pamięci polega najczęściej na pobraniu brakującej strony z pliku wymiany, co umożliwia kontynuowanie pracy programu, natomiast błąd dzielenia przez zero powoduje przerwanie wykonania programu.

Poziomy bezpieczeństwa Mówimy, że kod jest bezpieczny dla wyjątków (ang. exception-safe), jeśli rzucenie wyjątku w jego obrębie nie powoduje niepożądanych skutków ubocznych takich, jak wycieki pamięci, generowanie nieprawidłowego wyniku czy pozostawienie systemu w stanie niespójnym. Wyróżniamy kilka poziomów bezpieczeństwa: Przezroczystość awarii gwarantowane jest, że dana operacja zakończy się sukcesem i wyprodukuje poprawny wynik nawet wtedy, jeśli w trakcie wykonywania pojawiła się sytuacja wyjątkowa. Operacja potrafi we własnym zakresie obsłużyć wszystkie wyjątki nigdy nie są one przekazywane do kodu ją wywołującego. Jest to najwyższy stopień bezpieczeństwa kodu.

Poziomy bezpieczeństwa Atomowość operacji (także silne bezpieczeństwo dla wątków) operacja albo wykona się w całości poprawnie, albo w przypadku awarii pozostawi system w stanie niezmienionym (lub przywraca go do stanu początkowego), nie powodując żadnych skutków ubocznych. Podstawowe bezpieczeństwo dla wątków w przypadku awarii operacja może mieć efekty uboczne, jednak pomimo, że wartości w obrębie struktur danych mogą ulec zmianie, ale w dalszym ciągu będą one poprawne z punktu widzenia systemu. Minimalne bezpieczeństwo dla wątków awaria lub wyjątek w trakcie wykonywania operacji nie powoduje wycieków pamięci, ani błędów krytycznych, lecz może produkować nieprawidłowe dane. Brak bezpieczeństwa dla wątków brak jakichkolwiek gwarancji. Najgorszy poziom bezpieczeństwa

Stos, kolejka Stos (ang. Stack) liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). Stos jest stosowany w systemach komputerowych na wszystkich poziomach funkcjonowania systemów informatycznych. Używany jest przez procesory do chwilowego zapamiętywania rejestrów procesora, do przechowywania zmiennych lokalnych, a także w programowaniu wysokopoziomowym. Przeciwieństwem sposobu pobierania danych wykorzystywanego w przypadku stosu jest kolejka (bufor) typu FIFO (ang. First In, First Out; pierwszy na wejściu, pierwszy na wyjściu), w którym dane obsługiwane są w takiej kolejności, w jakiej zostały dostarczone (jak w kolejce do kasy).

Zmienne Zmienna - konstrukcja programistyczna posiadająca trzy podstawowe atrybuty: Identyfikator (symboliczną nazwę), miejsce przechowywania (adres w pamięci i długość danych), wartość, typ danej (opcjonalnie), pozwalająca w kodzie źródłowym odwoływać się przy pomocy nazwy do wartości lub miejsca przechowywania. W programie dwa pierwsze atrybuty (nazwa i miejsce przechowywania) nie zmieniają się w trakcie istnienia zmiennej. Natomiast wartość jest zmienna i - w zależności od rodzaju języka programowania również typ zmiennej może zmienny. Podobną konstrukcją lecz nie pozwalającą na modyfikowanie wartości jest stała.

Kontekst (scope) W językach ze statycznym typowaniem każda zmienna ma z góry określony (deklarowany) typ danych jakie może przechowywać. Jest on wykorzystywany do określenia reprezentacji wartości w pamięci (ilości zajmowanego miejsca), kontrolowania poprawności operacji wykonywanych na zmiennej (kontrola typów) oraz konwersji danych jednego typu na inny. W językach z typowaniem dynamicznym typ nie jest atrybutem zmiennej lecz wartości w niej przechowywanej. Zmienna może wtedy w różnych momentach pracy programu a więc zależnie od kontekstu - przechowywać dane różnych typów.