Способы задания алгоритмов словесный

Урок 15
§ 2.2. Способы записи алгоритмов

Ключевые слова:

• словесное описание
• построчная запись
• блок-схема
• школьный алгоритмический язык

Существуют различные способы записи алгоритмов. Основными среди них являются:

• словесные;
• графические;
• на алгоритмических языках.

Теоретические исследования нашего соотечественника Андрея Андреевича Маркова (младшего) (1903-1979), выполненные в середине прошлого века, показали, что в общем случае алгоритмы должны содержать предписания двух видов:

1) предписания, направленные на непосредственное преобразование информации (функциональные операторы);
2) предписания, определяющие дальнейшее направление действий (логические операторы).

Именно эти операторы положены в основу большинства способов записи алгоритмов.

2.2.1. Словесные способы записи алгоритма

Словесное описание. Самой простой является запись алгоритма в виде набора высказываний на обычном разговорном языке. Словесное описание имеет минимум ограничений и является наименее формализованным. Однако все разговорные языки обладают неоднозначностью, поэтому могут возникнуть различные толкования текста алгоритма, заданного таким образом. Алгоритм в словесной форме может оказаться очень объёмным и трудным для восприятия.

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

Чтобы найти НОД двух чисел, составьте таблицу из двух столбцов и назовите столбцы X и У. Запишите первое из заданных чисел в столбец X, а второе — в столбец У. Если данные числа не равны, замените большее из них на результат вычитания из большего числа меньшего. Повторяйте такие замены до тех пор, пока числа не окажутся равными, после чего число из столбца X считайте искомым результатом.

Построчная запись. Это запись на естественном языке, но с соблюдением некоторых дополнительных правил:

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

Кроме слов естественного языка предписания могут содержать математические выражения и формулы.

Пример 2. Построчная запись алгоритма Евклида.

1. Обозначить первое из заданных чисел X, второе обозначить Y.

2. Если X = Y, то перейти к п. 8.

3. Если X > Y, то перейти к п. 4, иначе перейти к п. 6.

4. Заменить X на X — Y.

5. Перейти к п. 2.

6. Заменить Y на Y — X.

7. Перейти к п. 2.

8. Считать X искомым результатом.

Построчная запись алгоритма позволяет избежать ряда неопределённостей; её восприятие не требует дополнительных знаний.

Вместе с тем использование построчной записи требует от человека большого внимания.

2.2.2. Блок-схемы

Наилучшей наглядностью обладают графические способы записи алгоритмов; самый распространённый среди них — блок-схема.

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

Рассмотрим некоторые условные обозначения, применяемые в блок-схемах.

Выполнение алгоритма всегда начинается с блока начала и оканчивается при переходе на блок конца (рис. 2.2, а). Из начального блока выходит одна линия связи; в конечный блок входит одна линия связи.

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

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

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

Комментарии (рис. 2.2, д) используются для добавления пояснительных записей, делающих блок-схему более понятной.

Рис. 2.2. Обозначения на блок-схемах

Пример 3. Запись алгоритма Евклида с помощью блок-схемы (рис. 2.3).

Рис. 2.3. Запись алгоритма Евклида с помощью блок-схемы

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

2.2.3. Алгоритмические языки

Алгоритмические языки — формальные языки, предназначенные для записи алгоритмов. Каждый из них характеризуется:

• алфавитом — набором используемых символов;
• синтаксисом — системой правил, по которым из символов алфавита образуются правильные конструкции языка;
• семантикой — системой правил, строго определяющей смысл и способ употребления конструкций языка.

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

Школьный алгоритмический язык. Для записи алгоритмов на школьном алгоритмическом языке используется некоторое ограниченное множество слов, смысл и способ употребления которых заданы раз и навсегда. Это так называемые служебные слова: алг (алгоритм), дано, надо, нач (начало), кон (конец), арг (аргумент), рез (результат) и др. При записи алгоритмов в книгах служебные слова выделяются жирным шрифтом, в тетради и на доске — подчёркиванием.

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

алг

нач

кон

Пример 4. Алгоритм, позволяющий из полного сосуда ёмкостью 12 л отлить половину, пользуясь двумя пустыми сосудами ёмкостью 8 и 5 л.

алг переливания

нач

наполнить сосуд ёмкостью 8 л из сосуда ёмкостью 12 л

