Навигация
Главная
Поиск
Форум
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
HACK F.A.Q 65535
Гостевая книга ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Эмулятор микроп... 65535
Бип из системно... 58490
Invision Power ... 57583
Организация зап... 57365
Модуль Forms 56484
Создание отчето... 55030
Приложение «Про... 54668
Подключение Mic... 54522
Оператор выбора... 54289
ТЕХНОЛОГИИ ДОСТ... 51067
Программируемая... 47651
Имитационное мо... 46810
Пример работы с... 46787
21 ошибка прогр... 41851
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

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

Двунаправленный динамический список на Delphi + Блок схемы
Моделирование работы перекрёстка по регулированию движения на GPSS + Поя...
Создание последовательности окон и передвижение окон по экрану на Turbo ...

Реклама

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

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


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

Случайные загрузки
Разработка клиент...
Tag Игра "Пятнашк...
Синтаксический ан...
CoolControls v3.0...
DelTrayIcon [Исхо...
DateEdit
Распознавание тек...
Rotolabel
Моделирование дви...
MiniChat
JanReplace
Добавление к ссы...
С# для профессион...
Иллюстрированный ...
Еext Editor
FilesInfo
Размещение элемен...
Animation (Пример...
ИНТЕРНЕТ ПРОГРАММ...
PHP/MySQL для нач...

Топ загрузок
Приложение Клие... 100269
Delphi 7 Enterp... 75065
Converter AMR<-... 20016
Borland C++Buil... 10470
GPSS World Stud... 8817
Borland Delphi ... 7469
Turbo Pascal fo... 6867
Visual Studio 2... 4868
Калькулятор [Ис... 3836
FreeSMS v1.3.1 3481
Случайные статьи
Boolean expression...
Версия XHTML 1.0 S...
Kак увеличить посе...
Запись данные в по...
1.4.6. Создание об...
Приложение Б. Избр...
Файл компоновки ви...
12.1. Задача
Создание блога в L...
Фаза управления
Попытайтесь написа...
Инкапсуляция
Сенсорные экраны
Типизация перемен...
Подробнее об экспо...
Объявим два констр...
Процедура GetTextS...
Использование скры...
НИСХОДЯЩАЯ РЕКУРСИЯ
Сообщения протокол...
Аффилиаты
транспортном режим...
FTP-сервером, испо...
Секция Alias
База данных по сту...
Статистика



Друзья сайта
Программы, игры
Wydruki kolor plotowanie warszawa.

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