Nawias syntaktyczny – w programowaniu, to element składni określonego języka programowania służący definiowaniu strukturalnych elementów kodu źródłowego, takich jak bloki czy instrukcje strukturalne. Nawiasami syntaktycznymi w językach programowania są wybrane przez autorów konkretnego języka programowania słowa kluczowe, lub znaki nawiasów (symbole). Zarówno w przypadku słów kluczowych, jak i symboli, para nawiasów dla konkretnej konstrukcji, obejmuje słowo (lub symbol) otwierające oraz słowo (lub symbol) zamykające strukturę programową. Nawiasy syntaktyczne definiują takie elementy w kodzie źródłowym, jak np. instrukcje strukturalne, podprogramy, moduły, definicje typów strukturalnych (struktury, unie, rekordy, klasy itp.). Pośród języków programowania można wyróżnić języki, w których
- dla każdego odrębnego bloku definiuje się unikatową parę nawiasów syntaktycznych, oraz języki, w których
- definiuje się pewną jednolitą konstrukcję grupującą (np. instrukcję blokową), a pozostałe konstrukcje odnoszą się bądź do jednej (pojedynczej) instrukcji, bądź do tak zdefiniowanej konstrukcji grupującej (która jest traktowana jak pojedyncza instrukcja).
rodzaj bloku | nawiasy unikatowe | jednolita konstrukcja | mieszane rozwiązania |
---|---|---|---|
Visual Basic[1][2] | C[3][4][5], C++[5] | Pascal[6][7][8] | |
podprogram |
Function F(ByVal P As Integer) As Integer
' blok podprogramu
End Function
|
int F(int P)
{
/* blok podprogramu */
}
|
function F(P: Integer): Integer;
begin
{ blok podprogramu }
end;
|
instrukcja warunkowa |
If warunek Then
' blok-if
Else
' blok-else
End If
|
if(warunek)
{
/* blok if */
}
else
{
/* blok else */
}
|
if warunek then
begin
{ blok if }
end
else
begin
{ blok else }
end;
|
pętla repetycyjna |
Do While warunek
' blok pętli
Loop
|
while(warunek)
{
/* blok pętli */
}
|
while warunek do
begin
{ blok pętli }
end;
|
instrukcja wyboru |
Select Case wyrażenie
' blok instrukcji wyboru
End Select
|
switch(wyrażenie)
{
/* blok instrukcji wyboru */
}
|
case wyrażenie do
{ blok instrukcji wyboru }
end;
|
struktura, rekord |
Type nazwa_struktury
' pola struktury
End Type
|
struct nazwa_struktury
{
/* pola struktury */
}
|
nazwa_struktury=record
{ pola struktury }
end;
|
Przykładowymi językami, w których stosuje się pierwsze z powyższych rozwiązań, są takie języki programowania jak np. Ada)[9][10], BASIC[11][12], Visual Basic[1][2], Clipper[13], Forth[14][15], Modula-2[16], PL/I[17][18] i inne. W językach tych słowem zamykającym wielu konstrukcji jest słowo end
. W pewnych przypadkach słowo to połączone jest z innym słowem, identyfikującym zamykaną strukturę (np. end function
, end if
, end select
itd.). Językami, w których stosuje się drugie z rozwiązań, to np. język C[3][4][5], C++[5] i podobne: {
... }
(choć i w tych językach jest wyjątek: do
... while(warunek);
), Lisp[19]: (
... )
. Istnieją też języki w których stosuje się rozwiązania mieszane, tzn. wobec pewnej grupy konstrukcji stosuje się rozwiązanie pierwsze, a wobec innej – drugie. Tak jest np. w języku Pascal, w którym w odniesieniu do instrukcji i bloków (programu, podprogramów), stosuje się zapis grupujący (begin
... end
), ale z wyłączeniem pewnych instrukcji (np. case
) oraz innych elementów np. definicji typów, dla których istnieją odrębne struktury grupujące (np. record
... end
), natomiast dla sekcji deklaracji: type, var, const, w ogóle nie definiuje się słowa zamykającego, a sekcja taka kończy się wraz z rozpoczęciem następnej sekcji lub na słowie begin
[6][7][8].
Struktura nawiasów syntaktycznych może być bardziej rozbudowana, w porównaniu do nawiasów stosowanych w wyrażeniach. Obejmuje bowiem konieczność definiowania wielu sekcji w ramach danej struktury nawiasu. Dotyczy to przede wszystkim instrukcji warunkowych i instrukcji wyboru, w których musi istnieć możliwość wyboru jednego z wielu wariantów. Są to jednak elementy pośrednie stosowane wewnątrz pewnej pary nawiasów syntaktycznych.
Za przykład może posłużyć ogólna postać instrukcji warunkowej w języku Visual Basic[1][2]:
If warunek-1 Then ' --- nawias syntaktyczny otwierający
' instrukcje-1
ElseIf warunek-2 Then ' --- elementy pośrednie
' instrukcje-2
ElseIf warunek-3 Then ' --- elementy pośrednie
' instrukcje-3
...
ElseIf warunek-n Then ' --- elementy pośrednie
' instrukcje-n
Else ' --- elementy pośrednie
' instrukcje-else
End If ' --- nawias syntaktyczny zamykający
język programowania | brak nawiasów | unikatowe konstrukcje | rozwiązania mieszane | jednolite konstrukcje | z pewnymi wyjątkami |
---|---|---|---|---|---|
Ada[9][10] | n.d. | ||||
Basic[11][12] | n.d. | ||||
C[3][4][5], C++[5] | |||||
Clipper[13] | n.d. | ||||
Forth[14][15] | n.d. | ||||
JEAN[20][21] | n.d. | ||||
Lisp[19] | |||||
Modula-2[16] | n.d. | ||||
Pascal[6][7][8] | n.d. | ||||
PL/I[17][18] | n.d. | ||||
PL/M[22][23] | n.d. | ||||
Visual Basic[1][2] | n.d. | ||||
n.d. – nie dotyczy |
Przypisy
- 1 2 3 4 Podręcznik Visual Basic na Wikibooks.
- 1 2 3 4 John Walkenbach: Excel 2003 PL. Programowanie w VBA.. HELION, 2004. ISBN 837361-504-0. (pol.).
- 1 2 3 Brian W. Kernighan, Dennis M. Ritche: Język C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1067-3. (pol.).
- 1 2 3 Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.).
- 1 2 3 4 5 6 Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.).
- 1 2 3 Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal. Język wzorcowy – Pascal 360. Wyd. trzecie – zmienione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1984, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).
- 1 2 3 Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).
- 1 2 3 Mike Ducka, tłumaczenie: Marcin Turski: Języki mikrokomputerów. Przewodnik dla początkujących. Basic, Pascal, Logo, Prolog, Comal, Forth. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988. ISBN 83-204-0966-7. (pol.).
- 1 2 A. Nico Habermann, Dewayne E. Perry: Ada dla zaawansowanych. Warszawa: Wydawnictwa Naukowo-Techniczne, 1989, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1058-4. (pol.).
- 1 2 Michał Morawski, Antoni M. Zajączkowski: Wstęp do programowania w języku Ada’95. Wyd. drugie. Łódź: 2004. [dostęp 2011-01-29]. (pol.).
- 1 2 Zbigniew Czech, Krzysztof Nałęcki, Stanisław Wołek: Programowanie w języku BASIC. Wyd. drugie uzupełnione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1985. ISBN 83-204-0776-1. (pol.).
- 1 2 Wacław Iszkowski: Nauka programowania w języku BASIC dla początkujących. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Mikrokomputery. ISBN 83-204-0834-2. (pol.).
- 1 2 Wojciech Rogowski, Arkadiusz Serodziński: Clipper 5.0. Warszawa: Wydawnictwo PLJ, 1991. ISBN 83-85190-20-1. (pol.).
- 1 2 Jan Bielecki: Język FORTH. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Mikrokomputery. ISBN 83-204-0930-6. (pol.).
- 1 2 Jan Ruszczyc: Poznajemy FORTH. Warszawa: SOETO, 1987, seria: Informatyka mikrokomputerowa. (pol.).
- 1 2 Niklaus Wirth: Modula 2. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-0828-8. ISSN 0867-6011. (pol.).
- 1 2 Jan Bielecki: Rozszerzony PL/I i JCL w systemie OS/RIAD. Warszawa: Państwowe Wydawnictwo Naukowe, 1986, seria: Biblioteka Informatyki. ISBN 83-01-06146-4. (pol.).
- 1 2 M. I. Auguston i inni: Programowanie w języku PL/1 OS JS. Warszawa: Państwowe Wydawnictwo Naukowe, 1988. ISBN 83-01-07463-9. (pol.).
- 1 2 Jacek Martinek: Lisp. Opis, realizacja i zastosowania.. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-0045-7. (pol.).
- ↑ Jerzy Bettek, Bronisław Rudak, Barbara Rudakowa: Język konwersacyjny JEAN. Wrocław: Wydawnictwo Politechniki Wrocławskiej, 1975, seria: Skrypt wydany w serii Biblioteka WASC. (pol.).
- ↑ Kazimierz Orlicz: Język konwersacyjny JEAN z elementami programowania w Fortranie. Wrocław: Wydawnictwo Politechniki Wrocławskiej, 1977, seria: Skrypt wydany w serii Biblioteka WASC. (pol.).
- ↑ Jan Bielecki: PL/M język programowania mikroprocesorów. Wyd. drugie uzupełnione. Warszawa: Wydawnictwa Komunikacji i Łączności, 1987, seria: Elektronizacja. zeszyt 25. (pol.).
- ↑ Jan Bielecki: System operacyjny ISIS-II. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Mikrokomputery. ISBN 83-204-0893-8. (pol.).
Bibliografia
- Michael Marcotty, Henry Ledgord, tłumaczenie: Krystyna Jerzykiewicz: W kręgu języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1342-7. (pol.).
- John E. Nicholls: Struktura języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Informatyka. ISBN 83-204-0246-8. (pol.).