Fruitsekta.ru

Мир ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Case of паскаль

Оператор выбора Case Of в Pascal.

Помимо условного оператора If в языке программирования Pascal существует оператор выбора Case of. Рассмотрим его применение на примере программы, которая выводит на экран то или иное сообщение, в зависимости от введенного числа.

Вывод сообщения на экран с помощью If.

Эта программа выводит на экран сообщение (Нуль, Один и т. д.) в зависимости от того какое мы введем число. Однако, ту же задачу можно выполнить более простым способом с помощью оператора Case of.

Использование Case Of.

В строке №8 записывается оператор выбора Case Of. Сначала записывается слово Case, затем записывается переменная, затем слово Of. После служебного слова Of идет перечисление всех возможных значений переменной (строка №9 — №13), а через двоеточие указывается действие, которое нужно сделать, если переменная принимает то или иное значение. Таким образом, если мы вводим с клавиатуры 0, то на экран выводится сообщение «Нуль» (строка №9), если вводим 1, то выводится сообщение «Один» (строка №10) и т.д.

Нам не нужно каждый раз писать конструкцию If…Then.
Достаточно указать CASE «переменная» OF, а затем для каждого значения этой переменной через двоеточие прописать вывод на экран. После перечисления всех операторов необходимо поставить служебное слово End.

Запустим программу и введем любое число от 0 до 4 (например, 4)

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

Использование Case Of Else.

В строке №8 записываем оператор выбора Case Of. После слова Of (в строках №9 — №12) указываем возможные значения нашей переменной. Причем несколько значений можно указать в одной строке. Например, в строке №9 мы указываем 3 значения для переменной и действие, которое нужно совершить, если будут введены эти переменные. Т.е. если мы вводим с клавиатуры 1 или 2 или 3, то на экран выводится сообщение «Первый квартал».

В строке №13 записывается служебное слово Else. Если мы вводим с клавиатуры число, которое лежит вне диапазона чисел от 1 до 12, то должно совершиться действие, которое указывается после слова Else (строка №14).

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

Дополнение к материалу.

В данном примере вместо перечисления значений переменной можно использовать диапазон значений переменной. Например, строку №9 можно записать так: 1..3: writeln (‘Первый квартал’); Т.е. сначала указывается первое значение переменной, а затем через 2 точки указывается последнее значение переменной.

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Pascal: Занятие №2. Часть 2: Оператор выбора в паскале

Оператор выбора в Паскале

  • Оператор case в Паскале используется в тех случаях, когда в зависимости от значения какой-либо переменной нужно выполнить те или иные действия (простые или составные операторы).
  • Если вариантов всего два, то можно обойтись и условным оператором IF, с которым мы уже знакомы. Но если их, к примеру, десять, то использовать конструкцию if then else в pascal становится совсем нецелесообразно. В этом случае оптимален оператор CASE варианта.

Рассмотрим использование оператора выбора в языке Паскаль на конкретном примере.

Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от отметки.

Результат выполнения с использованием условного оператора if:

var otmetka:integer; begin writeln(‘Отметка?’); readln(otmetka); if (otmetka=1) or (otmetka=2) then writeln (‘кошмар!’) else if otmetka=3 then writeln(‘плохо’) else if otmetka=4 then writeln(‘неплохо’) else if otmetka=5 then writeln(‘отлично!’) else writeln(‘таких отметок не бывает’); end.

Данный пример демонстрирует нерациональную работу программиста и слишком запутанный код. Гораздо лаконичнее выглядит код при использовании оператора выбора.

Читать еще:  Сортировка массива по возрастанию паскаль

Результат выполнения с использованием оператора выбора case:

var otmetka:integer; begin writeln(‘отметка?’); readln(otmetka); case otmetka of 1,2 : writeln (‘кошмар!’); 3: writeln(‘плохо’); 4: writeln(‘неплохо’); 5: writeln(‘отлично!’); else writeln(‘таких отметок не бывает’); end end.

Блок-схема, соответствующая оператору выбора:

    Чтобы задать диапазон значений, используется один из двух вариантов:

      Перечисление через запятую:

. case x of: 1,2,3,4,5: writeln(‘от одного до пяти’); .

. case x of: 1..5: writeln(‘от одного до пяти’); .

Перечисление или диапазон

  • После служебного слова case может стоять имя переменной или арифметическое выражение целого типа:

или символьного типа (char):

Символьный тип char в Паскале

Для решения следующей задачи пригодится тип char — символьный.
Переменная данного типа объявляется так:
c: char;
и присваивает значения следующим образом:
c:=’a’;

Операторы условия и выбора

Тема: Оператор выбора CASE. Решение задач.

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

if Ziphra = 0
then
write (‘Нуль‘);
if Ziphra = 1
then
write (‘Единица‘);
if Ziphra = 2
then
write (‘Два‘);

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

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

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

case выражение of
значение1 : оператор (группа операторов);
значение2 : оператор (группа операторов);
. . . . . . . . . . . . . . . . . . . . . .
значениеN : оператор (группа операторов)
else оператор (группа операторов);
end;

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

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

case NUMBER mod 2 of
0 : writeln (NUMBER, ‘- число четное‘)
else : writeln (NUMBER, ‘- число нечетное‘);
end;

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

case MONTH of
1, 2, 3 : writeln (‘Первый квартал‘);
4, 5, 6 : writeln (‘Второй квартал‘);
7, 8, 9 : writeln (‘Третий квартал‘);
10, 11, 12 : writeln (‘Четвёртый квартал‘);
end;

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

case CODE of
1 : for i := 1 to 5 do
writeln (‘*******‘);
2 : begin <составной оператор>
x:=sqr(y-1);
writeln (x);
end;
3 : <пустой оператор>
end;

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

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

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

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

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

Program Number1;
Var
a, b, c : integer;
Begin
writeln(‘Введите цифру ‘);
readln(a);
if (a 9)
then
writeln (‘Это число не является цифрой‘)
else
case a of
0 : writeln (‘ноль‘);
1 : writeln (‘один‘);
2 : writeln (‘два‘);
3 : writeln (‘три‘);
4 : writeln (‘четыре‘);
5 : writeln (‘пять‘);
6 : writeln (‘шесть‘);
7 : writeln (‘семь‘);
8 : writeln (‘восемь‘);
9 : writeln (‘девять‘);
end;
readln;
End.

Program Number2;
Var
a, b, c : integer;
Begin
writeln(‘Введите цифру ‘);
readln(a);
case a of
0 : writeln (‘ноль‘);
1 : writeln (‘один‘);
2 : writeln (‘два‘);
3 : writeln (‘три‘);
4 : writeln (‘четыре‘);
5 : writeln (‘пять‘);
6 : writeln (‘шесть‘);
7 : writeln (‘семь‘);
8 : writeln (‘восемь‘);
9 : writeln (‘девять‘)
else writeln (‘Это число не является цифрой‘);
end;
readln;
End.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Придумайте программу на использование оператора выбора сase.
  • Оператор выбора (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 лет»).

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

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

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

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

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

    В данном примере в переменной 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 автоматически пропускает. В основном они очень важны для того, чтобы не забыть о том, что выполняет программа на данном промежутке кода. Можно неделю или максимум месяц не забыть, но потом не только Вам, но и любому другому программисту станет гораздо тяжелее разобраться в Вашей программе.

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

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

    Ссылка на основную публикацию
    Adblock
    detector
    ×
    ×