Глава 2. Проектирование алгоритмов простой структуры

E-mail Печать PDF
Рейтинг пользователей: / 1
ХудшийЛучший 
Индекс материала
Глава 2. Проектирование алгоритмов простой структуры
2.2. Алгоритмы, использующие арифметический цикл
2.3. Алгоритмы, использующие итерационный цикл
Задачи для самостоятельного решения
Все страницы

Глава 2. Проектирование алгоритмов
простой структуры

Займемся теперь конструированием алгоритмов разной структуры. Начнем с простых задач, а затем будем их усложнять. Наша цель - продемонстрировать способы построения алгоритмов различных типов. Мы будем изображать алгоритмы в виде блок-схемы или описывать их на псевдокоде.

2.1. Линейные и разветвляющиеся алгоритмы

Пример 2.1. Определить объем и площадь боковой поверхности цилиндра с заданным радиусом основания и высотой.

Дано: R - радиус основания цилиндра; H - высота цилиндра.

Найти S - площадь боковой поверхности и V - объем цилиндра.

Математическая модель: V = ? R2 ? H; S = 2 ? ??R?H, где  ? = 3,14.

Решение. Задача - тривиальна и решается с использованием алгоритма линейной структуры с применением приведенной математической модели.

Пример 2.2. Вычислить значение функции

Дано: x, a, b, c - произвольные числа.

Найти: y.

Решение. Представим задачу графически

Так как значение переменной x вводится произвольно, то значение может оказаться в одном из трех интервалов. Поэтому для решения задачи необходимо проверить три условия.

Фрагмент алгоритма на псевдокоде:

Ввод a, b, c, x

Если x < 10

  То y = x + a

  Иначе

Если (x ? 10) И (x ? 20)

    То y = x+ b

    Иначе y = x + c

Все если

Выполним алгоритм при конкретных значениях исходных данных. Пусть, например a = 2, b = 3, c = 4.

 

х

Выполнение алгоритма

y

5

5 < 10? Да; y = 5 + 2 = 7

7

10

10 < 10? Нет; (10?10) и (10? 20)? Да; y = 10 + 3 = 13

13

25

25 < 10? Нет; (25?10) и (25? 20)? Нет; y = 25 + 4 = 29

29

Пример 2.3. Определить ближайшую к началу координат точку плоскости из трех заданных точек.

Дано: Координаты точек А А, yA), В (xB, yB) и С(xС, yС).

Найти точку, ближайшую к началу координат.

Математическая модель: Вычисляем расстояние между началом координат и точками А, В и С.

1.     Расстояние ОА:

2.     Расстояние ОВ:

3.     Расстояние ОС:

Сравниваем значения Sa, Sb и Sc и определяем наименьшее из значений.

Все переменные имеют вещественный тип.

Решение. Мы приводим фрагмент алгоритма на алгоритмическом языке, который, на наш взгляд, является интуитивно понятным.

Фрагмент алгоритма.

{ Ввод координат точек с комментариями для пользователя}

Вывод  "Введите координаты точки А"

Ввод xA;  Ввод yA

Вывод "Введите координаты точки B"

Ввод xB; Ввод yB

Вывод "Введите координаты точки C"

Ввод xC; Ввод yC

{Вычисление расстояний }

Sa = sqrt(sqr(xA) + sqr(yA))

Sb = sqrt(sqr(xB) + sqr(yB))

Sc = sqrt(sqr(xCA) + sqr(yC))

{Определение наименьшего расстояния}

Если (Sa < Sb) и (Sa < Sc)

    То Вывод "Точка А ближайшая к началу координат"

    Иначе  Если(Sb < Sc)

                       То Вывод "Точка В ближайшая к началу координат"

                       Иначе Вывод "Точка С ближайшая к началу координат";

                       Все если

Все если

Пример 2.4. Вычислить произведение цифр заданного целого четырехзначного числа.

Дано: Number - четырехзначное целое число. Определить Р - произведение цифр числа.

Решение. Нам понадобятся дополнительные переменные. Обозначим i - первая цифра числа; k - вторая цифра числа; n - третья цифра числа; m - четвертая цифра числа. Исходное число может быть как положительным, так и отрицательным. Поэтому перед нахождением цифр числа, возьмем его модуль.

Приведем фрагмент алгоритма. Ввод данных  ввиду его простоты, опускаем. В алгоритме используем операцию div для определения частного от деления с остатком и mod - для вычисления остатка от деления.

Number = abs(Number)              {Вычисление модуля числа}

i = Number div 1000                           {Первая цифра числа}

k = Number div 100 mod 10      {Вторая цифра}

n = Number div 10 mod 10                 {Третья цифра}

m = Number mod 10                           {Четвертая цифра}

P = i * k * n* m

Вывод "Произведение цифр числа  ", Number,  "равно  ", P

Тест

№ теста

Проверяемый
случай

Число

Результат

1

Число положительное

2314

Р = 24

2

Число отрицательное

-1245

Р = 40

Пример 2.5. Решить квадратное уравнение ax2 + bx + c = 0 с полным исследованием.