наполнить сосуд ёмкостью 5 л из сосуда ёмкостью 8 л

вылить всё из сосуда ёмкостью 5 л в сосуд ёмкостью 12 л

вылить всё из сосуда ёмкостью 8 л в сосуд ёмкостью 5 л

наполнить сосуд ёмкостью 8 л из сосуда ёмкостью 12 л

долить из сосуда ёмкостью 8 л в сосуд ёмкостью 5 л

вылить всё из сосуда ёмкостью 5 л в сосуд ёмкостью 12 л

кон

По ссылке http://www.niisi.ru/kumir/ вы можете скачать систему КуМир (Комплект учебных Миров) или скачать архив программы с сайта, в которой используется школьный алгоритмический язык, со встроенными исполнителями Робот, Чертёжник, Водолей и др. Кумир работает в операционных системах Windows и Linux.

Читайте также:  Способ ухода за бетоном

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

САМОЕ ГЛАВНОЕ

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

Вопросы и задания

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

2. Каковы основные способы записи алгоритмов?

3. Чем вызвано существование многих способов записи алгоритмов?

4. Дайте словесное описание алгоритма сложения двух обыкновенных дробей а/b и c/d.

5. Представьте в виде построчной записи алгоритм решения следующей задачи: «Имеются четыре арбуза различной массы. Как, пользуясь чашечными весами без гирь, путём не более пяти взвешиваний расположить их по возрастанию веса?».

6. Представьте с помощью блок-схемы алгоритм решения следующей задачи: «Из трёх монет одинакового достоинства одна фальшивая (более лёгкая). Как её найти с помощью одного взвешивания на чашечных весах без гирь?».

7. Запишите на алгоритмическом языке алгоритм построения окружности заданного радиуса r, проходящей через заданные точки А и В.

8. В среде КуМир запишите и выполните алгоритм переливаний (пример 4) для исполнителя Водолей.

9. Подготовьте краткую биографическую справку о Маркове А. А. (младшем).

Электронное приложение к уроку

Файлы Материалы урока Ресурсы ЭОР

Cкачать материалы урока

Источник

Основные определения, свойства и способы задания

А существует ли алгоритм любви?

Понятие алгоритма принадлежит не только к фундаментальным научным понятиям, но и к человеческим приобретениям. Мы в окружении разнообразия алгоритмов во всех сферах жизни и деятельности. Наши действия во многом доведены до автоматизма и мы неосознаем, что они уже регламентированы тем или иным алгоритмом. Так жизнь каждого из нас состоит из выполнения повседневных алгоритмов, начиная с усвоения алгоритмов в детстве, от складывания пирамидки, и заканчивая поиском алгоритмов для решения научных проблем. Вообще любую человеческую деятельность можно подать в виде алгоритмического процесса. Авторы обзора основных открытий теории алгоритмов [1] утверждают: «Алгоритмические концепции играют в процессе обучения и воспитания современного человека фундаментальную роль, в сравнении лишь с ролью письменности».

На одной из научных конференций по информатике ( 1984 г.) академик А. А. Самарский изобразил на слайде информатику в виде красавицы, что несется по научному океану на трёх китах. Имена этих китов: Модель, Алгоритм, Программа.

Центральный кит — теория алгоритмов, соединившись с математической логикой, составляют теоретический фундамент современных компьютерных наук.

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

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

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

И, в-третьих, теория алгоритмов возникла на стыке математики и информатики. Поэтому ученые с двух сторон “тянули на себя одеяло“ при построении теории алгоритмов. Эту специфику можно заметить, изучая монографии и пособия по теории алгоритмов. В зависимости от того, кем они написаны — математиками или знатоками информатики, мы чувствуем особенности содержания материала, отображенного в них 5.

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

10.1. Понятие алгоритма. Эволюция толкования и характеристики

Понятие “ алгоритм “ — концептуальная основа различных процессов в информатике. Именно наличие алгоритмов и обеспечивает мозможность автоматизации. Больше того, значительной мерою теория алгоритмов домогает проникать математическим методам во все сфери жизни и науки, даже биологию, лингвистику,экономику аж до философии природоведения [ 1-12].

Понятие алгоритма формировалось с давних времен и до тридцатых годов ХХ ст., в научных кругах сложилось интуитивное представление про этот объект.

