Введение 2
Определение программирования. Этапы создания программы 3
Отладка программы 6
Задача 2 и 3 9
Задача 4 и 5 12
Заключение 14
Список используемой литературы 15
Введение
Компьютерная техника и компьютерная технология прочно вошли в человеческую жизнь. Развитие научно-технического прогресса невозможно без автоматизации вычислительных процессов. Именно потребность в автоматизации вычислительных процессов стала первоначальным импульсом в развитии программирования.
Традиционная технология программирования формировалась на заре вычислительной техники, когда в распоряжении пользователей были ограниченные ресурсы ЭВМ, а разработчик программ был в то же время и главным ее пользователем. В этих условиях главное внимание обращалось на получение эффективных программ в смысле оптимального использования ресурсов ЭВМ.
В настоящее время, когда сфера применения компьютеров чрезвычайно расширилась, разработка и эксплуатация программ осуществляется, как правило, разными людьми. Поэтому наряду с эффективностью на первый план выдвигаются и другие важные характеристики программ такие, как понятность, хорошая документированность, надежность, гибкость, удобство сопровождения и т.п. Проблема разработки программ, обладающих такими качествами, объясняется трудоемкостью процесса программирования.
Для создания программы появляется необходимость придерживаться определенных принципов и новых технологий программирования.
В наше время из-за постоянного прогресса компьютерных технологий программирование играет важнейшую роль в жизнедеятельности человека.
Определение программирования. Этапы создания программы
Чтобы компьютер выполнил решение, какой либо задачи ему необходимо получить от человека инструкцию, как ее решать, набор таких инструкций для компьютера, направленной на решение какой-либо задачи называется – программой.
Программирование – процесс создания компьютерных программ или программного обеспечения с помощью языков программирования. Программирование сочетает в себе элементы фундаментальных наук, таких как математика, высшая математика и инженерия.
Язык программирования – формальная знаковая система, предназначенная для записи программ. Со времени создания первых программируемых машин человечество придумало уже более восьми с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
В процессе создания любой программы можно выделить следующую последовательность этапов:
1 этап. Постановка задачи: на этом этапе участвует человек хорошо представляющий предметную область задачи. Он должен четко определить цель, задачи, дать словесное описание содержания задачи и предложить общий подход к ее решению, анализируются характер и сущность всех величин, используемых в задаче, и определяются условия, при которых она решается, иначе говоря, на этом этапе формируется условие задачи. Этот этап очень важен, так как от правильного понимания целей и требований зависит в основном успех реализации создаваемой программы.
2 этап. Анализ задачи и моделирования: целью этого этапа является математическая модель или математическая постановка. На этом этапе выполняются следующие пункты
1) Определяются исходные данные и их типы.
2) Решение задачи описывается в виде аналитических зависимостей (уравнения, функции).
3) Определяются конечные данные и их типы.
Таким образом формируется математическая модель с определенной точностью, допущениями и ограничениями. При этом в зависимости от специфики решаемой задачи могут быть использованы различные разделы математики и других дисциплин.
3 этап. Алгоритмизация задачи и составление блок-схемы: выполняется на основе математического описания программы. На данном этапе составляется алгоритм решения задачи согласно действиям, задаваемым выбранным методом решения. Процесс обработки данных разбивается на отдельные относительно самостоятельные блоки, и устанавливается последовательность выполнения блоков. Разрабатывается блок-схема алгоритма.
4 этап. Программирование: на этом этапе алгоритм решения задачи переводится на конкретный язык программирования. Для программирования обычно используются языки высокого уровня, поэтому составленная программа требует перевода ее на машинный язык. После такого перевода выполняется уже соответствующая машинная программа.
5 этап. Отладка и тестирование программы: заключается в поиске и устранении синтаксических и логических ошибок в программе.
В ходе синтаксического контроля программы транслятором выявляются конструкции и сочетания символов, недопустимые с точки зрения правил их построения или написания, принятых в данном языке. Сообщения об ошибках компьютер выдает программисту, при этом вид и форма выдачи подобных сообщений зависят от вида языка и версии используемого транслятора. После устранения синтаксических ошибок проверяется логика работы программы в процессе ее выполнения с конкретными исходными данными.
6 этап. Исполнение отлаженной программы и анализ результатов: после отладки программы ее можно использовать для решения прикладной задачи. При этом обычно выполняется многократное решение задачи на компьютере для различных наборов исходных данных. Получаемые результаты интерпретируются и анализируются специалистом или пользователем, поставившим задачу.
Отладка программы
Несмотря на то, что создание программы происходит в несколько этапов, наиболее важным и трудоемким является этап отладки и тестирования программы. Именно на этом этапе устраняются все логические и синтетические ошибки в создаваемой программе.
Отладка – это деятельность, направленная на обнаружение и исправление ошибок в программе.
Тестирование – это процесс выполнения программы на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Таким образом, отладку можно представить в виде многократного повторения трех процессов: тестирования, в результате которого может быть констатировано наличие ошибки, поиска места ошибки в программе и редактирования программы и документации с целью устранения обнаруженной ошибки. Таким образом, все вышесказанное можно представить формулой:
Отладка = Тестирование + Поиск ошибок + Редактирование.
Успех отладки в значительной степени предопределяет рациональная организация тестирования. При отладке отыскиваются и устраняются, в основном, те ошибки, наличие которых устанавливается при тестировании. Как было уже отмечено, тестирование не может доказать правильность программы, в лучшем случае оно может продемонстрировать наличие в нем ошибки. Поэтому возникает две задачи. Первая: подготовить такой набор тестов, чтобы обнаружить в нем по возможности большее число ошибок. Однако чем дольше продолжается процесс тестирования, тем большей становится стоимость программы. Отсюда вторая задача: определить момент окончания отладки. Признаком возможности окончания отладки является полнота охвата пропущенными через программу тестами, и относительно редкое проявление ошибок в проверяемой программе на последнем отрезке процесса тестирования.
Есть различные подходы и средства отладки; в качестве основного средства используются встроенные программные отладчики, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
Кроме использования встроенных программных отладчиков существуют и другие методы отладок программы: использование внутрисхемного эмулятора, отладка при помощи внешних программных отладчиков и отлаживаемым устройством с записанным в память программ двоичным кодом программы.
Внутрисхемный эмулятор с отображением переменных языка программирования на дисплее компьютера оказывает значительную помощь при отладке программ непосредственно на разрабатываемой аппаратуре. Этот метод отладки предоставляет наиболее удобную среду, когда можно непосредственно в отлаживаемом устройстве останавливать программу, контролировать выполнение программы непосредственно по исходному тексту программы, состояние внешних портов и внутренних переменных, как входящих в состав микросхемы, так и объявленных при написании исходного текста программы. До недавнего времени внутрисхемный эмулятор являлся отдельным устройством, подключаемым к разрабатываемой плате.
Встроенный программный отладчик, входящий в состав интегрированной среды программирования значительно упрощает процесс отладки программы. Но в тоже время она значительно замедляется.
Внешний программный отладчик. В некоторых случаях используется не интегрированная среда программирования, а отдельный транслятор с выбранного языка программирования. Так как объектные форматы различных трансляторов несколько отличаются друг от друга, то в качестве входного файла используется загрузочный модуль в двоичном формате.
Отладка программ заключается в проверке правильности работы программы и аппаратуры. Программа, не содержащая синтаксических ошибок, тем не менее, может содержать логические ошибки, не позволяющие программе выполнять заложенные в ней функции. Логические ошибки могут быть связаны с алгоритмом программы или с неправильным пониманием работы аппаратуры, подключённой к портам микроконтроллера.
Встроенный в состав интегрированной среды программирования отладчик позволяет отладить те участки кода программы, которые не зависят от работы аппаратуры, не входящей в состав микросхемы микроконтроллера. Обычно это относится к вычислению математических выражений или преобразованию форматов представления данных.Программирование является «отладка» программы , т. е. обнаружение и исправление ошибок, допускаемых при Программирование Основное средство отладки ...
Паскаль Отладка программ
Реферат >> ИнформатикаЛогические операторы и операторы цикла. Отладка программ . Укороченная форма оператора if В... if. Средства среды программирования для отладки программ Среда Borland Pascal ... несколько встроенных инструментальных средств отладки программ . С некоторыми из них...
Программа по начислению заработной платы и налогов работникам фирмы
Реферат >> ЭкономикаПрограммного обеспечения: изучение постановки задачи; программирование и отладка программ ; описание контрольного примера; совместно с... машинного времени при отладке программы определяются путем умножения фактического времени отладки программы на цену...
Выполнение и отладка программ в интегрированной среде программирования Turbo Pascal (MS-Dos)
Лабораторная работа >> Информатика, программированиеПрактического использования интегрированных сред программирования с целью выполнения и отладки программ на языке Паскаль. ТЕОРЕТИЧЕСКИЕ... СВЕДЕНИЯ Базовыми компонентами системы программирования Турбо...
Это самый трудоемкий этап. Его цель – проверка синтаксической и логической правильности программы, а также определение того, что программа функционирует на всем диапазоне допустимых данных.
В процессе отладки программы выделяются этапы:
1. трансляция исходного текста программы;
2. компоновка программы;
3. выполнение программы с целью определения логических ошибок;
4. тестирование программы.
Трансляция
При трансляции выполняется перевод программы, понятной человеку, на язык, понятный компьютеру. Если цель трансляции – преобразование всего исходного текста на внутренний язык компьютера (т.е. получение некоторого нового кода) и только, то такая трансляция называется также компиляцией. Исходный текст называется также исходной программой или исходным модулем, а результат компиляции – объектным кодом или объектным модулем. Если же трансляции подвергаются отдельные операторы исходных текстов и при этом полученные коды сразу выполняются, такая трансляция называется интерпретацией. Поскольку трансляция выполняется специальными программными средствами, последние носят название компилятора или интерпретатора, соответственно.
В процессе компиляции последовательно выполняются лексический , синтаксический , семантический анализ , генерация промежуточного кода , оптимизация промежуточного кода , генерация внутреннего представления .
Лексический анализ
Выявляются отельные составляющие текста программы, которые называются лексемами, и определяется их тип. К числу лексем относятся названия операторов, например, read или write; имена (переменных или констант), например, NABOR или CHISLO, различные разделители, такие как круглые скобки, знаки препинания и т.д. Одновременно типами указанных лексем являются названия операторов, имена переменных, разделители и т.д. Если программистом допущена ошибка и оператор ввода указан, например, rread, он будет распознан компилятором как имя. На этом этапе выявляется также использование недопустимых языком программирования символов, например, символа @. В результате лексического анализа исходная программа кодируется: каждая лексема заменяется кодом ее типа, что сокращает объем текста программы. Кроме того, из текста программы удаляются пробелы.
Пример 1. Лексический анализ фрагмента программы на Турбо-Паскале, содержащего только один правильно записанный оператор ввода:
read (NABOR,CHISLO);
дает цепочку
где 1 – код названия оператора;
2 – код скобки;
3 – код имени;
4 – код знака препинания.
Пример 2. Лексический анализ фрагмента программы на Турбо-Паскале, содержащего только один неправильно записанный оператор ввода:
rread (NABOR,CHISLO); ,
дает цепочку
Синтаксический анализ
Определяется синтаксическая правильность закодированной в результате лексического анализа цепочки лексем. Например, определяется парность скобок, наличие в нужном месте требуемого знака препинания, соответствие исходного текста структурным правилам того или иного языка программирования, средствами которого была составлена программа. Для решения задачи в исходной (закодированной) цепочке выделяются подструктуры, соответствующие некоторым фрагментам оператора. Например, для оператора ввода в Турбо-Паскале можно определить структуру, представленную на рисунке 1 и соответствующую правилам из примера1 раздела Структурно-стилизованный способ описания алгоритма:
Рисунок 1
В то же время структура "правильного" оператора ввода определяется схемой:
Рисунок 2
Поскольку представленные структуры идентичны, оператор read (NABOR,CHISLO); при синтаксическом анализе определяется как правильный.
Именно на этом шаге выявляются ошибки в написании названий операторов: они ведут к некорректной структуре всего оператора. Так, примеру с "неправильным" оператором ввода соответствует структура, показанная на рисунке:
Рисунок 3
Поскольку структура этого рисунка не соответствует структуре рисунка 1, оператор rread (NABOR,CHISLO); расценивается как синтаксически некорректный: компилятор не найдет в анализируемом фрагменте требуемого действия, которое задается названием оператора, и сообщит об этом программисту.
Семантический анализ
На этом шаге выявляются ошибки, допущенные программистом в нарушение правил составления программ, например, следующего вида: все переменные и константы перед употреблением в операторах языка должны быть описаны; каждое имя (переменной или константы) должно быть описано только один раз; требуется согласование типов переменных с использующими их функциями и т.д. Так, если вся программа состоит только из оператора
read (NABOR,CHISLO); ,
она будет определена как семантически некорректная, поскольку в ней отсутствуют описания вводимых переменных.
Пример 3. Программа
var NABOR, CHISLO: integer;
read (NABOR, CHISLO);
Пример 4. Программа
var CHISLO: integer;
CHISLO:=CHISLO + 1;
расценивается семантическим анализатором как семантически корректная.
Генерация промежуточного кода
Закодированная цепочка лексем преобразуется в некоторое промежуточное представление, принятое на том или ином компьютере, например, в программу на языке ассемблера (для простоты используем некоторый условный ассемблер).
Пример 5. Программа из примера 4 преобразуется в промежуточный код на условном ассемблере:
$1 DD ? ; операторы DD описывают переменные: каждый из них
$2 DD ?; отводит под переменную 2 байта памяти;
$3 DD ?; переменные $1 - $3 вводятся генератором кода как
CHISLO DD ?; вспомогательные переменные;
MOVE 1, $1; в операторах MOVE константы или содержимое
MOVE CHISLO, $2; переменных слева от запятой помещаются в переменные и
MOVE $1, AX; регистры процессора (АХ и СХ), указанные справа;
ADD AX, CX; выполняется сложение содержимого регистров АХ и СХ,
; результат остается в регистре АХ
MOVE AX, $3; выполняются перемещения значений, находящихся в
MOVE $3, CHISLO; регистре и переменной, в соответствующие переменные
Полученный код избыточен: в самом деле, выполняется бессмысленная пересылка константы 1 и значения переменной CHISLO сначала в дополнительные переменные $1 и $2, а затем уже в регистры АХ и СХ, которые и используются при сложении. Аналогичные бессмысленные действия выполняются и с результатом сложения. Однако уменьшение размеров кода осуществляется на следующем этапе.
Оптимизация промежуточного кода
Из программы, полученной на предыдущем шаге, устраняются «лишние» операторы, переменные и константы, использование которых не влияет на корректность выполняемых действий.
Пример 6. Оптимизация промежуточного кода для программы из примера 5 приводит ее к виду:
Такой результат связан с тем, что ряд операторов выполняли лишние перемещения данных из одного места хранения в другое. Удаление этих операторов повлекло удаление вспомогательных переменных.
Генерация объектного кода
Программа, полученная в результате оптимизации, преобразуется в машинный код (так называемый объектный модуль), в котором использованы относительные, а не абсолютные адреса основной памяти. Как правило, для получения объектного модуля применяется условная память с начальным адресом 1. Каждый оператор программы преобразуется в машинную команду и размещается, начиная с начального адреса, в той последовательности, в которой он следует в программе. При этом учитывается размер каждого оператора. Пусть командам программы из примера 6 соответствуют машинные команды:
код объем действие
операции
124 1 б сложить содержимое регистров АХ и СХ, результат – в регистре АХ,
125 3 б поместить содержимое регистра АХ по адресу,
126 2 б поместить константу в регистр АХ,
127 3 б поместить содержимое адреса в регистр СХ.
Начинается самый трудоемкий и, в профессиональном плане, самый сложный этап разработки приложения – ОТЛАДКА ПРОГРАММЫ. Сложно написать программу сразу без ошибок. И при этом ошибки бывают разные как по природе из возникновения, так и по трудоемкости исправления.
Самые простые ошибки – синтаксические. Их интерпретатор VBA «вылавливает» сразу, как только Вы нажимаете на клавишу Enter после ввода очередной строки кода программы. Вам остается только внимательно вчитаться в напечатанный Вами текст, найти и исправить опечатку.
Более сложные ошибки – ошибки ВЫПОЛНЕНИЯ ПРОГРАММЫ. Они проявляются только во время работы программы. Вот ими мы и займемся.
Запуск программы на выполнение
Запустить программу в VBA можно несколькими путями.
Запуск через главное меню приложения – самый длинный, но и в то же время, самый типовой прием. Перейдите на лист EXCEL, наберите на чистом листе табличку рисунок 11а, выделите ее как блок (либо мышкой, либо другим путем), поскольку наша программа начнет свою работу с поиска выделенного блока.
Войдите в меню СЕРВИС-МАКРОС-МАКРОСЫ (или Alt+F8) и вы получите окно со списками всех программных модулей (макросов), какие есть сейчас у Вас в приложении (рисунок 13). В нашем случае виден только один макрос – это наша подпрограмма Poradok. Установите на нее курсор и нажмите кнопку ВЫПОЛНИТЬ.
Миг и наша таблица на экране превращается в нечто, следующего вида:
Что-то это не похоже на нужную нам сортировку.
Половина начальных цифр исчезла, появились пустые клетки… Значит где-то в нашей программе «дыра». И может быть не одна. Ну что же, приступим, как говорят хирурги, беря в руки скальпель.
Инструменты отладки программ в vba.
Во-первых снова восстановим на листе EXCEL исходную таблицу рисунок 11а и выделим ее блоком. После этого клавишами Alt+F11 перейдем в инструментальную среду программирования VBA (ИС VBA).
Сначала проверим правильность работы блоков ввода данных. Для этого поставим точку останова программы на оператор следующий за блоком «Получить из выделенной зоны данные “. Точка останова ставится щелчком левой кнопки мыши на левом поле окна модуля с текстом программы напротив того оператора, на котором должна остановиться программа при своем выполнении (появляется коричневая жирная точка, и вся помеченная строка тоже становится коричневая).
Для запуска программы нажмем кнопку запуска приложения , расположенную в инструментальной линейке ИС VBA вверху экрана. Приложение запустится сразу, если ИС VBA разобралась в обстановке, или опять появится окно рисунок 13, если ИС VBA требуются пояснения, что же все-таки следует запустить. После запуска практически сразу программа остановится на нашей «точке останова», что будет видно по ярко желтой полосе на тексте программы. Теперь мы можем проанализировать ситуацию, создавшуюся в программе в текущему моменту. Для анализа раскроем окно локальных переменных (см. выше) и в нем, как в окне системного ПРОВОДНИКА откроем содержимое компонентов массива Mass (рисунок 14).
Видно, что к моменту, когда все данные с экрана должны быть перенесены в этот массив, на самом деле элемент Mass(1,1) – пустой, Mass(1,2) – тоже пустой, а элемент Mass(1,2) содержит 5, хотя должен содержать (см.рисунок 11а) – 8. Значит что-то не в порядке с циклом переноса данных в массив Mass. Анализируем его и видим, что в строке
Mass(i, j) = Cells(X + i, Y + j - 1)
при наборе текста программы мы пропустили -1 в первом индексе ячейки. Исправим эту ошибку:
Mass(i, j) = Cells(X + i - 1, Y + j - 1)
Остановим работу программы кнопкойв инструментальной линейке ИС VBA и снова запустим кнопкой. Теперь содержимое массива Mass в окне локальных переменных (рисунок 15) соответствует действительности.
Пока программа находится в состоянии останова, проверим также содержимое переменных X, Y, H и W. Их можно тоже посмотреть в окне локальных переменных, либо на них можно просто навести курсор мыши в любом месте текста программы и на секунду задержать его. ИС VBA тут же покажет небольшое окошко с содержимым указанной переменной (рисунок 16). Посмотрев все переменные убеждаемся, что блок ввода данных отработал нормально и во всех ячейках разместил именно те числа, которые должны быть.
Рисунок 17
родолжим выполнение программы и посмотрим, как она переставит числа теперь. Для продолжения нажмем кнопку. Программа быстро завершилась, что видно по очистке окна локальных переменных (после завершения программы все переменные уходят из поля видимости ИС VBA). Чтобы посмотреть результат переключимся на лист EXCEL. Видим таблицу рисунок 17. Чувство радости при внимательном рассмотрении таблицы сменяется унынием. Перестановка произошла, но как-то не до конца. В частности цифра 1 оказалась после цифры 5. Значит где-то еще «дыра». И скорее всего в блоке перестановки данных. Что ж, продолжим операцию отладки.Опять придется восстановить таблицу на листе EXCEL в исходное состояние и выделить ее блоком. Снова переключимся в ИС VBA и запустим программу.
Программа остановится на «точке останова» сразу после ввода данных. Чтобы выяснить что происходит при перестановке чисел продолжим выполнение программы в пошаговом режиме.
Если вы откроете меню ОТЛАДКА в верхней строке ИС VBA, то увидите, что режимов пошаговой отладки три. Они вызываются горячими клавишами F8, Shift+F8 и Ctrl+Shift+F8. Названия режимов написаны там же в меню. Нам нужен первый режим: «с заходом» в каждый оператор программы. Поэтому закрываем меню и нажимаем F8. Программа выполнила следующий оператор и остановилась. Теперь Вы можете проанализировать содержимое всех переменных в программе и оценить правильность хода выполнения программы. Снова нажимаете F8 и снова анализ. И так до тех пор пока не выявите ошибку или пока не закончится программа.
Предположим, что произошло второе, а мы так и не заметили где же наша программа ошибается. Тогда немного изменим технологию контроля за ходом выполнения программы. В циклах перестановки в нашей программе сравниваются всего пара ячеек Mass(i,j) и Mass(K,M). Настроим ИС VBA так, чтобы она показывала нам именно эти сравниваемые величины и индексы K и M, целевой ячейки (индексы i, j настольно просто изменяются, что ошибиться в них невозможно (почти)).
Для контроля используем окно контрольных значений (меню ВИД…). Чтобы добавить в окно интересующие нас величины удобно выделить их в тексте программы, щелкнуть правой клавишей мыши и в появившемся динамическом меню выбрать режим «Добавить контрольное значение». Появится окно с настройками контрольного значения (рисунок 19).
Здесь можно откорректировать (или вписать другое) переменную или выражение, которое Вы хотите контролировать и установить тип контроля. В нашем случае тип контроля – контрольное выражение. После нажатия на кнопку ОК, заказанное выражение попадает в окно контрольных значений. Вводим в окно все четыре интересующие нас величины.
Снова восстанавливаем таблицу на листе EXCEL в исходное состояние, выделяем ее блоком. Снова переключаемся в ИС VBA и запускаем программу. Снова, после останова программы, жмем F8, пошагово проходя по каждому оператору и анализируя изменение контрольных значений наших переменных (рисунок 18). И в какой-то момент с удивлением замечаем, что когда на следующем шаге индекс M должен был приобрести значение 1, этого не произошло. Внимательно посмотрев на текст программы, мы наконец замечаем, что пропустили оператор установки переменной L в 1.
Остановим программу. Добавим пропущенный оператор. Снова восстанавливаем таблицу на листе EXCEL в исходное состояние, выделяем ее блоком. Снова переключаемся в ИС VBA. Снимаем точку останова на операторе
For i = 1 To H
(щелчком мыши на нем) и запускаем программу.
Проверяем результат на листе EXCEL:
Ура! Наконец программа выдала то, что нам надо.
Тестируем программу еще и еще раз, выстраивая на листе EXCEL различные таблицы и упорядочивая в них данные. Все работает отлично!
Правда, через некоторое время Вы вспоминаете, что в условии задачи просили выдавать сообщение об ошибке, если в ячейках выделенной таблицы расположены не числовые данные. Как это сделать?
Придется порыться в справочной системе VBA, книгах по программированию на VBA и лекциях, чтобы найти функцию, определяющую тип переменной. В справочной системе описание этой функции выглядит так, как показано на рисунок 20. Функция имеет ключевое слово VarType(), в качестве параметра требует переменную, которую Вы хотите проанализировать и возвращает коды, указанные в справке (рисунок 20) в зависимости от типа переменной.
Кроме того, используем стандартную функцию для выдачи сообщений на экран MsgBox и команду принудительного выхода из подпрограммы Exit Sub (как записывается и используется эти функция и команда тоже можно посмотреть в справочной системе VBA).
Код программы, который использует эти функции и удобен для нас выглядит так:
If VarType(obmen) > 1 And VarType(obmen) < 6 Then
Mass(i, j) = obmen
MsgBox "В ячейке "+Chr(Y + i + 63)+LTrim(Str(X + i - 1))+ _
" НЕ числовые данные"
Выводимый на экран текст в функции MsgBox составлен путем сложения отдельных фраз и номеров строки и столбца преобразованных в текст. С помощью стандартной функции языка Basic – Chr код столбца преобразовывается в букву его названия (но при этом, чтобы получилась буква к коду добавляется число 63 – смещение буква А в кодовой таблице символов).
Стандартная функция LTrim удаляет все левые пробелы из строки, в которую стандартная функция Str преобразовала число с номером строки ячейки. Обо всех этих функциях Вы более подробно можете посмотреть в справочной системе VBA.
Последнее требование к программе было – «снять выделение после отработки программы». Эту задачу легко выполнить, если дать команду выделить одну любую другую ячейку. Например, в нашей программе можно снять выделение блока командой:
Cells(X, Y).Select
которая переводит курсор выделения ячеек на ячейку в начале выделенной таблицы.
После внесения всех изменений окончательный текст нашей программы принимает вид:
Dim Mass() As Variant
Dim obmen As Variant
Dim i As Integer
Dim j As Integer
Dim X As Integer
Dim Y As Integer
Dim H As Integer
Dim W As Integer
Dim K As Integer
Dim L As Integer
Dim M As Integer
"Получить характеристики выделенной области
X = Selection.Row
Y = Selection.Column
H = Selection.Rows.Count
W = Selection.Columns.Count
"Заказать в памяти массив
ReDim Mass(H, W)
"Получить из выделенной зоны данные
obmen = Cells(X + i - 1, Y + j - 1)
If VarType(obmen) > 1 And VarType(obmen) < 6 Then
Mass(i, j) = obmen
MsgBox "В ячейке " + Chr(Y + i + 63) + LTrim(Str(X + i - 1)) + _
" НЕ числовые данные"
"Переставить данные в порядке возрастания
If Mass(i, j) > Mass(K, M) Then
obmen = Mass(i, j)
Mass(i, j) = Mass(K, M)
Mass(K, M) = obmen
"Вывести новый порядок данных на лист EXCEL
Cells(X + i - 1, Y + j - 1) = Mass(i, j)
Отладка программы – это деятельность, направленная на обнаружение и исправление ошибок в программе. Обнаружить ошибки, связанные с нарушением правил записи программы на языке программирования (синтаксические и семантические ошибки), помогает используемая система программирования. Пользователь получает сообщение об ошибке, исправляет ее и снова повторяет попытку исполнить программу.
Тестирование программы – это процесс выполнения программы с целью обнаружения ошибки в программе на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Указанный набор данных называется тестовым, или просто тестом. Прохождение теста – необходимое условие подтверждения правильности программы. На тестах проверяется правильность реализации программой запланированного алгоритма. Таким образом, отладку можно представить в виде многократного повторения трех процессов: тестирования, в результате которого может быть констатировано наличие в ПС ошибки, поиска места ошибки в программах и документации ПС и редактирования программ и документации с целью устранения обнаруженной ошибки.
Успех отладки в значительной степени предопределяет рациональная организация тестирования. При отладке отыскиваются и устраняются в основном те ошибки, наличие которых в программе устанавливается при тестировании. Тестирование не может доказать правильность программы, в лучшем случае оно может продемонстрировать наличие в нем ошибки. Другими словами, нельзя гарантировать, что тестированием программы на соответствующих наборах тестов можно установить наличие каждой имеющейся в программе ошибки. Поэтому возникают две задачи. Первая: подготовить такой набор тестов и применить к ним программу, чтобы обнаружить в нем по возможности большее число ошибок. Однако чем дольше продолжается процесс тестирования (и отладки в целом), тем выше становится стоимость программы. Отсюда вторая задача: определить момент окончания отладки программы (или отдельной ее компоненты). Признаком возможности окончания отладки является полнота охвата тестами, к которым применена программа, множества различных ситуаций, возникающих при выполнении программы, и относительно редкое проявление ошибок в программе на последнем отрезке процесса тестирования. Последнее определяется в соответствии с требуемой степенью надежности программы, указанной в спецификации ее качества.
Для оптимизации набора тестов, т.е. для подготовки такого набора тестов, который позволял бы при заданном их числе (или при заданном интервале времени, отведенном на тестирование) обнаруживать большее число ошибок, необходимо, во-первых, заранее планировать этот набор и, во-вторых, использовать рациональную стратегию планирования тестов.
Таким образом, тестирование и отладка включают в себя синтаксическую отладку; отладку семантики и логической структуры программы; тестовые расчеты и анализ результатов тестирования. Затем идет совершенствование программы.
Документирование программы. При разработке ПС создается большой объем разнообразной документации. Продуманная документация программных разработок облегчает совместную работу над проектом больших групп программистов, позволяет подключать новых людей, избегать дублирования многих действий. В итоге повышается производительность труда программистов и увеличивается надежность кода. Кроме того, документация необходима для управления разработкой ПС и для передачи пользователям информации, необходимой для применения и сопровождения ПС. На создание этой документации приходится большая доля стоимости ПС.
Всю документацию можно разбить на две группы:
– документы управления разработкой ПС;
– документы, входящие в состав ПС.
Документы управления разработкой ПС протоколируют процессы разработки и сопровождения ПС, обеспечивая связи внутри коллектива разработчиков и между коллективом разработчиков и менеджерами – лицами, управляющими разработкой.
Пользовательская документация ПС объясняет пользователям, как они должны действовать, чтобы применить данное ПС.
Она необходима, если ПС предполагает какое-либо взаимодействие с пользователями. К такой документации относятся документы, которыми руководствуется пользователь при инсталляции ПС, при применении ПС для решения своих задач и при управлении ПС (например, когда данное ПС взаимодействует с другими системами). Эти документы частично затрагивают вопросы сопровождения ПС, но не касаются вопросов, связанных с модификацией программ.
Контрольные вопросы
1. Что такое система программирования?
2. Что относится к технологии OLE?
3. Что относится к технологии Microsoft .NET?
4. Что такое модульное программирование?
5. Назовите основные принципы объектно-ориентрованного программирования.
6. Что относится к процедурному программированию?
7. Как происходит отладка и тестирование программ?
8. Какие виды документации используют при разработке программ?
9. Что такое парадигма программирования?
10. Что такое объекты, классы?
Отла́дка - этап разработки компьютерной программы , на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится:
- узнавать текущие значения переменных ;
- выяснять, по какому пути выполнялась программа.
Существуют две взаимодополняющие технологии отладки.
- Использование отладчиков - программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
- Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода - на экран , принтер , громкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием .
Энциклопедичный YouTube
1 / 3
Без этого вы не станете программистом! Найти ошибку в коде. Отладка. Как пользоваться отладчиком #23
Основы Java. Урок 16: Отладка программы в Eclipse
Основы программирования - создание и отладка первой программы. Урок 2.
Субтитры
Место отладки в цикле разработки программы
Типичный цикл разработки, за время жизни программы многократно повторяющийся, выглядит примерно так:
- Программирование - внесение в программу новой функциональности, исправление существующих ошибок .
- Тестирование (ручное или автоматизированное; программистом, тестером или пользователем; «дымовое », в режиме чёрного ящика или модульное …) - обнаружение факта ошибки.
- Воспроизведение ошибки - выяснение условий, при которых ошибка случается. Это может оказаться непростой задачей при программировании параллельных процессов и при некоторых необычных ошибках, известных как гейзенбаги .
- Отладка - обнаружение причины ошибки.
Инструменты
Способности программиста к отладке - это, по-видимому, важнейший фактор в обнаружении источника проблемы, но сложность отладки сильно зависит от используемого языка программирования и инструментов, в частности, отладчиков .
Инструменты отладки
Отладчик представляет из себя программный инструмент, позволяющий программисту наблюдать за выполнением исследуемой программы, останавливать и перезапускать её, прогонять в замедленном темпе, изменять значения в памяти и даже, в некоторых случаях, возвращать назад по времени.
Также полезными инструментами в руках программиста могут оказаться:
- Профилировщики . Они позволят определить, сколько времени выполняется тот или иной участок кода. Анализ покрытия позволяет выявить неисполняемые участки кода.
- API логгеры позволяют отследить взаимодействие программы и Windows API при помощи записи сообщений Windows в лог.
- Дизассемблеры позволяют посмотреть ассемблерный код исполняемого файла
- Снифферы помогут отследить сетевой трафик, генерируемый программой
- Снифферы аппаратных интерфейсов позволяют увидеть данные, которыми обмениваются система и устройство.
- Логи системы.
Использование языков программирования высокого уровня обычно упрощает отладку, если такие языки содержат, например, средства обработки исключений, сильно облегчающие поиск источника проблемы. В низкоуровневых языках ошибки могут приводить к незаметным проблемам - например, повреждениям памяти и утечкам памяти . Тогда бывает довольно трудно определить, что стало первоначальной причиной ошибки. В этих случаях могут потребоваться сложные приёмы и средства отладки.
«Наш личный выбор - стараться не использовать отладчики, кроме как для просмотра стека вызовов или же значений пары переменных . Одна из причин этого заключается в том, что очень легко потеряться в деталях сложных структур данных и путей исполнения программы. Мы считаем пошаговый проход по программе менее продуктивным, чем усиленные размышления и код, проверяющий сам себя в критических точках.
Щёлканье по операторам занимает больше времени, чем просмотр сообщений операторов выдачи отладочной информации, расставленных в критических точках. Быстрее решить, куда поместить оператор отладочной выдачи, чем проходить шаг за шагом критические участки кода, даже предполагая, что мы знаем, где находятся такие участки. Более важно то, что отладочные операторы сохраняются в программе, а сессии отладчика переходящи.
Слепое блуждание в отладчике, скорее всего, непродуктивно. Полезнее использовать отладчик, чтобы выяснить состояние программы, в котором она совершает ошибку, затем подумать о том, как такое состояние могло возникнуть. Отладчики могут быть сложными и запутанными программами, особенно для новичков, у которых они вызовут скорее недоумение, чем принесут какую либо пользу…»
«Отладка сложна и может занимать непредсказуемо долгое время, поэтому цель в том, чтобы миновать большую её часть. Технические приёмы, которые помогут уменьшить время отладки, включают хороший дизайн, хороший стиль , проверку граничных условий, проверку правильности исходных утверждений и разумности кода, защитное программирование, хорошо разработанные интерфейсы, ограниченное использование глобальных переменных, автоматические средства контроля и проверки. Грамм профилактики стоит тонны лечения.»
Инструменты, снижающие потребность в отладке
Другое направление - сделать, чтобы отладка нужна была как можно реже. Для этого применяются:
- Контрактное программирование - чтобы программист подтверждал другим путём, что ему на выходе нужно именно такое поведение программы. В языках, в которых контрактного программирования нет, используется самопроверка программы в ключевых точках.
- Безопасность программного кода и отладка
В программном коде может быть так называемое недокументированное поведение - серьёзные ошибки, которые не проявляются при нормальном ходе выполнения программы, однако весьма опасны для безопасности всей системы в случае целенаправленной атаки. Чаще всего это результат ошибок программиста. Наиболее известные примеры - это SQL-инъекция и переполнение буфера . В данном случае задача отладки это:
- Выявление недокументированного поведения системы
- Устранение небезопасного кода
Выделяют такие методы:
- статический анализ кода. На этой фазе программа сканер ищет последовательности в исходном тексте, соответствующие небезопасным вызовам функций и т. д. Фактически идет сканирование исходного текста программы на основе специальной базы правил, которая содержит описание небезопасных образцов кода.
- фаззинг. Это процесс подачи на вход программы случайных или некорректных данных и анализ реакции программы.
- Reverse engineering (Обратная инженерия). Этот случай возникает, когда независимые исследователи ищут уязвимости и недокументированные возможности программы.