Используя оператор выбора составьте программу которая

Ранее Вы познакомились с условным оператором If, который позволяет программе выполнять переходы на ту или иную ветвь по значению булева условия. Используя несколько операторов If, можно производить ветвление по последовательности условий. В приведенном фрагменте показано, как при помощи ряда операторов If можно преобразовать целое число (в диапазоне 0-9) к его словесному представлению:

Вы уже, наверное, представили, насколько этот подход однообразный и утомительный. Язык Паскаль предоставляет для этих целей другую управляющую структуру (оператор выбора case), которая позволяет построить ветвление по ряду условий в форме, более удобной для чтения программ.

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

Общая форма записи следующая:

case выражение of

значение1 : оператор (группа операторов);

Switch. Что это. Пример. Синтаксис. Оператор множественного выбора. Урок #13.

значение2 : оператор (группа операторов);

значениеN : оператор (группа операторов)

else оператор (группа операторов);

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

Может случиться, что в списке выбора не окажется константы равной вычисленному значению ключа. В этом случае управление передается оператору, стоящему за словом ELSE.

case NUMBER mod 2 of

0 : writeln (NUMBER, ‘- число четное‘)

else : writeln (NUMBER, ‘- число нечетное‘);

Если один оператор выполняется при нескольких значениях, то их можно перечислить через запятую.

case MONTH of

1, 2, 3 : writeln (‘Первый квартал‘);

4, 5, 6 : writeln (‘Второй квартал‘);

7, 8, 9 : writeln (‘Третий квартал‘);

10, 11, 12 : writeln (‘Четвёртый квартал‘);

Оператором может являться не только простой оператор, но также составной и пустой операторы.

case CODE of

1 : for i := 1 to 5 do

Любому заданному значению селектора соответствует лишь один вход в списке операторов. Константы должны принадлежать тому же типу, что и селектор. Если селектор принимает значение, которому не соответствует ни один вход, то будет выполняться оператор, следующий за словом else. Если же этого оператора нет, то никакие альтернативы не будут выполняться.

Если оператор должен выполняться при нескольких значениях селектора следующих друг за другом, образуя некоторый промежуток, то это можно записать в более сжатой форме. Например,

case Chislo of

0..9 : write (‘Это число является цифрой‘);

Посмотрите, в каких вариантах еще можно использовать оператор выбора при решении задачи.

Задача. Написать программу преобразования цифр в слова.

writeln (‘Это число не является цифрой‘)

case a of

0 : writeln (‘ноль‘);

1 : writeln (‘один‘);

4 : writeln (‘четыре‘);

5 : writeln (‘пять‘);

6 : writeln (‘шесть‘);

7 : writeln (‘семь‘);

8 : writeln (‘восемь‘);

9 : writeln (‘девять‘);

case a of

0 : writeln (‘ноль‘);

1 : writeln (‘один‘);

4 : writeln (‘четыре‘);

5 : writeln (‘пять‘);

6 : writeln (‘шесть‘);

7 : writeln (‘семь‘);

8 : writeln (‘восемь‘);

9 : writeln (‘девять‘)

else writeln (‘Это число не является цифрой‘);

Выберите с учителем задачи для самостоятельного решения.

1. Написать алгоритм, позволяющий получить словесное наименование школьных оценок.

2. Написать алгортм, классифицирующий треугольники (остроугольные, прямоугольные, тупоугольные), если даны углы.

3. Написать алгоритм, который по номеру дня недели — целому числу от 1 до

7 выдавать в качестве результата количество уроков в классе в соответствующий день.

4. Написать алгоритм нахождения числа дней в месяце, если даны: Номер месяца n — целое число а, равное 1 для високосного года и равное 0 в противном случае.

Читайте также:
Какая программа лучше для открытия файлов

5. По номеру дня недели вывести его название.

6. В зависимости от того введена ли открытая скобка или закрытая, напечатать «открытая круглая скобка» или «закрытая фигурная скобка». (Учитывать круглые, квадратные, фигурные скобки).

7. В зависимости от введённого символа L, S, V программа должна вычислять длину окружности; площадь круга; объём цилиндра.

8. По введенному числу от 0 до 15 вывести название цвета, соответствующего этому коду.

9. Определить, является ли введенная буква русского алфавита гласной.

10. Написать программу, которая бы предлагала меню для вывода графических объектов, и рисовала бы соответствующий выбору.

11. Придумайте шуточный тест с выдачей шуточных результатов.

12. Напишите программу, которая по введенному числу из промежутка 0..24, определяет время суток.

13. Напишите программу, которая по введенному номеру месяца високосного или невисокосного года, выводит количество дней в месяце.

14. Вычислить значение функции по одной из формул:

15. Придумайте программу на использование оператора выбора сase.

Источник: studfile.net

Уроки 23 — 25
Логические величины и выражения, программирование ветвлений
Практикум
Практическая работа № 3.2
«Программирование логических выражений»
Практическая работа № 3.3
«Программирование ветвящихся алгоритмов»

