Лабораторная работа №5
Программирование алгоритмов циклической структуры. Простые циклы
Цель:
Изучить процесс построения алгоритмов циклической структуры. Научиться составлять программы, организующие циклические вычисления на языке VBA.
Результат обучения:
o уметь составлять алгоритмы циклической структуры;
o знать синтаксис операторов Do … Loop, For … Next;
o уметь использовать эти операторы при организации циклов в программах.
Изучение организации циклических вычислений на примерах
Цикл — типичная структура, характерная для программ, реализуемых на ЭВМ. Возможны три способа организации циклических структур алгоритмов:

Тело цикла — это повторяющаяся последовательность действий. Логический блок предназначен для управления циклом. Логический блок определяет количество проходов в цикле.
В цикле «До» условие окончания цикла расположено после тела цикла. Это означает, что тело цикла выполниться хотя бы один раз. В цикле «Пока» условие окончания цикла расположено до тела цикла, поэтому возможны варианты, когда цикл не выполнится ни разу.
В Бейсик эти структуры реализуются с помощью операторов цикла.
Операторы цикла Do…Loop
Синтаксис цикла с предусловием:
Do While | Until Условие
Операторы – тело цикла
Loop
Синтаксис цикла с постусловием:
Do
Операторы – тело цикла
Loop While | Until Условие
В этих выражениях:
Do – выполнит ь, ключевое слово, обозначающее начало цикла;
Loop – петля, ключевое слово, означает возврат к началу цикла;
While – пока; с этим ключевым словом операторы цикла будут выполняться пока условие выполняется. При первом невыполнении условия цикл прекращается и выполняется строка кода, следующая после Loop;
Until – до, пока не. С этим ключевым словом операторы цикла будут циклически выполняться при невыполнении условия (False). При первом выполнении условия (True) цикл прекращается, и выполняется строка кода, следующая после Loop.
Условие – логическое выражение, принимающее одно из двух значений – True, если условие выполняется или False, если условие не выполняется; проверяется после каждого выполнения цикла.
Пример 1.
Условие задачи:
Написать программу табулирования функции Y = x – sin x – 0.25.
Схема алгоритма:

Переменная Х изменяется в цикле и по значению этой переменной определяется условие окончания цикла.
Разработка формы

