#10 На перепутье. Изучаем оператор множественного выбора

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

 
Задание 1
Код
Uses Crt;
Var x:integer;

Begin 
 Write('Введите число - ');
 readln(x);
 If x>0 then Writeln(x,'^3=',x*x*x);
 If x<0 then Writeln(x,'^2=',x*x);
End.
 
Задание 2
Код
Uses Crt;
Var x,i,j=1:integer;

Begin 
 Write('введите положительное число - ');
 Readln(x); j:=1;
 If x>0 then 
 begin
   For i:=1 to x do j:=j*i; end
   Else Writeln('
Запустите программу ещё раз и введите число >0');
 Writeln(j);
End.
 

 

Оператор множественного выбора Case

 

Роботы - очень деловые создания, их время расписано буквально по секундам! Попробуем взять с них пример и составим небольшой план на следующую неделю: 

  1. Понедельник - день тяжёлый. Не грех и отдохнуть (: Планы на понедельник - отдых!
  2. Вторник. Не забываем о чистоте! Планы на вторник - уборка в доме.
  3. Среда - середина напряженной недели. А после уборки нужно отдохнуть! Планы на среду - отдых!
  4. Четверг. Давайте поможем родителям! Планы на среду - помочь родителям.
  5. Пятница - последний день рабочей недели, поэтому нужно напрячься и... почитать интересную книгу! Планы на пятницу - чтение книги.
  6. Суббота - долгожданный выходной! Берём друзей и идём на прогулку! Планы на субботу - прогулка с друзьями.
  7. Воскресение - последний выходной, нужно хорошенько отдохнуть перед новой напряженной неделей (: Планы на воскресение - отдых.
 

Вот такой "напряженный" график у нас получился! А чтобы не запутаться в нём напишем "программу-напоминалку", которая подскажет нам - чем мы должны заниматься!

Именно здесь нам и пригодиться оператор множественного выбора Сase.

Полная форма записи оператора Сase:

Case <ключ выбора> of

  <вариант выбора 1>: begin <операторы>; end;

  <вариант выбора 2>: begin <операторы>end;

  ...

  <вариант выбора N>: begin <операторы>end;

Else begin <операторы>; end;

end;

Краткая форма записи оператора Сase:

Case <ключ выбора> of

  <вариант выбора 1>: <оператор 1>

  <вариант выбора 2><оператор 2>;

  ...

  <вариант выбора N><оператор N>;

end;

Ключ выбора - это переменная простого типа (integer, char, byte, boolean). Исходя из значений этой переменной, оператор Case и будет выполнять то или иное действие.

Варианты выбора - значения нашего ключа. Если ключ примет значение одного из вариантов выбора, то программа выполнит оператор стоящий за этим вариантом.

Давайте попробуем разобраться на практике. Вернёмся к нашей "программе-напоминалке". Для удобства ввода данных обозначим дни недели цифрами от 1 до 7, где понедельник - 1, а воскресение - 7. Наша программа должна запрашивать ввод данных и после этого выводить на экран план на сегодняшний день. Программа выглядит довольно просто:

Код
Uses Crt;
Var x:integer;

Begin 
 Write('Введите число, соответствующее дню недели - '); Readln(x); 
   Case x of
   1,3,7: Writeln('Планы на сегодня - отдых!');
   2: Writeln('Планы на сегодня - уборка в доме.');
   4: Writeln('Планы на сегодня - помощь родителям.');
   5: Writeln('Планы на сегодня - чтение книги.');

   6: Writeln('Планы на сегодня - прогулка с друзьями.');
 end; End.

 

Обратите внимание: варианты выбора, которые предполагают одинаковые действия операторов, мы можем сгруппировать в 1 пункт (как в случае с вариантами 1,3,7)!

 

Результат работы программы:

 

Как было написано выше: оператор Case умеет работать не только с целочисленным ключом. Давайте напишем программу, которая будет определять - какой символ пользователь ввёл с клавиатуры (заглавную букву русского алфавита, строчную букву русского алфавита, заглавную букву английского алфавита, строчную букву английского алфавита, цифру от 1 до 9 или символ). Приступим:

Код
Uses Crt;
Var a:char;
Begin
 Write('Введите одиночный символ - '); Readln(a);
  Case a of
   'a'..'z': Writeln('Вы ввели строчную букву анеглийского алфавита');
   'A'..'Z': Writeln('Вы ввели заглавную букву анеглийского алфавита');
   'а'..'я': Writeln('Вы ввели строчную букву русского алфавита');
   'А'..'Я': Writeln('Вы ввели заглавную букву русского алфавита');
   '0'..'9':Writeln('Вы ввели цифру');
  Else Writeln('Вы ввели символ');
  end;
End.
 
Обратите внимание: Char - является символьным типом. Переменная такого типа может хранить лишь 1 символ. При этом программа не делает качественного различия между буквой, цифрой или символом. При использовании символьных типов переменных вместе с оператором Case, варианты выбора необходимо заключать в кавычки. Например 'a'. 
 

Результат работы программы:

 

Обратите внимание: символ .. свидетельствует о указании диапазона значений, например '1'..'2' означает, что вариант выбора включает в себя все цифры начиная с 1 и заканчивая 9. А при помощи диапазона 'а'..'я' мы включаем в вариант выбора все строчные буквы русского алфавита.

 

Задания для самостоятельной работы

 

Задача 1. Напишите программу, которая будет преобразовывать цифры от 1 до 9 в слова. Например: ввод данных - 8, вывод данных - восемь.

 

Задача 2. Составьте программу, которая запрашивает ввод буквы русского алфавита и определяет: гласная это, согласная, твёрдый или мягкий знаки. Например: ввод данных - Ж, вывод данных - согласная буква русского алфавита.

 

 

Ваши вопросы и комментарии можете оставлять ниже.
Начинайте программировать прямо сейчас!
Категория: Первые шаги | Добавил: Decay_Dance (31.07.2014)
Просмотров: 4473 | Теги: условный алгоритм, наука детям, алгоритм, Pascal, pascal abc, алгоритм с ветвлением, оператор множественного выбора, программирование, оператор case | Рейтинг: 3.0/4