Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Бип из системно... 65535
Пример работы с... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
21 ошибка прогр... 65535
Гостевая книга ... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Содержание сайт... 65535
Invision Power ... 65535
Имитационное мо... 65535
Программируемая... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 22
На сайте нет зарегистрированных пользователей

Пользователей: 13,360
новичок: tomtumper
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование ЭВМ на GPSS (три класса заданий) + Пояснительная записка
Моделирование станции технического обслуживания на GPSS + Отчет
Моделирование информационно-поисковой библиографической системы на gpss ...

Оператор выбора case


Если один оператор if может обеспечить выбор из двух альтернатив, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов.
Формат записи оператора case:
case <выражение-селектор > of
<список значений1>: <оператор1;>
<список значений 2>: <оператор2;>

<список значений N>: <операторN>
else <оператор>
end;



Оператор case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем в последовательности операторов отыскивается такой, которому предшествует константа, равная вычисленному значению. Если ни одна из констант не равна вычисленному значению, выполняется оператор, стоящий за словом else. Если слово else отсутствует, выполняется оператор, находящийся за словом end, т. е. первый оператор за границей case.
Селектор должен относиться к одному из целочисленных типов (находящихся в диапа-зоне — 32768..32767): булевскому, литерному или пользовательскому. Список констант выбора состоит из произвольного количества значений, или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель " .. ". Тип констант в любом случае должен совпадать с типом селектора. В синтак-сическом описании, приведенном выше, предполагается использование одного оператора для каждой альтернативы, но при необходимости можно задать несколько операторов, сгруппировав их в составной оператор. В то же время ветвь else допускает использование последовательности операторов, разделенных символом ";".
При использовании оператора выбора case должны .выполняться следующие правила:
1. Значения выражения "переключателя", записанного после служебного слова case, должны принадлежать дискретному типу (лат. discretus — прерывистый, дробный, состоящий из отдельных частей); для целого типа они должны лежать в диапазоне integer.
2. Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.
3. Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т. е. повторения констант в альтернативах не допускаются); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.
Ниже приведены типичные формы записи оператора case.

Селектор интервального типа:
case I of
1..10 : Writeln ('число ', I:4, ' в диапазоне 1 - 10');
11..20 : Writeln ('число ', I:4, ' в диапазоне 11 - 20');
21.. 30 : Writeln ('число ', 1:4, ' в диапазоне 21 - 30 ')
else Writeln ('число', I:4, ' вне пределов контроля')
end;



Селектор целочисленного типа:
case I of
1 : Z := I + 10;
2 : Z := I + 100;
3 : Z := I + 1000
end;



Селектор перечисляемого пользовательского типа:
var
Season: (Winter, Spring, Summer, Autumn);
begin

case Season of
Winter : Writeln ('Winter');
Spring : Writeln ('Spring');
Summer : Writeln ('Summer');
Autumn : Writeln ('Autumn')
end;
end;



Пример программы с использованием оператора case, которая по введенному вами номеру дня недели выводит на экран видеомонитора его название на русском языке.
program Day_Week;
var Day : byte;
begin
Write ('Введите номер дня недели (от 1 до 7) :');
Readln (Day);
case Day of {Вычисление значения выражения и выбор}
1: Writeln ('Понедельник');
2: Writeln ('Вторник');
3: Writeln ('Среда');
4: Writeln ('Четверг');
5: Writeln ('Пятница');
6: Writeln ('Суббота');
else
Writeln ('Воскресенье');
end;
end.



В данном примере на экран видеомонитора выводится приглашение "Введите номер дня недели с клавиатуры считывается целочисленное значение дня недели и присваивается переменной Day. Затем в зависимости от значения селектора DAY обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Например, если значение Day равно 3, то реализуется оператор
Writeln ('Cpeдa')


Если значение Day равно 7, а ни одна из констант не равна этому значению селектора, то выполняется оператор, стоящий за словом else (на экран выводится текст 'Воскресенье'). Если слово else отсутствует, активизируется оператор, находящийся за словом end;, т. е. первый оператор за границей case. Если значение Day не равно значению ни одной из констант выбора (например, Day=8 или Day=0), то активизируется оператор, находящийся за словом end;, т. е. первый оператор за границей case — оператор end.
Опубликовал Kest Апрель 03 2010 21:22:41 · 2 Комментариев · 65535 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Артур Ноябрь 19 2014 02:35:55
Спасибо за информацию, отличная статья smiley
Мелисса Май 13 2015 20:49:15
Есть программа:

program calcus;
uses crt;
var x,y,z:integer;
s:string;
begin
clrscr;
writeln('vvedite cifru 1');
readln(x);
writeln('vvedite znak operacii');
readln(s);
writeln('vvedite cifru 2');
readln(y);
if s=('+') then z:=x+y;
if s=('-') then z:=x-y;
if s=('*') then z:=x*y;
if s=('/') then z:=x div y;
writeln('otvet: ',z);
readln;
end.

Нужно заменить if/than на case/of. помогите пожалуйста, кто знает.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Пример работы с р...
Domen Name IP
Berg
Панель "Случайное...
Pro-Download Sys...
Род Стивенс. Delp...
Развивающийся фла...
Секреты программи...
Язык программиров...
С/C++ Программиро...
Пример работы с б...
Borland Delphi 8 ...
Scrrlcaptoin
Разработка клиент...
VksButton
Flash MP3 Player ...
Х. М. Дейтел, П. ...
PHP/MySQL для нач...
SMLPack v1.0
Программирование ...

Топ загрузок
Приложение Клие... 100770
Delphi 7 Enterp... 97748
Converter AMR<-... 20258
GPSS World Stud... 17013
Borland C++Buil... 14181
Borland Delphi ... 10257
Turbo Pascal fo... 7371
Калькулятор [Ис... 5966
Visual Studio 2... 5205
Microsoft SQL S... 3661
Случайные статьи
Как быть, если на ...
Механизмы доступа ...
компьютеров
В качестве первого...
Суммирование маршр...
Частотная манипуляция
Модуль Legacy
Новый корпус для ЭЛТ
Стереовыход для At...
Непроизводительные...
Конфигурации сетей...
ввод строки произв...
Обобщения
Таблицы
Компиляторы MIPS
Глава 1. Риск: ос...
Где светодиодные л...
Гармоники или моды
SDECREMENT (УМЕНЬШ...
Мультиплексировани...
Quadric. ремонт те...
Третий алгоритм ре...
Телефонное оборудо...
ПМ Казино онлайн
Введение
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?