background image

2010-05-17

1

Języki programowania

Język

zbór znaków i symboli oraz reguł 
określających sposoby i kolejność ich 
użycia

Język algorytmiczny – język, który jest 
stosowany do zapisywania algorytmów.

Język programowania – język 
algorytmiczny stosowany do celów 
programowania.

background image

2010-05-17

2

Język programowania

zbiór zasad składni oraz instrukcji, dzięki 
którym programista tworzy kod źródłowy
programu. 

Programista używa języka programowania 
zrozumiałego dla człowieka, który jest 
tłumaczony do postaci kodu maszynowego

Procesor wykonuje program zapisany w 
kodzie maszynowym.

Przykład programu w języku C

background image

2010-05-17

3

Kod źródłowy

program komputerowy napisany w języku 
programowania. 

postać programu, która jest zrozumiała dla 
programisty (bez konieczności jego 
uruchamiania). 

jest przekształcany na kod maszynowy 
procesie translacji (kompilacji lub 
interpretacji) programu.

Kod maszynowy

język rozumiany przez procesor. 

Program w kodzie maszynowym składa się z 
ciągu wartości binarnych, które oznaczają 
zarówno instrukcje jak i dane. 

Postać kodu maszynowego zależy od 
architektury procesora.

background image

2010-05-17

4

Translacja

Program napisany w języku programowania 
musi zostać przetłumaczony na kod 
maszynowy, aby mógł być wykonany przez 
procesor.

Translacja oznacza tłumaczenie programu 
napisanego w języku programowania z 
postaci źródłowej do postaci wynikowej 
zrozumiałej dla maszyny (procesora).

Translator

Translator to specjalny program (lub 
urządzenie) dokonujący translacji.

Translatory dzieli się na:

kompilatory i interpretery tłumaczące 
programy zapisane w językach wysokiego 
poziomu,

assemblery tłumaczące programy zapisane 
w językach symbolicznych.

.

background image

2010-05-17

5

Kod wynikowy

Kod maszynowy uzyskany jako rezultat pracy 
translatora (kompilatora lub interpretera), 
nadający się do bezpośredniego 
wykonywania przez procesor albo 
wymagający dalszej obróbki (np. 
konsolidacji).

Czasami zamiast określenia kod wynikowy 
używa się nazwy kod obiektowy.

Translacja

background image

2010-05-17

6

Kompilator

program służący do automatycznego 

tłumaczenia kodu źródłowego w języku 
programowania na kod maszynowy. 

Niektóre kompilatory tłumaczą najpierw do 

języka asemblera, a ten na język maszynowy 

jest tłumaczony przez asembler.

Stosowanie kompilatorów ułatwia 

programowanie (programista nie musi znać 

języka maszynowego) i pozwala na większą 

przenośność kodu pomiędzy platformami.

background image

2010-05-17

7

Interpreter

program, który analizuje  kod źródłowy  i wykonuje 
przeanalizowane  fragmenty (instrukcje).

Inaczej niż dla procesu kompilacji, podczas  którego 
nie wykonuje  się instrukcji kodu  źródłowego.

Wykonanie  programu  za pomocą  interpretera  jest 
wolniejsze,  wymaga więcej zasobów  systemowych 
niż wykonanie  kodu skompilowanego. 

Etapy translacji

background image

2010-05-17

8

Preprocesing

wstępne przygotowanie programu do właściwej 
kompilacji. 

Dołączane są dodatkowe pliki z kodem 

źródłowym.

Dodawane są do kodu źródłowego deklaracje 

używanych funkcji i/lub informacja o 
stosowanych zmiennych.

Tak przetworzony kod źródłowy poddawany jest 

analizie składniowej i translacji. 

Preprocesor jest najczęściej zintegrowany z 
kompilatorem/interpreterem

.

Translacja

tłumaczenie kodu źródłowego na kod 
wynikowy (binarny) zrozumiały dla procesora.

