Файл: ОСНОВНЫЕ СТРУКТУРЫ АЛГОРИТМОВ: СРАВНИТЕЛЬНЫЙ АНАЛИЗ И ПРИМЕРЫ ИХ ИСПОЛЬЗОВАНИЯ (Алгоритм и его свойства).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.04.2023

Просмотров: 251

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1. Введем радиус R

2. Вычислим площадь по формуле S=π*R2

3. Выведем значение S

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

Приведем реализацию этой программы на языке C#, критерием выбора данного языка было то, что синтаксис и семантика языка схожа с такими популярными языками как С++ и JavaScript и переход от одного языка к другому не составляет особого труда, также с помощью данных языков решается широкий спектр задач.

static void Main(string[] args)

{

double S,R;

Console.WriteLine(" Введите радиус R");

R = double.Parse(Console.ReadLine());

S = 3.14 * (R * R);

Console.WriteLine("Площадь круга радиусом " + R + " = " + S);

Console.ReadLine();

}

Данный пример показывает нам, как работает линейная структура. Структура может содержать некоторое количество блоков ввода, вывода информации и блоки решения, но в итоговом варианте такой алгоритм должен быть конечен и приводил к искомому результату. Для алгоритмов, требующих принятия решения, например, логическое сравнение, линейная структура уже не подходит, для этого будем использовать структуру выбора.

Структура выбора (структура ветвления) предназначена для разделения алгоритма на заранее предусмотренные направления, зависящие от входных данных, в конечном итоге каждый из путей ведет к общему выходу.

Приведем пример алгоритма если – то в словесном виде.

1. Вводим число X

2. Сравниваем введенное число X

3. Если число X < 10 выводим “Число X меньше 10”

На языке блок-схем это выглядит так:

Это минимальная конструкция структуры ветвления если - то.

С помощью структуры ветвления и линейной структуры можно реализовать практически любые алгоритмы, но чем сложнее алгоритм, тем более объемными они будут и плохо читаемыми. На практике часто встречаются задачи, когда нужно выбрать не одно из двух, а одно из трех или более путей ветвления. Такую структуру называют выбором варианта, ее также можно построить из линейных и ветвящихся структур.

Даже очень простые расчеты могут поставить человека в тупик, если их надо повторить тысячи раз, а повторять операции миллионы раз человек совершенно не способен. Лучшие качества компьютеров проявляются не тогда, когда они рассчитывают значения сложных выражений, а когда многократно, с незначительными изменениями, повторяют сравнительно простые операции. С необходимостью повторяющихся действий человек сталкивается постоянно. Перечень повторяющихся действий называют телом цикла. Разберем пример на основе линейной структуры: нам надо сложить введенное число само на себя десять раз, для этого составим словесный алгоритм.


1. Вводим число X

2. X=X+X

3. X=X+X

4. X=X+X

5. X=X+X

6. X=X+X

7. X=X+X

8. X=X+X

9. X=X+X

10. X=X+X

11. X=X+X

12. Вывести полученное число X

Как видим алгоритм получается очень объемным, а если такую операцию нужно будет провести скажем тысячи раз. Расписать такой алгоритм будет очень сложно. Для облегчения и наглядного представления повторяющихся действий существует структура цикл. Как в алгоритме с циклом будет выглядеть предыдущий пример, мы покажем на примере цикла с параметром, так как нам известно количество повторений.

1. Задаем число Х

2. Задаем параметр цикла начальное значение i=1, конечное значение i=10, шаг 1, при значении i=10 переход к п. 5

3. Вычисляем X=X+X

4. Переход к п.2

5. Выводим число X

На языке блок схемы это выглядит так:

В итоге объём алгоритма сократился в два раза, повторяющиеся действия сложения числа на само себя вложено в цикл. Хотя стоит понимать, что это не увеличило скорость выполнения алгоритма, так как приходится еще считать параметры цикла и проверять их, а это дополнительные элементарные операции, но чтение алгоритма структура цикла облегчает в разы.

Также циклы используются в алгоритмах поиска и сортировки без которых процесс описания алгоритма занял бы очень много места и времени. Конечно, если это не слишком маленькие значения, до сотни значений еще можно описать, но, если это несколько сотен, тысяч, или даже миллионов, алгоритм поиска не по одному списку или массиву, а по нескольким десяткам, тысячам, структуры циклов в данном случае как никак идеально походит нам, в отличие от линейной структуры.

Сама структура цикла по сути ничего не представляет без линейных блоков или блоков ветвления, поэтому циклы используются совместно с линейными и ветвящимися структурами. Простой пример использования цикла без операторов внутри, это цикл с параметром, можно использовать как таймер, но к сожалению современные системы работают очень быстро и значения параметра цикла будет очень большим, не всегда можно точно вычислить какой параметр нужен, например, для задержки в 1 секунду. Для таких случаев есть специальные операторы в программировании.

Рассмотрим пример математической задачи на нахождение корней уравнения ax2+bx+c=0 (a ≠0), в данном алгоритме нам потребуется один блок ветвления для проверки условия дискриминанта (D>=0), полностью выполнить линейной структурой мы его сможем только в том случае, если после вычислении дискриминанта мы получим положительное значение, либо ноль.


Так как заранее мы не можем знать какие будут входные данные, будет использоваться структура ветвления совместно с линейной структурой. Словесно алгоритм будет выглядеть так:

