Популярные услуги

Любая задача по линалу
КМ-3 Важнейшие аспекты теории графов - любой вариант за 3 суток!
Любая задача по математическому анализу и по интегралам и дифференциальным уравнениям
Решу любую задачу
Любая задача по Линейной алгебре и аналитической геометрии
НОМОТЕХ
Предельные теоремы и математическая статистика
Повышение уникальности твоей работе
Любая задача из Демидовича
Сдам любой тест по дискретке в течение суток на положительную оценку!
Главная » Лекции » Математика » Вычислительные методы в информатике » Алгоритмизация и типовые алгоритмические структуры

Алгоритмизация и типовые алгоритмические структуры

2021-03-09СтудИзба

Тема 1.  Алгоритмизация  и  типовые  алгоритмические  структуры.

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

            Основу  любой  программы  составляет  алгоритм,  т.е.  точное  предписание  о  последовательности  действий,  которые  необходимо  произвести  для  достижения  необходимого  результата.  Известно  высказывание  австрийского  профессора  Николауса  Вирта  (“отца”  одного  из  популярнейших  языков  программирования  Паскаля)  -  “Программа  -  это  алгоритм   +  структура  данных.   Таким  образом,   алгоритм  -  это  основа  программы,  а  программа  -  это  запись  алгоритма  в  виде,  пригодном  для  реализации  на  конкретной  ЭВМ  (точнее  в  ее  программной  среде).

            Для  составления  алгоритма  важно  соблюдение  следующих  основных  требований  алгоритмизации:

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

2. Понятность.  Алгоритм  составляется  с  ориентацией  на  конкретного  исполнителя.  Для  этого  необходимо  четко  знать,  какие  предписания  (команды,  инструкции  и  др.)  он  может  понять  и  выполнить,  а  какие  нет.  У  каждого  исполнителя  такой  набор  предписаний  может  быть  отличным  от  такого  набора  у  других  исполнителей.

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

3. Детерминированность  (или  определенность).  Будучи  понятными,  предписания  не  должны  содержать  требований,  которые  можно  воспринять  неоднозначно.  Алгоритм  должен  быть  насколько  четким,  продуманным  в  деталях,  чтобы  у  исполнителя  не  возникала  потребность  в  принятии  каких-то  самостоятельных  решений,  не  предусмотренных  составителем  алгоритма.  Кроме  того  -  исполнителю  всегда  должно  быть  четко  понятно  какое  действие  он  должен  выполнять  после  окончания  выполнения  данного  действия.

4. Массовость.  Предпочтительными  являются  алгоритмы,  обеспечивающие  решение  некоторого  набора  сходных  задач.        

Рекомендуемые материалы

Например,  если  необходимо  найти  корни  квадратного  урав-нения  2x2 + 5x + 7 = 0,  то  предпочтительнее  составить  алгоритм  (и  по  нему  программу)  нахождения  корней  уравнения  ax2 + bx + c = 0,   а  значения  коэффициентов  ab  и  c  ввести  перед  счетом.

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

Например,  решая  вышеприведенное  квадратное  уравнение  мы  должны  за  конечное  число  шагов  получить  один  из  трех  возможных  ответов :

-  значения  двух  корней  уравнения

-  значение  единственного  корня  уравнения  и  сообщение  о  том,  что  уравнение  имеет  только  один  корень

-  сообщение  о  том,  что  данное  уравнение  действительніх  корней  не  имеет.

            Существует  много  способов  записи  алгоритмов.  Это  может  быть  :

- подробная  инструкция  с  четким  описанием  всех  выполняемых  действий  в  определенной  последовательности;

- блок-схема алгоритма  (или  ее  многочисленные  разновидности,  например  схема  Несси-Шнердейман);

- запись  алгоритма  на  одном  из  алгоритмических  языков.

Наиболее  наглядным  и  удобным  для  восприятия  и  анализа  алгоритма  является  запись  его  в  виде  блок-схемы.

Блок-схема  алгоритма  -  это  наглядный  графический  способ  его  представления,  при  котором  отдельные  предписания  алгоритма  изображаются  в  виде  отдельных  плоских  геометрических  фигур.  Переходы  от  одного  предписания  к другому  изображаются  с  помощью  линий  связи,  а  направления  переходов  -  стрелками  на  линиях  связи  (при  этом  для  “естественных”  направлениях  переходов  -  сверху  вниз  и  слева  направо  -  стрелки  можно  не  ставить).

            Существуют  два  основных  типа  предписаний  :

- предписание  действия  (другое  название  -  блок  действия)

-   логическое  предписание  (или  логический  блок,  блок  ветвления  или  блок  принятия  решения).

Предписание  (или  блок)  действия  предусматривает  выполнение  некоторой  работы,  завершающейся  естественным  переходом  в  одном  направлении  (без  каких-либо  вариантов)  к  другому  предписанию.  В  блок-схемах  предписание  действия  изображается  в  виде  прямоугольника   с  одним  входом  и  одним  выходом,   внутри  которого  записывается  словами  содержимое  этого  действия.  Например,

Содержимое действия


         Логическое  предписание  (или  блок  принятия  решения)  используется  для  организации  ветвлений  в  алгоритме.  На  блок-схемах  его  изображают  в  двух  видах :

