Struktura danych (ang. data structure) - sposób uporz dkowania informacji w komputerze. Na strukturach danych operuj algorytmy.

Podobne dokumenty
WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Wartości domyślne, szablony funkcji i klas

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Bazy danych. Andrzej Łachwa, UJ, /15

Systemy mikroprocesorowe - projekt

1. Podstawy budowania wyra e regularnych (Regex)

System kontroli wersji SVN

Microsoft Management Console

InsERT GT Własne COM 1.0

Harmonogramowanie projektów Zarządzanie czasem

Edycja geometrii w Solid Edge ST

Charakterystyka systemów plików

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

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

Wtedy wystarczy wybrać właściwego Taga z listy.

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Budowa systemów komputerowych

Architektura komputerów

Poniżej instrukcja użytkowania platformy

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

VLAN Ethernet. być konfigurowane w dowolnym systemie operacyjnym do ćwiczenia nr 6. Od ćwiczenia 7 należy pracować ć w systemie Linux.

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Sieć komputerowa grupa komputerów lub innych urządzeo połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów, na przykład:

Konfiguracja historii plików

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

PERSON Kraków

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

System nagłośnieniowy i dźwiękowy system ostrzegawczy Bosch Praesideo

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

INSTRUKCJA WebPTB 1.0

Wykład 2. Budowa komputera. W teorii i w praktyce

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Java język programowania zorientowany obiektowo

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

Archiwum Prac Dyplomowych

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

INSTRUKCJA KORZYSTANIA Z ELEKTRONICZNEJ ŚCIEŻKI WYKAZÓW

Uniwersytet Rzeszowski

VinCent Office. Moduł Drukarki Fiskalnej

Praca na wielu bazach danych część 2. (Wersja 8.1)

API transakcyjne BitMarket.pl

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Komentarz technik ochrony fizycznej osób i mienia 515[01]-01 Czerwiec 2009

Wykład 1

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Komentarz do prac egzaminacyjnych w zawodzie technik administracji 343[01] ETAP PRAKTYCZNY EGZAMINU POTWIERDZAJĄCEGO KWALIFIKACJE ZAWODOWE

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

Metody Programowania

Firma Informatyczna JazzBIT

PROCEDURA ADMINISTROWANIA ORAZ USUWANIA

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Moduł. Rama 2D suplement do wersji Konstruktora 4.6

Kompozycja i dziedziczenie klas

elektroniczna Platforma Usług Administracji Publicznej

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Instrukcja Obsługi STRONA PODMIOTOWA BIP

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

System do kontroli i analizy wydawanych posiłków

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

Warszawa, r.

2.Prawo zachowania masy

Polityka prywatności strony internetowej wcrims.pl

Instrukcja dotycząca generowania klucza dostępowego do Sidoma v8

1. Wprowadzenie do C/C++

Zarządzanie Zasobami by CTI. Instrukcja

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

dbsamples.udl lub przygotowany wcześniej plik dla Excela) i OK,

Instrukcja programu PControl Powiadowmienia.

Automatyzacja procesu publikowania w bibliotece cyfrowej

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Projektowanie bazy danych

G PROGRAMMING. Part #4

KATEDRA INFORMATYKI STOSOWANEJ PŁ ANALIZA I PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH

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

WSTĘP DO PROGRAMOWANIA

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

Elementy cyfrowe i układy logiczne

P 0max. P max. = P max = 0; 9 20 = 18 W. U 2 0max. U 0max = q P 0max = p 18 2 = 6 V. D = T = U 0 = D E ; = 6

PAKIET MathCad - Część III

Język ludzki kod maszynowy

Niezależnie od rodzaju materiału dźwiękowego ocenie podlegały następujące elementy pracy egzaminacyjnej:

Programowanie obiektowe

Załącznik nr 8. Warunki i obsługa gwarancyjna

WYKAZ ZMIAN W INSTRUKCJI UśYTKOWNIKA KSI

Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych osobowych

Instrukcja wprowadzania ocen do systemu USOSweb

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

WYMAGANIA EDUKACYJNE Przedmiot: Podstawy technik komputerowych technik informatyk. klasa 1, 3 godziny tygodniowo

Transkrypt:

