
- •Основы алгоритмизации и программирования Этапы решения задач на компьютере
- •Понятие алгоритма. Исполнители алгоритмов. Свойства алгоритмов
- •Типы алгоритмов и формы их представления
- •Разработка алгоритмов методом пошаговой детализации. Вспомогательный алгоритм
- •Разветвляющиеся алгоритмы. Команда ветвления
- •Циклические алгоритмы. Команда повторения
- •Примеры создания алгоритмов
- •Программирование
- •Языки программирования. Компиляция и интерпретация
- •Классификация языков программирования
- •Имя и значение переменной в программировании
- •Типы переменных в программировании
- •Объектно-ориентированный подход в информационных технологиях
- •Вопросы для самоконтроля
Примеры создания алгоритмов
Пример
1. Решение
квадратного уравнения
Исходные
данные. Значения
переменных: а
> 0, b >0,с>0.
Задача.
Вычислить
действительные корни уравнения ах2
+bх+с=0.
В блоке 1 компьютер вычисляет значение
дискриминанта Dпо
заданным значениям a,
b и с.
В блоке 2 это значение проверяется: если
оно меньше нуля, программа выдает нам
сообщение «Решения
нет»
(блок 4); если D
больше или равен нулю, вычисляются
квадратный корень из дискриминанта,
азатем – значения двух корней (x1и
х2).
Пример
2. Нахождение
максимального числа из последовательности
целых чисел (при помощи цикла).
Исходные
данные Последовательность
из п
целых положительных чисел (например, n
= 6, 15, 25),
обозначенная буквой а.
Пояснение.
В
информатике такие последовательности
называются массивами.
Массив
имеет имя – а.
Каждый элемент массива обозначается
порядковым номером – индексом элемента.
Например, а1
= 3, а2 = 6.
Задача.
Найти
максимальное из чисел а,
(i=1,2,...,n).
Введем две дополнительные переменные: m – этой переменной компьютер присвоит значение максимального числа; i, которая будет
служить порядковым номером (индексом) числа в последовательности (i = 1,2,…,п). Присвоим m значение «нуль», а – значение 1. В блоке 3 сравниваются текущее значение m с очередным числом из заданной последовательности. Например, пусть в начале последовательности указаны a1 = 3, а2 = 6, а3 = 2, ... При первом выполнении блока 3 проверяется условие a1 > m (т.е. 3 > 0). В результате проверки переменной m будет присвоено значение a1 (т.е. m=3). Далее значение i увеличивается на единицу (блок 5). Если i не больше п (блок 6), снова выполняется блок 3. На втором шаге a1 =6, т.е a1 > m, и m примет значение 6 На третьем шаге a1 =2 (a1 < m), и m сохранит значение 6. Как только i превысит число элементов последовательности (все числа просмотрены), выполнение алгоритма заканчивается, а переменная m сохраняет значение максимального числа последовательности.
Пример
3. Определить
«завтрашнюю» дату.
Для решения этой
задачи необходимо обучить программу
«тонкостям» распознавания дней, месяцев
и лет.
Исходные
данные. «Сегодняшняя»
дата, заданная числом
a1
(1
< a1 < 31),
месяцем b1(1
< b1 < 12)
и годом
c1(c1
> 0). Будем считать, что эта дата задана
правильно (т. е. такие числа, как 31 февраля
– исключены).
Постановка
задачи. Определить
«завтрашнюю» дату (число а2,
месяц b2
и
год c1).
1. Если число меньше 28
(т.е. 1, 2 , …, 27), то завтра будет тот
же год, тот же месяц и число, увеличенное
на 1.
2. В противном случае нужно
проверить месяц. Если сегодня февраль,
завтра будет либо 29 февраля (если значение
года делится на 4, т.е. год – високосный),
либо 1 марта (блоки 2, 4, 3, 8).
3. Если сегодня не февраль, придется вернуться к числу. Если a1 < 30, то число увеличивается на единицу. Если нет, необходимо определить число дней в текущем месяце (блок 6) и, в зависимости от результата, либо увеличить a1 на 1, либо перейти к первому числу следующего месяца. 4. Однако в последнем случае (если число дней в месяце 31), надо выяснить, не находимся ли мы на пороге смены года (блок 9). Разумеется, этот алгоритм можно построить и по-другому, однако смысл операций не изменится Из примеров видно, что алгоритм обычно составляется для решения не одной конкретной задачи, а группыоднотипных задач с разными исходными данными. Например, алгоритм определения завтрашнего числа будет работать с любыми исходными датами.