Теоретические сведения. Алфавитом - называется произвольное конечное множество попарно различимых символов
Алфавитом - называется произвольное конечное множество попарно различимых символов.
Язык - это знаковая (семиотическая) система, обладающая определенными средствами выражения знаний - алфавитом, словарем и грамматикой.
Как мы отмечали ранее, любой язык (тоже) принадлежит множеству знаковых систем. Его знаками, являются слова и словосочетания. Любой язык отражается в своей грамматике и словаре, и алфавите. Определение алфавита:
Словарный состав или лексика языка - это совокупность употребляемых в нем слов, т.е. правильных слов данного языка.
Грамматика - это конечная система правил, определяющих язык.
Грамматика определяет способы построения изменения и сочетания слов.
Многозначность слов естественного языка не позволяет использовать его в целом для формализации предоставления знаний об окружающем мире, отдельных процессов и явлений, которые исследует человек с помощью ЭВМ, моделирует на ЭВМ и так далее.
Для этого были созданы искусственные языки: языки представления знаний (реляционные (основную роль в них играют отношения)), языки исчисления предикатов (предикаты играют роль отношений, позволяют получать логический вывод, то есть формальным путем получать одни знания из других), а также алгоритмические языки (языки программирования) и декларативные языки (языки фреймового типа).
Все эти языки называются еще и формальными. Нас более всего интересуют алгоритмические языки, к которым относятся все известные языки программирования.
Для решения задачи на ЭВМ составляется алгоритм, обеспечивающий выполнение всех необходимых действий для получения искомых результатов. Этот алгоритм описывается средствами формального языка, понятного ЭВМ - языка программирования.
К таким средствам относятся элементы языка - символы, цифры, специальные знаки, а также правила составления операторов для описания действий по вводу - выводу и распределению памяти, управлению ветвлением и организацией циклов, обращениям ко внешним устройствам, контролю и отладке отдельных фрагментов и программы в целом, формированию выходных документов и так далее. Каждая ЭВМ имеет свой собственный язык кодов команд, называемый машинным, который обеспечивает непосредственное выполнение любой последовательности машинных операций. Практически компьютер выполняет программы, записанные только на машинном языке. Однако с помощью дополнительных средств (системных программ) реализуются многоуровневые переводы (трансляции) текстов программ с различных языков программирования на язык ЭВМ. Эти языки программирования в отличие от машинных, называются языками высокого уровня, они мало зависят от особенностей конфигурации конкретной ЭВМ, то есть эти языки являются машинно-независимыми.
Рисунок 9.1. Классификация языков программирования
В языке символического кодирования, в отличие от машинного, цифровые коды заменены буквенными или буквенно-цифровыми (мнемоническими) обозначениями. Это облегчает работу по составлению программы и позволяет автоматизировать действия, связанные с размещениями программы и данных в памяти ЭВМ. Каждой команде языка символического кодирования при трансляции соответствует одна машинная команда. Такие языки называются мнемокодами или языками ассемблеров.
Язык более высокого уровня - макроязык - включает наряду с мнемоническими обозначениями машинных команд отдельные макрокоманды, которые при трансляции заменяются группами команд машинного языка (подпрограммами). Это сокращает запись исходной программы и упрощает программирование, так как исключаются записи часто повторяющихся фрагментов программы. В настоящее время все языки ассемблерного типа допускают использование макросредств, то есть являются макроассемблерами.
Машинно-ориентированные языки содержат все необходимые средства для программирования любых задач. Однако они применяются, когда требуется создать особо быстродействующие программы при минимальных объемах используемой памяти. В частности, на этих языках пишут программы управления устройствами ЭВМ и предварительной обработки данных.
Большинство производственных задач решают с помощью программ, написанных на процедурно - ориентированных языках. Средства этих языков позволяют наиболее просто описать часто встречающиеся фрагменты действий в соответствующих задачах. Процедурно-ориентированные языки предполагают знания пользователя в области математических (численных) методов и основ алгоритмизации (базовый язык для научно-технических расчетов ФОРТРАН, БЕЙСИК (персональные ЭВМ - основной), современный ПАСКАЛЬ).
В процессе развития созданы многоцелевые (универсальные) языки программирования, объединяющие основные средства и возможности многих процедурно - ориентированных языков, например: ПЛ/1 - используемый для решения задач обработки экономической и научно-технической информации, задач управления объектами и т.п.; язык АДА - многоцелевой стандартный язык, способный заменить множество других языков и на длительный период обеспечить разработку и совершенствования программ обеспечения; язык МОДУЛА - объединяет средства и особенности машинно-ориентированных и процедурно - ориентированных языков; включает средства для написания подпрограмм управления устройствами, управления потоками сообщений, для чего традиционно использовались языки ассемблерного типа.
Для пользователей, не имеющих специальной подготовки, но нуждающихся в оперативном использовании ЭВМ для решения стереотипных задач, разрабатываются специальные проблемно - ориентированные языки (непроцедурные), которые не требуют подробной записи алгоритма решения задачи. На таком языке лишь формулируется задача и указывается последовательность подзадач из готового набора с указанием исходных данных и форм требуемых документов. Специальные средства программы-генераторы из готовых блоков автоматически формируют программу для решения поставленной задачи. Эти языки ещё более высокого уровня, т.е. удалены от машины более, чем процедурно - ориентируемые языки. К ним относятся языки для задания и обработки таблиц данных при решении экономических задач, а также языки моделирования сложных систем СИМУЛА, НЕДИС и другие (СИМСКРИПТ).
Граница между проблемно - и процедурно - ориентированными языками очерчена не очень чётко (условно). ЛИСП, ПРОЛОГ.
Вне зависимости от того, на каком алгоритмическом языке создается программа, этапы подготовки и решения задач на ЭВМ выглядят следующим образом:
1. Постановка задачи: подробная формулировка задачи, выбор метода решения.
На этом этапе формируется т.н. содержательное описание задачи, в которое входит описание целей, анализ исходной информации, обоснование метода решения задачи.
2. Алгоритмизация задачи: формулировка и составление алгоритма.
На этом этапе разрабатывается алгоритм решения в виде блок - схем. Для сложной задачи составляется обобщенный алгоритм решения и частные алгоритмы реализации выделенных процедур обработки данных.
Степень детализации описания алгоритма ориентирована на язык программирования, чтобы символы - блоки алгоритма достаточно просто реализовывались средствами выбранного языка.
3. Составление программы.
Программа - это представление алгоритма средствами языка программирования: замена блока на один или несколько операторов языка.
4. Перенос программы на машинный носитель.
Для этого используют клавиатуру дисплея или устройство подготовки данных на магнитных лентах или магнитных дисках.
На этом этапе происходит первоначальная трансляция программы и её редактирование - исключение синтаксических ошибок.
5. Отладка программы:
На этом этапе происходит выполнение программы с использованием контрольных (тестовых) исходных данных. По полученным результатам пользователь делает вывод о правильности работы программы. На этом этапе происходит обнаружение семантических ошибок. Обнаруженные ошибки приводят к изменению текста программы, алгоритма, и, следовательно, к повторению первоначальных этапов.
6. Анализ результатов решения:
На этом этапе анализируются полученные результаты, на основании этого анализа делаются выводы о правильности выбранного метода решения и составлении алгоритма, вырабатываются рекомендации по модернизации программы; составляются описание и инструкция по эксплуатации программы.
Контрольные вопросы
1. Что такое алфавит?
2. Что такое язык?
3. Что такое грамматика?
4. Что такое машинно-ориентированные языки программирования?
5. Что такое процедурно-ориентированные языки программирования?
6. Что происходит в процессе постановки задачи?
7. Что происходит в процессе составления программы?
8. Что происходит в процессе отладки программы?
9. Что происходит в процессе анализа результатов решения?
10. Что происходит в процессе переноса программы на машинный носитель?