1. Ввести числа a, b, c

2. Вычислить дискриминант по формуле D=b2-4ac

3. Проверяем условие, если D ≤ 0, то перейти к п. 5

4. Решения нет, перейти к п. 7

5. Провести вычисления по формулам x1=(-b- √D)/(2a), x2=(-b+√D)/(2a)

6. Вывести x1, x2

7. Конец.

Блок-схемой алгоритм выглядит так:

Здесь показан общий алгоритм решения квадратных уравнение, применена линейная структура и структура ветвления. Конечно алгоритм можно еще усовершенствовать, ввести еще один блок для проверки равенства дискриминанта нулю, при таком значении нет смысла вычислять две формулы так-как корень будет один (x1=x2), и можно вычислить по одной из приведенных формул.

Таким образом, мы можем сказать, что простые математические функции можно выполнить с помощью линейных структур. Объемные повторяющиеся линейные вычисления легко сокращаются за счет внедрения циклов. Структуры ветвления нужны нам для организации логического выбора, путем комбинации разных вариаций основных структур, можно создавать любые алгоритмы любой сложности. Это относится как к алгоритмам в нашей повседневной жизни, так и к алгоритмам в компьютерных системах и не только. Все базовые структуры имеют ряд схожих особенностей к ним относятся:

  • Обязательные блоки начала и конца
  • Хотя-бы один блок структуры
  • Входные данные
  • Обработанные выходные данные

Из сказанного можно сделать вывод, что не обязательно знать все, алгоритмы, но нужно уметь их выводить, как математик выводит формулы, видеть их, понимать. Понимание алгоритмов помогает нам решать сложные задачи, как в повседневной жизни, так и при решении задач в программировании.

Заключение

Изучив тему алгоритмизации и сравнительного анализа структур алгоритмов, мы приходим к следующим выводам:

1. Алгоритмы применяются повсеместно и входят в каждую сферу деятельности нашей жизни. Большинство алгоритмов уже созданы и типизированы, нам остается только правильно их применять на практике.

2. При разработке нового алгоритма перед нами стоит задача составить алгоритм по существу, а все остальное, это перевод алгоритма с одного языка на другой.


3. В исследовании мы сформулировали следующие свойства алгоритмов:

  • конечность алгоритма или результативность
  • определенность алгоритма
  • дискретность (прерывность, раздельность)
  • массовость
  • эффективность алгоритма.

4. Способы записи алгоритмов можно представить, как:

  • словесный способ
  • графический способ записи
  • запись на псевдокоде
  • программная запись алгоритма.

5. Структура алгоритмов состоит из трех комбинаций: линейная, разветвляющаяся и циклическая.

Алгоритм линейной структуры – последовательное выполнение этапов алгоритма: ввод данных, вычисление искомых величин и вывод данных.

Разветвляющийся алгоритм описывает вычислительный процесс, реализация которого происходит по одному из нескольких заранее заданных направлений.

Циклом называется любая многократно выполняемая инструкция, организованная разными способами. Каждое выполнение тела цикла называется итерацией. Циклы различаются на циклы с предусловием, циклы с постусловием и безусловные циклы.

6. Таким образом, изучив и проанализировав основные структуры алгоритмов, мы можем сказать, что простые математические функции можно выполнить с помощью линейных структур. Объемные повторяющиеся линейные вычисления легко сокращаются за счет внедрения циклов. Структуры ветвления нужны нам для организации логического выбора, путем комбинации разных вариаций основных структур, можно создавать любые алгоритмы любой сложности. Это относится как к алгоритмам в нашей повседневной жизни, так и к алгоритмам в компьютерных системах и не только.

7. Все базовые структуры имеют ряд схожих особенностей к ним относятся:

  • Обязательные блоки начала и конца
  • Хотя-бы один блок структуры
  • Входные данные
  • Обработанные выходные данные

Все вышесказанное помогает нам понять, что не обязательно знать все, алгоритмы, но нужно уметь их выводить, так как будто математик выводит формулу, видеть их и понимать. Понимание алгоритмов помогает нам решать сложные задачи, как в повседневной жизни, так и при решении задач в программировании.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ

Источники:

1. ГОСТ 19.701-90 (ИСО 5807-85) «Единая система программной документации». Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения.


Литература:

2. Белов М.П. Основы алгоритмизации в информационных системах: Учеб. Пособие. - СПб.: СЗТУ,2003. - 85 с.

3. Жданова, Ю.С. Основы алгоритмизации и программирования: учеб. пособие /Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск: Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с.

4. Кадырова, Г.Р. Основы алгоритмизации и программирования: учебное пособие / Г. Р. Кадырова. – Ульяновск: УлГТУ, 2014. – 95 с.

5. Макаров В.Л. Программирование и основы алгоритмизации: Учеб. пособие –СПб.: СЗТУ,2003. - 110 с.

6. Основы алгоритмизации и программирования: Метод. указ. / Сост.: И.П. Рак, А.В. Терехов, А.В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-та, 2004. - 24 с.

7. Основы алгоритмизации и программирования. Курс лекций. URL: http HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf":// HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf"lib HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf". HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf"ssga HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf". HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf"ru HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf"/ HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf"fulltext HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf"/ HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf"UMK HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf"/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования. HYPERLINK "http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf"pdf (Дата обращения: 15.06.18).