Instrukcja wyrażeniowa to instrukcja zdefiniowana w składni określonego języka programowania, której działanie polega na wykonaniu określonego wyrażenia.
Podstawowe zasady
Instrukcja wyrażeniowa należy do kategorii instrukcji prostych. W kodzie źródłowym instrukcja taka składa się z wyrażenia, zapisanego zgodnie z zasadami danego języka oraz separatora bądź terminatora instrukcji.
Ogólnie w językach programowania:
- może nie być zdefiniowanej instrukcji wyrażeniowej
- dotyczy to języków, w których zdefiniowana jest odrębnie instrukcja przypisania, wywołania i inne instrukcje proste, a samo wyrażenie nie może stanowić odrębnej instrukcji, np. Pascal,
- może występować instrukcja wyrażeniowa
- instrukcja taka występuje zwykle jako jeden z elementów składni obok innych zdefiniowanych instrukcji, a takie instrukcje jak przypisania czy wywołania są tylko jednym z przypadków szczególnych instrukcji wyrażeniowej, np. język C,
- mogą występować wyłącznie wyrażenia
- tzn. język taki nie definiuje odrębnie pojęć wyrażenia i instrukcji, a każda poprawna konstrukcja może występować w roli wyrażenia bądź samodzielnej instrukcji lub jako część innej, większej konstrukcji językowej, np. Icon, Algol 68.
Pewne konstrukcje językowe, typowe, występujące w większości języków programowania wysokiego poziomu, mogą być w nomenklaturze każdego z tych języków zaliczone do odrębnej konstrukcji – instrukcji. Przykładem jest proceduralne wywołanie podprogramu (tj. takie w którym rezultat, o ile w ogóle występuje, jest odrzucony – ignorowany). W języku C takie wywołanie jest po porostu wyrażeniem składającym się w tym specyficznym przypadku z wywołania funkcji, co implikuje zaliczanie takiej instrukcji do instrukcji wyrażeniowej. Natomiast w innych językach, np. Pascal, PL/I, Visual Basic i in., zdefiniowane jest odrębne pojęcie instrukcji wywołania.
Instrukcje wyrażeniowe w językach programowania
Język C
W języku C instrukcja wyrażeniowa jest jedną z podstawowych konstrukcji i obejmuje takie przypadki szczególne jak:
- przypisanie
- wywołanie podprogramu
- inne, poprawne wyrażenie.
Przykładowe instrukcje wyrażeniowe:
a=1; /* znak = jest operatorem, a przypisanie wyrażeniem */
a++; /* rezultat wyrażenia jest ignorowany, ale występuje efekt uboczny */
printf("a=%d",a); /* wywołanie podprogramu również jest wyrażeniem */
Algol 68, Icon
Mimo że te języki znacząco się od siebie różnią, w rozpatrywanym kontekście ich idea jest jednolita: każda poprawna i zdefiniowana w danym języku konstrukcja jest wyrażeniem, a każde wyrażenie może stanowić samodzielną konstrukcję – instrukcję wyrażeniową, lub może być oczywiście częścią innego większego wyrażenia.
Przykład w języku Icon:
while(read(plik,a)) do write(a)
Bibliografia
- Michael Marcotty, Henry Ledgord, W kręgu języków programowania, tłumaczenie: Krystyna Jerzykiewicz, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-1342-7
- John E. Nicholls, Struktura języków programowania, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Informatyka, ISBN 83-204-0246-8
- Ralph E. Griswold, Madge T. Griswold, Icon, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0871-7
- Jan Małuszyński, Krzysztof Pisecki, Algol 68. Wprowadzenie do języka Algol 68, A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster, M. Sintzoff, .H. Lindsey, L.G.L.T. Meertens, R.G. Fisker, w tłumaczeniu Jana Małuszyńskiego i Krzysztofa Piseckiego, Zmieniony raport o języku algorytmicznym Algol 68, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Informatyka, ISBN 83-204-0161-5
- Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., ISBN 83-85060-53-7, ISSN 0867-6011,
- Michał Iglewski, Jan Madey, Stanisław Matwin, Pascal. Język wzorcowy – Pascal 360., Wydawnictwa Naukowo-Techniczne, Warszawa 1984, wydanie trzecie – zmienione, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0597-1,
- Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7