Одним из самых давних алгоритмов, в его интуитивном понимании, как конечной последовательности элементарных действий, которые решают поставленное задание, считается алгоритм наибольшего общего делителя двух чисел (алгоритм Эвклида). Отметим, что в течении продолжительного времени, аж до начала XX столутия, термин “алгоритм“ употреблялся только в стойком словосочетании “алгоритм Эвклида“, хотя исторически установлено, что задолго до Эвклида этот алгоритм был уже известен, например, Аристотелю.

Содержательные явления, которые привели к появлению понятия “алгоритм“, наблюдаются в математике на протяжении всего периода его существования. Именно слово “алгоритм“, как утверждают историки и математики, появилось несколько столетий тому и означало не термин, а имя. Узбекский математик АльХорезми, учений, которому математика и человечество обязаны многими открытиями, был известен европейским математикам в латинской транскрипции как Алгоризми. А полное его имя — Абу Абдулла Абу Джафар Мухаммад ибн Муса аль-Хорезми (около 780 г. — около 850 г.) — в переводе буквально — отец Абдулли, Мухаммед, син Муси, уродженець Хорезми. Его книга — “Хисаб аль-джабр у аль-мукабаля“ . Именно из трактата Аль-Хорезми из арифметики началось знакомство Европы с алгоритмами — строгими процедурами для выполнения арифметичних операций. То есть алгоритм, точнее алгоризм, понямали как руководство для выполнения заданий.

Дальнейшее развитие математики утвердило мысль, что решение какой-либо проблемы должно быть алгоритмичным. Р. Декарт, Г. Ф. Лейбниц, Д. Гильберт стимулировали алгоритмические исследования. В 1900 на Втором межнародном конгрессе математиков (Париж) Давид Гильберт сформулировал 23 важные математические проблемы, находжение алгоритма решения которых, по его мнению, способствовало бы дальнейшему развитию математики.

Именно в то время были распространены две точки зрения :

1. Все проблемы являются алгоритмично решимыми. Просто еще не существует знаний для построения алгоритма.

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

Читайте также:  Способы приготовления тушеного мяса

Для доказательства не существования алгоритма необходимо было иметь его точное математическое определение, поэтому после того, как сформулировали понятие алгоритма как новой и отдельной сущности, первоочередной стала проблема нахождение адекватных формальных моделей алгоритма и исследование их характеристик. Формальные модели были предложены как для первичного понятия алгоритма, так и для производного понятия алгоритмично вычислительной функции. Впервые алгоритм как термин появился в работах Э. Бореля (1912) и Г. Вейля (1921).

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

Первые фундаментальные работы по теории алгоритмов были опубликованы независимо в 1935-37 годах А. Тюрингом, А. Черчем, С. Клини, К. Гьоделем и Е. Постом. Предложенные ими машина Тюринга, машина Поста, частично рекурсивные функции и лямбда-вычисления Черча були эквивалентными формализмами алгоритма. Сформулированные ими тезисы (Поста и Черча-Тюринга) постулировали эквивалентность предложенных ими формальных систем и интуитивного понятия алгоритма. Важным развитием этих работ стало формулирование и доказательство алгоритмически нерешаемых проблем. В 1950-ые — годы существенных вклад в теорию алгоритмов сделали работы

А. М. Колмогорова и А. А. Маркова (младшего), а в 1970-х годах в теории алгоритмов плодотворно работал Ю. В. Матиясевич, в частности над решением проблем Гильберта.

Предложенное А. Марковым понятие “нормального алгоритма“ является величичайшим вкладом в мировую науку, а А. Колмогорову принадлежит приоритет в определении общего понятия алгоритма и созданияя теории сложностиі конструктивных объектов.

В 1960-70-ые годы сформировались такие направления в теории алгоритмов:

  • Класическая теория алгоритмов (изложение задания в терминах формальных языков, понятие задачи решения, введение классов сложности, формулирование в 1965 году Эдмондсом проблемы P=NP, открытие класса NP-полных задач и их исследование)[1].
  • Теория ассимптотического анализа алгоритмов (понятие сложности и трудоемкости алгоритма, критерии оценки алгоритмов, методы получения ассимптотических оценок, а именно для рекурсивных алгоритмов, ассимптотический анализ трудоемкости или время выполнения), в розвитии которой сделали существенный вклад Кнут, Ахо, Хопкрофт, Ульман [2,4].
  • Теория практичного анализа вычислительных алгоритмов (получение явных функций трудоемкости, практические критерии качества алгоритмов, методика выбора рациональних алгоритмов), основополагающими работами в этом направлении, очевидно, следует считать фундаментальные труды [1,2].

