1.3. Оператор case (оператор выбора) Общий вид: Case выражение - селектор of Список констант выбора 1: оператор 1; Список констант выбора 2: оператор 2 ; - - - - - - - - - - - - - - - - - - - - - - - - - - Список констант выбора n оператор n; else оператор end; Здесь выражение-селектор есть выражение, которое после выполнения имеет любое скалярное значение, кроме вещественного, т.е. выражение-селектор может быть байтового, целого, логического, символьного, перечисляемого и интервального типов. Список констант выбора состоит из перечня констант, разделенных запятыми, либо из констант, заданных интервалом, либо из комбинаций перечня констант и интервалов. Тип констант в списках Case должен соответствовать типу выражения селектор. Значения констант в списках не должны повторяться. Работа оператора. вначале вычисляется выражение-селектор, затем полученное значение сравнивается с константами выбора, и, если значение выражения-селектора совпадает с какой-либо константой выбора, то выполняется оператор, стоящий после списка констант, в котором есть константа, совпадающая со значением выражения-селектора. если значение выражения-селектора не совпадает ни с одной из констант выбора, то выполняется оператор, следующий за else. Else может в Case отсутствовать, тогда в случае несовпадения констант оператор Case игнорируется. Примеры: 1. Селектор целого типа, список констант представлены перечнем констант: Program Prim7; Case i of 1,2,5: writeln('i=',i,' z=',i+10); 12,16: writeln('i=',i,' z=',i+100); 31,35,46: writeln('i=',i,' z=',i+1000); else writeln('неправильно задано i'); readln; 2. Селектор целого типа - список констант представлен диапазоном. вводится целое i, определить, находится ли оно в диапазоне 1-10 или 11-100, или 101-1000, либо вне этих диапазонов. Program Prim8; 1..10: writeln(' число в диапазоне 1-10'); 11..100: writeln(' число в диапазоне 11-100'); 101..1000: writeln(' число в диапазоне 101-1000'); else writeln('число вне диапазона 1-1000'); readln; 3. Селектор целого типа, список констант представлены перечнем констант и диапазоном: Program Prim9; Case i of 1,2,4,8,11..20,24,28,30: writeln('y=',(x+1)/(sqr(x)+2)-ln(m)+2a/b); 31,45..55: writeln('y=',(sqr(a)+m)/sqrt(b+m)-3ab/c+d); 58,60,63..76,78,93,100: writeln('y=',sqr(x)-ax+sqr(sin(ax)-exp(x)) /(1-ln(sqr(x)-exp(х/2)))); else writeln('неправильно задано i'); readln; 4. Селектор знакового типа: Program Prim10; BEGIN Case name of 'S','s': writeln('факультет самолето- и вертолетостроения'); 'D','d': writeln(' факультет авиадвигателестороения'); 'Y','y': writeln(' факультет систем управления'); 'L','l': writeln(' факультет летательныхаппаратов'); 'R','r': writeln(' факультет радиотехнический'); 'M','m': writeln(' факультет инженерно - менеджерский'); 'Z','z': writeln(' факультет заочногообучения'); else writeln('введенный шифр не соответствует ни одному из факультетов ХАИ');
5. Селектор перечисляемого типа: Program Prim11; spring: writeln('spring'); summer: writeln('summer'); autumn: writeln('autumn'); end; END. |