background image

2010-05-17

9

Konsolidacja

dołączanie bibliotek do tworzonego programu 
(kodu wynikowego).

Jeżeli używane są funkcje z biblioteki, 

niezbędne jest dołączenie biblioteki do 
programu.

Biblioteka jest również „programem”, który nie 

może być samodzielnie uruchomiony. 

Zawiera funkcje, do których odwołują się inne 
programy.

Po konsolidacji program jest gotowy do użycia.

Generacje 

języków 

programowania

Można wyróżnić pięć wyraźnie różniących się 
generacji języków programowania (1GL-5GL). 

W miarę rozwoju techniki komputerowej, 
wystąpiła konieczność dostarczania narzędzi 
programistycznych, które umożliwiłyby 
maksymalne wykorzystanie sprzętu. 

Nie ma pełnej zbieżności chronologicznej 
między poszczególnymi generacjami języków i 
sprzętu.

background image

2010-05-17

10

1GL

Programowanie odbywało się bezpośrednio 
w kodzie binarnym (ciągi zer i jedynek). 

Każdy typ komputera operuje własnym 
kodem maszynowym.

Główna wada: programista każdorazowo 
musi dostosowywać się do języka konkretnej 
maszyny.

2GL

Ciągom zerojedynkowym  przypisano  łatwiejsze  do 
zrozumienia  znaki  mnemoniczne. 

Języki symboliczne,  zwane  też językami asemblera. 

stanowią  proste  tłumaczenie  języka  maszynowego  na 
symbole,

są ściśle  związane  z danym modelem  procesora.

Przykład:

mov dx, offset info
mov ah, 9
int 21h
mov ah, 0
int 16h

background image

2010-05-17

11

3GL

Języki wysokiego poziomu.

Symbole asemblera reprezentujące konkretne 

instrukcje zostały zastąpione kodem 

niezwiązanym z maszyną, bardziej zbliżonym 

do języka naturalnego lub matematycznego.

Przykład:

for i:=1 to MaxN do
begin

Vx[i]:=Vx[i]+dx[i];

end;

4GL

Języki programowania wraz z zestawem narzędzi, 

które umożliwiają budowę prostych aplikacji przez 

zestawianie „prefabrykowanych” modułów. 

Często stanowią rozszerzenie języków już 

istniejących. 

W niektórych przypadkach stosuje się nazwę „czwarta 

generacja” w odniesieniu do programowania 
obiektowego

background image

2010-05-17

12

Przykłady języków 4GL

Języki zapytań do baz danych 

SQL 

Generatory raportów / stron

Oracle Reports 

Przetwarzanie danych, analiza i raportowanie 

GraphTalk 

Informix-4GL 

Języki strumienia danych 

APE 

AVS 

Iris Explorer 

Generatory formularzy

Oracle Forms 

Tworzenie GUI 

Delphi 

Visual Basic (edycja formatek )

Windows Forms (część .NET) 

5GL

języki używane do tworzenia programów 
wykorzystujących sztuczną inteligencję,

systemy ekspertowe.

Przykład: PROLOG

background image

2010-05-17

13

Podział języków 
programowania

Podział ze względu na generację języka 
programowania

Podział ze względu na sposób translacji

Podział ze względu na strukturę

Podział ze względu na zastosowanie

Podział JP

ze względu na rodzaj translacji:

kompilowane,

interpretowane.

background image

2010-05-17

14

Podział JP

Podział ze względu na strukturę (1):

języki proceduralne  (imperatywne) 

programista  określa  JAKIE operacje  maja  być 
wykonane i w JAKIEJ KOLEJNOŚCI.

Przykład: C, Pascal

języki nieproceduralne  (deklaratywne)

programista  opisuje  to, CO chce wykonać. Decyzja 

JAK to wykonać należy  do translatora.

Przykład: SQL

Podział JP

Podział ze względu na strukturę (2):

języki strukturalne 
(Fortran, Pascal, Algol)

