Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
10_программирование.doc
Скачиваний:
15
Добавлен:
09.11.2019
Размер:
1 Мб
Скачать
☆

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

позволяет программировать ветвления по многим направлениям. Этот оператор организует переход на одну из нескольких ветвей в зависимости от значения заданного выражения (селектора выбора). Формат оператора выбора:

case К of

А1 : <оператор 1>;

А2 : <оператор 2>;

AN : <оператор N>

else < оператор N+l>

end;

Здесь К — выражение-селектор, которое может иметь только простой порядковый тип (целый, символьный, логический). А1…AN — константы того же типа, что и селектор, выполняющие роль меток ветвей. Исполнение оператора начинается с вычисления выражения К, полученное значение сравнивается с константами (метками) и выполняется соответствующий оператор. Если ни одна из меток не совпала со значением К, то выполняется оператор после слова else. Возможно использование неполного оператора выбора без ветви else. Метки ветвей также могут быть заданы списком или интервалом.

Пример В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили назва­ния животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. Написать программу, которая по номеру года определяет его название в старояпонском календаре, если известно, что 1996 г. был годом крысы — началом очередного цикла.

Решение. Поскольку цикл является двенадцатилетним, поставим в со­ответствие название года остатку от деления номера этого года на 12. При этом учтем, что остаток от деления 1996 на 12 равен 4.

Var

Year : integer;

begin

write('Введите год ' ) ; readln(Year);

case Year mod 12 of

0 : Writeln(‘Год Обезьяны’);

1 : Writeln(‘Год Петуха’);

2 : Writeln(‘Год Собаки’);

3 : Writeln(‘Год Свиньи’);

4 : Writeln(‘Год Крысы’);

5 : Writeln(‘Год Коровы’);

6 : Writeln(‘Год Тигра’);

7 : Writeln(‘Год Зайца’);

8 : Writeln(‘Год Дракона’);

9 : Writeln(‘Год Змеи’);

10 : Writeln(‘Год Лошади’);

11 : Writeln(‘Год Овцы’);

end

end.

Программирование циклических алгоритмов

Ц икл - многократное повторение последовательности действий. Известны три типа циклических алгоритмических структур: цикл с предусловием, цикл с постусловием и цикл с параметром.

В Паскале существуют операторы, реализующие все три типа циклов.

Цикл с предусловием (цикл-пока) — наиболее универсальная циклическая структура. Реализуется оператором While. Формат оператора:

while <логическое выражение> do <тело цикла>

Пока значение логического выражения — true, выполняется тело цикла. Тело цикла может быть простым или составным оператором (несколько операторов, заключенные в операторные скобки).

Пример 1. Вычислить сумму натурального ряда чисел от 1 до N.

Решение

Var

a, Summa : integer;

BEGIN

write('N='); readln(N);

a:=l; Summa:=0;

while a<=N do

begin

Summa:=Summa +a;

a := a + 1

end;

Writeln (' Результат суммирования:' , Summa) ;

END.

Цикл с постусловием (цикл-до) имеет формат:

repeat <тело цикла> until <лог.выражение>

Ц икл заканчивается, когда логическое выражение принимает значение true. Тело цикла с постусловием выполняется хотя бы один раз. Исполь­зования begin и end для ограничения составного тела цикла не требуется.

Пример Решим предыдущую задачу с использованием цикла с постусловием:

Program Natur;

Var

a, Summa : integer;

BEGIN

write('N='); readln(N);

а:=1; Summa:=0;

repeat

Summa:=Summa+ a ;

а:=а+1

until a>N;

Writeln (' Результат суммирования:' , Summa) ;

END.

Цикл с параметром имеет два варианта записи:

1) for I: = <нач.знач> to <конеч.знач> do <тело цикла>;

2 ) for I: = < конеч.знач > down to < нач.знач > do <тело цикла> .

Здесь I — параметр цикла - переменная порядко­вого типа ;

<нач.знач> - выражение того же типа, определяющее начальное значение параметра;

<конеч.знач> - выражение того же типа, определяющее конечное зна­чение параметра;

<тело цикла> может быть простым или составным опера­тором.

Цикл повторяется, пока значение параметра лежит в ин­тервале между начальным и конечным значением. Причем эти выражения вычисляются только один раз в начале выполнения цикла.

В первом варианте при каждом повторении цикла значение параметра изменяется на следующее значение в данном типе (для целого типа - увеличивается на 1). Во втором варианте при каждом повторении цикла значение параметра изменяется на предыдущее значение в данном типе (для целого типа — уменьшается на 1).

Пример Решим ту же задачу с использованием цикла с параметром.

Var a, Summa : integer;

BEGIN

write('N='); readln(N);

а:=1; Summa:=0;

for а : = 1 to N do

Summa : =Summa+a;

Writeln (' Результат суммирования:' , Summa)

END.

Очевидно, что все три результата будут одинаковыми. Обратите внимание, что в последнем варианте отсутствует команда, увеличивающая на 1 переменную а- очередное значение числа.

В теле цикла с параметром не должно быть команд присваивания значний переменной- параметру цикла. Эта переменная автоматически изменяет свое значение при каждом проходе цикла.

Задачи

  1. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней?

  1. Имеется серия измерений элементов треугольника. Группы элементов пронумерованы. В серии в произвольном порядке могут встречаться такие группы элементов треугольника:

  • основание и высота;

  • две стороны и угол между ними (угол задан в радианах);

  • три стороны.

Разработать программу, которая запрашивает номер группы элементов, вводит соответствующие элементы и вычисляет площадь треугольника. Вычисления прекратить, если в каче­стве номера группы введен 0.

3. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько амеб будет через 3, 6, 9, 12, ..., 24 часа.

  1. Около стены наклонно стоит палка длиной х м. Один ее конец находится на расстоянии Y м. от стены. Определить значение угла а между палкой и полом для значений х = k м и Y, изменяющегося от 2 до 3 м с шагом h м.

  2. У гусей и кроликов вместе 64 лапы. Сколько могло быть кроликов и гусей (указать все сочетания, которые возможны)?

6. Составить алгоритм решения задачи: сколько можно купить быков, коров и телят, платя за быка 10 р., за корову — 5 р., а за теленка — 0,5 р., если на 100 р. надо купить 100 голов скота?

7. Подсчитать сумму всех двузначных чисел, которые делятся на 3 и не делятся на 4.

  1. Долгожитель(возраст не менее 100 лет) обнаружил однажды, что если к сумме квадратов цифр его возраста прибавить число дня его рождения, то получается его возраст. Сколько лет долгожителю.

  2. Дано натуральное число n. Вычислить S=1!+2!+3!+…+n!

  3. Д ано действительное число х. Вычислить:

  4. Перевести данное натуральное десятичное число в систему счисления с основанием n.

  5. Д аны натуральные n и k. Вычислить:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]