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

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

Содержание


Система обозначений при графическом способе записи алгоритмов
Обозначение и пример заполнения
Языки программирования высокого уровня
Подобный материал:
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ

АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ

Алгоритмизация

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

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

В так называемых процедурно-ориентированных и проблемно-ориентированных языках понятие памяти не вводится явно. Включение тех или иных данных (полу­чаемых в результате операций) в общую систему данных происходит с помощью присвоения получаемых значе­ний некоторым идентификаторам. Таким образом, возни­кает понятие так называемого оператора присваивания, схема которого имеет вид: {идентификатор}:= {вы­ражение}. Здесь собственно операция присваивания (значение идентификатора в левой части становится рав­ным значению правой части) обозначается специальным символом :=, введенным специально для того, чтобы не пу­тать операцию присваивания с отношением равенства. На­пример, х:= х + 1 означает, что идентификатор (перемен­ная) х меняет свое значение, увеличивая его на 1. В то же время выражение х = х + 1, эквивалентное отношению 0=1, представляет собой константу «ложь». В общем случае в понятие оператора алгоритмического языка входит еще и указание на то, какой следующий оператор нужно выпол­нять после него. Произвольный алгоритм, называемый в случае машинных языков программой, представляет собой конечную упорядоченную последовательность операто­ров, которые обычно (если не указано противное) выпол­няются в порядке их следования.

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

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

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


Таблица

Система обозначений при графическом способе записи алгоритмов


Название символа

Обозначение и пример заполнения

Пояснение

Процесс


х = (a-b)/sin(l)


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

Решение



Да нет

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

Модифика­ция



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

Ввод-вывод




Ввод-вывод в общем виде

Пуск-остановка




Начало, конец алгоритма, вход и выход в подпрограмму

Документ



Вывод результатов на печать



Программирование

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

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

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

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

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

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

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

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

Языки программирования высокого уровня

Языки высокого уровня во многом имитируют есте­ственные языки, используют многие разговорные слова, общепринятые математические символы. Различают язы­ки следующих групп: алгоритмические, предназначенные для однозначного описания алгоритмов (такие, как Basic, Pascal, С), логические — ориентированные не на разра­ботку алгоритма решения задачи, а на систематическое и формализованное описание задачи (например, Prolog, Lisp), объектно-ориентированные, основанные на понятии объекта и действиях над ним (к примеру, Object Pascal, C++, Java).

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

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

В мире осуществляется стандартизация языков про­граммирования высокого уровня. Ею занимается специа­лизированная организация «Конференция по языкам ин­формационных систем» (Conference On DAta SYstem Language — CODASYL). Эта организация основана ми­нистерством обороны США, она создана в 1959 г., в нее входят специалисты индустрии информатики, представ­ляющие промышленные предприятия, фирмы, занимаю­щиеся разработкой программного обеспечения и средств обработки данных. CODASYL разрабатывает стандарты управления данными, языки программирования. Для эффективного использования высокоуровневых языков создаются специальные интегральные схемы.

Языки программирования подробно изучаются при подготовке профессиональных программистов. Подроб­нее различные языки описаны в специализированной литературе.


Контрольные вопросы
  1. Что такое алгоритм?
  2. Каким образом происходит запись алгоритма?
  3. Какими символами пользуются при обозначении алгоритмов?
  4. В чем заключается программирование?
  5. Какое программное обеспечение используется для разработки программ?
  6. Назовите методы работы программистов.
  7. Какова цель тестирования программ?
  8. Что такое языки программирования высокого уровня?
  9. Назовите наиболее распространенные из них.

10. Проводится ли стандартизация языков программи­рования?