С тех пор многие ученые приложились к развитию теории алгоритмов. Необходимо отметить также весомый вклад в теорию алгоритмов, сделанный Д. Кнутом, A. Ахо и Дж. Ульманом. Необходимо вспомнить и другие издания книги “Алгоритмы: построение и анализ“ Томаса Х. Кормена, и труды Чарльза І. Лейзерсона, Рональда Л. Ривеста, Клиффорда Штайна.

Ученые, которые упорядочили теорию алгоритмов, рано или поздно сталкивались с тем, что необходимо определить объект исследований. Оказалось, что все разнообразные определения, поданные ими относительно алгоритма, являются эквивалентными понятиями, и чудесным научным результатом есть доказательство эквивалентности этих формальных определений в содержании их равнозначности. Приводя все определения, как говорят математики, “к общему знаменателю“, можно дать общее определение алгоритма:

Алгоритм – способ превращения информации по правилам, сформулированным определенным языком.

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

В общем случае понятно, что алгоритм – это детерминированная процедура, которую можно применить к любому элементу определенного класса символьных входов и которая для каждого такого входа выдает через конечное число действий (шагов) соответствующий результат свого действия. Пусть D — область (множество) исходных данных задачи, а R — множество возможных результатов, тогда мы можем говорить, что алгоритм А осуществляет отображение А : D → R.

Любой алгоритм должен иметь такие основные особенности или характеристики:

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

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

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

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

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

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

Пример 10.1. Рассмотрим алгоритм Эвклида нахождение наибольшего общего делителя двух натуральных чисел a и в ( НСД (а, в)). Этот алгоритм перерабатывает слова вида (а,в) в алфавите, который состоит из 10 цифр, “ (“ и“)“, знака пунктуации “ , “, в слова того же самого алфавита (результатом будет слово из цифр). Конечная система правил, которая определяет этот алгоритм, будет складываться из правила деления, определение остатка от деления и правила определенности , когда алгоритм заканчивает работу и выдает результат.

Пример 10.2. Рассмотрим процес приготовления блюда быстрого питания : 1. Высыпать в пустую посуду содержимое пакетика. 2. Влить в емкость 200 мл горячей воды. 3. Тщательно перемешать. Чтоб выполнить конечную систему правил по этому “алгоритму», необходимо проделать чисто механические действия.

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

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

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

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

Данное выше толкование алгоритма нельзя считать строгим в научном смысле, так как не совсем понятно, что такое “последовательность действий, которое обеспечивает получение необходимого результата“. Поэтому обычно формулируют несколько общих свойств(характеристик) алгоритмов, что разрешает отличать алгоритмы от других подобных инструкций (см. п.10.1). Однако даже знание этих свойств не дает возможность определить, являются ли данные инструкции алгоритмом, или нет. Наверно, одним из определяющих для решения этой проблемы, является свойство однозначности выполнения каждой команды, данной в инструкции. Если результат выполнения каждого шага инструкции происходит однозначно и независимо от исполнителя, то эти инструкции составляют именно алгоритм.

10.2. Способы задания алгоритмов

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

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

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

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

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

Решение. Алгоритм может быть представлен таким образом:
1. Возьмите два числа.
2. Если числа однаковые, то взять любое из них как ответ и остановиться, иначе продолжить выполнение алгоритма.
3. Определить наибольшее число.
4. Заменить большее из чисел разницей большого от меншого числа.
5. Повторити алгоритм с шага 2.

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

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

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

Пример 10.4. Используя необходимые для представления блоки, можно представить, например, алгоритм «Выхода на улицу» в таком виде:

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

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

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

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

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

Пример 10.5. Записать на псевдокоде алгоритм Евклида – нахождение наибольшего общего делителя двух чисел.

Вы, наверно, заметили, что этот вариант алгоритма отличается от алгоритма, представленного во время решения примера 10.1. На самом деле существует несколько вариантов написания алгоритма Евклида, в данном случае записан в псевдокоде рекурсивный вариант.

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

Источник

Оцените статью
Разные способы