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

Основы алгоритмизации

Использованы разработка и материалы


автора А.В. Атанова, 2010-2011
• Раздел 1. Алгоритм. Свойства алгоритма.
• Раздел 2. Блок – схемы. Линейные алгоритмы, ветвление.


Основы алгоритмизации
Раздел 3* Поиск НОД двух чисел.
Раздел 4. Алгоритмическая структура «цикл».

Алгоритм.
Свойства алгоритма.
Повседневные задачи
" Мы редко до конца понимаем,
чего мы в действительности хотим"
Франсуа де Ларошфуко
1. Приготовление завтрака

2. Решение квадратного уравнения

3. Определение рода существительного


Определение 1

• Алгоритм – это предписание


исполнителю выполнить
последовательность команд,
приводящую от исходных
данных к искомому результату.
Первый алгоритм
• ЕВКЛИД (расцвет деятельности
около 300 до н.э.), также Эвклид,
древнегреческий математик,
известный прежде всего как автор
«Начал», самого знаменитого
учебника в истории.
Происхождение слова «алгоритм»
В IX веке жил Ал-Хорезми — сын
зороастрийского жреца,
прозванный за это ал-Маджуси
(маг). Заведовал библиотекой
«Дома мудрости», изучал
индийские и греческие знания.
Ал-Хорезми написал книгу
«Об индийском счёте»,
способствовавшую
популяризации позиционной
системы во всём Халифате,
вплоть до Испании. В XII веке эта
книга переводится на латинский,
от имени её автора происходит
наше слово «алгоритм»
Верно ли, что…

1. Налить воду в чайник


2. Открыть кран газовой горелки
3. Поставить чайник на плиту
4. Ждать, пока вода не закипит
5. Поднести спичку к горелке
6. Зажечь спичку
7. Выключить газ
Верно, что…
1. Налить воду в чайник
2. Поставить чайник на плиту
3. Зажечь спичку
4. Открыть кран газовой горелки
5. Поднести спичку к горелке
6. Ждать, пока вода не закипит
7. Выключить газ
Свойства алгоритма
• дискретность: состоит из отдельных шагов (команд)
• результативность: применение алгоритма обязательно приводит к
конечному результату за конечное число шагов
• массовость: возможность применения для решения целого класса
конкретных задач, отвечающих общей постановке задачи (может
применяться многократно при различных исходных данных)
• детерминированность: выполнение команд в строго определенной
последовательности
• понятность: должен включать только команды, известные исполнителю
(входящие в СКИ)
• определенность: при одинаковых исходных данных всегда выдает один
и тот же результат
• корректность: дает верное решение при любых допустимых исходных
данных
Определение 2
• Алгоритм – это конечная
последовательность указаний,
адресованных исполнителю, четко и
однозначно задающая процесс
решения задач какого-либо типа во
всех деталях и позволяющая получить
за конечное число шагов результат,
однозначно определяемый исходными
данными.
Исполнитель алгоритма
• Исполнитель алгоритма – это человек, животное или
устройство способные выполнять определенный набор
команд.
• Набор команд – СКИ (Система Команд Исполнителя).
• Алгоритм составляют с ориентацией на определенного
исполнителя:

…формального или
неформального?
Задача №1
• Выполните предложенные действия.
1. Задумайте целое число от 1 до 20.
2. Прибавьте к нему 2.
3. Результат умножьте на 2.
4. К полученному произведению прибавьте 3.
5. От суммы отнимите задуманное число.
6. К разности прибавьте 5.
7. От суммы отнимите задуманное число.
8. Сообщите ответ.
Ответ: 12; мы выступали в роли формального
исполнителя
Задача №2
• Какому исполнителю под
силу решить такую
задачу: «Отгадай 1 Н А
пословицу, обойдя поле 2 Е Ш
ходом шахматного
коня»? 3 И Л
4 Г Ь
Ответ: 5 Ё И
Не игла шьёт, 6 Т
а руки
7 Р К
8 А У
Неформальный исполнитель
A B C D E F G H
Задача №3*
Имеется Исполнитель алгоритма, который может
передвигаться по числовой оси. Система команд Исполнителя
алгоритма:
1. «Вперед N»
2. «Назад M»
Переменные N и M могут принимать любые целые
положительные значения. Известно, что Исполнитель
алгоритма выполнил программу из 50 команд, в которой команд
«Назад 2» на 12 больше, чем команд «Вперед 3». Других
команд в программе не было.
Какой одной командой можно заменить эту программу, чтобы
Исполнитель алгоритма оказался в той же точке, что и после
выполнения программы?
Решение:
1. Найдем сколько было команд: пусть х – количество
команд «Вперед», тогда
х+(х+12)=50;
х=19;
19+12=31 – количество команд «Назад»
2. Будем вести отсчет от начала числовой оси:
19*3=57 – после выполнения «Вперед 3» 19 раз;
31*2=62 – после выполнения «Назад 2» 31 раз;
57-62=-5 – оказался на отметке -5.
3. Все эти команды можно заменить одной – «Назад 5»
Задача №4**
Леонардо Пизанский, известный,
как Фибоначчи, был первым из великих
математиков Европы позднего
Средневековья. Числовой ряд, который
назван его именем, получился в
результате решения задачи о кроликах,
которую Фибоначчи изложил в своей
«Книге Абака»(1202 год).
Он выглядит так:
1,1,2,3,5,8,13,21,34,55,89,144…
В этом ряду каждое следующее число, начиная с
третьего, равно сумме двух предыдущих.
Составьте словесный алгоритм проверки
принадлежности введенного числа n ряду Фибоначчи.
Решение:
1. Ввести число N.
2. Установить значение первых трех чисел
Фибоначчи: 1,1,2.
3. Пока введенное число N больше очередного числа
Фибоначчи, взять два последних числа Фибоначчи
и получить из них новое число Фибоначчи.
3. Если число Фибоначчи равно введенному N или
было введено число N=1, значит, что было введено
число Фибоначчи, в противном случае – введенное
число не является числом Фибоначчи.
Методы записи алгоритма
Блок- схемы
алгоритмов
Блок-схема – это графическое
изображение алгоритма в виде
определенным образом связанных между
собой блоков.
Основные элементы блок-схемы
Элемент блок-схемы Назначение элемента
Обозначение начала и конца
Начало алгоритма
Описание ввода или вывода
данных, имеет один вход - сверху
Данные
и один выход - снизу.