OPRACOWA : K77. Przeczytajcie wszystko chocia raz a na pewno b dziecie wi cej wiedzie J Uwaga do wszystkich przysz ych magistrów: Po wylosowaniu zagadnienia mówcie o rzeczach, które s dla Was zrozumia e i o których najwi cej wiecie (oczywi cie z zakresu danego zagadnienia). Najcz ciej jest tak, e po kilku minutach komisja Wam przerwie, zanim dojdziecie do rzeczy, o których macie raczej mgliste poj cie. Nie oznacza to bynajmniej, e nie musicie si w ogóle uczy zagadnie profesor bywa czasem bardzo dociekliwy i mo e dowie Waszej niewiedzy, a wtedy mo e by nieciekawie. Powodzenia. 1. Struktury danych Struktura danych (ang. data structure) - sposób uporz dkowania informacji w komputerze. Na strukturach danych operuj algorytmy. Przyk adowe struktury danych to: 1. rekord, zwany w niektórych j zykach po prostu struktur (ang. struct, record), logiczny odpowiednik to krotka 2. tablica 3. lista 4. drzewo i jego liczne odmiany (np. drzewo binarne) 5. stos 6. kolejka Podczas implementacji programu programista cz sto staje przed wyborem mi dzy ró nymi strukturami danych, aby uzyska po dany efekt. Odpowiedni wybór mo e zmniejszy z ono obliczeniow, ale z drugiej strony trudno implementacji danej struktury mo e stanowi istotn przeszkod. Poniewa struktury danych s w programie rzecz szczególnie istotn, wiele j zyków programowania wspiera programist, dostarczaj c bibliotek standardow z zaimplementowanymi ró norodnymi strukturami danych. Mo na tu wymieni Standard Template Library w C++, API j zyka Java oraz platform.net. Prób po czenia idei struktur danych i algorytmów jest pomys programowania obiektowego. Rekord zwany w niektórych j zykach po prostu struktur (ang. structure, struct, record) (logiczny odpowiednik to krotka). Jest to obiekt programistyczny, grupa danych - takiego samego lub ró nego typu - posiadaj ca swoj ustalon struktur, oraz mo liwo zmiany i odczytania jego elementów. W odró nieniu od tablic zawieraj cych wiele elementów tego samego typu, typem elementu tablicy mo e by równie rekord (struktura), a tablica mo e by sk adow rekordu. Przyk adowy rekord dotycz cy osoby pracownika mo e zawiera np.: Nazwisko - dana typu string (lub character) Imi - j.w. Data urodzenia - dana typu string lub rekord typu data Miejsce zamieszkania - dana typu string lub rekord typu adres Data zatrudnienia - j.w. stanowisko - dana typu string lub rekord typu stanowisko 1

yty tutaj rekord typu data mo e by definiowany jako: Itd. rok - liczba ca kowita lub string (4 cyfry) miesi c - liczba ca kowita lub string (2 cyfry) dzie - j.w. Kod powy szego rekordu w Delphi (Object Pascal) type Pracownik=record Nazwisko, Imie: string; Data_urodzenia: Date; Miejsce_zamieszkania: string; Data_zatrudnienia: Date; Stanowisko: string; end; Typ Date to gotowy typ z dniem, miesi cem i rokiem. Stosowanie rekordów by o konieczno ci przy wykorzystaniu baz danych a tak e krokiem wst pnym do wprowadzenia obiektów i programowania strukturalnego. Tablica to pojemnik danych dost pnych za pomoc kluczy b cych ich kolejnymi numerami. Tablice mog mie zadane z góry rozmiary lub te mie mo liwo automatycznej ich zmiany. Praktycznie wszystkie j zyki programowania zawieraj tablice - jedynie w niektórych j zykach funkcjonalnych zamiast tablic u ywane s listy (cho tablice zwykle te s dost pne). Lista to struktura danych u ywana w infomatyce. Jest to pojemnik sk adaj cy si z po czonych ze sob w cuszek komórek zawieraj cych dane. Popularne sposoby czenia elementów listy Typowa lista jest czona jednostronnie - komórki zawieraj tylko odno nik do kolejnej komórki. Innym przypadkiem jest lista dwustronna, gdzie komórki zawieraj tak e odno nik do poprzednika. Popularna jest tak e lista zwana ownikow, która z regu y jest wariacj listy jednostronnej. Z regu y stosuje si j tam, gdzie elementy listy zawieraj kilka pól z danymi, a kolejny element mo e rozszerza poj cie (definicj poprzedniego). Przyk adem jest prosty translator tekstu, zrealizowany jako lista, gdzie ka dy z elementów zawiera dane wyraz i definicja wyrazu - mo e si okaza, e definicja danego wyrazu ma swoje rozwini cie (definicj ) w pewnym innym elemencie, wówczas tam kieruje si dodatkowy cznik. Implementacja listy Istniej dwie popularne implementacje struktury listy: tablicowa i wska nikowa. 2