- если  предполагается  ветвление  в  двух  направлениях,  то  блок  изображается  в  виде  ромба  с  одним  входом  и  двумя  выходами.  Внутри  ромба  пишется  условие,  на  его  выходах  -  слова  «да»  и  «нет»,  которые  указывают  переходы  по  истинности  и  ложности  условия.

условие,да,нет


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


      Допускается  изображать  гребенку  в  повернутом  на  900  против  направления  хода  часовой  стрелки  виде.

При  составлении  блок-схем  алгоритмов  используются  только  эти  два  типа  блоков,  при  этом  они  пристыковываются  один  к  другому  линиями  связи.  Однако  такая  стыковка  должна  также  выполняться  только  с   соблюдением  определенных  правил.  Эти  правила  сводятся  к  тому,  что  стыковка  блоков  должна  приводить  к  образованию  определенных  структур,  но  не  произвольных,  а  только  к  набору  структур  определенных  видов,  которые  имеют  название  -  типовые  алгоритмические  структуры.   Каждая  из  таких  структур  обязательно  имеет  один  вход  и  один  выход  и  поэтому  может  рассматриваться  как  единный  макроблок  действия.

К  типовым  алгоритмическим  структурам  относятся  структуры  трех типов :

-  структура  следования,  в  которой  блоки  действия  следуют  друг  за  другом.



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

Условие,Да,Нет


Всякое  разветвление  алгоритма  на  отдельные  ветки  должно  иметь  соответствующую  ему  "сборку",   т.е.  объединение  веток.

циклические  структуры,  в  которых  некоторая  последовательность  блоков  действия  (точнее  структур  следования)  может  выполняться  много  раз  в  зависимости  от  истинности  некоторого  условия,  которое  изменяется  в  ходе  выполнения  этой  последовательности  блоков.   Имеются  две  разновидности  циклических  структур,  а  именно  циклы  с  предусловием  и  циклы  с  постусловием  в  зависимости  от  того,  где  расположен  логический  блок  -  до  последовательности  блоков  действия  или  после  нее.


       цикл  с  предусловием                                       цикл  с  постусловием

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

Теперь,  опираясь  на  эти  три  вида  типовых  алгоритмических  структур,  следует  строить  алгоритмы  решения  конкретных  задач,  используя  принцип    расширения  типовых  структур  “вширь”   и  ”вглубь”.   Расширение  "вширь"  предполагает  присоединение  к  одной  типовой  алгоритмической  структуре  другой  типовой  алгоритмической  структуры,   к  ним  -  третьей  и  т.д.   Расширение  "вглубь"  предполагает  замену  какого-либо  блока  действия  в  типовой  алгоритмической  структуре  (точнее  макроблока  действия)  на  одну  из  типовых  структур  (по  “принципу  матрешек”,   когда  одна  матрешка  находится  внутри  другой).

Алгоритм  должен  начинаться  с  блока

Начало


и  заканчиваться  блоком

Конец


На  блок-схеме  также  должны  быть  комментарии,   т.е.  текст,  расположенный  на  свободном  месте  листа,  и  объясняющий  подробнее  действия  в  отдельных  блоках.   При  этом  от  комментария  должна  быть  проведена  пунктирная  линия  к  соответствующему  блоку.

Для   улучшения  восприятия  алгоритма  -  он  должен  состоять  из  20 – 25   (в  исключительных  случаях  -  до  30)  блоков  или  макроблоков  и  располагаться  на  одном  листе  (формата  А3  или  А4).   Конкретизация  (разрисовка)   отдельных  макроблоков  может  бать  произведена  на  отдельных  листах,  являющихся  дополнением  к  основной  части  алгоритма.  На  этих  разрисовках  макроблоков  овалы  с  надписями  “Начало”  и  ”Конец”  изображать  не  надо.  Началом  и  концом  макроблока  должны  быть  вертикальные  черточки,  изображающие  вход  в  него  и  выход.   Под  ним  необходима  подпись  с  названием  макроблока  (такая  же  как  и  на  основной  блок-схеме).

Пример.  Составить блок-схему  алгоритма,  принадлежащего  древнему  мудрецу  Эвклиду,  нахождения  наибольшего  общего  делителя  (сокращенно  -  НОД)  двух  целых  положительных  чисел  a  и  b.

"5.15 Национальные революции в Османской империи" - тут тоже много полезного для Вас.

Суть  алгоритма  состоит  в  том,  что :

-  если   a = b,  то  НОД  равен  любому  из  этих  чисел,

-   в  противном  случае  -  из  большего  числа  вычитают  меньшее  и  результатом  вычитания  заменяют  большее  число  и  снова  производят  их  сравнение  (возвращаются  к  предыдущему  пункту  нашего  алгоритма). 

Доказано,  что  алгоритм  всегда  дает  результат  за  конечное  число  шагов.


Начало,Ввод значений чисел а и b.,Допускаются только целые положительные числа.,a > 0 и b > 0,Ошибка в данных, x := a; y := b, x = y, x > y, x := x - y, y := y - x, Вывод результата : НОД(a,b) = x,Перезапоминание значений введен-ных чисел., Конец,нет,да,да,нет


Следует  отметить,  что  в  этом  алгоритме  соблюдены  все  требования  составления  алгоритмов  из  типовых  алгоритмических  структур,  включая  расширение  блоков  “вширь”  и  ”вглубь” .

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее