Instrukcja – najmniejszy samodzielny element imperatywnego języka programowania. Instrukcja może być niskiego poziomu napisana w asemblerze np. mov ax,bx, która po przetłumaczeniu na kod binarny (język maszynowy) nadaje się do uruchomienia przez procesor lub instrukcja wysokiego poziomu napisana np. w języku C: int a = 5;, która zostanie przetłumaczona na kilka instrukcji niskiego poziomu. Program komputerowy jest tworzony jako lista różnych instrukcji. Instrukcja może zawierać wewnętrzne komponenty (np. wyrażenia).
Wiele języków programowania (np. C) w swojej syntaktyce rozróżnia instrukcje i definicje – instrukcja zawiera kod wykonywalny, a definicja deklarację identyfikatora. Można również wprowadzić podział na instrukcje proste i złożone – złożone mogą zawierać dowolne inne instrukcje jako komponenty.
Typologia
Główne rodzaje instrukcji z przykładami w typowych językach imperatywnych (w niektórych językach poniższe przykłady są uznawane za wyrażenia, nie instrukcje):
Instrukcje proste
- int a = a + 1;
- CLEARSCREEN()
- return 5;
- goto 1
- assert(ptr != NULL);
Instrukcje złożone
- begin WRITE('Number? '); READLN(NUMBER); end
- if A > 3 then WRITELN(A) else WRITELN("NOT YET") end
- switch (c) { case 'a': alert(); break; case 'q': quit(); break; }
- while NOT EOF DO begin READLN end
Wyrażenia
W większości języków instrukcje różnią się od wyrażeń tym, że niekoniecznie zwracają wyniki i mogą być wykonywane dla osiągnięcia określonych skutków ubocznych, podczas gdy wyrażenia zawsze zwracają wynik i zwykle nie powodują żadnych efektów ubocznych. Spośród imperatywnych języków programowania, Algol 68 jest jednym z niewielu, w którym wyrażenie może zwrócić wynikzaprzecza wcześniejszemu zdaniu. W językach, które łączą programowanie imperatywne z programowaniem funkcyjnym, takich jak dialekty Lispu, nie istnieje podział na wyrażenia i instrukcje: nawet wyrażenia wykonywane sekwencyjnie jedynie dla określonych skutków ubocznych, których zwracane wyniki nie są brane pod uwagę, wciąż są nazywane wyrażeniami. W językach czysto funkcyjnych nie ma instrukcji – wszystko jest wyrażeniem.
Języki programowania
Składnia i semantyka instrukcji jest zdefiniowana przez specyfikację języka programowania. Większość języków nie zezwala na tworzenie nowych instrukcji podczas wykonywania programu (jednym z wyjątków jest np. Snobol 4) lub modyfikację już stworzonych wyrażeń (Lisp jest językiem znanym ze swojego wsparcia dla samomodyfikującego się kodu).