Kompilacja przechodnia
KOMPILATOR
MASZYNA
GŁÓWNA
PROGRAM
WYNIKOWY
MASZYNA
DOCELOWA
DANE
WE
KOMUNIKATY
KONTROLNE
DANE
WY
PROGRAM
ŹRÓDŁOWY
Interpretacja
INTERPRETATOR
MASZYNA
DOCELOWA
DANE
WE
DANE
WY
PROGRAM
ŹRÓDŁOWY
Język programowania
Język programowania jest zbiorem reguł,
symboli i słów specjalnych (kluczowych)
używanych do zapisywania tekstu programu.
Reguły dotyczą gramatyki (
syntax
) i
znaczenia - semantyki (
semantics
).
Definicja 1.
Gramatyką nazywamy reguły
formalne określające jak zapisywać
poprawnie instrukcje i konstrukcje w języku
programowania.
Definicja 2.
Semantyką nazywamy reguły
określające znaczenie instrukcji i konstrukcji
zapisanych w języku programowania.
Metajęzyk
Gramatyka języka programowania musi być
jednoznaczna. Uznajemy, że komputer nie
myśli. W celu uniknięcia niejednoznaczności
gramatyka języka programowania
zapisywana jest w precyzyjnym języku
formalnym nazywanym metajęzykiem.
Definicja 3.
Metajęzykiem nazywamy język
używany do opisu innego języka.
Gramatyka Ady zdefiniowana jest przy pomocy
rozszerzonej notacji Backusa-Naura.
EBNF (
Extended Backus-Naur Form
)
::= jest określone jako (równe z
definicji)
[ ] element opcjonalny
{ } element powtórzony 0 lub więcej
razy
|
lub (oddziela elementy
zamienne)
EBNF (
Extended Backus-Naur Form
)
Przykład 1.
digit ::= 0|1|2|3|4|5|6|7|8|9
identifier ::= letter
{[_]letter_or_digit}
letter_or_digit ::= letter|digit
letter ::= upper_case_letter
|lower_case_letter
|accented_letter
Słowniczek
• digit
– cyfra,
• identifier
– identyfikator,
• letter
– litera,
• upper_case_letter
– wielka litera,
• lower_case_letter
– mała litera,
• accented_letter
– litera akcentowana.
Struktura programu w Adzie
ada_program ::= [context_clause]
procedure
program_name
is
[declarative_part]
begin
sequence_of_statements
end
program_name;
Przykład 2.
Pierwiastki_Trojmianu
Słowniczek
• context_clause
– lista importowa,
• program_name
– nazwa (identyfikator)
programu,
• declarative_part
– część deklaracyjna,
• sequence_of_statements
– ciąg instrukcji.
Zapisywanie treści programów
• Składowe tekstu programu
• Identyfikatory
• Słowa zastrzeżone
• Liczby
• Komentarze
Składowe tekstu programu
• małe i duże litery alfabetu łącznie z
literami akcentowanymi
• cyfry dziesiętne
0..9
• znaki specjalne
” # & ’ ( ) *
+ ,
- . / : ; < = > _ |
• znak odstępu czyli spacji
Identyfikatory 1
Definicja 4.
Identyfikator jest nazwą procesu,
albo obiektu i służy do odwoływania się do
tego procesu, albo obiektu
identifier ::= letter
{[_]letter_or_digit}
Identyfikator musi zaczynać się od litery, nie
może kończyć się podkreślnikiem, dwa
podkreślniki nie mogą wystąpić obok siebie
Zalecenia stylistyczne
Używaj identyfikatorów zrozumiałych dla
czytającego Twój program
Używaj tej samej postaci identyfikatora w
całym programie
Identyfikatory 2
Przykład 3.
To jest formalnie ten sam
identyfikator
Moj_Program moj_program
mOJ_pROGRAM MOJ_PROGRAM
Identyfikatorem nie może być słowo
zastrzeżone (kluczowe)
Słowa zastrzeżone albo kluczowe (Ada
95)
(
reserved words, key words
)
abort
abs
abstract
accept
access
aliased
all
and
array
at
begin
body
case
constant
declare
delay
delta
digits
do
else
elsif
end
entry
exception
exit
for
function
generic
goto
if
in
is
limited
loop
mod
new
not
null
of
or
others
out
package
pragma
private
procedure
protected
raise
range
record
rem
renames
requeue
return
reverse
select
separate
subtype
tagged
task
terminate
then
type
until
use
when
while
with
xor
Liczby
Całkowite
Cyfry: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E,
F}
Podstawy: {2, ..., 9, 10, 11, 12, 13, 14, 15}
Domyślna: 10
Postać wykładnicza: E albo e
Przykład 4.
2000 = 2e3 = 2000E0
Podstawa#Reprezentacja#
Przykład 5.
16#B#e+2 = 11*16
2
Grupowanie: 10000000 = 10_000_000 = 10e6
Rzeczywiste zawierają kropkę dziesiętną
123.45 = 1.2345E2 = 12345.0e-2 =
10#123.45#
Komentarze
Zalecenia stylistyczne
Należy pisać programy z pełnymi objaśnieniami.
Pierwszy komentarz powinien zostać umieszczony
po nagłówku programu i powinien wyjaśniać do
czego program służy. Można tam również podać
źródło algorytmu wg którego realizowane są
obliczenia.
Van Tassel (
1982
) podaje następujące zalecenia:
• Stosuj komentarze wstępne – patrz wyżej
• Stosuj przewodniki po długich programach
• Komentarz ma dawać więcej niż parafrazę
tekstu programu
• Błędne komentarze są gorsze niż zupełny ich
brak
Zadania. Literatura podstawowa
Przykład 6.
A : Float; -- To jest zmienna
rzeczywista
Zadania
Ada_Zadania_1_Pojecia_Wstepne.pdf
Literatura podstawowa
Morawski, M., i Zajączkowski, A. M. (2003).
Wstęp do programowania w języku
Ada’95. Rozdziały 1, 2.