Навигация
Главная
Поиск
Форум
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
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 4
На сайте нет зарегистрированных пользователей

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

База данных склада на Delphi + Схема БД
База данных студентов на Delphi (файл записей) + Блок схемы
Диплом - база данных поставщиков на Delphi (MS Sql Server)+ Пояснительна...

Оператор выбора 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 April 03 2010 17:22:41 · 2 Комментариев · 65535 Прочтений · Для печати

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


Комментарии
Артур November 18 2014 23:35:55
Спасибо за информацию, отличная статья smiley
Мелисса May 13 2015 17: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...
Шаблон для новост...

Случайные загрузки
Голосование для ...
Киллер окон
netBIOS
CABfiles
Простой текстовый...
Berg
PDJ Scrollers
Calendar
БД сеть компьютер...
MpegPlay
Xrumer 4 Platinum...
Паскаль и Дельфи....
Blib [Исходник на...
Шкрыль А. - Разра...
AntiRus
NotePad Pro [Исхо...
PrevInst
Импорт новостей ...
DirHTMLReportBuil...
Exe in exe

Топ загрузок
Приложение Клие... 100771
Delphi 7 Enterp... 97788
Converter AMR<-... 20259
GPSS World Stud... 17014
Borland C++Buil... 14186
Borland Delphi ... 10267
Turbo Pascal fo... 7372
Калькулятор [Ис... 5968
Visual Studio 2... 5205
Microsoft SQL S... 3661
Случайные статьи
Указатель this
Игры для программиста
Подготовка корпуса...
Особенности слота ...
Глава 8 посвящена ...
же работало в сети...
ПАРАМЕТРИЗАЦИЯ В П...
Локализация прилож...
Рассказывайте людя...
Производительность...
7.13. Применение...
Обеспечение достав...
Формат PNG
Undefined forward
Старда Казино
Прикольные фотогра...
Базовая программа ...
Добавление медиафа...
Копирование и доза...
Курсы программиров...
Как стать издателем
Вопросы гидродина...
Выработайте конфиг...
Выдача информации ...
Бюджеты и инфографика
Статистика



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


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