Обзор проблемных ситуаций в коде программ

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 07.06.2016
Размер файла 15,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Обзор проблемных ситуаций в коде программ

Антипин Андрей Федорович

Аннотация

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

Ключевые слова: многомерный интервально-логический регулятор, оператор, отладка, программное обеспечение, продукционное правило

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

Рассмотрим часто встречающиеся проблемные ситуации в коде программ. Для упрощения понимания все примеры программ приведены на языке Pascal.

1) переменная (логического или числового типа) многократно (n раз) инициализируется на некотором участке (фрагменте) программы без использования ее значения в каком-либо выражении (логическом или функциональном). Например,

a := 5;

b := 7;

a := 8;

a := 9;

В такой ситуации возможны следующие варианты:

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

б) переменная связана с каким-либо внешним параметром и/или базой данных. В данном случае невозможно точно утверждать, что какая-либо другая переменная, используемая в выражениях между инициализациями данной переменной, не зависит от ее значения в те или иные моменты времени. Чтобы установить истину надо определить функциональные связи, или зависимости, между всеми переменными на данном участке программы при их объявлении;

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

2) антецеденты продукционных правил условных операторов полностью идентичны друг другу. Например,

if a > 5 then inc(b);

if a > 5 then dec(c);

В этой ситуации возможны следующие варианты:

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

Если операторы, приведенные выше, являются взаимодополняющими, то их объединение будет иметь вид

if a > 5 then

begin

inc(b);

dec(c);

end;

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

б) между условными операторами находится n других операторов. Для того чтобы отнести данные операторы к п. 2, а) необходимо выполнение следующих условий:

- переменные, включенные в антецеденты правил обоих условных операторов, не должны менять свои значения на всем участке программы между операторами;

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

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

Например, операторы

if a > 5 then inc(b);

if a < 9 then inc(b);

можно объединить в один условный оператор

if (a > 5) or (a < 9) then inc(b);

4) предусловия, постусловия или параметры операторов цикла полностью идентичны друг другу. Например,

while a > 5 do (или for i := 0 to 5 do)

begin

end;

while a > 5 do (или for i := 0 to 5 do)

begin

end;

В этой ситуации варианты будут аналогичны п. 2, а) и б).

5) переменные, значения которых изменяются в теле операторов цикла [3], одновременно используются в качестве их параметров (оператор for), в предусловиях или постусловиях (операторы while … do и do … while соответственно).

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

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

for i := 0 to 10 do

begin

dec(i);

end;

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

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

Некоторые из описанных выше ситуаций можно избежать, используя современные версии компиляторов и сред разработки программ. Так, разработчики Pascal ABC и Embarcadero Delphi XE3 установили запрет по умолчанию на компиляцию программы при изменении в теле операторов цикла их параметров, как в примере, приведенном в п. 5.

В то же время следующий код в Pascal ABC (версия 2.0, сборка 529) и Embarcadero Delphi XE3 (version 17.0.4770.56661) был откомпилирован без ошибок:

i := -1;

while i < 0 do

begin

i := i - 0;

end;

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

Все перечисленные ситуации объединяет одно - это необходимость в разработке методов и/или правил, которых необходимо придерживаться для создания семантически верного программного кода. Автором предлагается использовать в процессе разработки программ методику анализа структуры многомерного интервально-логического регулятора (МИЛР), отличительной особенностью которого является [4, 5] строгое задание на начальном этапе проектирования системы автоматического регулирования интервалов значений, которые могут принимать переменные-параметры в процессе эксплуатации, что дает возможность просчитать все возможные ситуации и выявить повторяющиеся, взаимодополняющие или противоречащие друг другу операторы. Семантический анализ программ МИЛР при этом выполняется автоматически при помощи специального программного обеспечения [6].

Библиографический список

1. Антипин А.Ф. Вопросы автоматизации семантического анализа программ // Автоматизация, телемеханизация и связь в нефтяной промышленности. 2014. № 7. С. 26-30.

2. Антипин А.Ф. Сравнительный анализ быстродействия дискретно-логического регулятора // Программные продукты и системы. 2010. № 1. С. 75-77.

3. Степашина Е.В., Мустафина Е.А. Численный алгоритм уточнения механизма химической реакции DRGEP-методом // Журнал Средневолжского математического общества. 2011. Т. 12. № 3. С. 122.

4. Антипин А.Ф. Способ анализа программного кода автоматизированной системы управления технологическими процессами // Автоматизация, телемеханизация и связь в нефтяной промышленности. 2013. № 10. С. 21-25.

5. Антипин А.Ф. Системы управления технологическими процессами на базе многомерных логических регуляторов // Автоматизация и современные технологии. 2014. № 1. С. 12-18.