Описание линейной
Последовательность последовательности команд, имеет
команд один вход – сверху и один выход –
снизу.
Обозначение условий в структурах
Да Нет «ветвление» и «выбор», имеет
Услови один вход – сверху и два выхода –
е налево, направо
Применяется для объявления
Объявление
переменных
переменных или ввода
комментариев
Линейный алгоритм

• Линейный алгоритм –
это набор команд,
выполняемых
последовательно во
времени, друг за
другом.
Задача №1
Зная длины трех сторон
треугольника, вычислить площадь и
периметр треугольника.
Решение:
• Входные данные: a, b, c.
• Выходные данные: S, P.
• Решение по формуле Герона
Внимание!!!
В знак "=" означает не математическое
равенство, а операцию присваивания.
Переменной, стоящей слева от оператора,
присваивается значение, указанное справа.
Причем это значение может быть уже определено
или его необходимо вычислить с помощью
выражения.
Задача №2
• Придумайте текст задачи,
воспользовавшись предложенным
алгоритмом, назовите входные и
выходные данные:
Решение:
Известны плотность и геометрические
размеры цилиндрического слитка,
полученного в металлургической
лаборатории. Найти объем, массу и
площадь основания слитка.
Входные данные: R - радиус основания
цилиндра, h - высота цилиндра, ρ-
плотность материала слитка.
Выходные данные: m - масса слитка, V -
объем, S - площадь основания.
Алгоритмическая структура
«ветвление»
• Алгоритм,
содержащий хотя
бы одно условие, в
результате которого
обеспечивается
переход на один из
двух возможных
шагов, называется
разветвляющимся.
Задача №3
• Кровяное давление у старшеклассников
Начало
считается нормальным, если верхняя его
граница H≤100, а нижняя h≥60 и H-h≥30. H, h
Составьте алгоритм, который Да Нет
в зависимости от измеренных H≤100
значений H и h выдает одно из Да Нет повышенное
h≥60
следующих значений:
Да
«нормальное», «повышенное», Нет пониженное
H-h≥30
«пониженное».
нормальное не норма
Воспользуйтесь
шаблоном.
Результат

Конец
Задача №4
• Заполните шаблон блок- Начало
схемы алгоритма
a, b, c
исследования
квадратного уравнения D=b²-4*a*c
ax²+bx+c=0 (a≠0) Нет
Да
D<0
Нет
Корней нет Да
D=0
Х= - b/2*a X1= (- b+√D)/2*a

Х X2= (- b-√D)/2*a

X1, X2

Конец
Задача №5
• Какое значение получит Начало
переменная Z в
результате выполнения X,Y
следующего алгоритма?
Z:=0
А) Х=1, Y=1 Z=1 Да Нет
X>0
Б) X=1, Y=-1 Z=2 Да Нет
Y>0
Z:=1 Z:=2

В) X=-1, Y=1 Z=0 Z


Конец
Поиск НОД двух чисел.*
Первый алгоритм
Как-то раз древнегреческого
геометра Евклида спросили: - Что
бы ты предпочел - два целых
яблока или четыре половинки? -
Конечно, четыре половинки. - А
почему? Это ведь одно и то же. -
Отнюдь. Выбирая два целых
яблока, как я узнаю, червивые они
или нет?

Алгоритм Евклида – это


алгоритм нахождения НОД двух
целых положительных чисел
Методы решения:
Существуют различные методы нахождения
НОД двух натуральных чисел:

1. Разложение на простые сомножители;