języki zorientowane  obiektowo 
(C++ , Visual C++, Object Pascal, Smalltalk, 
Objective-C, Eiffel , Lisp, Oberon,  Actor , CLOS,
Ada95,  Prolog++, Zink, JAVA, J++, Visual 
Objects, Python):

background image

2010-05-17

15

Podział JP

Podział języków ze względu na zastosowania:

algorytmiczne: do zapisywania algorytmów

algebraiczne (Fortran, Pascal, C) - do zapisu 

algorytmów numerycznego przetwarzania 
informacji,

ekonomiczne (COBOL, PL/1) -

opis algorytmów 

przetwarzania informacji o charakterze 
ekonomicznym, bankowym, handlowym.

do symbolicznego przetwarzania informacji (LISP) -

do zapisu algorytmów przetwarzania informacji 
numerycznych i na danych symbolicznych.

Podział JP

Podział języków ze względu na 
zastosowania, cd:

języki symulacyjne (SIMULA)  - ułatwiają 
opisywanie  algorytmów modelowania  i symulacji

bezpośredniego  dostępu  (BASIC)  - pozwalają  na 

konwersację z maszyną.

problemowe  -

ściśle dostosowane  do konkretnej 

klasy zadań.

background image

2010-05-17

16

Zintegrowane środowisko 
programistyczne (IDE)

Translator

Biblioteki i dodatkowe pliki wsadowe

Edytor kodu

Debugger

Edytor formularzy

Menadżer projektu

Narzędzia dodatkowe

System pomocy

Przykłady środowisk 
programistycznych: Delphi

background image

2010-05-17

17

Przykłady  środowisk 
programistycznych:  SharpDevelop

Biblioteki i dodatkowe pliki 
wsadowe

służą do rozszerzania możliwości języka, 

szczególnie w zakresie pewnych zastosowań 

(np. obliczeń matematycznych, numerycznych, 

obróbki grafiki).

Biblioteki podstawowe dostarczane są wraz z 

środowiskiem programistycznym, biblioteki 

dodatkowe rozprowadzane są w postaci 

osobnych pakietów.

background image

2010-05-17

18

Edytor kodu

służy do  pisania tekstu kodu źródłowego.

Poprawia  znacznie  przejrzystość i wygodę  tworzenia 
kodu.

Edytory mogą być uniwersalne  lub zintegrowane  z 

konkretną implementacją  języka. 

Edytory uniwersalne  pozwalają  na podłączanie 

kompilatorów  jednego  lub wielu języków  i są 
rozprowadzane  jako oddzielne  programy. 

Edytor kodu

służy do  pisania tekstu kodu źródłowego.

Poprawia  znacznie  przejrzystość i wygodę  tworzenia 
kodu.

Edytory mogą być uniwersalne  lub zintegrowane  z 

konkretną implementacją  języka. 

Edytory uniwersalne  pozwalają  na podłączanie 

kompilatorów  jednego  lub wielu języków  i są 
rozprowadzane  jako oddzielne  programy. 

background image

2010-05-17

19

Debugger

służy do analizy poprawności tworzonego kodu 

źródłowego

stanowi zazwyczaj integralną część translatora 

Podczas analizy kodu źródłowego generowane są 

informacje o błędach na bieżąco (analizator 

zatrzymuje się w miejscu wykrycia błędu) lub też w 

postaci końcowego raportu.

Oprócz informacji o błędach, analizatory podają 

również tzw. ostrzeżenia, tzn. informacje o znalezieniu 

niejasności w kodzie lub o wykryciu miejsca 
potencjalnie niebezpiecznego.

Debugger

background image

2010-05-17

20

Edytor formularzy

służy do budowy okien widzianych przez 

użytkownika po uruchomieniu programu 
(formularzy). 

Zaletą stosowania tego narzędzia jest łatwość 
tworzenia dowolnie skomplikowanych okien i 

