В ТП передбачено ще один управляючий механізм для вибору однієї з декількох альтернатив, який іноді виявляється кращим в порівнянні з структурою умовного оператора. Оператор вибору стає особливо необхідним та оптимальним в тих випадках, коли в залежності від значень певної змінної треба обрати один з трьох або більше варіантів обчислень, тобто має місце базова структура “вибір”:

Структура оператора вибору така:
CASE <управляюча змінна або вираз > OF
n1: < оператор 1>;
n2: < оператор 2>;
…………………
nk: < оператор k>
ELSE < альтернативний всім оператор >
END;
Між службовими словами CASE та OF повинна стояти змінна або вираз, який обчислюється при виконанні оператора в першу чергу. Це –селектор, за значенням якого відбувається вибір одного з варіантів. Тип змінної або виразу може бути тільки перелічуваним ( в тому числі CHAR та BOOLEAN ), діапазоном або цілочисловим.
ni – набори значень: конкретні значення управляючої змінної або вирази, при котрих необхідно виконувати відповідний оператор, ігноруючи решту варіантів. В наборі може бути декілька значень, якщо один і той же оператор необхідно виконувати при різних значеннях селектору. Тоді ці значення відокремлюються один від одного комою. Можна також при необхідності указати діапазони значень. Між набором значень і відповідним йому оператором обов‘язково повинна ставитися двокрапка “:”. niповинно бути одного типу з селектором. Значення в кожному наборі повинні бути унікальними, тобто можуть з’являтися лише в одному варіанті.
<Оператор> в будь-якому варіанті може бути як простим, так і складеним. Кінець варіанта обов’язково позначається “;”.
Порядок виконання оператора вибору такий: спочатку обчислюється значення селектора, яке потім порівнюється із значенням n1. Якщо вони співпадають, то виконується <оператор 1>, а решта пропускається. Якщо їх значення різні, то такі дії повторюються для кожного варіанта до тих пір, поки не буде знайдено підходящий варіант. ТП допускає необов’язкову частину ELSE . Якщо значення селектора не співпало з жодним із значень в варіантах , буде виконано оператор, що стоїть після ELSE. Завершує оператор вибору службове слово END. Перед ELSE та END “;” необов’язкова.
Швидкість виконання оператора вибору буде максимальною, якщо першими в порядку проходження розміщувати найбільш імовірні значення.
Приклад. Скласти програму обчислення значення функції

a+bx+cx2 при 1≤x<2
(asin(xb))c при 2≤x<3
Y=
easinx +c3 при 3≤x<5
0 в решті випадків
Програма:
PROGRAM SELECTOR;
VAR A,B,C,X,Y : REAL;
BEGIN
WRITELN (‘ВВЕСТИ A,B,C,X’);READ (A,B,C,X);
WRITELN (‘A=’,A,’ B=’,B,’ C=’,C,’ X=’,X);
CASE TRUNC(X) OF
1: Y:= A+B*X+C*X*X;
2: Y:= EXP(C*LN(ABS(A*SIN(X*B))));
3,4: Y:=EXP(A*SIN(X))+C*C*C
ELSE
Y:=0
END;
WRITELN(‘Y=’,Y)
END.
В програмі вибір здійснюється по значенню цілої частини змінної X , яка визначається за допомогою функції TRUNC(X). Першому обмеженню на значення X відповідає значення селектору 1, другому – 2, третьому – 3 та 4. Альтернатива ELSE оператора вибору забезпечує присвоєння функції Y значення 0.