Tablicowa Jak wskazuje nazwa, lista zaimplementowana w ten sposób opiera si na tablicy obiektów (lub rekordów) danego typu. Dopisanie elementu do listy to wstawienie elementu do tablicy: je li ma ono nast pi na ko cu listy, b dzie to kolejny element w tablicy; je li nowy element ma znale si mi dzy innymi elementami, nale y przesun o jedno pole w prawo wszystkich elementów o indeksie wy szym ni pole, na które b dzie wstawiany obiekt; nast pnie w powsta luk wpisuje si nowy element. Usuni cie elementu znajduj cego si pod danym indeksem tablicy to przesuni cie o jedno pole w lewo wszystkich elementów o indeksie wy szym. Zalety tej implementacji: prosta nawigacja wewn trz listy, korzystanie z gotowej struktury tablicy, wi ksza odporno na b dy. Wady: niska elastyczno, szczególnie dotycz ca rozmiaru tablicy. Implementacj tablicow stosuje si tam, gdzie elastyczno nie odgrywa istotnej roli, a wymagana jest szybka i prosta nawigacja. Wska nikowa W tej implementacji ka dy obiekt na li cie musi (co nie by o konieczne w wersji tablicowej) zawiera dodatkowy element: wska nik do innego obiektu tego typu. Wynika to z faktu, e to wska niki s podstaw nawigacji w tym typie listy, a dost p do jej elementów jest mo liwy wy cznie przez wska nik. Dopisanie elementu (dla prostej listy jednostronnej): je li ma ono nast pi na ko cu listy, to wska nik wi cy obiekcie ostatnim ustawia si na nowy obiekt danego typu; je li ma ono nast pi wewn trz listy, to najpierw tworzy si nowy obiekt danego typu i jego wska nik wi cy ustawia si na nast pnik elementu, za którym ma by wstawiany. Pó niej wska nik poprzednika przestawia si na ten nowy obiekt. W tym przypadku bardzo wa na jest kolejno, której zachwianie jest cz st przyczyn b dów. Np. mo na najpierw przestawi wska nik poprzednika na nowy obiekt, co spowoduje bezpowrotn utrat dost pu do dalszych elementów listy, na które ju nie b dzie pokazywa aden wska nik. Ustawienie wska nika nowego elementu na nast pnik nie b dzie mo liwe, bo nie b dzie znany jego adres. Usuni cie elementu jest odwrotne do wstawiania: w pewnym miejscu zapisuje si wska nik do usuwanego elementu (aby nie "zgubi " jego adresu), nast pnie wska nik wi cy poprzednika przestawia si na nast pnik, i dopiero w tym momencie zwalnia si pami po obiekcie usuwanym (do tego potrzebny jest ten wska nik tymczasowy). Zalety i wady tej implementacji s komplementarne w stosunku do implementacji tablicowej. Wg biaj c si w szczegó y implementacji listy za pomoc wska ników mo na wyró ni nast puj ce rodzaje list: lista jednokierunkowa - w ka dym elemencie listy jest przechowywane odniesienie tylko do jednego s siada (nast pnika lub poprzednika). 3

lista dwukierunkowa - w ka dym elemencie listy jest przechowywane odniesienie zarówno do nast pnika jak i poprzednika elementu w li cie. Taka reprezentacja umo liwia swobodne przemieszczanie si po li cie w obie strony. lista cykliczna - nast pnikiem ostatniego elementu jest pierwszy element, a poprzednikiem pierwszego ostatni. Po li cie mo na wi c przemieszcza si cyklicznie. Nie ma w takiej li cie charakterystycznego ogona (ani g owy), cz sto rozpoznawanego po tym, e jego nast pnik jest pusty (NIL). lista z wartownikiem - lista z wyró nionym elementem zwanym wartownikiem. Jest to specjalnie oznaczony element niewidoczny dla programisty wykorzystuj cego list. Pusta lista zawiera wtedy tylko wartownika. Zastosowanie wartownika znacznie upraszcza implementacj operacji na listach. Powy sze cechy mo na prawie dowolnie czy, co daje mo liwo stworzenia wielu ró nych implementacji listy, zale nie od potrzeb. Drzewo (informatyka) W informatyce drzewa s strukturami danych reprezentuj cymi drzewa matematyczne. W naturalny sposób reprezentuj hierarchi danych (obiektów fizycznych i abstrakcyjnych, poj, itp.), tote g ównie do tego celu s stosowane. Drzewa u atwiaj i przyspieszaj wyszukiwanie, a tak e pozwalaj w atwy sposób operowa na posortowanych danych. Znaczenie tych struktury jest bardzo du e i ze wzgl du na swoje w asno ci drzewa s stosowane praktycznie w ka dej dziedzinie informatyki (np. bazy danych, grafika komputerowa, przetwarzanie tekstu, telekomunikacja). Drzewa sk adaj si z wierzcho ków (w ów) oraz cz cych je kraw dzi. Wszystkie wierzcho ki po czone z danym wierzcho kiem, a le ce na nast pnym poziomie s nazywane synami tego w a (np. synami wierzcho ka D s G i H, wierzcho ka H: J, K oraz L). Wierzcho ek mo e mie dowoln liczb synów, je li nie ma ich wcale nazywany jest li ciem; na rysunku li cie zaznaczone s kolorem niebieskim. 4