На уроках «Программирование линейных алгоритмов» был показан способ отображения ветвления (полного и неполного) на блок-схеме и учебном Алгоритмическом языке. Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора If. В 9 классе вы познакомились с этим оператором. Вспомним его формат.

Полное ветвление:

If < логическое выражение >Then < оператор 1 >Else

Неполное ветвление:

If < логическое выражение >Then

То, что в алгоритмах называется условием, в Паскале является логическим выражением, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться < оператор 1 >(после Then), если — false, то < оператор 2 >(после Else) для полной формы или оператор, сразу следующий после условного, для неполной формы (без Else). На ветвях может быть как простой оператор, так и составной — серия операторов в операторных скобках Begin, End.

Пример 1. По длинам трех сторон треугольника а, b, с требуется вычислить его площадь.

Для решения задачи используется формула Герона

image

где р = (а + b + с)/2 — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника — длина каждой стороны должна быть меньше суммы длин двух других сторон, и длины сторон не могут быть отрицательными величинами.

Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, используя логические операции, мы можем сразу «отфильтровать» все варианты неверных исходных данных.

image

Пример 2. Требуется перевести пятибалльную оценку в ее на-именование: 5 — «отлично», 4 — «хорошо», 3 — «удовлетворительно», 2 — «неудовлетворительно».

Блок-схема алгоритма приведена на рис. 3.14.

image

Этот алгоритм имеет структуру вложенных ветвлений и может быть запрограммирован с использованием условного оператора If следующим образом:

image

Пример 3. Решение рассмотренной в предыдущем примере задачи можно запрограммировать с помощью одного оператора выбора, имеющегося в языке Паскаль. Вот как будет выглядеть такая программа:

image

Оператор выбора имеет следующий формат:

Case < селектор >of < список констант 1 >: < оператор 1 >; ··· < список констант N >: < оператор N >; Else End

Здесь < селектор >— это выражение любого порядкового типа; < константа >— постоянная величина того же типа, что и селектор; < оператор >— любой простой или составной оператор.

Читайте также:
Кто вел программу устами младенца

Выполнение оператора выбора происходит так: вычисляется выражение-селектор; затем в списках констант ищется такое значение, которое совпадает с полученным значением селектора; далее исполняется оператор, помеченный данной константой. Если такой константы не найдено, то происходит переход к выполнению оператора, следующего после слова Else.

Пример 4. В этом примере демонстрируется использование списка констант в операторе выбора. Программа сообщает, сдал студент экзамен или не сдал. Если оценка одна из следующих: 3, 4, 5, то экзамен сдан; если 2, то не сдан.

Case N of 3, 4, 5: WriteLn(‘Экзамен сдан’); 2: WriteLn(‘Экзамен не сдан’); Else WriteLn(‘Нет такой оценки’) End

Так же как условный оператор, оператор выбора может ис-пользоваться в неполной форме, т. е. без ветви Else.

Если применить условный оператор, то эта программа запишется так:

If (N=3) or (N=4) or (N=5) Then WriteLn(‘Экзамен сдан’) Else If N=2 Then WriteLn(‘Экзамен не сдан’) Else WriteLn(‘Нет такой оценки’);

В условии ветвления использовано сложное логическое выражение, содержащее операции логического сложения or (или).

image

Вопросы и задания

1. Какие операторы используются для программирования ветвящихся алгоритмов?

2. В каких случаях удобно использование оператора выбора?

3. Составьте на Паскале программу упорядочения по возрастанию значений в трех переменных: X, Y, Z.

4. Используя оператор выбора, составьте программу, которая по введенному номеру месяца будет выводить название соответствующего времени года (зима, весна, лето, осень).

Следующая страница Пример поэтапной разработки программы решения задачи

Источник: xn—-7sbbfb7a7aej.xn--p1ai

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

Надпись case

Оператор выбора CASE осуществляет выполнение определенных действий, напрямую зависящих от значений одной и той же переменной.

Оператор выбора немного похож на условный оператор (if), но имеет более легкую структуру. Допустим, есть программа, позволяющая преобразовать поведение (или оценки) учеников в текстовый вид (2-неудовл., 3-плохо, 4-хорошо, 5-отлично). Программа, написанная с помощью условных операторов будет выглядеть следующим образом:

.
if i =2 then
writeln(‘Неудовлетворительно!’);
if i =3 then
writeln(‘Плохо’);
if i =4 then
writeln (‘Хорошо’);
if i =5 then
writeln (‘Отлично!’);
.

Заметьте, что мы постоянно отслеживаем поведение одной и той же переменной i , которая принимает значения от 2 до 5 (в моем случае). Оператор вывода при этом выводит различные значения. Но используя оператор CASE , получаем следующий код:

.
case i of
2: writeln(‘Неудовлетворительно!’);
3: writeln(‘Плохо’);
4: writeln (‘Хорошо’);
5: writeln (‘Отлично!’);
end;
.

