Теоретические основы алгоритмизации и программирования алгоритмизация
Вид материала | Документы |
СодержаниеСистема обозначений при графическом способе записи алгоритмов Обозначение и пример заполнения Языки программирования высокого уровня |
- «Основы алгоритмизации и объектно-ориентированного программирования на языке Gambas», 318.06kb.
- Основы алгоритмизации и программирования (11, 270.62kb.
- Курс "Основы алгоритмизации и программирования" 1 год обучения Язык программирования, 123.05kb.
- Задачи по теме «Основы алгоритмизации и программирования» для 8 класса Г. В. Кирись, 347.32kb.
- В курсе информатики основной школы, 96.17kb.
- Конспект лекций по курсу основы алгоритмизации и программирования для студентов всех, 3059.86kb.
- Тематическое планирование кружка на 2009/2010 уч г. «Основы алгоритмизации и программирования, 63.72kb.
- Программа элективного курса «Алгоритмизация и программирование», 95.38kb.
- Программы: «Основы алгоритмизации и программирования» Урок №21 (11) в 7 классе Дата, 79.71kb.
- Курс: 2 Саранск 2007 а рассмотрено и одобрено на заседании предметной (цикловой) комиссии, 168.43kb.
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ
АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
Алгоритмизация
Алгоритм представляет собой конечную систему правил преобразования информации (данных) любого алфавита. Эту систему правил описывают алгоритмические языки. Алгоритмический язык основан на специальном алфавите, буквы которого представляют собой особый тип элементарных данных, а составленные из них слова являются одномерным массивом. Алгоритмические языки могут содержать различные структуры данных, массивы и файлы, функциональные блоки операции с данными, логические условия.
В конце работы с данными следует определить место нахождения результатов в общей системе. В машинных языках результат операции записывается в определенную ячейку с заданным адресом структурированной памяти.
В так называемых процедурно-ориентированных и проблемно-ориентированных языках понятие памяти не вводится явно. Включение тех или иных данных (получаемых в результате операций) в общую систему данных происходит с помощью присвоения получаемых значений некоторым идентификаторам. Таким образом, возникает понятие так называемого оператора присваивания, схема которого имеет вид: {идентификатор}:= {выражение}. Здесь собственно операция присваивания (значение идентификатора в левой части становится равным значению правой части) обозначается специальным символом :=, введенным специально для того, чтобы не путать операцию присваивания с отношением равенства. Например, х:= х + 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 разрабатывает стандарты управления данными, языки программирования. Для эффективного использования высокоуровневых языков создаются специальные интегральные схемы.
Языки программирования подробно изучаются при подготовке профессиональных программистов. Подробнее различные языки описаны в специализированной литературе.
Контрольные вопросы
- Что такое алгоритм?
- Каким образом происходит запись алгоритма?
- Какими символами пользуются при обозначении алгоритмов?
- В чем заключается программирование?
- Какое программное обеспечение используется для разработки программ?
- Назовите методы работы программистов.
- Какова цель тестирования программ?
- Что такое языки программирования высокого уровня?
- Назовите наиболее распространенные из них.
10. Проводится ли стандартизация языков программирования?