Страницы

Уроки 5, 6 Оператор выбора Case. Оператор цикла For

 Оператор выбора Case

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

Case порядковая_переменная of 
Значение_1: оператор_1; 
Значение_2: оператор_2; 
… 
Значение_n: оператор_n
Else оператор; 
End;

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



Пример 1. Ввести номер дня недели, в зависимости от номера вывести название «понедельник», «вторник» и т.д, если введен номер больше или меньше 7 – вывести «такого дня недели не существует»

Program z1;
Var n:byte;
begin
readln(n);
Case n of 
1: writeln ('понедельник');
2: writeln ('вторник');
3: writeln ('среда');
4: writeln ('четверг');
5: writeln ('пятница');
6: writeln ('суббота');
7: writeln ('воскресенье')
Else writeln ('такого дня недели не существует');
end;
End.



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

Пример 2
Case i of
1,3,5,7:Writeln('Нечетные цифры');
2,4,6,8:Writeln('Четные цифры');
10..100: Writeln('Числа от 10 до 100');
End;

Экспериментальная часть

1.     Написать программу, которая запрашивает количество стульев в виде числа от 1 до 10 и выводит количество в словесной форме.
1– стул
2, 3, 4 – стула
5, 6,…,10 – стульев

       Тесты           Посмотреть решение     



2. Написать программу, которая запрашивает количество стульев в виде любого числа и выводит количество в словесной форме.
1, 21, 101, 1001… – стул
2, 3, 4, 22, 102, 1003… – стула
5, 6,…,11-19, 20…- стульев

       Тесты          Посмотреть решение         



3. Составить программу, которая по номеру месяца определяла время года.

      Тесты          Посмотреть решение       




Задачи

1. С клавиатуры вводится цифра. Вывести ее буквенное представление.

2. Составьте программу, имитирующую своеобразный калькулятор, где 1-сумма двух чисел, 2-разность двух чисел, 3-произведение двух чисел, 4-целая часть от деления, 5-остаток от деления,6 — квадратный корень числа, иначе введен неизвестный номер операции.

3. В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года определить его название, если 1984 год — начало цикла: «год зеленой крысы».



 Оператор For

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

Вид оператора For:

For управляющая переменная>:= А То В Do <оператор>;
For управляющая переменная> =А DownTo В Do <оператор>;

 где А — начальное значение управляющей переменной, В — конечное значение управляющей переменной.

Начальное (А) и конечное (В) значения управляющей переменной могут быть представлены константами, переменными или арифметическими выражениями. Они определяются один раз в начале выполнения оператора For и не изменяются во время выполнения этого оператора.

Если окажется, что А>В при использовании слова То, то оператор после слова Do («тело» цикла) не будет выполнен ни разу и выполнение цикла с параметром сразу же закончится (соответственно при DownTo, если А<В).

Управляющая переменная, а также А и В должны быть одного типа, обязательно порядкового.

Оператор после слова Do выполняется один раз для каждого значения управляющей переменной из диапазона, определяемого значениями А и В.

Если в операторе For используется слово То, то значение управляющей переменной увеличивается на единицу при каждом повторении А, А+1,..., В—1, В, при DownTo — уменьшается на единицу.



Рекомендации по использованию

 Оператор For применяют тогда, когда известно число повторений одного и того же действия (оператора). Изменение значения управляющей переменной в теле цикла запрещено.

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

Program z1;
  Var p,s:real; i:byte;
Begin
  S:=0; p:=1;
  for i:=10 to 99 do
    begin
      s:=s+i;
      p:=p*i;
    end;
  writeln(‘s=’,s,’p=’,p);
end.

Экспериментальный раздел работы

1.    Дано натуральное число n (n<9999). Определить, является ли оно палиндромом («перевертышем»), с учетом четырех цифр. Например, палиндромами являются числа: 2222, 6116, 0440.

Анализ:
У нас четырехзначное число, поэтому переменная оператора For изменяется от 1 до 4. 
В переменной с именем m будем хранить «остаток» числа, в первоначальный момент времени он равен введенному числу.
В переменной с именем r формируем значение числа — «перевертыша».
Основными операциями являются: r:=10*r + m  Mod 10 (добавление очередной цифры к числу «перевертышу») и m:=m  Div 10 (изменение проверяемого числа).

n
i
r
m
1552

0
1552

1
10*0+1552 mod 10=2
1552 div 10=155

2
10*2+155 mod 10 =25
155 div 10=15

3
10*25+15 mod 10=255
15 div 10=1

4
10*255+1 mod 10=2551
1 div 10=0




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

3.    Даны натуральные числа n,k (nk<9999). Из чисел от n до k выбрать те, запись которых содержит ровно три одинаковых цифры. Например, числа 6766, 5444, 0006, 0060 содержат ровно три одинаковых цифры.


       Тесты         Посмотреть решение       



Задания


1. Дано целое число N (> 0). Найти сумму    1 + 1/2 + 1/3 + … + 1/N.

2. Дано целое число N (> 0). Найти сумму  N2 + (N + 1)2 + (N + 2)2 + … + (2·N)2


3. Дано вещественное число A и целое число N (> 0). Найти A в степени N: AN = A·A· … ·A. (числа A перемножаются N раз).

4. Дано вещественное число A и целое число N (> 0). Используя один цикл, найти сумму 1 + A + A2 + A3 + … + AN.

5. Дано вещественное число A и целое число N (> 0). Используя один цикл, найти значение выражения 1 – A + A2 – A3 + … + (–1)N·AN.

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

7.  Написать программу поиска четырехзначного числа, которое при делении на 133 дает в остатке 125, а при делении на 134 дает в остатке 111.



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

1. Составить программу, которая в зависимости от порядкового номера месяца выводит количество дней в этом месяце, если год не високосный.

2. С начала 2000 года по некоторый день прошло n месяцев и два дня. Определить название месяца этого дня.

3. Найти все двузначные числа, в которых есть цифра N или само число делится на N.

4. Определить количество трехзначных натуральных чисел, сумма цифр которых равна заданному числу N.

5. Среди двузначных чисел найти те, сумма квадратов цифр которых делится на 13.



Тест