Как видно, сразу после CASE ставится переменная ( i ) и OF . После CASE BEGIN ставить не нужно, даже если необходимо сделать множество выборов для переменной. Затем пишем значение, которое может принимать переменная, ставим знак двоеточия ( : ) и описываем дальнейшие действия. Если нужно прописать не одно, а несколько действий, то ставим BEGIN, и прописываем все эти действия, после которых обязательно ставим END; . Оператор выбора тоже всегда закрывается END; . Тип переменной (i) не обязательно должен быть именно INTEGER. Какие еще существуют типы, мы узнаем немного позднее.

Таким образом все дальнейшие действия программы будут зависеть от значений переменной. Следующий код показывает каким образом можно выполнить одно и то же действие для определенного диапазона или отдельных значений переменной:

.
case i of
1..5: writeln(‘Выполняется для значений i от 1 до 5’);
6,7, 10: writeln(‘Выполняется при значении i равным 10, 13 и 14’);
8..9: writeln(‘Выполняется для значений i от 8 до 9’); значения переменной можно взять через запятую: 8,9>
end;
.

Задания:

  • Написать программу, отображающую на экране времена года, при вводе номера месяца.
  • Написать программу преобразования цифр (0-10) в слова.
  • Составить программу, которая меняла бы окончания, в зависимости от возраста человека («мне 1 год», «мне 4 года», «мне 75 лет»).
Читайте также:
Как записывать игры на очень слабом ПК без потери fps лучшая программа для записи видео

Ответы к заданиям предыдущей статьи:

  • Определить, является ли число k четным и вывести значение «истина» или «ложь».

Определение четного числа на Pascal

Чтобы определить, является ли число четным, либо делится ли оно на три, пять, семь и т.д., нужно чтобы остаток от деления на эти числа равнялся нулю!

  • Проверить, равны ли суммы первых двух и последних двух цифр четырехзначного числа x.

Эта программа имеет множество решений. Вот одно из них:

Pascal Равны ли суммы двух первых и двух последних цифр числа

В данном примере в переменной A хранится введенное число (например 5348).

Далее переменная B присваивает значение деления переменной A на 1000 (5348/1000=5, остаток откидываем). Таким образом найдено первое число.

Затем переменная C присваивает значение более сложной операции. Вначале мы вычитаем из введенного нами числа полученное число B, умноженное на 1000 (5348-5*1000=5348-5000=348). Полученный результат делим нацело на 100 (348/100=3).

У нас уже есть два числа.

Третье число находится в переменной D. Сначала мы отнимаем из введенного числа (5348) первое полученное число, увеличенное в тысячу раз, а затем и полученное второе число, увеличенное в сто раз (5348-5*1000-3*100=5348-5000-300=348-300=48) и делим нацело на 10 (48/10=4). Четвертое число (в переменной E), находится таким же образом.

Чтобы понять схему нахождения данных цифр числа, давайте разложим число 5348 на слагаемые: 5000+300+40+8. Как найти из таких простых чисел первую цифру числа, я думаю проблем не возникнет. Если задача по нахождению отдельных цифр числа до сих не понятна, попробуйте взять листочек бумаги, ручку и вместо переменной A подставить любое четырехзначное число. А дальше — чистая математика.

Подставляем все значения в переменные и получаем готовые ответы. Дальше задания будут усложняться, именно поэтому очень важно на листке бумаги все заранее продумать, просчитать, и только после этого переписывать полученное решение в Паскаль.

Следующая часть кода находит сумму двух первых и последних цифр числа, сравнивает и, если сумма равна, то выведет TRUE, а если же нет — то выведет FALSE. Например для чисел 5216, 1423, 9155, 1221 выведет TRUE, а для 7891, 1333, 5641, 9147 выведет FALSE.

  • Есть три числа. Расположить их в порядке возрастания и проверить между собой на совпадение.

Сортировка чисел в Pascal

Хочу отметить, что комментарии, записанные в фигурных скобках, Pascal автоматически пропускает. В основном они очень важны для того, чтобы не забыть о том, что выполняет программа на данном промежутке кода. Можно неделю или максимум месяц не забыть, но потом не только Вам, но и любому другому программисту станет гораздо тяжелее разобраться в Вашей программе.

Чтобы программы не занимали слишком много места на жестком диске и в оперативной памяти, следует искать более короткие решения программы. Например, можно вместо (A

Теперь объясню о ходе решения данной задачи. Вначале проверяем, есть ли совпадения чисел A,B,C. Если хотя бы одно из них совпадет с другим, то записываем в переменную BOL (название переменной может содержать несколько символов латинского алфавита, цифры и подчеркивание. Более подробнее об этом рассказывалось в статье Знакомство с Turbo Pascal) значение TRUE, в остальных случаях — FALSE.

Дальше проверяем каждое число по отдельности. Можно даже эту программу записать в виде блок схемы. Но ее мы будем учиться составлять немного позднее. Здесь никаких хитростей нет (хотя можно было бы их добавить), поэтому разобраться в ней совершенно не сложно.

Опубликовано: 2011-11-20 16:17:38

Источник: fortran-new.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru