materiał1 - Paweł Mazurek

Transkrypt

materiał1 - Paweł Mazurek
Informatyka
Studia niestacjonarne
EINS 2
dr inż. Paweł A. Mazurek
„…Programowanie nie istnieje samo dla siebie:
aby w ogóle miało ono sens, musi służyć
konkretnemu celowi…”
Informacje organizacyjne
Forma zajęć
wykład – 2h na zjazd
laboratorium – 2h na zjazd
Informacje
strony: http://mazurek.pollub.pl
email: [email protected]
3
zakres tematyczny wykładów
1.
2.
3.
4.
5.
6.
7.
8.
wstęp (podstawowe pojęcia związane z programowaniem, przegląd
języków
programowania,
ogólne
zasady
programowania
zorientowanego obiektowo)
algorytmika - sieć działań (schematy blokowe)
historia języka Pascal i ogólna charakterystyka pakietu Delphi
posługiwanie się zintegrowanym systemem programowania, przegląd
konstrukcji języka Delphi Pascal (program, moduł , biblioteka, funkcje
i procedury, klasy i obiekty, typy danych, zmienne, instrukcje)
struktura programu i modułu,
podstawowe elementy języka (symbole podstawowe, słowa kluczowe i
dyrektywy języka, identyfikatory, liczby, łańcuchy, literały logiczne,
komentarze i separatory)
typy danych i ich opis (definiowanie typów, typy proste, łańcuchowe,
strukturalne, opisujące obiekty, wskaźnikowe, zgodność typów)
zmienne (deklaracje zmiennych, zmienne indeksowane, rekordowe,
obiektowe, dynamiczne, nakładanie zmiennych)
4
zakres tematyczny wykładów
9.
10.
11.
12.
13.
14.
15.
16.
wyrażenia (rodzaje operatorów i ich priorytet, składnia wyrażenia,
wyrażenia stałe)
instrukcje (proste, strukturalne, asemblerowa)
funkcje i procedury (definicje funkcji i procedur, rodzaje parametrów,
przeciążanie funkcji i procedur, wywoływanie funkcji i procedur)
przetwarzanie obiektów (konstruktory i destruktory, metody statyczne,
wirtualne, dynamiczne i abstrakcyjne, obsługa wiadomości, własności)
biblioteki łączone dynamicznie (tworzenie bibliotek, statyczne i
dynamiczne pobieranie funkcji i procedur)
przetwarzanie plików
przygotowanie systemów pomocy dla programów okienkowych
przygotowanie wersji dystrybucyjnej programu
5
Literatura
Andrzej Marciniak, Borland Delphi 5 Professional – Object Pascal,
Wydawnictwo NAKOM, Poznań
Dokumentacja pakietu Borland Delphi 7 (6, 5) Professional (Language
Guide, Developer’s Guide)
System pomocy pakietu Borland Delphi 7 (6, 5) Professional
Xavier Pacheco, Steve Teixeira, Delphi 7 (6, 5) - Vademecum
profesjonalisty , tom 1, Wydawnictwo HELION, Gliwice
6
Wstęp do programowania
Czym jest programowanie?
Programowanie to formułowanie ciągu operacji rozwiązującego dany
problem w postaci akceptowalnej przez komputer.
inaczej:
Proces tworzenia programu (systemu) komputerowego, na który
składają się:
• opracowanie założeń
• kodowanie
• testowanie
Dobre programowanie łączy elementy inżynierii, „rzemiosła” i „sztuki”.
Programowanie - projektowanie, pisanie, modyfikowanie i testowanie
programów.
(IBM Dictionary of Computing)
8
9
Podstawowe pojęcia
• Algorytm
• Język programowania
• Program
• Kod źródłowy i wynikowy
• Kompilacja
• Programowanie strukturalne i obiektowe
• Środowisko programistyczne
10
Algorytm
Algorytm to dokładny, jednoznacznie sformułowany sposób postępowania,
umożliwiający rozwiązanie określonego zadania w skończonej liczbie
kroków.
(zbiór poleceń ze wskazaniem porządku, w jakim mają być realizowane).
Słowo algorytm pochodzi od przydomka matematyka arabskiego (IX w.) AlChwarizmi (Algorismus, Algorithmus).
Zapis algorytmu:
• w postaci opisu słownego
• w postaci pseudokodu
• w postaci schematu blokowego.
Algorytm - uporządkowany zbiór reguł rozwiązania zadania w skończonej liczbie
kroków.
(IBM Dictionary of Computing)
Program - algorytm zapisany w języku programowania.
11
Algorytm
Programista musi znać sposób rozwiązania problemu, który stanowi
przedmiot programu. Ten sposób określa algorytm.
Algorytm określa dane oraz skończony ciąg operacji, jakie należy na
tych danych wykonać, aby rozwiązać dowolny problem z określonej
klasy.
Inaczej mówiąc, algorytm określa dane oraz plan akcji, jakie należy
wykonać, aby osiągnąć założony cel.
12
cechy algorytmu
Kompletność
• algorytm uwzględnia wszystkie możliwe przypadki które mogą
wystąpić w trakcie realizacji algorytmu
• algorytm przewiduje wystąpienia błędów (numerycznych,
logicznych, itd.) oraz posiada system reakcji (komunikaty o błędach,
odpowiednie zakończenie działania
skończoność
• algorytm zapewnia osiągnięcie rozwiązania w skończonej liczbie
kroków (czyli w skończonym czasie)
• dokładna liczba kroków nie jest znana a priori
• algorytm posiada warunek zakończenia
jednoznaczność
• dla tych samych danych wejściowych algorytm musi dawać
zawsze te same wyniki
• algorytm jest niezależny od momentu jego uruchomienia, wpływu
13
innych programów, sprzętu, kodowania znaków, itp.
z czego składa się algorytm ?
dane
obiekty podlegające przekształceniu podczas działania
wynik
ostateczny rezultat działania algorytmu
instrukcje
opis sekwencji czynności które muszą zostać wykonane w
ściśle określonej kolejności
14
Algorytm ma być..
1. Poprawny — dla każdego poprawnego zestawu informacji
wejściowych prowadzić do poprawnych rezultatów.
2. Jednoznaczny — każdorazowo, dla każdego poprawnego
zestawu informacji wejściowych, prowadzić do tych
samych rezultatów.
3. Szczegółowy — aby ktoś albo coś wykonujący algorytm
rozumiał dokładnie opisane operacje i potrafił je wykonać.
4. Uniwersalny —
pozwalał na rozwiązanie dowolnego
problem z określonej klasy, a nie dotyczył pewnych
przypadków.
15
Metody zapisu algorytmów
1. Język naturalny (potoczny) określający ciąg kroków
algorytmu.
2. Notacje graficzne,
blokowe.
najpopularniejsze
są
schematy
3. Pseudokod — połączenie języka naturalnego i notacji
matematycznej z elementami języków programowania.
4. Zapis w postaci kodu programu w pewnym języku
programowania.
16
Schemat (diagram) blokowy
SCHEMAT BLOKOWY (ang. flowchart, block diagram, block scheme, flow
diagram)
Sieć działań, czyli graficzna reprezentacja procedury lub programu
sporządzana w celach poglądowych lub jako przedstawienie algorytmu
do zapisania w języku programowania.
Ogólny plan budowy układu elektronicznego sporządzonych za pomocą
umownych symboli z zaznaczeniem połączeń i kierunków przepływu
informacji.
W schemacie blokowym poszczególne operacje przedstawione są za pomocą
odpowiednio połączonych skrzynek (klocków, bloków). Połączenia określają
kolejność i sposób wykonywania operacji realizujących dany algorytm.
W literaturze informatycznej przyjęto pewne standardowe oznaczenia
poszczególnych działań (są to figury geometryczne), ale można również używać
innych oznaczeń (muszą one jednak być takie same dla określonego typu
operacji).
(PN-75/E-01226)
17
Symbole stosowane w diagramach działań programów
Wprowadzanie, wyprowadzanie
wprowadzanie lub (i)
wyprowadzanie danych
Przetwarzanie operacja lub grupa
operacji, w wyniku których ulega
zmianie wartość, postać lub
miejsce zapisu danych
Skrzynka warunkowa sprawdzanie
Decyzja operacja określająca
warunku, np. czy N>0, mają kształt
wybór jednej
rombu. Ze skrzynki wychodzą tylko
z alternatywnych
dwa
połączenia: jedno oznaczone
dróg
działania
TAK, a drugie NIE.
18
Symbole stosowane w diagramach działań programów
Łącznik stronicowy
wejście lub wyjście z wyodrębnionych
fragmentów schematu znajdujących
się na jednej stronie
Łącznik międzystronicowy
wejście lub wyjście z wyodrębnionych
fragmentów schematu znajdujących
się na różnych stronach
19
Symbole stosowane w diagramach działań programów
Przygotowanie
modyfikacja instrukcji lub grupy instrukcji
powodująca zmianę w przebiegu procesu
przetwarzania
Droga przepływu danych
więź operacyjna między poszczególnymi
operacjami procesu przetwarzania
Droga przepływu danych o wskazanym
kierunku
20
Schemat blokowy tworzony jest według
następujących reguł:
1. Schemat blokowy składa się z bloków połączonych
zorientowanymi liniami;
2. Bloki obrazują ciąg operacji; powinien być start i koniec;
3. Zawsze wykonywane są albo wszystkie instrukcje w bloku
albo żadna;
4. Dalsze operacje nie zależą od poprzednich wariantów, chyba
że zależności te zostały przekazane za pomocą danych;
5. Kolejność wykonania operacji jest ściśle określona przez
zorientowane linie łączące poszczególne bloki;
6. Do każdego bloku może prowadzić co najwyżej jedna linia;
7. Linie mogą się łączyć ale nie mogą się rozdzielać (bez bloku
decyzyjnego).
21
ZASADY BUDOWANIA SCHEMATU BLOKOWEGO
Każda operacja powinna być umieszczona w skrzynce (bloku)
Schemat powinien posiadać tylko jedną skrzynkę "Start" i
przynajmniej jedną skrzynkę "Stop"
Skrzynki powinny być ze sobą połączone
Ze skrzynki powinno wychodzć jedno połączenie; wyjątek
stanowią skrzynki "Stop" (z której nie wychodzą już żadne
połączenia) oraz "warunkowa" (z której wychodzą dwa
połączenia opisane Tak i Nie - w zależności od tego czy
warunek jest spełniony czy też nie; można wyjść jedną z
dwóch dróg).
22
operacja wyboru
na schemacie blokowym operacje wyboru jednej z
alternatywnych dróg działania realizujemy za pomocą
skrzynki warunkowej
wewnątrz skrzynki warunkowej umieszczamy warunek
logiczny
operatory: = <> < > <= >= OR AND
23
instrukcja warunkowa
jeśli spełniony jest
warunek W to
realizowane są
instrukcje A, w
przeciwnym
wypadku
realizowane są
instrukcje B
24
instrukcja pętli "dopóki"
dopóki spełniony
jest warunek W to
instrukcje są
powtarzane
25
instrukcja warunkowa
instrukcje są
realizowane jeśli
spełniony jest
warunek W
26
instrukcja pętli „powtarzaj aż”
instrukcje są
powtarzane aż do
spełnienia jest
Warunek W
27
instrukcja pętli „powtarzaj n raz”
zainicjalizuj zmienną za
pomocą wartości
powtarzaj określoną liczbę razy
- jeśli zmienna jest poniżej
warunku zmiennej
kontrolnej, to wejdź do pętli
- jeśli warunek jest fałszywy, to
następuje koniec przetwarzania
28
klasyfikacja algorytmów
algorytmy proste i rozgałęzione
algorytmy cykliczne i mieszane
algorytmy sekwencyjne i równoległe/współbieżne
algorytmy numeryczne i nienumeryczne
algorytmy rekurencyjne i iteracyjne iteracja: wielokrotne wywołanie sekwencji poleceń aż do
spełnienia warunku sterującego
rekurencja: wywołanie procedury z wewnątrz tej samej
procedury
29
30
31
32
33
Przykładowe diagramy
34
Przykładowe diagramy
35
Soft do diagramów
Do realizacji diagramów graficznych można wykorzystać wiele
programów, w tym nawet proste programy graficzne. Na
laboratorium wykorzystywany będzie darmowy program Diagram
Designer. Aktualną wersje programu można ściągnąć ze strony
projektu: http://meesoft.logicnet.dk/
36
Język programowania
Język programowania to zbiór:
• zasad (tzw. składnia języka)
• instrukcji
• operatorów
• …..
dzięki którym powstaje program komputerowy (a ściślej: kod źródłowy
programu).
Język programowania - język formalny (sztuczny) służący do zapisu
programów komputerowych.
(IBM Dictionary of Computing)
37
Programowanie
strukturalne,
które
zrewolucjonizowało
tworzenie
oprogramowania, opiera się na bardzo prostej zasadzie: dziel i rządź. Duży
problem rozbija się na kilka mniejszych. Te rozbija się na jeszcze mniejsze. I tak
dalej. Zaletą programowania strukturalnego jest możliwość tworzenia programu
zespołowo: każdy konkretny programista dostaje pewną część zadania do
rozwiązania. Standardowy język Pascal nie wspiera jednak programowania
obiektowego. Istnieją różne dialekty, w tym obiektowo zorientowane, ale są one
nieprzenośne. W praktyce oznacza to, że np. ucząc się Delphi, wiążemy się z
jedną firmą i jednym typem komputera. Tym samym jest prawdopodobne, że
napisany przez nas program nie będzie poprawnie pracował po kilkunastu
latach czy też na innej platformie.
Język Pascal ogranicza inwencję programisty i brak w nim standaryzacji
procesu łączenia z bibliotekami. Piszącemu program wolno tylko to, co
kompilator uzna za bezpieczne. W praktyce "zwykły" Pascal jest zbyt krępujący.
Brak możliwości dołączania bibliotek uniemożliwia korzystanie z gotowych
procedur, o ile nie są one dostępne w formie tekstu źródłowego.
Konkurencyjnym w stosunku do Pascala językiem programowania był język C.
Jest to język bardzo prosty w konstrukcji, niezbyt łatwy w użyciu, niezbyt
teoretycznie konsekwentny w składni, lecz bardzo praktyczny. Obecnie jest
jednak już nieco przestarzały.
38
Język C ewoluował w język C++, nazywany językiem programowania lat
dziewięćdziesiątych. Język C++ jest językiem służącym do
programowania obiektowego. Co ciekawe, rozbudowane C++ jest
językiem znacznie łatwiejszym w użyciu niż "czyste" C i pozwala łatwo,
po jedynie drobnych i automatycznych modyfikacjach, adaptować kod
źródłowy pierwotnie napisany w Fortranie, Algolu czy Pascalu. Naturalne
jest więc przechodzenie w ośrodkach naukowych zajmujących się fizyką
z języka Fortran na C++ jako na de facto język standardowy, jak to np.
ma miejsce w CERN. Pewnym zagrożeniem dla języka C++ może być,
podobny do niego, język Java. Przewaga Javy nad C++ leży w lepszym
podejściu do programowania współbieżnego. Java powstała niedawno,
nic więc dziwnego, że udało się jej autorom stworzyć język XXI wieku.
Jedynym problemem, jaki jest związany z językiem Java, jest polityka
licencyjna firmy Sun, będącej formalnie właścicielem tego języka cokolwiek by to mogło oznaczać.
39
Język programowania to inaczej język opisu algorytmów przeznaczonych
do wykonywania na komputerze. Językiem programowania nazywa się
maszynowo-ukierunkowanym (język niskiego poziomu), gdy odzwierciedla
listę rozkazów komputera ( asembler), a maszynowo-niezależnym ( język
wysokiego poziomu), gdy nie jest związany z określonym typem komputera
(komputer wymaga wyposażenia go w translator określonego językiem
programowania). Ze względu na sposób przedstawienia algorytmu
obliczeniowego rozróżnia się: język programowania imperatywnego,
funkcyjnego i język programowania w logice.
Gdy język programowania pozwala na tworzenie pewnych jednostek (zw.
obiektami), wiązanie ich w różne struktury oraz dokonywanie na nich
innych, specyficznych dla danego języka, operacji - to mówi się o języku
programowania obiektowego (np. C++). Obiektami mogą być ciągi instrukcji
(zw. wtedy współprogramami), grupy danych, struktury graficzne
wyświetlane na monitorze (np. okienka) i inne.
40
Dlaczego powstały języki programowania?
41
Języki programowania – pojęcia podstawowe
Język
ogólna nazwa zdefiniowanego zbioru znaków i symboli oraz
reguł określających sposoby i kolejność ich użycia. Język, który
jest stosowany do przetwarzania algorytmów nosi nazwę języka
algorytmicznego, a przy zastosowaniu go do celów
programowania określony jest jako język programowania.
Ponieważ komputer posługuje się językiem binarnym, tzn.
rozróżnia stany 0:1 - program w języku programowania należy
przetworzyć tak, aby był zrozumiały dla maszyny – zadaniem
tym zajmują się translatory.
Języki programowania – pojęcia podstawowe
Język programowania
zbiór zasad składni, instrukcji, dzięki którym powstaje kod
źródłowy programu. Procesor jest w stanie wykonywać program
w kodzie maszynowym. Jednakże tworzenie programów w tym
języku jest praktycznie niemożliwe. Dlatego programista używa
języka zrozumiałego dla człowieka, który następnie jest
kompilowany bądź interpretowany do postaci maszynowej.
Istnieje wiele rodzajów języków programowania. Można je
podzielić na języki strukturalne i obiektowe. Innym kryterium
podziału jest zastosowanie języków (innych używa się do
tworzenia programów multimedialnych, a innych do obliczeń
numerycznych czy np. aplikacji sieciowych). Niektóre z języków
są bardziej uniwersalne niż inne.
Języki programowania – pojęcia podstawowe
Implementacja
zestaw narzędzi pośredniczący w tłumaczeniu kodu zapisanego
w danym języku na kod maszynowy danego procesora. Każdy
język programowania ma z reguły kilka implementacji
przeznaczonych na różne platformy i robione przez różnych
producentów
44
Języki programowania – pojęcia podstawowe
Kod (plik) źródłowy
program komputerowy w postaci tekstu zawierającego instrukcje
języka programowania. Kod źródłowy jest jedynym formatem
programu czytelnym dla człowieka. Kod źródłowy jest
przetwarzany na kod maszynowy przez program zwany
translatorem.
Kod (plik) obiektowy
przetłumaczona na język niskiego poziomu (asembler) wersja
kodu źródłowego.
45
Języki programowania – pojęcia podstawowe
Translator
służy do wykonania kompilacji lub interpretacji kodu źródłowego
(automatycznego tłumaczenia kodu źródłowego na język
maszynowy).
Standardowym katalogiem, w których umieszcza się pliki
translatora jest katalog BIN w głównym katalogu aplikacji. Aby
proces translacji był możliwy, system operacyjny musi znać
dokładne położenie translatora i jego bibliotek. W tym celu
należy dokonać odpowiedniego wpisu w pliku wsadowym
autoexec.bat (czasami wpis tworzony jest automatycznie
podczas instalacji).
Rozróżnia się dwa rodzaje translatorów: kompilatory i
interpretery.
46
Języki programowania – pojęcia podstawowe
Kompilator
program jednorazowo tłumaczący cały kod źródłowy na język maszynowy i
zapisujący go do pliku wynikowego.
Kolejne uruchomienia programu (pliku wynikowego) nie wymagają
powtórzenia etapu kompilacji – oznacza to, że kompilator nie jest potrzebny
do uruchamiania programu. Typowymi przykładami języków kompilowanych
są: C, C++, Pascal, Fortran;
47
Języki programowania – pojęcia podstawowe
Interpreter
program tłumaczący i wykonujący kod źródłowy linia po linii. W tym
przypadku nie ma pliku wynikowego, a każde uruchomienie wymaga
ponownego przeprowadzenia etapu interpretacji – interpreter jest więc
niezbędny do uruchomienia i wykonania programu. Typowymi przykładami
języków interpretowanych są: Python, MatLab, GNU Plot, HTML, BPL;
48
Języki programowania – pojęcia podstawowe
Biblioteka statyczna
rodzaj biblioteki, która łączona jest z programem w etapie
konsolidacji. W systemach z rodziny Windows zwykło nadawać
się im rozszerzenia .lib lub .o, natomiast w systemach z rodziny
Unix są to zwykle .a lub .o. Biblioteki statyczne, w
przeciwieństwie do bibliotek dynamicznych, nie wymagają
pomocy systemu operacyjnego komputera – po połączeniu z
danym programem są od razu gotowe do użycia.
Biblioteka dynamiczna
rodzaj biblioteki, która łączona jest z programem dopiero w
momencie jego wykonania. Aby tego dokonać system
operacyjny komputera musi posiadać pewne funkcje, które
umożliwiają łączenie dynamiczne. W systemach Windows
biblioteki dynamiczne mają zazwyczaj rozszerzenie .dll
49
Języki programowania – pojęcia podstawowe
Edytor kodu
służy do pisania tekstu kodu źródłowego. Edytory mogą być
uniwersalne (np. ConText, Amigo, Crimson, Codex, EditPlus,
UltraEdit, Editeur, …) lub też zintegrowane z konkretną
implementacją języka (np. Borland Delphi, Compaq Visual
Fortran …). Edytory uniwersalne pozwalają na podłączanie
kompilatorów jednego lub wielu języków i są rozprowadzane
jako oddzielne programy. Podłączenie konkretnego kompilatora
odbywa się poprzez odpowiednią definicję opcji programu.
Zaletą edytorów jest to, że poprawiają znacznie przejrzystość i
wygodę tworzenia kodu, a także „pomagają” pisać kod
źródłowy programu wyróżniając, zazwyczaj kolorem lub
wytłuszczoną czcionką, słowa kluczowe danego języka – łatwo
wówczas zauważyć błąd już na etapie jego popełniania.
50
Języki programowania – pojęcia podstawowe
Debugger (analizator kodu)
służy do analizy poprawności tworzonego kodu źródłowego i
stanowi zazwyczaj integralną część translatora (może być to
również oddzielny program). Podczas analizy kodu źródłowego
generowane są informacje o błędach – czasami wymaga to
podania dodatkowych opcji kompilacji – na bieżąco (analizator
zatrzymuje się w miejscu wykrycia błędu) lub też w postaci
końcowego raportu. Oprócz sygnałów o błędach, analizatory
podają również tzw. ostrzeżenia, tzn. informacje o znalezieniu
niejasności w kodzie lub o wykryciu miejsca potencjalnie
niebezpiecznego. Typowym ostrzeżeniem jest wiadomość o
wykryciu deklaracji zmiennej, która nie została nigdzie w kodzie
wykorzystana.
51
Języki programowania – pojęcia podstawowe
Edytor formularzy
służy do budowy okien widzianych przez użytkownika po
uruchomieniu programu (formularzy). Element ten występuje
jedynie w językach wizualnych, takich jak Visual Basic, Delphi,
Compaq Visual Fortan i innych. W różnych implementacjach
języków, edytor formularzy może być dostępny bezpośrednio
po uruchomieniu programu lub też po wybraniu odpowiedniej
opcji z menu. Zaletą stosowania tego narzędzia jest łatwość
tworzenia dowolnie skomplikowanych okien i określania ich
właściwości. Nie traci się wówczas czasu na pisanie elementów
kodu, odpowiedzialnych za tworzenie się formularzy i ich
elementów, a programista skupia się jedynie na realizacji
założonego algorytmu. 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.
52
Języki programowania – pojęcia podstawowe
Menadżer projektu
służy do zarządzania modułami i plikami projektu. Rzadko
bowiem tak się zdarza, że cały kod źródłowy zawarty jest w
jednym pliku – przeważnie jest ich wiele i zawierają nie tylko
poszczególne moduły kodu, ale również biblioteki, różne 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. Ilość narzędzi i poziom ich
zaawansowania zależy od implementacji języka.
53
Języki programowania – pojęcia podstawowe
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. Zależnie od implementacji języka oraz jego
rodzaju pomoc może być mniej lub bardziej rozwinięta. Dobrze
zorganizowanie, obszerne systemy pomocy zawierają często
kompendium wiedzy na temat danego języka programowania.
54
Języki programowania – pojęcia podstawowe
Etapy kompilacji
Etap preprocesingu – obejmuje on odczyt i analizę kodu źródłowego na podstawie
reguł danego języka. W tym etapie dokonywana jest:
• analiza leksykalna – rozdzielenie kodu źródłowego na elementarne jednostki
języka programowania zwane tokenami;
• analiza składniowa – kontrola, czy ułożenie tokenów nie łamie reguł danego
języka programowania (czy kod źródłowy był poprawny składniowo);
• analiza semantyczna – określenie znaczenia poszczególnych tokenów.
Przykładem może być sprawdzanie, czy nie występuje niezgodność typów.
Etap kompilacji – służy do przetłumaczenia kodu źródłowego na kod obiektowy. W
przypadku jednoczesnej kompilacji wielu plików źródłowych, każdy z nich
przetworzony jest na oddzielny kod obiektowy. Na tym etapie nie są analizowane
zależności pomiędzy poszczególnymi segmentami programu;
Etap konsolidacji – służy do połączenia wszystkich plików obiektowych oraz
dodatkowych bibliotek statycznych w jeden kod wynikowy. Na tym etapie
sprawdzane są zależności pomiędzy poszczególnymi segmentami programu. Dodanie
biblioteki statycznej wymaga podania odpowiednich opcji kompilacji. Po konsolidacji
program jest gotowy do uruchomienia.
55