6. Антипин А.Ф. Об одном способе анализа структуры многомерного четкого логического регулятора // Прикладная информатика. 2012. № 5. С. 30-36.

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [29,2 K], добавлен 28.11.2010

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

    дипломная работа [767,2 K], добавлен 14.10.2010

  • Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.

    курсовая работа [742,6 K], добавлен 03.07.2011

  • Средства интегрированной среды Microsoft Visual Studio, предоставляемые программисту для реализации программ на языке С++. Особенности стиля написания программ. Типовые приемы и методы создания и отладки программ. Листинги программ и их тестирование.

    лабораторная работа [814,3 K], добавлен 26.05.2013

  • Фаза "избавления" программы от ошибок. Задача обработки ошибок в коде программы. Ошибки с невозможностью автоматического восстановления, оператор отключения. Прекращение выполнения программы. Возврат недопустимого значения. Директивы РНР контроля ошибок.

    учебное пособие [62,3 K], добавлен 27.04.2009

  • Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрограмм, их отладка. Блок-схемы и листинг программ. Наборы тестов для отладки разработанных программ.

    курсовая работа [575,8 K], добавлен 06.12.2013

  • Проектирование программ в среде Рascal с интерфейсом типа "Меню". Разработка и отладка программы сортировки массива данных. Освоение методов проектирования Pascal-программ с использованием графических процедур и функций из стандартного модуля Graph.

    контрольная работа [581,1 K], добавлен 16.01.2015

  • Основные виды загрузки. Приемы работы в ТР: процесс отладки. Команды редактирования отладки программ с помощью командного меню Pascal. Составление программы с использованием простых операторов ввода, вывода. Сравнения с текстовыми и числовыми условиями.

    отчет по практике [134,7 K], добавлен 02.09.2010

  • Модели параллельного программирования; отладка параллельных программ. Реализация экспериментальной версии системы сравнительной отладки Fortran-OpenMP программ: получение, сбор и запись трассы, инструментарий программ, используемый формат файлов трассы.

    дипломная работа [92,8 K], добавлен 17.10.2013

  • Создание программы для перевода кодов с языка Pascal на язык Си. Обработка программ операторами case, assign, rewrite и write. Способы объявления файла, комментария, переменных, логических и арифметических выражений. Виды синтаксических анализаторов.

    курсовая работа [461,0 K], добавлен 03.07.2011

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

    методичка [135,5 K], добавлен 24.10.2012

  • Обзор существующих программ трехмерной графики: 3D Studio MAX, iClone, Blender, выявление их возможностей. Анализ истории разработки программ 3D и направлений их дальнейшего развития. Практическое применение программы iClone для создания 3D-анимации.

    курсовая работа [1,8 M], добавлен 20.11.2010

  • Рассмотрение основ разработки технического задания. Проектирования структуры программ; описание соответственного алгоритма. Собственно программирование. Тестирование и отладка компьютерных программ. Ознакомление с основными правилами защиты проекта.

    реферат [157,4 K], добавлен 15.11.2014

  • Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.

    курсовая работа [879,8 K], добавлен 11.02.2016

  • Решение циклических программ и программ вычисления функции с условием. Уравнение в табличном редакторе Microsoft Excel и в Turbo Pascal. Вычисление определенного интеграла методом прямоугольников, трапеции, Симпсона. Линейные и нелинейные уравнения.

    курсовая работа [233,6 K], добавлен 27.12.2009

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

    курсовая работа [505,3 K], добавлен 19.11.2013

  • Последовательность работ при разработке объектно-ориентированных программ. Виды синтаксических анализаторов и способы их применения. Описание алгоритма и анализ результативности работы программы, написанной на языке С, ее константы, переменные и функции.

    курсовая работа [441,7 K], добавлен 03.07.2011

  • Отладка - процесс обнаружения, устранения синтаксических и семантических ошибок. Точки отслеживания (трассировки). Выполнение отладки в режиме останова. Мониторинг содержимого переменных. Пошаговое выполнение кода. Разработка тестов для отладки программы.

    презентация [743,6 K], добавлен 09.12.2013

  • Трансляция как процесс перевода программного кода из текстовой формы в машинные коды. Основные категории программ Java. Основные управляющие операторы. Объявление и инициализация переменных. Основные средства разработки приложений, написанных на Java.

    презентация [938,2 K], добавлен 26.10.2013

  • Характеристика предприятия ТОО "Com Sales Group". Составление программ на языке программирования. Составление алгоритмов, разработка численных методов решения задач. Методы откладки программ. Анализ технологии машинной обработки экономической информации.

    отчет по практике [1,3 M], добавлен 19.04.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.