Вы находитесь на странице: 1из 8

Основы программирования 2

Ветвящийся алгоритм

Алгоритм называется ветвящимся, если последовательность действий в нём зависит или


от начальных данных, или от результатов промежуточных вычислений, т. е. в такой алгоритми-
ческой конструкции может нарушаеться последовательность выполнения команд. Для измене-
ния последовательности проверяют выполнение или не выполнение некоторого условия (или
нескольких условий), таким образом в ветвящемся алгоритме должна присутсвовать хотя бы
одна команда проверки условия. Условиями здесь в простейших случаях являются логические
выражения больше (>), меньше (<), равно (=) или не равно (> <), в более сложных случаях
можно в использовать логические функции и, или, не.
В блок- схемах ветвящийся алгоритм отображается в виде ромба, внутри которого записы-
вается условие, а от его боковых вершин отходят линии потока, которые указывают выполнять-
ся действие при истинности (да) или ложности (нет) условия. В программе Flowgorithm блок
условия так и отображается и называется Если (рис.1).

Рис.1.
После выделения этого блока и нажатия два раза левой кдавиши мыши откроется окно
Свойст условия, где в поле Введите выражения условия и записывается логическое
выражение (рис. 2)

Рис.2.

Пример.

√|𝑥| при 𝑥 < 0


