Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Блок-схема алгоритма программыСтр 1 из 13Следующая ⇒
Текст программы: program quadrur;
Uses Crt; var a, b, c: real;
procedure Entering; begin Write ('Введите значение a: '); ReadLn (a); Write ('Введите значение b: '); ReadLn (b); Write ('Введите значение c: '); ReadLn (c); end; {procedure Entering}
function Dis: real; begin dis: = b*b-4*a*c; end; {function Dis}
function Valid: boolean; begin Valid: = true; if a = 0 then begin Writeln ('Уравнение линейное'); Valid: = false; end else if Dis < 0 then begin Writeln ('Уравнение не имеет действительных корней'); Valid: = false; end; end; {function Valid}
function Results: real; begin WriteLn ('x1 = ', (-b-SQRT(dis))/(2*a): 3: 6); WriteLn ('x2 = ', (-b+SQRT(dis))/(2*a): 3: 6); end; {function Results}
begin ClrScr; Write ('Решение квадратного уравнения'); WriteLn (' вида ax^2+bx+c=0'); WriteLn; Entering; if Valid = true then Results; ReadKey; end. Варианты заданий Общее задание изложено в примере (п. 1). Программу разработать в ИСР C+++ Builder в консольном режиме.
Контрольные вопросы 1. Что такое спецификация программы? 2. Что в себя включает постановка задачи? 3. Что в себя включает анализ требований и определение спецификаций? 4. Какова основная задача проектирования программного продукта? 5. Что такое спецификация переменных?
Практическая работа №2 Тема: «Тестирование. Разработка тестовых примеров». Цель работы: научиться тестировать программный модуль на основе тестовых наборов. Время выполнения: подготовка – 5 мин; выполнение – 75 мин.; проверка – 10 мин; всего – 90 мин.
Теоретическая часть Полное тестирование программы невозможно. Тест для любой программы будет обязательно неполным, то есть тестирование не гарантирует полное отсутствие ошибок в программе. Стратегия проектирования тестов заключается в том, чтобы попытаться уменьшить эту неполноту насколько это возможно. 1. Методы стратегии ‘белого ящика’ Тестирование по принципу белого ящика характеризуется степенью, какой тесты выполняют или покрывают логику (исходный текст программы). 1.1. Метод покрытия операторов Целью этого метода тестирования является выполнение каждого оператора программы хотя бы один раз. Пример:
Рисунок 1.1 Рисунок 1.2 В этой программе можно выполнить каждый оператор, записав один единственный тест, который реализовал бы путь ace. Т.е., если бы на входе было: А=2, В=0, Х=3, каждый оператор выполнился бы один раз. Но этот критерий на самом деле хуже, чем он кажется на первый взгляд. Пусть в первом условии вместо “and”®“or” и во втором, вместо “x> 1”®“x< 1” (блок-схема правильной программы приведена на рисунке 1.1, а неправильной - на рисунке 2.2). Результаты тестирования приведены в таблице 1.1. Обратите внимание: ожидаемый результат определяется по алгоритму на рисунке 1.1, а фактический - по алгоритму рисунка 1.2, поскольку определяется чувствительность метода тестирования к ошибкам программирования. Как видно из этой таблицы, ни одна из внесенных в алгоритм ошибок не будет обнаружена. Таблица 1.1 - Результат тестирования методом покрытия операторов
1.2. Метод покрытия решений (покрытия переходов) Более сильный метод тестирования известен как покрытие решений (покрытие переходов). Согласно данному методу каждое направление перехода должно быть реализовано, по крайней мере, один раз. Покрытие решений обычно удовлетворяет критерию покрытия операторов. Поскольку каждый оператор лежит на некотором пути, исходящем либо из оператора перехода, либо из точки входа программы, при выполнении каждого направления перехода каждый оператор должен быть выполнен. Для программы приведенной на рисунке 1.2 покрытие решений может быть выполнено двумя тестами, покрывающими пути {ace, abd}, либо {aсd, abe}. Пути {aсd, abe} покроим, выбрав следующие исходные данные: {A=3, B=0, X=3} и {A=2, B=1, X=1} (результаты тестирования - в таблице 1.2). Таблица 1.2 - Результат тестирования методом покрытия решений
1.3 Метод покрытия условий Лучшие результаты по сравнению с предыдущими может дать метод покрытия условий. В этом случае записывается число тестов, достаточное для того, чтобы все возможные результаты каждого условия в решении выполнялись, по крайней мере, один раз. В предыдущем примере имеем четыре условия: {A> 1, B=0}, {A=2, X> 1}. Следовательно, требуется достаточное число тестов, такое, чтобы реализовать ситуации, где A> 1, A£ 1, B=0 и B¹ 0 в точке а и A=2, A¹ 2, X> 1 и X£ 1 в точке В. Тесты, удовлетворяющие критерию покрытия условий и соответствующие им пути: а) A=2, B=0, X=4 ace б) A=1, B=1, X=0 abd Таблица 1.3 - Результаты тестирования методом покрытия условий
1.4 Критерий решений (условий) Критерий покрытия решений/условий требует такого достаточного набора тестов, чтобы все возможные результаты каждого условия в решении выполнялись, по крайней мере, один раз, все результаты каждого решения выполнялись, по крайней мере, один раз и, кроме того, каждой точке входа передавалось управление, по крайней мере, один раз. Два теста метода покрытия условий а) A=2, B=0, X=4 ace б) A=1, B=1, X=0 abd Другая реализация рассматриваемого примера приведена на рисунке 1.4. Многоусловные решения исходной программы разбиты на отдельные решения и переходы. Наиболее полное покрытие тестами в этом случае выполняется так, чтобы выполнялись все возможные результаты каждого простого решения. Для этого нужно покрыть пути HILP (тест А=2, В=0, Х=4), HIMKT (тест А=3, В=1, Х=0), HJKT (тест А=0, В=0, Х=0), HJKR (тест А=0, В=0, Х=2).. Протестировав алгоритм на рисунке 2.3, нетрудно убедиться в том, что критерии покрытия условий и критерии покрытия решений/условий недостаточно чувствительны к ошибкам в логических выражениях. Рисунок 1.4 1.5 Метод комбинаторного покрытия условий Критерием, который решает эти и некоторые другие проблемы, является комбинаторное покрытие условий. Он требует создания такого числа тестов, чтобы все возможные комбинации результатов условия в каждом решении выполнялись по крайней мере один раз. Набор тестов, удовлетворяющих критерию комбинаторного покрытия условий, удовлетворяет также и критериям покрытия решений, покрытия условий и покрытия решений/условий. По этому критерию в рассматриваемом примере должны быть покрыты тестами следующие восемь комбинаций: а) A> 1, B=0; б)A> 1, B¹ 0; в) A£ 1, B=0; г) А£ 1, B¹ 0; д) A=2, X> 1; е) A=2, X£ 1; ж) А¹ 2, X> 1; з) А¹ 2, X£ 1; Для того чтобы протестировать эти комбинации, необязательно использовать все 8 тестов. Фактически они могут быть покрыты четырьмя тестами: - A=2, B=0, X=4 {покрывает а, д}; - A=2, B=1, X=1 {покрывает б, е}; - A=0, 5, B=0, X=2 {покрывает в, ж}; - A=1, B=0, X=1 {покрывает г, з}. Таблица 2.4 - Результаты тестирования методом комбинаторного покрытия условий
Порядок выполнения практической работы 1. По результатам практической работы№ 1 разработать тестовые наборы для функционального тестирования. 2. Провести тестирование программы и представить результаты в виде таблицы (Таблицы 1.1-1.4) 3. Оформить отчет по лабораторной работе.
Контрольные вопросы 1. Что такое тестирование ПС? 2. Чем тестирование отличается от отладки ПС? 3. Для чего проводится функциональное тестирование? 4. Каковы правила тестирования программы «как черного ящика»? 5. Как проводится тестирования программы по принципу «белого ящика»? 6. Какие методы используются при тестировании программы по принципу «белого ящика»?
Практическая работа №3 Тема: «Отладка программ в ИСР C++ Builder». Цель работы: Научиться отлаживать программы средствами ИСР C++ Builder. Время выполнения: подготовка – 5 мин; выполнение – 75 мин.; проверка – 10 мин; всего – 90 мин. Теоретические часть Выполните щелчок мышью на вертикальной полоске серого цвета идущей по левому краю окна редактора кода. На ней появится кружок красного цвета (рис. 1). Это и есть точка останова. Она находится в начале выделенной красным цветом строки программы. Поэтому программа, после запуска, прекратит выполнение кода точно в начале строки и будет ожидать действий по отладке. Такими действиями могут быть: Пошаговое выполнение программы, Продолжение выполнения программы до конца, Ввод дополнительных точек останова. Пошаговое выполнение программы. Для этого следует нажать кнопку Step Over на панели управления или клавишу клавиатуры F8. Программа будет выполняться построчно. Функции пользователя будут выполняться целиком. Для построчного выполнения внутреннего кода функций пользователя следует нажать кнопку Trace Into на панели управления или клавишу клавиатуры F7. Тогда пошаговое выполнение будет включать и строки функций; Продолжение выполнения программы до конца. Для этого следует нажать кнопку запуска программы (зеленый треугольник) или клавишу F9 (до строки с курсором F4 ); Ввод дополнительных точек останова. После ввода нажимается кнопка запуска для достижения следующего останова или конца программы. Во время прерывания программы в точке останова можно просматривать содержимое переменных и изменять их значение. Просмотр удобно выполнять, останавливая курсор мыши над соответствующей переменной в тексте программы. Изменить переменную можно в окне диалога, запускаемом через меню Run> Evaluate/Modify ( Ctrl+F7 ). Задание Отладьте с помощью средств отладки ИСР C++ Builder» программу, написанную по своему варианту, из практической работы 1. Контрольные вопросы 1. В чем заключается суть отладки пограммно продукта? 2. Как выполняется пошаговая отладка программного модуля в С++ Builder? 3. Как для отладки подключить и строки функций? 4. Что можно посмотреть во время прерывания программы в точке останова? 5. Как можно посмотреть значение переменной при отладке? 6. Как можно изменить значение переменной при отладке?
Практическая работа №4 Тема: «Создание простого приложения». Цель работы: получить первые навыки по созданию Windows-приложения в ИСР C++ Builder. Время выполнения: подготовка – 5 мин; выполнение – 75 мин.; проверка – 10 мин; всего – 90 мин. Описание практической работы Задание 1 Создадим приложение, в котором при щелчке пользователя по кнопке появлялась бы какая-нибудь надпись. 1. Перенесите на пустую формукнопку типа TButton состраницы Standard палитры компонентов. Для этого выделите пиктограмму кнопки и затем щелкните курсором мыши в нужном вам месте формы. 2. Аналогичным образом перенесите на форму с той же страницы Standard палитры компонентов метку Label. В этой метке в процессе выполнения приложения будет появляться текст при нажатии пользователем кнопки. 3. Уменьшите до разумных размеров окно формы, так как в вашем первом приложении никаких других компонентов не будет. 4. Выделите на форме компонент Buttonl. Перейдите в Инспектор Объектов и измените ее свойство Caption (надпись), которое по умолчанию равно Buttonl на «Пуск». 5. Укажите метке Label1, что надписи на ней надо делать жирным шрифтом. Для этого выделите метку, в окне Инспектора Объектов раскройте двойным щелчком свойство Font (шрифт), затем также двойным щелчком раскройте подсвойство Style (стиль) и установите в true свойство fsBold (жирный). 6. Удалите текст в свойстве Caption метки Labell, чтобы он не высвечивался, пока пользователь не нажмет кнопку приложения. Теперь вам осталось только написать оператор, который заносил бы в свойство Caption метки Labell нужный вам текст в нужный момент. Этот момент определяется щелчком пользователя на кнопке. При щелчке в кнопке генерируется событие OnClick. Следовательно, обработчик этого события вы и должны написать. 7. Выделите кнопку Buttonl на форме, перейдите в Инспектор Объектов, откройте в нем страницу событий (Events), найдите событие кнопки OnClick (оно первое сверху) и сделайте двойной щелчок в окне справа от имени этого события. Это стандартный способ задания обработчиков любых событий. Но перейти в обработчик события OnClick (только этого события) можно и иначе: достаточно сделать двойной щелчок на компоненте Buttonl на форме. В обоих случаях вы окажетесь в окне Редактора увидите текст: void fastcall TForml:: Button1Click(TObject *Sender) {
} Заголовок этой функции складывается из имени класса вашей формы (TForml), имени компонента (Buttonl) и имени события без префикса On (Click). 8. Если хотите, можете закрыть окно Исследователя Классов, встроенное в окно Редактора Кода, так как оно пока вам не нужно и будет только мешать. Закрыть это дополнительное окно можно, щелкнув на кнопке в его правом верхнем углу. 9. Напишите в обработчике оператор задания надписи метки Labell. Этот оператор может иметь вид: Labell-> Caption = " Это мое первое приложение! "; Таким образом, полностью ваш обработчик события должен иметь вид: void fastcall TForml:: ButtonlClick(TObject *Sender) { Labell-> Caption = " Это мое первое приложение! "; } 10. Сохраните созданное приложение. Сохранение лучше всего выполнять с использованием пункта File/Save All. Далее вам будет предложено сохранить форму (формы) с именем по умолчанию Unit1 (Unit2, и т.д.), а затем проект с именем Project1. Имена, предлагаемые по умолчанию можно изменять по своему усмотрению, но никогда форма и проект не должны быть названы одинаково. 11. Нажмите клавишу F9, для запуска программы на выполнение. Задание 2 Создать приложение, вид которого представлен на рис.1. При нажатии на первую кнопку надпись на кнопке становится красного цвета; при нажатии на вторую кнопку надпись на кнопке становится синего цвета и при нажатии на третью кнопку надпись на ней должна быть зеленого цвета. Рис. 1 Вид приложения Задание 3 Создайте приложение, которое по кнопке меняет цвет формы, цвет шрифта и сам шрифт в компоненте Labele. Контрольные вопросы 1. Как запустить Borland С++ Builder? 2. Как открыть новый проект (Windows-приложение)? 3. Как выбрать компонент и поместить его на форму? 4. Как запустить приложение на компиляцию? 5. Создайте приложение, которое по кнопке меняет цвет формы, цвет шрифта и сам шрифт в компоненте Labele. Практическая работа №5 Тема: «Настройка свойств формы». Цель работы: познакомиться со свойствами компонента TForm в ИСР С++ Builder. Время выполнения: подготовка – 5 мин; выполнение – 75 мин.; проверка – 10 мин; всего – 90 мин. Теоретическая часть Чтобы начать разработку нового приложения (так принято называть прикладные программы), надо запустить C++ Builder или, если C++ Builder уже запущен, в меню File выбрать команду New › Application. Работа над новым проектом (так в C++ Builder называется разрабатываемое приложение) начинается с создания стартовой формы – главного окна программы. Стартовая форма создается путем изменения значений свойств формы Form 1 (настройки формы) и добавления к форме необходимых компонентов (полей ввода, полей вывода текстовой информации, командных кнопок). Основные свойства формы, которые определяют ее вид и поведение во время работы программы, приведены в табл.1. Таблица 1. Свойства формы (объекта Form)
Для изменения значений свойств объектов, в том числе и формы, используется вкладка Properties (Свойства) диалогового окна Object Inspector. В левой колонке этой вкладки перечислены свойства выбранного объекта, в правой – указаны значения свойств. Некоторые свойства представлены совокупностью значений других (уточняющих) свойств. Например, свойство BorderIcons определяет, какие кнопки управления окном будут доступны во время работы программы. Значения этого свойства определяется совокупностью значений свойств MSystemMenu, biMinimize, biMaximize и biHelp, каждое из которых, в свою очередь, определяет наличие соответствующей командной кнопки в заголовке окна во время работы программы. Перед именами сложных свойств стоит значок " +", в результате щелчка на котором раскрывается список уточняющих свойств (рис. 2.4), значения которых можно задать обычным образом (ввести в поле или выбрать в списке допустимых значений). Форма – это обычное окно. Поэтому размер формы можно изменить точно так же, как размер любого окна Windows, т. е. путем перетаскивания границы. По окончании перемещения границы значения свойств Height и width автоматически изменятся. Они будут соответствовать установленному размеру формы. Положение диалогового окна на экране после запуска программы соответствует положению формы во время разработки, которое определяется значением свойств Tор (отступ от верхней границы экрана) и Left (отступ от левой границы экрана). Значения этих свойств также можно задать путем перемещения формы при помощи мыши. При выборе некоторых свойств, например, Borderstyle, справа от текущего значения свойства появляется значок раскрывающегося списка. Очевидно, что значение таких свойств можно задать путем выбора из списка. В результате выбора некоторых свойств (щелчка кнопкой мыши на свойстве), рядом со значением свойства появляется командная кнопка с тремя точками. Это значит, что задать значение свойства можно в дополнительном диалоговом окне, которое появится в результате щелчка на этой кнопке. Например, значение сложного свойства Font можно задать в окне Object Inspector путем ввода значений уточняющих свойств, а можно воспользоваться стандартным диалоговым окном Шрифт, которое появится в результате щелчка на кнопке с тремя точками. Включаем форму через меню File-New-Form и управляем отображением/скрытием формы через ее свойство Visible или с помощью стандартных методов Show() и Hide() класса TControl. Когда динамических форм в приложении становится много, может оказаться целесообазней не добавлять их все в проект, а создавать программно по мере необходимости, ведь TForm – обычный класс, а значит, имеет конструктор: TForm *f=new TForm(this); f− > Caption=”Новая форма”; f− > Show(); Когда форма стала ненужна, можно удалить её обычным образом: delete f;
Задание 1 Измените свойства формы из лабораторной работы №2 (Задание 1) в соответствии с таблицей 1 Таблица 1. Значения свойств формы
Задание 2 1. Создайте свой значок для формы. Для этого в свойствах формы надо выбрать свойство Icon. 2. Измените цвет формы, сделав его бордовым. 3. Сделайте форму прозрачной. Для этого − свойство AlphaBlend установите в True; − в свойстве AlphaBlendValue установите 127. Контрольные вопросы
Практическая работа №6 Тема: «Обработка исключительных ситуаций в приложениях». Цель работы: научиться обрабатывать исключительные ситуации в приложниях. Время выполнения: подготовка – 5 мин; выполнение – 165 мин.; проверка – 10 мин; всего – 180 мин. Популярное:
|
Последнее изменение этой страницы: 2017-03-08; Просмотров: 1097; Нарушение авторского права страницы