Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Delphi.doc
Скачиваний:
67
Добавлен:
28.03.2015
Размер:
1.23 Mб
Скачать

Контрольные вопросы

  1. Опишите синтаксис оператора Case.

  2. Как работает оператор Case?

Лабораторная работа №5. Циклы с предварительным условием

Оператор повтора repeat

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

repeat

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

...

<оператор N>;

until <условие завершения цикла>;

Тело цикла выполняется до тех пор, пока условие завершения цикла (выражение булевского типа) не станет истинным. Оператор repeat имеет две характерные особенности, о которых нужно всегда помнить:

  • между словами repeat и until может находиться произвольное число операторов без операторных скобок begin и end;

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

В следующем примере показано, как оператор repeat применяется для суммирования вводимых с клавиатуры чисел. Суммирование прекращается, когда пользователь вводит число 0:

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

S, X: Integer;

begin

S := 0;

repeat

Readln(X);

S := S + X;

until X = 0;

Writeln('S=', S);

Writeln('Press Enter to exit...');

Readln;

end.

Часто бывает, что условие выполнения цикла нужно проверять перед каждым повторением тела цикла. В этом случае применяется оператор while, который, в отличие от оператора repeat, содержит условие выполнения цикла, а не условие завершения.

Оператор повтора while

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

while <условие> do

<оператор>;

Перед каждым выполнением тела цикла происходит проверка условия. Если оно истинно, цикл выполняется и условие вычисляется заново; если оно ложно, происходит выход из цикла, т.е. переход к следующему за циклом оператору. Если первоначально условие ложно, то тело цикла не выполняется ни разу. Следующий пример показывает использование оператора while для вычисления суммы S = 1 + 2 + .. + N, где число N задается пользователем с клавиатуры:

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

S, N: Integer;

begin

Readln(N);

S := 0;

while N > 0 do

begin

S := S + N;

N := N - 1;

end;

Writeln('S=', S);

Writeln('Press Enter to exit...');

Readln;

end.

Прямая передача управления в операторах повтора

Для управления работой операторов повтора используются специальные процедуры-операторы Continue и Break, которые можно вызывать только в теле цикла.

Процедура-оператор Continue немедленно передает управление оператору проверки условия, пропуская оставшуюся часть цикла (Рис. 5.1.1):

(Рис. 5.1.1) Схема работы процедуры-оператора Continue

Процедура-оператор Break прерывает выполнение цикла и передает управление первому оператору, расположенному за блоком цикла (Рис. 5.1.2):

(Рис. 5.1.2) Схема работы процедуры-оператора Break

Задачи по лабораторной работе №5

№ Задачи

Вариант №1

4

8

12

16

20

Вариант №2

1

5

9

13

17

Вариант №3

2

6

10

14

18

Вариант №4

3

7

11

15

19

Задача 1.

С помощью цикла while…do или цикла repeat…until написать программу возведения числа А в целую степень N.

Задача 2.

С помощью цикла while…do или цикла repeat…until написать программу вычисления факториала заданного целого числа.

Факториал числа N вычисляется по следующей формуле:

N! = 1 ∙ 2 ∙ 3 ∙ ... ∙ N.

Задача 3

С помощью цикла while…do или цикла repeat…until написать программу вычисления числа Фибоначчи, не превосходящего заранее заданное число N. Числа Фибоначчи вычисляются с помощью следующих соотношений:

F0 = 0; F1 = 1; Fi = Fi-1 + Fi-2 для i > 1.

Задача 4.

С помощью цикла while…do или цикла repeat…until написать программу вычисления суммы S квадратов чисел от 1 до N.

Задача 5.

Составить программу, вычисляющую для заданного x сумму:

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

N! = 1 ∙ 2 ∙ 3 ∙ ... ∙ N.

Контрольный пример: x = 1, Е = 0.1.

Результат: 2.666667.

Задача 6.

С помощью цикла while…do или цикла repeat…until написать программу вычисления суммы S квадратов четных и кубов нечетных чисел от 1 до N Проверку числа на четность осуществить с помощью встроенной функции ODD.

Задача 7.

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

становится меньше заданного числа А при заданном x для k = 1, 2, 3, … Контрольный пример: x = 1, А=0.25.

Результат: 5.

Задача 8.

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

Контрольный пример: 1, 2, 3, -4, 5, -2, 0.

Результат: 7.

Задача 9.

Написать программу поиска суммы последовательности положительных чисел, вводимых с клавиатуры, предшествующих первому введенному нулю.

Контрольный пример: 1, 2, 3, -4, 5, -2, 0.

Результат: 11.

Задача 10.

Написать программу поиска суммы последовательности отрицательных чисел, вводимых с клавиатуры, предшествующих первому введенному нулю. Контрольный пример: 1, 2, 3, -4, 5, -2, 0.

Результат: -6.

Задача 11.

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

Контрольный пример: 1, 2, 3, 4, 5, -2.

Результат: 120.

Задача 12.

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

Контрольный пример: 1, 2, 3, -4, 5, -2, 0.

Результат: 240.

Задача 13.

Написать программу поиска произведения последовательности положительных чисел, вводимых с клавиатуры, предшествующих первому введенному нулю. Контрольный пример: 1, 2, 3, -4, 5, -2 , 0.

Результат: 30.

Задача 14.

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

Контрольный пример: 1, 2, 3, -4, 5, -2, 0.

Результат: 8.

Задача 15.

Написать программу поиска чисел, лежащих в интервале от -5 до 5, в последовательности чисел, вводимых с клавиатуры, предшествующих первому введенному нулю.

Контрольный пример: 1, 10, -4, 5, -16, -5, 0.

Результат: 1, -4, 5, -5.

Задача 16.

Написать программу поиска чисел, лежащих в интервале от 3 до 13, в последовательности чисел, вводимых с клавиатуры, предшествующих первому введенному отрицательному числу.

Контрольный пример: 1, 3, 16, 7, 13, 10, 2, -1.

Результат: 3, 7, 13, 10.

Задача 17.

Вычислить у - первое из чисел sin x, sin sin x, sin sin sin x, ..., меньшее по модулю 10-4 .

Задача I8.

Не используя стандартные функции (за исключением abs), вычислить с точностью eps > 0

Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше eps, - все последующие слагаемые можно уже не учитывать.

Задача 19.

Не используя стандартные функции (за исключением abs), вычислить с точностью eps > 0

Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше eps, - все последующие слагаемые можно уже не учитывать.

Задача 20.

Не используя стандартные функции (за исключением abs), вычислить с точностью eps > 0

Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше eps, - все последующие слагаемые можно уже не учитывать.