Навигация
Главная
Поиск
Форум
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
Invision Power ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Организация зап... 65300
Создание отчето... 61754
Модуль Forms 61636
ТЕХНОЛОГИИ ДОСТ... 58209
Пример работы с... 55830
Имитационное мо... 53575
Реклама
Сейчас на сайте
Гостей: 12
На сайте нет зарегистрированных пользователей

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

База данных студентов на Delphi + Microsoft SQL Server
Игра Sokoban на Delphi + Блок схемы
Моделирование ЭВМ на GPSS (три класса заданий) + Пояснительная записка

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Оператор выбора 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 Комментариев · 65535 Прочтений · Для печати

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


Комментарии
Артур 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...
Шаблон для новост...

Случайные загрузки
Упорядоченный дин...
Degisy Data Acces...
WAP версия сайта
ActiveX в Delphi
Книга по Delphi (...
PHP5. Профессиона...
Простой пример ка...
RxLIB
Использование Lis...
AlnComponents
Мониторинг сервер...
Открытие Cd-ROM'a...
EMS QuickExport S...
Пишем программы и...
API (Применение A...
ЯЗЫК ПРОГРАММИРОВ...
Apollovcl61
AJAX и PHP. разра...
DelphiX
Tag Игра "Пятнашк...

Топ загрузок
Приложение Клие... 100399
Delphi 7 Enterp... 84058
Converter AMR<-... 20052
GPSS World Stud... 11502
Borland C++Buil... 11306
Borland Delphi ... 8254
Turbo Pascal fo... 6994
Visual Studio 2... 4975
Калькулятор [Ис... 4500
FreeSMS v1.3.1 3517
Случайные статьи
Анализ зависимости...
Разработка програм...
Операторы прерыван...
Hemstädning N...
Новый шаблон прави...
DMZ, настройте вне...
Set base type of r...
Разделяемая память
Архитектура функци...
Применение средств...
Определить самую д...
Другие модификации
Протоколы группово...
Интерфейс на естес...
Кто-то уже собирал...
Начало работы
Нас интересует мат...
Visual FoxPro сам ...
Ремонт телефонов П...
Создание и изменен...
Программируемая за...
Евровидение 2017
Компонент кнопка
Game Boy, 1989 год
Геотермальная энер...
Статистика



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

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