Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Грамматика языков программирования
Несмотря на значительные различия между языками программирования, ряд фундаментальных понятий в большинстве из них схожи. Оператор – законченная фраза языка, определяющая однозначно трактуемый этап обработки данных. В теории алгоритмов выделяют основные (базисные) операторы языка: присвоения, условный и безусловный переход, пустой оператор. К производным, неосновным, относят: составной оператор, оператор выбора, оператор цикла и оператор присоединения. Все операторы в тексте программы отделяются друг от друга явными[23] или неявными разделителями. Большая часть операторов ведет обработку величин. Величины могут быть постоянными и переменными. Величины характеризуются типом, именем и значением. Наиболее распространенные типы величин – числовые (целые и вещественные), символьные и логические. Величины классифицируются на простые и структурированные. Простая величина в каждый момент времени может иметь не более одного значения. Ей соответствует одна ячейка памяти компьютера. Структурированная величина, имея одно имя, может иметь сразу несколько значений. Эти значения представляют собой элементы (компоненты) величины[24]. Всем программным объектам даются индивидуальные имена. Имя программного объекта называют идентификатором. Чаще всего идентификатором является любая конечная последовательность букв и цифр, начинающаяся с буквы[25]. Описания или объявления программных объектов необходимы для определения их свойств[26]. В некоторых языках стандартные описания простых числовых и символьных данных опускают (описание по умолчанию) или в них задаются правила описания по имени объекта[27]. Особый интерес представляют в языках программирования описания нестандартных структур данных, таких как запись, файл, объект, список, дерево и т.п. Переменная – программный объект, способный принимать некоторое значение с помощью оператора присваивания. Каждая переменная после ее описания отождествляется с некоторой ячейкой памяти, содержание которой является ее значением. Функция –программный объект, задающий вычислительную процедуру определения значения, зависимого от некоторых аргументов. В каждом языке программирования имеется в наличии библиотека стандартных функций. Кроме того, программист может сам задавать новые функции. Процедура –программный объект, представляющий некоторый самостоятельный этап обработки данных. Процедура имеет входные и выходные параметры, называемые формальными. При использовании процедуры формальные параметры заменяются на фактические. Модуль (Unit) – специальная программная единица, предназначенная для создания библиотек и разделения больших программ на логически связанные блоки. Проектирование программ Современный подход к проектированию программ основан на декомпозиции задачи. Целью декомпозиции является создание модулей, которые представляют собой небольшие, относительно самостоятельные программы, взаимодействующие друг с другом по хорошо определенным и простым правилам. Разработка любой программы или прикладной системы начинается с определения требований к ней для конкретного набора пользователей и заканчивается эксплуатацией системы этими пользователями. По современным взглядам проектирование и разработку программ целесообразно разбить на ряд последовательных этапов: 1) постановка задачи; 2) проектирование программы; 3) построение модели; 4) разработка алгоритма; 5) реализация алгоритма; 6) анализ алгоритма и его сложности; 7) тестирование программы; 8) документирование. При постановке задачи для крупных компьютерных программ необходимо провести следующие работы: · выработать требования (свойства, качества и возможности), необходимые для решения проблемы или достижения цели (как правило, эта деятельность носит экспертный характер); · разработать спецификации, включающие: - цель программы; - граничные условия; - описание функций системы; - спецификации входных и выходных данных; - верификационные требования (установление тестовых случаев); - тип и количество документов. Проектирование программы осуществляется следующим образом. Сначала производится проектирование архитектуры программной системы. Это предполагает первичную (общую) стадию проектирования и заканчивается декомпозицией спецификаций в структуру системы. Обычно на модульном уровне разрабатывается спецификация каждого модуля: · имя/цель – дается имя модулю и предложение о его функции с формальными параметрами; · неформальное описание – обзор действий модуля; · ссылки – какие модули ссылаются на него, и на какие модули ссылается данный модуль; · вход/выход – формальные и фактические параметры, глобальные, локальные и связанные (общие для ряда модулей) переменные; · примечания – полезные комментарии общего характера по модулю. Следующим шагом является детальное проектирование. На этом этапе происходит процедурное описание программы, выбор и оценка алгоритма для реализации каждого модуля. Входной информацией для проектирования являются требования и спецификации системы. Построение модели в большинстве случаев является непростой задачей. При построении моделей, как правило, используют два принципа: дедуктивный (от общего к частному) и индуктивный (от частного к общему). При дедуктивном подходе рассматривается частный случай общеизвестной фундаментальной модели. При заданных предположениях известная модель приспосабливается к условиям моделируемого объекта. Индуктивный способ предполагает выдвижение гипотез, декомпозицию сложного объекта, анализ, затем синтез. Здесь широко используется подобие, аналогичное моделирование, умозаключение с целью формирования каких-либо закономерностей в виде предположений о поведении системы. Технология построения модели при индуктивном способе: 1) эмпирический этап (умозаключение, интуиция, предположение, гипотеза); 2) постановка задачи для моделирования; 3) оценка, количественное и качественное описание; 4) построение модели. Разработка алгоритма – самый сложный и трудоемкий процесс, но и самый интересный в творческом отношении. Выбор метода разработки зависит от постановки задачи, ее модели. На этом этапе необходимо провести анализ правильности алгоритма, что очень непросто и трудоемко. Наиболее распространенная процедура доказательства правильности алгоритма – это прогон его на множестве различных тестов. Однако это не гарантирует того, что не может существовать случая, в котором программа «не сработает». На этапе реализации алгоритма происходят конструирование и реализация алгоритма, включающие кодирование, интеграцию, тестирование (сертификацию). По сути, проводится перевод проекта в форму программы для конкретного компьютера, сборка системы и ее прогон при тестовых и нормальных условиях для подтверждения ее работы в соответствии со спецификациями системы. Анализ алгоритма и его сложности необходим для оценки ресурсов компьютеров, на которых он будет работать, времени обработки конкретных данных, приспособления в работе в локальных сетях и телекоммуникациях. Хотелось бы также иметь для данной задачи количественный критерий для сравнения нескольких алгоритмов с целью выбора более простого и эффективного среди них. Перед началом эксплуатации программы необходим этап ее отладки и тестирования. Тестирование – это процесс исполнения программ с целью выявления (обнаружения) ошибок. Тестирование – процесс деструктивный, поэтому считается, что тест удачный, если обнаружена ошибка. Существуют различные способы тестирования программ: · тестирование программы как «черного ящика» – стратегия «черного ящика» определяет тестирование с анализом входных данных и результатов работы программы. · тестирование программы как «белого ящика» заключается в стратегии управления логикой программы, позволяет использовать ее внутреннюю структуру. Различают альфа- и бета-тестирование, производимое соответственно специалистами разработчика и заказчика программного изделия. Основные типы ошибок, встречающихся при программировании: · обращения к переменным, значения которым не присвоены или не инициализированы; · выход индексов за границы массивов; · несоответствие типов или атрибутов переменных величин; · явные или неявные проблемы адресации памяти; · ошибочные передачи управления; · логические ошибки. Есть золотое правило программистов – оформляй свои программы в том виде, в каком бы ты хотел видеть программы, написанные другими. К каждому конечному программному продукту необходимо документированное сопровождение в виде помощи (help), файлового текста (readme.txt). Системы программирования Система программирования – это система для разработки новых программ на конкретном языке программирования. Современные системы программирования обычно предоставляют пользователям мощные и удобные средства разработки программ. В них входят: · компилятор или интерпретатор; · интегрированная среда разработки; · средства создания и редактирования текстов программ; · обширные библиотеки стандартных программ и функций; · отладочные программы, т.е. программы, помогающие находить и устранять ошибки в программе; · " дружественная" к пользователю диалоговая среда; · многооконный режим работы; · мощные графические библиотеки; утилиты для работы с библиотеками · встроенный ассемблер; · встроенная справочная служба; · другие специфические особенности. Например * Basic - Microsoft Visual[28] Basic * Pascal - Borland Pascal * C++ - Borland C++, Microsoft Visual C++ * Java - Symantec Café, MS Visual J++. Многие системы программирования содержат промежуточные этапы трансляции. На первом этапе транслятор производит синтаксический анализ исходной программы – проверяет, не нарушены ли формальные правила, содержащиеся в данном языке программирования[29]. Первой фазой синтаксического анализа является лексический анализ. Он заключается в просмотре литер исходной программы и построении из них лексически допустимых единиц – идентификаторов, ключевых слов языка, чисел и т.д. Во второй фазе эти единицы уже рассматриваются как неделимые и проверяется допустимость их сочетания. Даже если в синтаксическом смысле исходная программа верна, это не означает, что она имеет смысл в рамках данного языка программирования. На следующем этапе семантического анализа транслятор ищет ошибки такого рода[30]. Лишь после того, как в программе все синтаксически правильно и семантически понятно, транслятор переводит операторы программы в машинный код. Это отнюдь не означает, что в программе все благополучно – не исключены ошибки этапа исполнения[31]. Данные ошибки выявляются на этапе отладки. В современных программных системах отладка осуществляется часто с использованием специальных программных средств, называемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы. Программа-отладчик обычно обеспечивает следующие возможности: · пошаговое исполнение программы с остановкой после каждой команды (оператора); · просмотр текущего значения любой переменной или нахождение значения любого выражения, в том числе, с использованием стандартных функций; при необходимости можно установить новое значение переменной; · установку в программе " контрольных точек" , т.е. точек, в которых программа временно прекращает свое выполнение, так что можно оценить промежуточные результаты, и др. При отладке программ важно помнить следующее: · в начале процесса отладки надо использовать простые тестовые данные; · возникающие затруднения следует четко разделять и устранять строго поочередно; · не нужно считать причиной ошибок машину, так как современные машины и трансляторы обладают чрезвычайно высокой надежностью. Популярное:
|
Последнее изменение этой страницы: 2017-03-09; Просмотров: 1080; Нарушение авторского права страницы