określania ich właściwości. 

Brak edytora formularzy nie przesądza o tym, 

że nie można tworzyć standardowych, 

„okienkowych” aplikacji – wygląd definiowany 

jest wówczas przez programistę w kodzie 

źródłowym.

Edytor formularzy

background image

2010-05-17

21

Menadżer projektu

służy do zarządzania  modułami  i plikami projektu. 

Do kompilacji programu zwykle potrzebnych jest wiele plików, 

które zawierają:

poszczególne moduły kodu, 

biblioteki, 

pliki wsadowe, 

grafikę i pliki multimedialne. 

Zazwyczaj istnieje główny plik projektu zawierający wszystkie 
potrzebne do kompilacji informacje. 

Z pomocą menadżera łatwo można modyfikować zawartość i 

strukturę projektu.

Narzędzia dodatkowe

służą do tworzenia:

systemu pomocy,

ikon i kursorów, 

programów  instalacyjnych,

itp.

background image

2010-05-17

22

Narzędzia dodatkowe

System pomocy

służy do uzyskiwania informacji o:

środowisku programistycznym,

zasadach jego użytkowania,

elementach języka wraz z przykładami,

rodzaju licencji, autorach i kontaktach.

Dobrze zorganizowanie, obszerne systemy pomocy 

zawierają często kompendium wiedzy na temat 

danego języka programowania.

background image

2010-05-17

23

System pomocy

Programowanie

Podejście strukturalne

Podejście obiektowe

background image

2010-05-17

24

Podejście strukturalne

Algorytmy + struktury danych = programy

Podział algorytmu na operacje realizowane 
za pomocą odrębnych procedur

Dane i procedury nie są ze sobą ściśle 
związane.

Podejście obiektowe

Obiekty -

elementy łączące stan (czyli dane) i 

zachowanie (czyli procedury, tu: metody). 

Algorytm wyrażony jest jako zbiór obiektów, 
komunikujących się pomiędzy sobą w celu 
wykonywania zadań.

background image

2010-05-17

25

Klasa

Klasa to w programowaniu obiektowym

częściowa lub całkowita definicja  obiektów 
mających wspólną  strukturę i zachowanie 

może także  oznaczać  zbiór wszystkich obiektów 
tego samego typu

Modelowanie obiektów 
rzeczywistych

background image

2010-05-17

26

Klasa -

przykład

nazwa klasy

pola

metody

Obiekt

Jest egzemplarzem danej klasy

Ma stan pamiętany w polach

Ma określony zbiór operacji (metod)

Jest odróżnialny od innych obiektów

background image

2010-05-17

27

Klasa i obiekty

Klasa Samochód

Obiekty klasy Samochód

Hermetyzacja (enkapsulacja)

ochrona przed bezpośrednim dostępem do 
danych zawartych w obiekcie. 

Do danych umieszczonych w obiektach danej 
klasy należy się odwołać jedynie za 
pośrednictwem metod tej klasy.

Dostęp do składowych klasy można 
ograniczać specyfikatorami dostępu: private, 
protected, public

background image

2010-05-17

28

Hermetyzacja (enkapsulacja)

C zęść pryw atna

i chroniona

klasy/obiektu -

dane i m etody

C zęść publiczna

klasy/obiektu - m etody

Dziedziczenie

Utworzenie nowej klasy na podstawie już 
istniejącej, poprzez 

dodanie  nowych pól i metod,

lub zmianę  implementacji  już istniejących metod.

związek między elementem ogólnym
(zwanym nadklasą lub przodkiem) 
a pewnym specyficznym jego rodzajem 
(zwanym podklasą lub potomkiem).

background image

2010-05-17

29

Dziedziczenie (generalizacja)

Pojazd

Dziedziczenie

background image

2010-05-17

30

Polimorfizm

Jeśli obiekt należy do pewnej klasy K, 
to należy również do wszystkich nadklas 
klasy K

Programowanie