Вычислить значение функции, состоящей из двух ветвей 𝑦 = { .
𝑥 2 при 𝑥 ≥ 0
Блок-схема алгоритма приведена на рис. 3.

1
Рис.3.
В алгоритмическом языке QBasic существует несколко видов операторов ветвления,
которые по другому ещё называются операторами условного перехода. Некоторые из них
рассмотрены ниже.
1. IF условие THEN действие -если условие истинно, то выполняется действие, если
ложно то команда, следующая за этим оператором. Блок-схема этого оператора
показана на рис.4.

да
нет условие

действие

Рис.4.
2. IF условие THEN действие 1 ELSE действие 2 --если условие истинно, то выполняе-
тся действие1, если ложно – действие2. Блок-схема этого оператора показана на рис.5.
2
да
нет условие

действие 2 действие 1

Рис.5.

Этот оператор можно записать в блочной форме:


IF условие 1 THEN
действие 1
[ELSEIF условие 2 THEN
[действие 2]
.
ELSEIF условие N THEN
[действие N]]
[ELSE
[действие N+1]]
END IF
В жтом случае, если условие 1 истинно выполняется действие 1, если ложно, то проверя-
ется условие 2. Если оно истинно, то выполняется действие 2 и т.д. до проверки условия N. Если
условие N ложно, то выполняется действие N+1. Квадратные скобки просто обозначают, что
операторы, находящиеся внути скобок, не обязятельны.

Задания для самостоятельной работы.

В этих заданиях нужно составить алгоритм вычислительной задачи в программе


Flowgorithm и программу на языке QBasic.

1 Даны 2 числа, определить наибольшее.

2 Даны 2 расстояния. Одно в км, другое в футах (1 фут=0.45 м). Определить


какое из них больше.
3 Известны 2 скорости. Одна в км/ч другая м/сек. Определить какая из них
меньше.
4 Даны радиус окружности и длина стороны квадрата. Определить чья
площадь больше.
5 Даны массы и объёмы двух тел. Определить чья плотность больше.
6 Даны радиус окружности и длины сторон прямоугольника. Определить
что больше длина окружности или периметр прямоугольника.

3
7 Даны диаметр шара и длина стороны куба. Определить чей объём
больше.
8 Даны диаметр шара и длины стороны параллелепипеда. Определить чей
объём больше
9 Даны диаметр шара и длина стороны куба. Определить чья площадь
поверхности меньше.
10 Дано время в минутах и секундах. Определить какое из них больше.
11 Даны катеты прямоугольного треугольника и сторона квадрата. Опреде-
лить, что меньше по длине гипотенуза треугольника или диагональ квад-
рата.
12 Даны 3 числа. Вывести наименьшее.
13 Даны одинаковой величины диаметр шара и длина стороны куба. Опре-
делить чей объём больше.

Циклический алгоритм

Алгоритм, в котором многократно повторяются однотипные действия, называется цикли-


ческим или просто циклом.
Циклы разделяют на два типа: циклы с заранее известным числом повторений (цикл со
счётчиком) и циклы с заранее не известным числом повторений (итерационные циклы).

Циклы с заранее известным числом повторений

В циклах с заранее известным числом повторений, исходя из названия, заранее известно


сколько раз будут повторяться те или иные действия. Для этого в таких алгоритмах вводится спе-
циальная переменная, называемая переменной цикла, которая изменяется при каждом выполне-
нии операций, входящих в цикл. Это может быть просто счётчик, подсчитывающий количество
повторений, а может быть некоторая переменная, изменяющаяся в заданных пределах от некото-
рого начального до конечного значений и с заданным шагом. Если шаг положительный, то
начальное значение больше конечного, если отрицательный, то наоборот. В блок-схемах начало
циклов с заранее известным числом повторений отображаются вытянутым шестиугольником, в
котором записывается переменная цикла, её начальное и конечные значения, а также шаг вычис-
ления. Внутри цикла находятся набор операторов, выполнение которых необходимо многократно
повторять. Эти операторы называются телом цикла (рис. 6).

переменная= нач. знач, конеч. знач., шаг

Тело цикла

Рис.6.

4
В программе Flowgorithm цикл с заранее известным числом повторений также
отображается в виде вытянутого шестиугольника и называется Для (рис.7).

Рис.7.
После того, как вставили блок в блок-схему и нажали левую клавишу мыши, откроется
окно Свойства цикла со счётчиком, в котором задаются все параметры цикла (рис.8). В даль-
нейшем эти значения будут отображаться на блок-схеме.

Рис.8.
Для того, чтобы ставить тело цикла нужно выделить стрелку с названием Цикл, нажать ле-
вую клавишу мыши, и откроется окно со списком операторов.

Пример.

Вычислить таблицу значений функции y=2x2 для -5≤х≤5 с шагом 0.5. Блок схема алгоритма
в программе Flowgorithm представлена на рис. 9.
В алгоритмическом языке QBasic для описания алгоритмической конструкции Цикл с
известным числом повторений существует следующая синтаксическая конструкция:
Начало цикла: FOR переменная цикла = нач. значен. TO конеч. значен. STEP шаг вычисления

Тело цикла: набор операторов, которые необходимо многократно выполнить.

Конец цикла: NEXT

Текст программы языке QBasic, блок-схема которой приведена на рис.9 представлена на рис.10.

5
Рис.9.

Рис.10.
Рекурсивный алгоритм.
При решении задач на вычислительных машинах часто необходимо находить сумму, раз-
ность или произведение заранее незаданного количества членов. В этом случае используются
накопительные (рекурсивные) алгоритмы. В таких задачах выделяется специальная переменная,
в которой производится накопление суммы (разности или произведения) неопределённого коли-
чества чисел. Известно, что операция = (присваивание) – это команда занесения информации в
ячейку памяти с именем переменной, стоящей слева от этой операции. При этом, информация,
ранее находившаяся в этой ячейке, стирается. В таком случае команда вида х=х+а означает, что к
числу, находящемуся в ячейке х добавляется число из ячейки а и результат вновь запоминается в
ячейке х, тогда после выполнения этой операции в ячейке х будет сумма двух чисел (предыду-
щего значения х и значения а). Многократно повторяя эту операцию и изменяя значения в пере-
менной а, можно в х получить сумму произвольного числа слагаемых.

6
Пример.

Составить алгоритм вычисления суммы n произвольных чисел. В программе Flowgorithm


алгоритм такой задачи показан на рис. 11.

Рис.11.

Задания для самостоятельной работы.

В этих заданиях нужно составить алгоритм вычислительной задачи в программе


Flowgorithm и программу на языке QBasic.

1 Вычислить среднеарифметическое целых чисел от a до b (a>b)
2 Вычислить сумму кубов целых чисел от a до b (a>b)
3 Вычислить n! (произведение всех целых чисел от 1 до n)
4 Дано целое число n. Найти сумму n2+(n+1)2+…+(2n)2
5 Дано целое число n. Найти сумму 1+1/2+1/3+…+1/n
7
6 Дано целое число n и действительное a. Найти сумму a+a2+…+an
7 Дано целое число n и действительное a. Найти сумму -a+a2+…+(-1)nan
8 Дано n произвольных действительных чисел с разными знаками. Найти
сумму только положительных чисел.
9 Дано n произвольных действительных чисел с разными знаками. Найти
произведение только отрицательных чисел.
10 Вычислить сумму x+(1/2)x2+(1/3)x3+…+(1/n)xn
11 Вычислить сумму 1-22+33-44+…+(-1)n-1nn
12 Вычислить сумму 1+x/3+x3/9+…+xn/3n-1
13 Вычислить сумму (a-b)+2(a-b)2+…+n!(a-b)n

Вам также может понравиться