На форму установлены три текстовых поля для ввода исходной информации: TextBox1 для Х начального, TextBox2 для Х конечного, TextBox3 для шага изменения аргумента. Вывод осуществляется в текстовое поле TextBox4. Для того чтобы в текстовом поле были представлены расчеты всех точек интервала, необходимо свойству MultiLine присвоить значение true. В этом случае можно вывести несколько строчек в текстовое поле. Результатом будет текстовая строка r. Текстовая строка r формируется в цикле:
r = r + Str(X) + “ “ + Str(Y) + VBCrLf
В этой строке суммируются строковые значения переменных Х и Y. В конце каждой строки добавляется константа vbCrLf, которая является признаком конца строки и переносит курсор на начало новой строки Образована от слов Carrifge (каретка) –Cr, Left (налево) – Lf. Т. е. каретка налево.
Программа, организующая цикл с помощью оператора цикла с предусловием условием:
Private Sub CommandButton1_Click()
Dim Xn As Single, Xk As Single, Dx As Single, r As String
Dim X As Single, Y As Single
' X — текущее значение аргумента
‘ Xn — начальное значение аргумента
‘ Xk — конечное значение аргумента
‘ Dx — шаг изменения аргумента
‘ Y — значение функции
Xn = Val(TextBox1.Text) ‘ Ввод исходной информации
Xk = Val(TextBox2.Text)
Dx = Val(TextBox3.Text)
r = "" ‘ Обнулили текстовую переменную
X = Xn ‘ Присвоили начальное значение аргументу
Do While X <= Xk ‘ Проверка условия окончания цикла расположена до начала тела цикла
‘ Начало тела цикла
Y = X - Sin(X) - 0.25 ‘Рассчитали значение функции }
r = r + Str(X) + " " + Str(Y) + vbCrLf ‘ Записали результат в текстовую переменную
X = X + Dx ‘ Текущее значение аргумента увеличили на шаг
‘Конец тела цикла
Loop
TextBox4.Text = r ‘ Вывод результата в текстовое поле
End Sub
Программа, организующая цикл с помощью оператора цикла с постусловием:
Private Sub CommandButton1_Click()
Dim Xn As Single, Xk As Single, Dx As Single, r As String
Dim X As Single, Y As Single
Xn = Val(TextBox1.Text)
Xk = Val(TextBox2.Text)
Dx = Val(TextBox3.Text)
r = ""
X = Xn
Do
Y = X - Sin(X) - 0.25
r = r + Str(X) + " " + Str(Y) + vbCrLf
X = X + Dx
Loop Until X > Xk ‘ Проверка условия окончания цикла расположена после тела цикла
TextBox4.Text = r
End Sub
Оператор цикла For…Next
Синтаксис оператора:
For Счетчик = Начало Тo Конец [ Step Шаг ]
Блок_Операторов
Next Счетчик
Здесь обозначено:
For – для(обязательное ключевое слово VB);
To – до(обязательное ключевое слово VB);
Блок_Операторов – один или несколько операторов, называемых телом цикла;
Счетчик – целая переменная, которая считает количество выполняемых циклов;
Начало, Конец – начальное и конечное значения счетчика;
Step – шаг (ключевое слово VB);
Шаг – шаг изменения счетчика; может быть и отрицательным; параметр необязательный, так как если шаг равен 1, можно Step Шаг опустить;
Next – следующий (обязательное ключевое слово VB, конец записи оператора цикла).
Значение счетчика (Начало, Конец) могут бытьчисленными константами или переменными целого или вещественного типа, могут быть отрицательными или положительными числами. Чтобы тело цикла выполнилось хотя бы один раз, должно быть Начало ≤ Конец, если Шаг > 0, и Начало ≥ Конец, если Шаг < 0. Как только окажется, что Счетчик > Конец ( если Начало < Конец), выполнение цикла заканчивается. Если Начало = Конец, цикл выполнится один раз;
Оператор For чаще используется в случаях, когда при организации циклов необходимо использовать счетчик.
Пример 2.
Условие задачи:
Вычислить сумму квадратов первых N чисел натурального ряда.
Схема алгоритма:

Параметром цикла является переменная i. Значение переменной i изменяется от 1 до N с шагом 1. Каждое значение i, возведенное в квадрат прибавляется к переменной Sum и результат присваивается значению Sum. Таким образом, в переменной Sum накапливается сумма квадратов i. Так как при первом проходе значение Sum в правой части выражения должно быть равно нулю, до начала цикла значение Sum обнуляется. Таким же образом можно было бы подсчитать произведение, но тогда начальное значение произведения должно равняться 1.
Для ввода N на форму установлено текстовое поле TextBox1. Вывод результата осуществляется в свойство Caption метки Label4.
| Форма | Программа |
| Private Sub CommandButton1_Click() Dim i As Integer, Sum As Single, N As Integer N = Val(TextBox1.Text) ‘ Ввод N Sum = 0 ‘ Обнуление суммы For i = 1 To N Sum = Sum + i ^ 2 ‘ Накопление суммы Next i Label3.Caption = Sum ‘ Вывод результата End Sub |
Задание 1
Составить схему алгоритма, написать и отладить программу в соответствии с вариантом. Подсказка: в интервале, где расположен корень, функция меняет знак.
| № | Задача |
| Дано уравнение X – SinX – 1 = 0. Найти интервал [Х1, Х2], в котором расположен корень. | |
| Составить таблицу стоимости порций сыра весом 50, 100, 150, … 1000 г. Стоимость сыра — вводимая величина. | |
| Плотность воздуха убывает с высотой по закону r = r0е–hz. Считая, что r0 = 1,29 кг/м3, Z = 1.25 *10 –4 1/м, напечатать таблицу зависимости плотности от высоты для значений от 0 до 1000 м с шагом 100 м. | |
| Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9, 12, …, 24 часа. | |
| Дано уравнение x + Ln(x + 0.5) – 0.5 = 0. Найти интервал [Х1, Х2], в котором расположен корень. | |
| Составить программу вычисления функции Y = ax2 +b. Аргумент функции изменяется от 1 до 5 с шагом 0,5. | |
Составить программу вычисления функции . Аргумент принимает значения от -5 до 5 с шагом 1. | |
| Определить 10 чисел Фибоначчи. Числа Фибоначчи — это такая последовательность чисел, в которой первые два числа равны 1, каждое следующее число — сумма двух предыдущих. | |
| Построить таблицу соответствия между унциями и граммами, если 1 унция = 28,353495 г. | |
| Вывести на экран таблицу квадратов чисел от 10 до 25. | |
| Составить программу, которая выводит таблицу степеней двойки от нулевой до десятой. | |
| Составьте программу расчета площади круга для всех радиусов от 0,5 до 5. Шаг изменения радиуса круга 0,5. | |
| Составить суточное расписание движения автобуса, если известно, что первый автобус прибывает на остановку в 6:30, а периодичность движения 30 мин. | |
| Получить таблицу пересчета миль в километры. 1 миля = 1,609344 км. | |
| Вывести факториалы чисел от 3 до 10. |
Задание 2
| № | Задача |
Вычислить | |
Вычислить | |
Вычислить | |
Вычислить | |
Вычислить | |
| Составить программу вычисления an, не используя операцию возведения в степень. | |
Составить программу, которая вычисляет сумму первых n членов ряда 1 + Количество суммируемых членов исходная величина | |
Составьте программу для того, чтобы убедиться в справедливости равенства | |
Составьте программу для того, чтобы убедиться в справедливости равенства | |
| Составить программу, которая вычисляет сумму первых n членов ряда 1, 3, 5, 7, …. Количество суммируемых членов ряда задается во время работы программы. | |
| Составить таблицу умножения для числа 12. | |
| Вычислить произведение натуральных чисел, начиная от 12 до 18. | |
| Вычислить приближенно площадь одной арки синусоиды, разделив отрезок от 0 до p на 10 частей и суммируя площади десяти прямоугольников с основанием p/10 и высотой, равной значению функции на правой границе каждого интервала. | |
| Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал дневную норму на 10% от нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней. | |
| Вычислить n-ое число Фибоначчи. Числа Фибоначчи — это такая последовательность чисел, в которой первые два числа равны 1, каждое следующее число рассчитывается как сумма двух предыдущих. |
Дополнительные задачи:
1. Концентрация хлорной извести в бассейне объемом V м2 составляет 10 г/л. Через трубу в бассейн вливают чистую воду с объемной скоростью Q м3/час, через другую трубу с такой же скоростью вода выливается. При условии перемешивания концентрация хлорной извести изменяется по закону С0 = С0е–QT/V, где Т – время, С0 — начальная концентрация. Определить, через какое время концентрация хлорной извести достигнет безопасной для человека величины 0.1 г/л. Задачу решить при Q = 150 м3/час, V = 10000 л, С0 = 10 г/л.
2. Вычислить приближенно площадь одной арки синусоиды, разделив отрезок от 0 до p на 10 частей и суммируя площади десяти прямоугольников с основанием p/10 и высотой, равной значению функции на правой границе каждого интервала.
3. Вычислить приближенно площадь фигуры, ограниченной функцией Y = X2 и прямой Y = 5 + X/2, разбивая отрезок изменения X на 10 частей и суммируя площади прямоугольников с основанием, равным 1/10 отрезка, и высотой, определяемой значениями функций в середине основания.
4. В 1985 году урожай ячменя составил 20ц с га. В среднем каждые 2 года за счет применения передовых агротехнических приемов урожай увеличивается на 5%. Определить, через сколько лет урожайность достигнет 25 ц с га.
5. Определить суммарный объем в литрах 12 вложенных друг в друга шаров со стенками 5 мм. Внутренний диаметр внутреннего шара равен 10 см. Считать, что шары вкладываются друг в друга без зазора.
Контрольные вопросы
1. Что такое тело цикла?
2. Зачем в схему алгоритма, реализующего структуру «цикл», включен логический блок?
3. Каково различие между операторами цикла с предусловием и операторами цикла с постусловием?
4. Какие операторы языка VBA используются для организации циклов?
5. Что такое «параметр цикла»?
6. Как в схеме алгоритма отображается структура «цикл с параметром»?
7. Как отобразить результаты циклических расчетов в элементе TextBox?
8. Что обозначает свойство MultiLine элемента управления TextBox?
9. Что представляет собой алгоритм накопления суммы?
. Аргумент принимает значения от -5 до 5 с шагом 1.
Количество суммируемых членов исходная величина