2. Алгоритм Евклида;
3. Целочисленное деление.
Разложение на простые множители
• Порядок действий:
1. Разложить число m на
простые множители.
2. Разложить число n на
простые множители.
3. Выбрать все одинаковые
множители чисел m и n. НОД (5390; 2310) =
= 2*5*7*11=770;
4. Перемножить выбранные
множители – полученное
значение и будет НОД (m;n).
Рекурсивный метод – алгоритм Евклида

В соответствии с этим методом


НОД(m,n) вычисляется по следующему
правилу:
НОД(m-n,n), если m>n,
НОД(m,n) = НОД(m,n-m), если n>m,
m, если m=n.

т.е. если d является НОД(m,n), то это же


число d будет являться НОД меньшего
числа из этой пары и их разности.
Блок схема алгоритма
1. Ввести натуральные M и N.
2. Если M≠N, то перейти к шагу 3,
иначе перейти к шагу 8.
3. Если M>N, то перейти к шагу 4,
иначе перейти к шагу 6.
4. Вычислить M=M-N.
5. Перейти к шагу 2.
M=238
6. Вычислить N=N-M.
N=544
7. Перейти к шагу 2.
8. Сообщить M.
Применим алгоритм для нахождения НОД(238,544) = НОД(238, 306) =
=НОД(238,68) = НОД(170,68)= НОД(102,68)= НОД(34,68)= НОД(34,34) = 34
Метод целочисленного деления
• Первое число делим нацело на второе.
Очевидно, что остаток целочисленного
деления меньше второго числа. Если остаток
равен нулю, то это значит, что первое число
нацело делится на второе, и в этом случае
второе число и будем считать НОД этих
чисел. Если остаток не равен нулю, то
заменим первое число на второе, а второе -
на остаток, и будем повторять действия до
тех пор, пока остаток не станет равным нулю.
Алгоритм
Ввод M,N
1. Ввод натуральных чисел M, N.
2. Найдем R – остаток от Вычислить R –
остаток от
деления M нацело на N. деления M на N

3. Если R=0, то перейдем к шагу


6, иначе перейти к шагу 4. R=0
4. Положим M:=N; N:=R.
5. Перейти к шагу 2. M:= N
N:= R
6. Сообщить значение N.
M=238
N=544 Вывод N
Пошаговое исполнение алгоритма

• M:=238 N:=544

• [238/544]=0 (ост. 238), заменяем: M:=544, N:=238


• [544/238]=2 (ост. 68), заменяем: M:=238, N:=68
• [238/68]=3 (ост. 34), заменяем: M:=68, N:=34
• [68/34]=2 (ост. 0), закончили процесс деления.

• НОД(238, 544)=34
Сравним количество операций

M=238,N=544 Операции Метод 2 Метод 3


Операции замены 0 6
Операции сложения/вычитания 6 0
Почти одинаковое
Операции умножения/деления 0 4
количество
Операции сравнения 13 4
операций?

M=32000, N=2 Операции Метод 2 Метод 3


Операции замены 0 2
Операции сложения/вычитания 15999 0
Операции умножения/деления 0 1
Операции сравнения 31999 1
Задание по группам:
По словесным описаниям методов поиска
наибольшего из трех чисел постройте их блок-схемы
и напишите пошаговый алгоритм.

• Метод 1: Даны три числа. Находим наибольшее из


первых двух чисел, а затем сравниваем его с третьим
числом.
• Метод 2: Определяем, является ли первое число
наибольшим; если нет, то находим наибольшее из
второго и третьего чисел.
• Метод 3: Попарно сравниваем все три числа, чтобы
найти наибольшее.
Алгоритмическая
структура «цикл»
Алгоритмические структуры
Какие алгоритмические структуры
изображены на рисунках?

Вставьте пропущенные слова:


1. Алгоритм – это последовательность…

2. Алгоритм, в котором команды выполняются


последовательно друг за другом, называется…
3. Алгоритмическая структура выполняющая выбор при истинности
или ложности условия называется …
Задача с «зацикливанием»
№3. К какому результату приведет
Начало
исполнение представленного в виде
блок-схемы алгоритма?
I:=0
Ответ: I= 12
Сколько раз выполнится ДА НЕТ
I<=10
вывод текста в алгоритме?
Ответ: 6 раз Вывод:
«ПРИВЕТ!» Вывод: I
Изменим условие: I:=I*2
»
Сколько раз выполнится
вывод текста в алгоритме? I:=I+2
I:=I*2 Конец
Ответ: бесконечно.
Произойдет "зацикливание" алгоритма, т.е. не будет выполняться основное
свойство алгоритма — результативность.
Алгоритмическая структура «цикл»
В алгоритмической структуре
«цикл» серия команд
выполняется многократно.
Такая последовательность
команд называется
«телом цикла».
Циклические алгоритмические
структуры бывают двух типов:
1.Цикл со счетчиком, в котором
тело цикла выполняется
определенное количество раз;
2.Цикл с условием, в котором тело
цикла выполняется пока истинно
условие.
Самостоятельная работа
Определите значение переменных X и Y после
выполнения фрагмента алгоритма.

I вариант II вариант

Х=13; Y=20 Х=30; Y=20