Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Ветвление по ряду условий (оператор case)

Оператор if позволяет выполнять переходы на ту или иную ветвь по значению булевского (логического) условия. Используя несколько операторов if, можно производить ветвление по последовательности условий.

Пример 5.4.
Преобразование введенного целого числа из диапазона (0..4) в его словесное представление

Program Digitl;
var
Num: integer;
begin
write('Введите число:');
readln(Num);
if Num = 0 then
writeln('Нуль');
if Num = 1 then
writeln('Один');
if Num = 2 then
writeln('Два ');
if Num = 3 then
writeln( 'Три ');
if Num = 4 then
writeln('Четыре');
readln end.

 

Выполним ту же задачу, используя другую управляющую структуру — оператор выбора case ... of.
Формат записи оператора таков:

Case <выражение порядкового типа> of
<значение1>:<оператор1>;
<значениеN>:<операторN>
else <оператор>
end

 

Пример 5.5.
Использование структуры case ... of для перевода целого числа в его словесное представление

Program Digit2;
var Num: integer;
begin
write('Введите число:');
readln(Num);
case Num of
0: writeln('Нуль');
1: writeln('Один');
2: writeln('Два' );
3: writeln('Три ');
4: writeln('Четыре')
else writeln('Введено другое число')
end;
readln
end.

 

Ниже приведена блок-схема алгоритма решения этой задачи (рис. 5.9).

 

Рис. 5.9. Блок-схема алгоритма, выводящая словесное представление введенного с клавиатуры числа (не большего 4)

 

Переменная Num является селектором в операторе case. По значению селектора происходит переход на соответствующую метку.

Селектор должен принадлежать к порядковому типу (то есть он не может иметь тип real)!

 

Пример 5.6.
Определение номера квартала по введенному номеру месяца

Program Digit3;
var
Num:integer;
begin
write('Введите номер месяца:');
readln(Num);
case Num of
1,2,3 : writeln('Первый квартал');
4,5,6 : writeln('Второй квартал');
7.. 9 : writeln('Третий квартал'); { метка 7..9 -
интервал чисел от 7 до 9: то же самое, что и 7,8,9}
10..12: writeln('Четвертый квартал')
else writeln('Некорректный ввод')
end;
readln
end.

 

При переходе на метку может выполняться целый блок операторов, который оформляется с помощью структуры begin ... end.

 

Задание 5.11.
Написать программу, в которой в переменную типа Char вводится символ с клавиатуры. Программа выдает сообщение о том, какой символ был введен:
- цифра от 0 до 9;
- латинская строчная буква;
- латинская заглавная буква.

При записи меток в операторе case можно использовать интервальный тип. Например, интервал для латинских заглавных букв записывается: 'A'. .'Z'.
Если нужно учесть строчную латиницу, то интервал
для меток будет выглядеть так: 'A'. .'Z','a'. .'z'.

 

Выводы

1. Существуют задачи, решение которых включает анализ логического условия. Такие задачи описываются разветвляющимся алгоритмом (сравните с линейным алгоритмом).
2. При ветвлении анализируется логическое выражение и, в зависимости от его результата, выполняется та или иная ветвь алгоритма.
3. В Паскале оператор ветвления называется if. Он имеет две формы записи — полную и неполную.
4. При полной форме записи if в случае истинности логического условия выполняется один блок программы (после слова then), а в случае ложности — другой (после слова else).
5. При неполной записи оператора if блок else опускается.
6. При переходе на ту или иную ветвь алгоритма после анализа логического условия возможно выполнение блока операторов, который оформляется с помощью структуры begin ... epd.
7. Точка с запятой слева и справа от then и от else не ставится.
8. В случае, когда анализируемое выражение может иметь более двух значений, и при разнйх значениях нужно выполнять разные инструкции, используют оператор case.
9. Оператор case должен заканчиваться ключевым словом end. Это один из тех редких случаев, когда количество операторов begin в программе не будет совпадать с количеством операторов end.
10. Чтобы текст программы был более понятен, вложенные (подчиненные) блоки операторов принято оформлять со сдвигом вправо, лесенкой. При каждом следующем вложении операторы сдвигают еще на несколько позиций вправо.

 

Контрольные вопросы

1. Чем отличается линейный алгоритм от ветвления?
2. Какие ключевые слова используются в Паскале для организации ветвления? Что находится между ними?
3. Чем полное ветвление отличается от неполного?
4. Как оформлять текст программы, чтобы он был понятнее?
5. Что необходимо использовать, если в случае истинности некоторого условия нужно выполнить несколько операторов?
6. Как быть, если в случае истинности некоторого условия никаких действий выполнять не требуется, а в случае ложности нужно выполнить несколько действий?
7. Какую управляющую структуру Паскаля нужно использовать, если проверяемое выражение может принимать несколько возможных значений, и в каждом случае необходимо выполнить разные действия?
saw
8. В каком случае количество операторов begin в программе не должно соответствовать количеству операторов end?




 

Комментарии:

2013-03-16 ответил Марина

Ну так чем же отличается линейный алгоритм от ветвления? А?



2014-10-11 ответил Виталий

Линейные выполняются строго по рядку обязательно, не линейный(ветвленный) - нет, какая либо часть может вообще не выполниться, если условие будет постоянно не верно



2015-01-17 ответил ssss

lol



2016-04-04 ответил Страсный Адам

Петя - лох



2016-04-04 ответил Гитлер 220

Зубатка ёпта



2016-04-04 ответил Носок Сталина

Петя натянул Панкееву



2021-12-13 ответил Стас

Друзья, помогите написать программу в Pascal, с помощью которой можно будет решать систему линейных уравнений методом Крамера. Блок-схема содержится по ссылке: https://www.mathros.net.ua/rozvjazok-systemy-linijnyh-algebraichnyh-rivnjan-metodom-kramera.html




Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru