Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы алгоритмизации и программирования.docx
Скачиваний:
203
Добавлен:
14.02.2015
Размер:
94.58 Кб
Скачать

Примеры создания алгоритмов

Пример 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). Разумеется, этот алгоритм можно построить и по-другому, однако смысл операций не изменится Из примеров видно, что алгоритм обычно составляется для решения не одной конкретной задачи, а группыоднотипных задач с разными исходными данными. Например, алгоритм определения завтрашнего числа будет работать с любыми исходными датами.