Дано: a, b, c - коэффициенты квадратного уравнения.

Найти корень уравнения x.

Математическая модель. При решении задачи возможны следующие случаи:

1)    Все коэффициенты равны нулю, тогда х - любое число.

2)    а = 0, b ? 0. Уравнение является линейным. Корень вычисляется по формуле x = -c/b.

3)    a = 0, b = 0, c ? 0. Значения коэффициентов введены неверно. Выражение не является уравнением.

4)    a ? 0, b ? 0, c ? 0. имеем квадратное уравнение, дискриминант которого d = b2 - 4ac. Здесь возможны следующие случаи.

а) d > 0, тогда имеется два корня, которые определяем по формулам:

б) d = 0, корни уравнения равны и определяются по формуле

в) d < 0, тогда уравнение не имеет действительных корней.

Все переменные имеют вещественный тип.

Решение.

Блок-схема алгоритма

Алгоритм на псевдокоде:

Ввод a, b c;

Если (a = 0) И (b = 0) И (c = 0)

То Вывод "х - любое число"

Иначе

Если (a = 0) И (b < > 0)

То Вывод "Линейное уравнение", x = -c/b

Иначе

Если (a = 0) И (b = 0) И (c < > 0)

То Вывод "Неверный ввод данных"

Иначе

d = b*b - 4*a*c

Если (d > 0)

То  

x1 = (-b + sqrt(d)) / (2*a)

x2 = (-b - sqrt(d)) / (2*a)

Иначе

Если (d = 0)

То

x = -b / (2*a)

Вывод "x=", x

Иначе

Вывод "Действительных корней нет"

Все если

Все если

Все если

Все если

Все если

Тест


теста

Проверяемый
вариант

Коэффициенты

Результат

a

b

c

1

d > 0

1

1

-2

x1 =1, x2 = 2

2

d = 0

1

2

1

x1 = -1, x2 = -1

3

d < 0

2

1

2

Действительных
корней нет

4

a = 0, b = 0, c = 0

0

0

0

х - любое число

5

a = 0, b = 0, c < > 0

0

0

2

Неверный ввод
данных

6

a = 0, b < > 0

0

2

1

Линейное уравнение
 х = -0,5

7

a < > 0, b < > 0, c = 0

2

1

0

x1 = 0, x2 = -0,5

Пример 2.6.Даны две прямые. Определить их взаимное расположение.

Дано: Прямые описываются уравнениями:

a1x + b1y + c1 = 0, a2x + b2y + c2 = 0.

Следовательно, для задания уравнений прямых надо ввести коэффициенты a1, b1, c1  и  a2, b2, и c2.

Найти координаты точки пересечения, если они пересекаются. Если нет, то сообщить, что эти прямые либо совпадают, либо  не пересекаются, либо не существуют.

Математическая модель. Если a1= 0 и b1 = 0 или a2, = 0 и  b2 = 0, то данные коэффициенты не образуют прямые  линии.  Если a1 ? b2 = a2 ? b1 и a1 ? b2= a2 ? с1, то прямые совпадают. Если a1 ? b2 = a2 ? b1, то прямые параллельны. Если ни одно из этих условий не выполняется, то прямые пересекаются и координаты точек пересечения определяются по формулам

Все переменные вещественного типа.

Решение.

Блок-схема алгоритма:

Ввод a1, b1, c1

Ввод a2, b2, c2

Если (a1 = 0 И b1 = 0) ИЛИ (a2 = 0 И b2 = 0 )

То Вывод "Это не прямая"

Иначе

Если (a1 * b2 = a2 * b1) И (a1 *c2 = a2 * c1)

То Вывод "Прямые совпадают"

Иначе

Если (a1 * b2 = a2 * b1)

То Вывод "Прямые параллельны"

Иначе

x = (c1*b2 - c2*b1)/(b1*a2 - b2*a1)

y = (c2*a1 - c1*a2)/(b1*a2 - b2*a1)

Вывод "Прямые пересекаются в точке x =", x, "y=", y

Все если

Все если

Все если

Тест


теста

Проверяемый
вариант

Коэффициенты

Результат

a1

b1

c1

a2

b2

c2

1

Первая прямая не
существует

0

0

1

1

2

3

Это не прямая

2

Вторая прямая не
существует

1

2

2

0

0

1

Это не прямая

3

Все коэффициенты одной или обоих прямых равны нулю

0

0

0

1

2

1

Это не прямая

4

Коэффициенты попарно равны

1

2

1

1

2

1

Прямые совпадают

5

Коэффициенты попарно пропорциональны

1

2

1

2

4

2

Прямые совпадают

6

Прямые параллельны

2

3

-1

4

6

1

Прямые параллельны

7

Прямые пересекаются

1

2

-4

1

-2

1

x = 1,50,
y = 1,25



 

Добавьтe Ваш комментарий

Ваше имя (псевдоним):
Ваш адрес почты:
Заголовок:
Комментарий:

Комментарии

Интересное




Похожие материалы

Партнёры