Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Программирование на Delphi (2009.12.1....doc
Скачиваний:
7
Добавлен:
27.10.2018
Размер:
801.79 Кб
Скачать
    1. Оператор повтора 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.

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

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

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

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

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

Задача 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 .

Задача 18.

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

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

Задача 19.

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

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

Задача 20.

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

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

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

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

  2. Опишите синтаксис оператора Repeat .. Until.

  3. Как работает оператор Break?

  4. Как работает оператор Continue?

Лабораторная работа №6

  1. Циклы с параметром

    1. Оператор повтора for

Оператор повтора for используется в том случае, если заранее известно количество повторений цикла. Приведем наиболее распространенную его форму:

for <параметр цикла> := <значение 1> to <значение 2> do

<оператор>;

где <параметр цикла> — это переменная любого порядкового типа данных (переменные вещественных типов данных недопустимы); <значение 1> и <значение 2> — выражения, определяющие соответственно начальное и конечное значения параметра цикла (они вычисляются только один раз перед началом работы цикла); <оператор> — тело цикла.

Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного. После каждого повтора значение параметра цикла увеличивается на единицу. Например, в результате выполнения следующей программы на экран будут выведены все значения параметра цикла (от 1 до 10), причем каждое значение — в отдельной строке:

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

I: Integer;

begin

for I := 1 to 10 do Writeln(I);

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

Readln;

end.

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

В качестве начального и конечного значений параметра цикла могут использоваться выражения. Они вычисляются только один раз перед началом выполнения оператора for. В этом состоит важная особенность цикла for в языке Delphi, которую следует учитывать тем, кто имеет опыт программирования на языках C/C++.

После выполнения цикла значение параметра цикла считается неопределенным, поэтому в предыдущем примере нельзя полагаться на то, что значение переменной I равно 10 при выходе из цикла.

Вторая форма записи оператора for обеспечивает перебор значений параметра цикла не по возрастанию, а по убыванию:

for <параметр цикла> := <значение 1> downto <значение 2> do

<оператор>;

Например, в результате выполнения следующей программы на экран будут выведены значения параметра цикла в порядке убывания (от 10 до 1):

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

I: Integer;

begin

for I := 10 downto 1 do Writeln(I);

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

Readln;

end.

Если в такой записи оператора for начальное значение параметра цикла меньше конечного значения, цикл не выполнится ни разу.