Wierzcho ek jest rodzicem dla ka dego swojego syna; ka dy w ze ma dok adnie jednego rodzica. Wyj tkiem jest korze drzewa, który nie ma rodzica. W drzewie istnieje dok adnie jedna cie ka pomi dzy w em a korzeniem; przez cie rozumie si ci g kraw dzi, na rys. przyk adowa cie ka do w a J jest zaznaczona na czerwono. Liczba kraw dzi w cie ce jest nazywana ugo ci (lub boko ci ) liczba o jeden wi ksza okre la poziom w a. Z kolei wysoko drzewa to najwi kszy poziom istniej cy w drzewie (przyk adowe drzewo ma wysoko 4). Specjalne znaczenie w informatyce maj drzewa binarne (liczba synów ograniczona do dwóch) i ich ró ne odmiany, np. drzewa AVL, drzewa czerwono-czarne, BST; drzewa które posiadaj wi cej ni dwóch synów s nazywane drzewami wy szych rz dów. Podstawowe operacje na drzewach to: wyliczenie wszystkich elementów drzewa, wyszukanie konkretnego elementu, dodanie nowego elementu w okre lonym miejscu drzewa, usuni cie elementu. Pod poj ciem przechodzenia drzewa rozumie si odwiedzanie kolejnych wierzcho ków, zgodnie z zale no ciami rodzic-syn. Je li przy przechodzeniu drzewa na wierzcho kach s wykonywane pewne dzia ania, to mówi si wówczas o przechodzeniu: preorder - gdy dzia anie jest wykonywane najpierw na rodzicu, nast pnie na synach; postorder - gdy dzia anie jest wykonywane najpierw na wszystkich synach, na ko cu na rodzicu. W przypadku drzew binarnych istnieje jeszcze metoda inorder, gdzie najpierw wykonywane jest dzia anie na jednym z synów, nast pnie na rodzicu i na ko cu na drugim synu. Je li dzia aniem by oby wypisanie liter przechowywanych w w ach przyk adowego drzewa, to przy przechodzeniu drzewa metod preorder otrzymamy ABEFCDGIHJKL, natomiast przy przechodzeniu drzewa metod postorder: EFBCIGJKLHDA. Fizycznie drzewa s reprezentowane za pomoc struktur wi zanych ogólnie pojedynczy wierzcho ek przechowuje dane oraz dowi zania do swoich synów. W szczególno ci je li drzewo jest zapisane w tablicy (patrz: kopiec), to synowie s wskazywani przez konkretne indeksy; je li drzewo jest budowane na stercie (w j zykach C, C++, Pascal i podobnych), wówczas dowi zania s wska nikami. Przyk ad definicji typu drzewa, w którym dane wyst puj tylko na li ciach (ocaml): type 'a tree = Leaf of 'a Branch of 'a tree * 'a tree Przyk ad definicji typu drzewa, w którym dane (napisy) wyst puj na ka dym w le (C): struct tree { struct tree *left; struct tree *right; char *dane; ; 5

Stos - liniowa struktura danych, znaczeniowo odpowiadaj ca nazwie: dane dok adane s na wierzch stosu, równie z wierzcho ka s ci gane (stosuje si te okre lenie LIFO (ang. Last In First Out), oddaj ce t sam zasad ). Mo na zilustrowa t struktur jako stos ustawionych jedna na drugiej ksi ek - nowy egzemplarz k adzie si na wierzchu i z wierzchu si go ci ga. Elementy poni ej wierzcho ka mo na wy cznie obejrze, aby je ci gn - trzeba najpierw po kolei ci gn to, co jest nad nimi. Przeciwie stwem stosu LIFO jest kolejka, bufor typu FIFO (ang. First In, First Out) - pierwszy na wej ciu, pierwszy na wyj ciu, w którym jako pierwszy obs ugiwany jest element który pojawi si na pocz tku operacji (jak w kolejce do kasy). Podstawowe operacje W powy szym opisie pojawi y si pewne operacje, jakie mo na wykonywa na stosie. Oto ich formalny zapis: push(obiekt) - czyli od enie obiektu na stos; pop() - ci gni cie obiektu ze stosu i zwrócenie jego warto ci. Implementacja Strukturami danych s cymi do reprezentacji stosu mog by tablice (gdy znamy maksymalny rozmiar stosu), tablice dynamiczne lub listy. Z ono obliczeniowa operacji na stosie zale y od konkretnej implementacji, ale w wi kszo ci przypadków jest to czas sta y O(1). Kolejka (ang. FIFO - First In, First Out; pierwszy na wej ciu, pierwszy na wyj ciu) - liniowa struktura danych, znaczeniowo odpowiadaj ca nazwie: nowe dane dopisywane s na ko cu kolejki, a jako pierwsze obs ugiwane s dane z pocz tku. Specjaln modyfikacj jest kolejka priorytetowa - ka da ze znajduj cych si w niej danych dodatkowo ma przypisany priorytet, który modyfikuje kolejno pó niejszego wykonania. Oznacza to, e pierwsze na wyj ciu niekoniecznie s te dane, które w kolejce oczekuj najd ej, ale te o najwi kszym priorytecie. Kolejk spotyka si przede wszystkim w sytuacjach zwi zanych z ró nego rodzaju obs ug zdarze. W szczególno ci w systemach operacyjnych ma zastosowanie kolejka priorytetowa, przydzielaj ca zasoby sprz towe uruchomionym procesom. Przeciwie stwem kolejki jest stos, bufor (ang. LIFO - Last In, First Out; ostatni na wej ciu, pierwszy na wyj ciu), w którym jako pierwsze obs ugiwane s dane wprowadzone jako ostatnie. 6

2. Charakterystyka popularnych j zyków programowania autor: K77 (nie uczcie si tego wszystkiego na pami, wa ne eby cie wiedzieli, e takie j zyki s i jakie maj cechy szczególne J ); na podstawie informacji na stronie http://pl.wikipedia.org/wiki/j%c4%99zyk_programowania zyk programowania to usystematyzowany sposób przekazywania komputerowi polece do wykonania. zyk programowania pozwala programi cie na precyzyjne przekazanie maszynie, jakie dane maj ulec obróbce i jakie czynno ci nale y podj w okre lonych warunkach. Ada Ada to strukturalny, kompilowalny, statycznie typowany j zyk programowania opracowany przez Jean Ichbiah z Cii Honeywell Bull w latach 70. XX wieku. Nazwa j zyka pochodzi od nazwiska lady Augusty Ady Lovelace, uwa anej za pierwsz programistk w historii. ciwo ci j zyka Wiele cech Ady zaprojektowanych zosta o w celu zminimalizowania szans pope nienia trudnych do wykrycia b dów. Istniej dwa standardy Ady: starszy Ada 83 oraz nowszy Ada 95, w którym dodano m.in. obs ug obiektów. Ada jest obs ugiwana przez kompilator GNAT, oparty na GCC. Poniewa wiele rzeczy w Adzie jest zaprojektowane "wbrew" tradycji uniksowej, nie cieszy si ona popularno ci w ród programistów uniksowych (w szczególno ci w ród programistów open source). Do nielicznych programów open source napisanych w Adzie nale y wizualny debugger GNU Visual Debugger (GVD). Oto prosty przyk ad (funkcja Ackermanna) kodu w Adzie demonstruj cy kilka jej cech. Program, eby si skompilowa, musi by umieszczony w pliku "ackermann.adb" (wielko liter bez znaczenia). with Ada.Command_Line; use Ada.Command_Line; with Gnat.Io; use Gnat.Io; procedure Ackermann is function ack (x : in integer; y : in integer) return integer is begin if (x = 0) then return y + 1; elsif (y = 0) then return ack(x-1,1); else return ack(x-1,ack(x,y-1)); end if; end ack; x,y,a : integer; begin if (Argument_Count = 2) then x := Integer'Value (Argument(1)); 7

y := Integer'Value (Argument(2)); elsif (Argument_Count = 1) then x := 3; y := Integer'Value (Argument(1)); else x := 3; y := 3; end if; a := ack (x,y); Put ("Ack ("); Put (x); Put (","); Put (y); Put (") = "); Put (a); New_Line; end Ackermann; Co wida : Wszystko jest case-insensitive. Ca y program to jedna wielka procedura, która mo e zawiera podprocedury (w tym wypadku funkcj ack). Wszystkie zamkni cia s zapisywane za pomoc end co_zamykamy. Pozwala to unikn przypadkowych pomy ek, ale w opinii wielu programistów jest nadmiarowe. Przypisanie jest zapisywane:=, natomiast porównanie przez=. Argumentuje si to tym, e w C wyst puj pomy ki polegaj ce na zapisie= zamiast w ciwego==. Nie ma odpowiednika funkcji printf, uwa anej za niebezpieczn. Chocia funkcjeput i New_Line (z modu ugnat.io) s bezpieczniejsze, s bardzo niewygodne w u yciu. elsif pisze si cznie nie za oddzielnie jak w C. Jest to pewne usprawnienie, u ywane przez wi kszo nowych j zyków. Sk adnie atrybutów toobiekt'atrybut (lubklasa'atrybut), zamiast bardziej tradycyjnych. czy::. Casty s przeprowadzane sk adni Klasa'Value(warto ). Jest to znaczne ulepszenie wobec C, gdzie(klasa)warto prowadzi do niepewnej kolejno ci wykonywania dzia i zwykle w wi kszych wyra eniach jest zapisywane jako((klasa)(warto )). Wyst puje rozró nienie "procedur" (w nomenklaturze C: funkcje nie zwracaj ce warto ci) i "funkcji" (w nomenklaturze C: funkcje zwracaj ce warto ). Wi kszo wspó czesnych j zyków nie zawiera tego rozró nienia. Asembler Asembler to j zyk programowania niskiego poziomu, w którym zasadniczo jedno polecenie odpowiada jednemu rozkazowi procesora. Jest to j zyk powsta y na bazie j zyka maszynowego poprzez zast pienie kodów maszynowych pisanych binarnie lub szesnastkowo ich mnemonicznymi odpowiednikami. Dzi ki zamianie liczb na tzw. mnemoniki mo na pisa programy w miar zrozumia e dla cz owieka, a jednocze nie bezpo rednio t umaczone na kod maszynowy procesora zapewniaj c pe kontrol programow. Pierwszym asemblerem by skonstruowany przez Konrada Zuse - uk ad elektromechaniczny przygotowania ta my perforowanej z programem dla maszyny Z4 (modu Planfertigungsteil). Pozwala na wprowadzanie i odczyt rozkazów i adresów w sposób zrozumia y dla cz owieka. 8

