Циклические алгоритмы Повторение - это многократное выполнение одного или нескольких предписаний алгоритма. Цикл - это оператор языка программирования, с помощью которого это повторение будет выполнять компьютер - исполнитель алгоритмов. В языке Visual Basic циклы - многострочные операторы двух видов: •циклы с параметром (счетчиком) •циклы с условием Цикл с параметром For Имя=Знач1 To Знач2 [Step Знач3] Серия повторяющихся операторов [Exit For] Next [Имя] где Имя - это имя переменной, которую называют счетчиком; Знач1 - начальное значение счетчика; Знач2 -. конечное значение счетчика; Знач3 - величина, на которую изменяется значение счетчика при одном повторении (шаг цикла); Серия повторяющихся операторов - тело цикла. Циклы с предусловием Цикл с предусловием, где Цикл с предусловием, где Л.Выр - условие Л.Выр - условие продолжения цикла завершения цикла Do While Л. Выр Операторы [Exit Do] Loop Do Until Л. Выр Операторы [Exit Do] Loop Циклы с постусловием Цикл с постусловием, где Л.Выр - условие продолжения цикла Цикл с постусловием, где Л.Выр - условие завершения цикла Do Операторы [Exit Do] Loop While Л.Выр. Do Операторы [Exit Do] Loop Until Л.Выр Особенности алгоритмов и программ с накоплением Сумма вычисляется всегда по такой формуле: Сумма = сумма + очередное слагаемое Произведение вычисляется всегда по такой формуле: Произведение = Произведение* очередной сомножитель Количество вычисляется по формуле: Количество = Количество+1 Примечание: до вычисления этих величин в цикле они должны быть подготовлены таким образом: начальному значению суммы и количества надо присвоить ноль, а произведению присвоить единицу. Особенности поиска экстремальных значений 1. В начале за текущий минимум (максимум) принимается значение функции при первом значении аргумента, например, min=y(x1) или max= y(x1). 2. Затем в цикле, начиная со второго значения функции, производится его сравнение со значением переменной min (max) и если это число меньше min (больше max), то на место min (max) записывается это число и оно становится текущим минимумом (максимумом). Задача 1 Подсчитать сумму значений функции Z=y*Ln(x)+x^3, здесь y=5, ввести y с помощью окна ввода, х изменяется от 1 до 10 с шагом 0,5. Сумму вывести с помощью окна вывода, а таблицу значений функции вывести на лист «Результат». Блок – схема задачи 1 Начало Ввод Y i=2; S=0 X=1,10,0.5 Z = y * ln(x)+x3 S = S+Z Вывод x , Z i= i +1 Вывод S Конец Текст процедуры задачи 1 Sub Задача1() Dim S As Single, Y As Single, Z As Single, _ x As Single, i As Integer, n As Integer Y = Val(InputBox("Введите значение Y")) Sheets("Лист1").Select Range("A1").Value = "Аргумент Х" Range("b1").Value = "Функция Z" i = 2: S = 0 For x = 1 To 10 Step 0.5 Z = 2 * x ^ 3 - 5 * Log(x + 10) Cells(i, 1).Value = x: Cells(i, 2).Value = Z S = S + Z: i = i + 1 Next x MsgBox " Cумма значений функции Z =" + Str(S) End Sub Задача 2 Составить проект программы вычисления минимального значения функции sin x, если x 3 y x 4 1 2, если 1 x 3 x 12 , если x 1 x2 1 для x=-1.2, -1, 0.231, 3, 4.33, 5.22. Блок – схема задачи 2 Начало X=1.2 min=(x+12)/(x^2+1) Повторять x= -1.2 по i от 2 до 6 Ввод x Нет Нет y x 12 x2 2 Да Да -1x3 x>3 y sin x x4 1 2 y= y<min Нет Вывод min Конец Да Min=y Текст процедуры задачи 2 Sub задача2() Dim x As Single, y As Single, min As Single, i As Integer x = -1.2: min = (x + 12) / (x ^ 2 + 1) For i = 2 To 6 x = Val(InputBox("Введите " + Str(i) + " значение x ")) If x > 3 Then y = Sin(x) ElseIf x >= -1 And x <= 3 Then y = Sqr(x ^ 4 + 1) + 2 Else y = (x + 12) / (x ^ 2 + 2) End If If y < min Then min = y Next i MsgBox "Минимальное значение функции y =" + Str(min) End Sub Задача 3 Составить программу, в которой вводятся с клавиатуры числа и находится сумма неотрицательных чисел . Ввод прекращается, если вводится отрицательное число. Блок – схема задачи 3 Начало S=0 Нет X0 Да Ввод X Да X0 Нет S=S+X Вывод S Конец Блок схема задачи 3 с использованием цикла с предусловием Текст процедуры задачи 3 (с предусловием с ключевым словом While) Sub задача3() Dim X As Single, S As Single S=0 Do While X >= 0 X = Val(InputBox(" Введите число")) If X >= 0 Then S = S + X Loop MsgBox "Сумма = " + Str(S) End Sub Текст процедуры задачи 3 (с предусловием с ключевым словом Until ) Sub задача3() Dim X As Single, S As Single S=0 Do Until X < 0 X = Val(InputBox(" Введите число")) If X >= 0 Then S = S + X Loop MsgBox "Сумма = " + Str(S) End Sub Текст процедуры задачи 3 (с постусловием с ключевым словом While ) Sub задача3() Dim X As Single, S As Single S=0 Do X = Val(InputBox(" Введите число")) If X >= 0 Then S = S + X Loop While X >= 0 MsgBox "Сумма = " + Str(S) End Sub Текст процедуры задачи 3 (с постусловием с ключевым словом Until ) Sub задача3() Dim X As Single, S As Single S=0 Do X = Val(InputBox(" Введите число")) If X >= 0 Then S = S + X Loop Until X < 0 MsgBox "Сумма = " + Str(S) End Sub Задания для подготовки к тестированию Многократное использование одного и того же участка программы называется: a. рекурсией; b. отладкой; c. обращением к подпрограмме; d. итерацией; e. циклическим процессом. Правильный ответ к заданию 1 Многократное использование одного и того же участка программы называется: a. рекурсией; b. отладкой; c. обращением к подпрограмме; d. итерацией; e. циклическим процессом. Задание 2 По записанному на алгоритмическом языке алгоритму подсчитать сумму квадратов последовательности натуральных чисел. Начало алг S:=0 Нц для n от 2 до 4 S:=S+n*n кц кон алг a. S=15 b. S=18 c. S=36 d. S=29 Правильный ответ к заданию 2 По записанному на алгоритмическом языке алгоритму подсчитать сумму квадратов последовательности натуральных чисел. Начало алг S:=0 Нц для n от 2 до 4 S:=S+n*n кц кон алг a. b. c. d. S=15 S=18 S=36 S=29 Задание 3 Алгоритмическая структура какого типа показана в словесном алгоритме? Пока выполняется условие делать: Серия операторов Конец пока a. b. c. d. цикл ветвление подпрограмма линейная Правильный ответ к заданию 3 Алгоритмическая структура какого типа показана в словесном алгоритме? Пока выполняется условие делать: Серия операторов Конец пока a. b. c. d. цикл ветвление подпрограмма линейная Задание 3 Результатом выполнения алгоритма: Ввод N P=1 Повторять для K=1 до N P=P*K Конец повтора Вывод P при N=5 будет: a. 5; b. 115; c. 120; d. 20; e. 130; Правильный ответ к заданию 3 Результатом выполнения алгоритма: Ввод N P=1 Повторять для K=1 до N P=P*K Конец повтора Вывод P при N=5 будет: a. 5; b. 115; c. 120; d. 20; e. 130; Задание 4 Определите результат вычисления факториала, представленного в словесном алгоритме: N=3 K=1 N!=1 Пока K<=N делать: N!=N!*K K=K+1 Конец пока Вывод N! a. N!=9 b. N!=6 c. N!=3 d. N!=12 Правильный ответ к заданию 4 Определите результат вычисления факториала, представленного в словесном алгоритме: N=3 K=1 N!=1 Пока K<=N делать: N!=N!*K K=K+1 Конец пока Вывод N! a. N!=9 b. N!=6 c. N!=3 d. N!=12 Задание 5 Представленная программа выводит … S=0 N=1 Пока (S+N)<X Нц S=S+N N=N+1 Кц Вывод S Варианты ответов к заданию 5 a) Последнее значение суммы подряд идущих натуральных чисел, начиная с 1, меньшее Х; b) Минимальное значение суммы подряд идущих натуральных чисел начиная с1, большее Х; c) Количество натуральных чисел, меньших Х; d) Все значения сумм подряд идущих натуральных чисел, начиная с 1 до Х; Правильный ответ к заданию 5 a) Последнее значение суммы подряд идущих натуральных чисел, начиная с 1, меньшее Х; b) Минимальное значение суммы подряд идущих натуральных чисел начиная с1, большее Х; c) Количество натуральных чисел, меньших Х; d) Все значения сумм подряд идущих натуральных чисел, начиная с 1 до Х; Задание 6 Данная программа Нц для I=1 до N Вывод A A=A+D Кц выводит … a) b) c) d) A чисел, начиная с N, с шагом D Сумму D чисел, начиная с А, с шагом N N чисел, начиная с А, с шагом D Сумму A чисел, начиная с N, с шагом D Правильный ответ к заданию 6 a) b) c) d) A чисел, начиная с N, с шагом D Сумму D чисел, начиная с А, с шагом N N чисел, начиная с А, с шагом D Сумму A чисел, начиная с N, с шагом D Задание 7 После выполнения фрагмента алгоритма K=0 Нц для i от 1 до 5 Нц для j от 1 до i k=k+1 кц кц Значение переменной k будет равно … a) b) c) d) 5 15 0 5 Правильный ответ к заданию 7 После выполнения фрагмента алгоритма K=0 Нц для i от 1 до 5 Нц для j от 1 до i k=k+1 кц кц Значение переменной k будет равно … a) b) c) d) 5 15 0 5