Wspó cze nie praktycznie nie u ywa si asemblera do pisania ca ych programów dla komputerów osobistych. Jest on za to wci u ywany do pisania fragmentów wymagaj cych bardzo wysokiej wydajno ci lub maj cych inne specjalne wymagania, np. dla oprogramowania mikrokontrolerów o niewielkich rozmiarach pami ci programu. BASIC BASIC (Beginner's All-purpose Symbolic Instruction Code) - j zyk programowania wysokiego poziomu, opracowany w 1964 przez Johna George'a Kemeny'ego i Thomasa E. Kurtza w Dartmouth College w oparciu o Fortran i Algol-60. Jego pierwsza wersja znana by a pó niej pod nazw Dartmouth BASIC. Historia Za enia projektantów BASIC-a uwzgl dnia y atwo u ytkowania, wszechstronno zastosowa, interaktywno i dobr komunikacj z u ytkownikiem poprzez jasne komunikaty b dów. BASIC wybi si na czo o j zyków do zastosowa amatorskich i pó profesjonalnych po wprowadzeniu na rynek mikrokomputera Altair 8800. Twórcami dialektu BASIC-a dla tej maszyny byli Bill Gates i Paul Allen. BASIC szybko zaimplementowany zosta przy budowie serii komputerów Apple, a pó niej (jako GW BASIC) w IBM PC (pocz tkowo w ROM, a po pojawieniu si DOSa na dyskietce). Nast pc GW BASIC-a dla pecetów zosta QB, pó niej rozprowadzany komercyjnie jako QuickBASIC, który w ko cu wyewoluowa w Visual Basic for Windows. Istniej te alternatywne interpretery i kompilatory tego j zyka dla platformy win32 (Power BASIC, Dark BASIC itp.) W Polsce najbardziej znane s dialekty BASIC-a napisane dla popularnych komputerów o miobitowych - Commodore, Amstrada CPC, Atari i Sinclair ZX Spectrum. Semantyka Programy w BASIC-u sk adaj si z kolejno wykonywanych instrukcji, które zebrane s w linie. Wszystkie dialekty oprócz najprymitywniejszych dopuszczaj kilka instrukcji w jednej linii, rozdzielonych zazwyczaj znakiem dwukropka. Starsze wersje wymaga y numerowania linii (maksymalny numer wynosi zwykle 9999, 16384 albo 32767). Zmienne mog mie dowolnie d ugie nazwy zaczynaj ce si od litery. Nazwy zmiennych cuchowych zako czone s znakiem dolara, np. x$, zmienna$. Tablice mog mie dwa lub wi cej wymiarów (w niektórych dialektach tablice znakowe s do wska nikowego dost pu do cuchów, jak w C). BASIC w sprowadzonej do wspólnego mianownika wersji posiada bardzo proste mechanizmy sterowania przebiegiem programu - instrukcj skoku bezwarunkowego GOTO, wywo ania podprogramu GOSUB (ko czonego instrukcj RETURN) oraz warunkow (IF..THEN (oraz ELSE w niektórych dialektach). Za pomoc instrukcji FOR..NEXT mo na powtarza okre lone fragmenty programu (p tla iteracyjna). Niektóre dialekty posiadaj tak e instrukcje p tli warunkowej (DO LOOP..UNTIL, WHILE..WEND), skoku warunkowego (ON GOTO, ON GOSUB), oraz wyboru warunkowego (CASE..SELECT). Inne typowe instrukcje: 9

RUN - uruchomienie programu PRINT tekst - wyprowadzenie tekstu lub warto ci zmiennej na urz dzenie wyj ciowe (najcz ciej ekran). INPUT zmienna - wczytanie warto ci z klawiatury do zmiennej DIM tablica - deklaracja tablicy LET zmienna = warto - deklaracja zmiennej (czasami LET mo na opu ci ) STOP - zatrzymanie programu CONTINUE - wznowienie zatrzymanego programu Ponadto w wi kszo ci dialektów dost pne s funkcje matematyczne (INT, ABS, SGN) trygonometryczne (SIN, COS, TAN, czasami LOG, LN) i operacji na cuchach (szereg funkcji zako czonych znakiem $, np. LEFT$, UPPER$). Visual Basic to j zyk i narz dzie programowania firmy Microsoft. Sk adnia jest oparta na j zyku BASIC, ale unowocze niona. Zawiera kilkaset instrukcji, funkcji i s ów kluczowych. Nie jest j zykiem w pe ni obiektowym, gdy nie udost pnia, np. mo liwo ci dziedziczenia czy polimorfizmu. Wykorzystuje technologi ActiveX. Jest dost pny w trzech wersjach: Learning Edition Professional Edition Enterprise Edition W ostatnim czasie, wraz z pojawieniem si platformy.net, ukaza a si nowa wersja Visal Basica pod nazw Visual Basic.NET. Mog wyst powa komplikacje przy automatycznym przenoszeniu programów napisanych w Visual Basic do Visual Basic.NET. C C jest j zykiem programowania stworzonym na pocz tku lat siedemdziesi tych przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zada niskiego poziomu. Historia Poprzednikiem j zyka C by interpretowany j zyk B który Ritchie rozwin w j zyk C. Pierwszy okres rozwoju j zyka to lata 1969-1973. W roku 1973 w j zyku C uda o si zaimplementowa j dro (kernel) systemu operacyjnego Unix. W 1978 roku Brian Kernighan i Dennis Ritchie opublikowali dokumentacj zyka p.t. C Programming Language. C sta si popularny poza Laboratoriami Bella (gdzie powsta ) po 1980 roku, i sta si dominuj cym zykiem do programowania systemów operacyjnych i aplikacji. Na bazie j zyka C w latach osiemdziesi tych Bjarne Stroustrup stworzy j zyk C++, który wprowadza mo liwo programowania obiektowego. Standardy Standard j zyka C zosta zapisany w normie ISO 9899. Pierwsze wydanie tego dokumentu mia o miejsce w 1990 roku (ISO 9899:1990) i by o modyfikacj standardu ANSI: ANSI X3.159-1989 "Programming Language C". J zyk zgodny z t wersj standardu okre lany jest nieformalnie jako C89. Od tego czasu 10

powsta o wiele uaktualnie tej normy. W 2001 roku ostatnia ma oznaczenie ISO 9899:1999 i zosta a opublikowana w 1999 roku, j zyk zgodny z t norm okre lany jest nieformalnie jako C99. C99 nie jest kompatybilny z C++. Podstawowe elementy j zyka C Komentarze Komentarz blokowy umieszcza si mi dzy sekwencj znaków "/*" a "*/", a komentarz liniowy rozpoczyna si sekwencj "//" a ko czy znakiem ko ca linii. Komentarz liniowy wprowadzono do obecnego standardu j zyka C (ISO 9899:1999) z j zyka C++. /* To jest komentarz * blokowy. Zajmuje on * kilka linii */ // to jest komentarz liniowy Podstawowe typy Typ Wielko pami ci Uwagi _Bool 1 bajt tylko w nowych wersjach char 1 bajt unsigned char 1 bajt signed char 1 bajt int 2 lub 4 bajty unsigned int 2 lub 4 bajty short 2 bajty unsigned short 2 bajty long 4 bajty unsigned long 4 bajty long long 8 bajtów tylko w nowych wersjach unsigned long long 8 bajtów tylko w nowych wersjach float 4 bajty double 8 bajtów long double 10 bajtów float _Complex 8 bajtów tylko w nowych wersjach double _Complex 16 bajtów tylko w nowych wersjach long double _Complex 24 bajty tylko w nowych wersjach float _Imaginary tylko w nowych wersjach double _Imaginary tylko w nowych wersjach long double _Imaginary tylko w nowych wersjach void 11

typ nazwa; Typy pochodne Typ wyliczeniowy enum nazwa { jeden, dwa ; Struktury struct nazwa { typ1 nazwa1; typ2 nazwa2; ; Unie union nazwa { typ1 nazwa1; typ2 nazwa2; ; Pola bitowe typ [identyfikator] : d ugo ; Tablice typ nazwa[liczba]; Wska niki typ *nazwa; typ **nazwa; typ_zwracany (*nazwa_wsk_do_funkcji)(typ nazwa_parametru1,typ nazwa_parametru2,...); Instrukcje steruj ce Instrukcjaif else ielse if s opcjonalne. if (warunek1) { instrukcje; [else if(warunek2){ instrukcje; ] [else { instrukcje; ] 12

tlawhile while (warunek) { instrukcje; tlado...while do { instrukcje; while (warunek); tlafor for ([instrukcja-pocz tkowe]; [warunek]; [instrukcje-wykonywane-po-ka dej-iteracji]) { instrukcje; Instrukcjaswitch break jest opcjonalne.warto 1 iwarto 2 musz by sta ymi. switch (wyra enie) { case warto 1 : instrukcje; [break;] case warto 2 : instrukcje; [break;] default : instrukcje; [break;] Funkcje Klasa_pami ci,typ ilista_argumentów s opcjonalne. [klasa_pamieci] [typ] nazwa([lista_argumentów]) { instrukcje; 13

Przyk ady Hello, world #include <stdio.h> int main(void) { printf ("Hello, world!\n"); return 0; W powy szym kodzie: Dyrektywa#include w cza do pliku zawarto odpowiednich plików nag ówkowych - w tym przypadku plikustdio.h, zawieraj cego m.in. prototyp funkcjiprintf. ówna funkcja nazywa si zawszemain. Zwraca ona warto typu ca kowitoliczbowego -int, w tym przypadku0. Za wyprowadzenie wyniku na standardowe wyj cie (zwykle na ekran) odpowiedzialna jest funkcja printf. cuch tekstowy zamyka si w cudzys owach: cuch". Znak nowej linii zapisuje si jako"\n". Ciekawostki Corocznie organizowany jest konkurs IOCCC (International Obfuscated C Code Contest) prezentuj cy najbardziej "zaciemnione" (trudne do odczytania) programy w j zyku C. C++ zyk C++ jest j zykiem programowania "o wielu paradygmatach", m.in. równie obiektowo zorientowanym. Stworzony w latach osiemdziesi tych XX wieku przez Bjarne Stroustrupa. Na j zyk C++ wp yw mia y, poza j zykiem C, jako jego podstaw, przede wszystkim Simula, z której zaczerpn ciwo ci obiektowe, a tak e j zyki takie, jak Algol, Ada, ML i Clu. Historia Pocz tkowo j zyk C++ by dost pny w takim standardzie, w jakim opracowano ostatni wersj kompilatora Cfront (t umacz cy C++ na C), pó niej opublikowano pierwszy nieformalny standard zwany ARM (Annotated Reference Manual), który sporz dzili Bjarne Stroustrup i Margaret Ellis. Standard zyka C++ powsta w 1998 roku (ISO/IEC 14882-1998 "Information Technology - Programming Languages - C++"). Standard ten zerwa cz ciowo wsteczn zgodno z ARM w swojej bibliotece standardowej; jedyne, co pozosta o w stanie w miar nienaruszonym to biblioteka iostream. Pocz tkowo najwa niejsz rzecz wprowadzon w C++ w stosunku do C by o programowanie obiektowe, pó niej jednak wprowadzono do niego mnóstwo ulepsze, czyni c ten j zyk wygodniejszym i bardziej elastycznym od swojego pierwowzoru. Nie od rzeczy jest te wspomnie, e niektóre zmiany w standardzie j zyka C by y w wi kszo ci zainspirowane j zykiem C++ (np. s owo const). 14

Nazwa j zyka zosta a zaproponowana przez Ricka Mascitti w 1983 roku, kiedy to po raz pierwszy u yto tego j zyka poza laboratorium naukowym. Odzwierciedla ona fakt, e j zyk ten jest rozszerzeniem j zyka C. Wcze niej u ywano nazwy "C z klasami". Pierwsze kompilatory j zyka C++, podobnie jak Cfront, by y wy cznie translatorami na j zyk C. Kompilatory takie dost pne s i dzi, ale niestety nie oferuj one wszystkich w ciwo ci j zyka C++. Pierwszym kompilatorem natywnym (produkuj cym od razu kod asemblerowy) dla j zyka C++ by g++ z pakietu GCC, którego pierwszym autorem by Michael Tiemann, za yciel Cygnus Solutions. Przyk adowy program #include <iostream> // wstawiamy plik nag ówkowy biblioteki iostream int main() // funkcja main { std::cout << "Hello world!" << std::endl; //wprowadzenie tekstu na ekran Zamiast ci gle wpisywa std:: mo na na pocz tku programu dopisa using namespace std;, na przyk ad: #include <iostream> // wstawiamy plik nag ówkowy biblioteki iostream using namespace std; int main() // funkcja main { cout << "Hello world!" << endl; //wprowadzenie tekstu na ekran Nowe cechy j zyka C++ Niektóre z nich trafi y do j zyka C, najpierw nieoficjalnie, pó niej za zosta y ustandaryzowane w C99. Klasy wraz z innymi elementami j zyków zorientowanych obiektowo takimi jak: dziedziczenie, metody wirtualne Dodatkowe ulepszenia klas, konstruktory, destruktory (j zyk C++ by pierwszym j zykiem w którym u yto nazwy "konstruktor" w tym w nie znaczeniu i pierwszym j zykiem, który posiada destruktory) Szablony (wzorce) klas i funkcji Obs uga wyj tków Deklaracje zmiennych jako instrukcje (w ANSI C wszystkie zmienne lokalne funkcji musia y by zadeklarowane przed pierwsz jej instrukcj ) Dynamiczna inicjalizacja zmiennych globalnych i lokalnych zmiennych statycznych (tzn. mog y by inicjalizowane wynikiem wywo anej funkcji) Przestrzenie nazw Referencje Operatorynew idelete Operator zasi gu (::) (w ANSI C nie istnieje mo liwo odwo ania si do zmiennej globalnej o tej samej nazwie, co zmienna lokalna) Dynamiczna kontrola typów RTTI Przeci anie funkcji Przeci anie operatorów Wska niki do sk adowych (pól i metod) 15

Jednolinijkowe komentarze (//), pochodz ce z j zyka B (równie C99) Funkcje rozwijalne (inline) (równie C99) Nowy typbool i sta e true i false (równie C99) "Szeroki" typ znakowy, wchar_t (równie C89) wraz ze wszystkimi zale no ciami (wiostream i reszta, nag ówek <wctype>, wstring) operatory rzutowania: static_cast, dynamic_cast, reinterpret_cast i const_cast C Sharp (C#) Z powodów technicznych poprawny zapis nazwy jest rzadko spotykany nawet ze strony Microsoftu. Znak sharp, czyli krzy yk w notacji muzycznej, jest zast powany znakiem kratki (hash, #). zyk C jest obiektowym j zykiem programowania zaprojektowanym przez firm Microsoft. Program napisany w tym j zyku kompilowany jest do kodu po redniego wykonywanego w maszynie wirtualnej.net, Mono lub DotGNU. Do uruchomienia programu napisanego w j zyku C# w systemie Windows wymagana jest biblioteka uruchomieniowa zwana.net Framework dost pna za darmo na stronie Microsoftu. zyk C# ma wiele cech wspólnych z j zykami programowania C++ i Java. Przyk adowe programy Prosty program napisany w j zyku C#. Po jego skompilowaniu i uruchomieniu zobaczymy napis Hello world!. using System; public class PrzykladowaKlasa { public static void Main() { System.Console.WriteLine ("Hello world!"); Kolejny przyk adowy program demonstruje technik programowania interfejsu u ytkownika. Po jego skompilowaniu i uruchomieniu system operacyjny utworzy okienko aplikacji. using System; using System.Windows.Forms; public class PrzykladoweOkno : Form { public static void Main() { Application.Run( new PrzykladoweOkno() ); 16