Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по информатике.doc
Скачиваний:
12
Добавлен:
02.05.2019
Размер:
1.07 Mб
Скачать

Список используемой литературы

  1. Заварыкин В.М. Основы информатики и вычислительной техники. –М.: Просвещение, 2009. –207 с.

  2. Информатика. Базовый курс. Учебник для Вузов/под ред. Н.В. Макаровой, - СПб.: Питер, 2000.

  3. Шафрин Ю.А. Основы компьютерной технологии. – М.: АБВ, 2007. – 656 с.

  4. Брябрин В.М. Программное обеспечение персональных компьютеров. М.: Наука, 2009.

  5. Могилев А.В. и др. Информатика. – М., 1999. – 816 с.

Тема: «Операторы перехода по условию» Управление программой по прерываниям.

Программы в Visual Basic управляются по прерываниям.

Написанные вами программы отображают меню, объекты, диалоговые окна и дают возможность пользователю манипулировать элементами на экране. Программа выводит необходимую информацию, терпеливо ожидает реакции пользователя, а затем обрабатывает введенные им данные. Среди программистов такой принцип работы называется управлением по прерываниям. При построении программы вы создаете ряд «умных» объектов, которые умеют взаимодействовать с пользователем, а затем обрабатываете введенные данные с помощью процедур, ассоциированных с этими объектами. На следующей диаграмме показано, как программа с управлением по прерываниям работает в Visual Basic.

В

Возврат управления пользователю

ходные данные в программе могут поступать и от системных устройств самого компьютера. Например, ваша программа должна отслеживать момент прихода электронной почты или отсчитывать определенный период времени по системным часам. Эти события вызываются компьютером, а не пользователем. Вне зависимости от причины возникновения события, Visual Basic реагирует на него, вызывая процедуру обработки прерывания, ассоциированную с объектом, распознающим это событие. Хотя до этого вы имели дело в основном с событиями Click (Щелчок) и Change (Изменение), объекты Visual Basic могут работать с несколькими типами событий.

Принцип работы с управлением по прерываниям в Visual Basic означает, что большинство вычислений в ваших программах будет выполняться процедурами обработки прерывания (события). Эти связанные с событиями программные блоки осуществляют обработку входных данных, вычисление новых значений, отображение выходных данных, а также управление другими задачами. На предыдущем занятии вы научились использовать переменные, операторы и математические формулы для выполнения вычислений в ваших процедурах обработки событий. Сейчас вы узнаете, как использовать структуры с условиями для сравнения переменных, свойств и значений, а также как выполнять тот или иной программных блок в зависимости от полученного результата. На следующем занятии вы познакомитесь с циклами, используемыми для выполнения группы операций. Количество повторений цикла задается условием. Эти структуры для управления потоком данных будут весьма полезны при построении ваших процедур, поскольку охватывают практически все возможные ситуации.

События, поддерживаемые объектами Visual Basic

К аждому объекту в Visual Basic соответствует определенный набор событий. Для каждого объекта эти события содержатся в открывающемся списке Ргос (Процедуры) в окне текста программы Code. Вы можете написать процедуру обработки прерывания для каждого из этих событий и, в том случае, если событие имеет место в программе, Visual Basic выполняет связанную с ним процедуру обработки прерывания. Например, объект «список» поддерживает события Click, DblClick, DragDrop, DragOver, GotFocus, ItemCheck, KeyDown, KeyLIp, LostFocus, MouseDown, Mo use Move, MouseUp, OLEComleteDrag, OLEDragDrop, OLEDragOver, OLEGiveFeedBack, OLESetData, OLEStartDrag, и Scroll. Возможно, вам понадобится для вашей программы только одно или два из этих событий, но следует знать, каким богатым выбором элементов для организации вашего интерфейса вы располагаете. На рисунке показана часть списка событий для объекта «список» в окне Code.

Использование выражений с условиями.

Условные выражения запрашивают о значении Истина (True) или Ложь (False).

Одним из наиболее полезных средств, используемых при обработке ин­формации в процедуре, являются условные выражения.

Условное выражение представляет собой часть программного оператора, запрашивающую об истинности или ложности свойства, переменной или другого элемента данных в тексте программы. Например, условное выражение Price < 100 имеет значение True (Истина), если переменная Price содержит значение, меньшее 100, или имеет значение False (Ложь), если переменная Price содержит значение большее или равное 100.

В условных выражениях можно использовать операторы сравнения: = равно, <> не равно, > больше, < меньше, >= больше или равно, <= меньше или равно.

Выражения, принимающие значения True (Истина) или False (Ложь), также известны как Булевы выражения, а результат True (Истина) или False (Ложь) может быть присвоен Булевой переменной или свойству. Вы можете присвоить Булево значение определенному свойству объекта, переменной типа вариант или Булевой переменной, созданной с использованием оператора Dim с ключевыми словами As Boolean.

В таблице приведены некоторые условные выражения и их результаты. В следующем упражнении вы используете эти операторы.

Условное выражение

Результат

10<>20

True (Истина) (10 не равно 20)

Score < 20

True (Истина), если Score меньше 20; в противном случае

False (Ложь)

Score = Labell . Caption

True (Истина), если свойство Caption объекта Label1

содержит то же значение, что и переменная Score;

в противном случае False (Ложь).

Text1.Text = "Список"

True (Истина), если слово Список является содержимым

первого текстового поля; в противном случае False (Ложь).

Структура с условием If...Then

Структура с условием If.. .Then позволяет использовать логические значения в вашей программе.

Условные выражения дают возможность управлять порядком выполнения операторов в программе, если эти выражения используются внутри специального блока операторов, известного как структура с условием. Структура с условием If...Then позволяет анализировать логические значения выражений и выполнять определенные действия в зависимости от результата. В простейшем случае структура с условием If...Then записывается в виде одной строки:

If условие Then оператор,

где условие представляет собой условное выражение,

а оператор— оператор Visual Basic. Например, оператор

If Score >= 20 Then Label1.Caption = "Вы победили!"

является структурой с условием If...Then, использующей условное выражение Score >= 20 для указания программе, нужно ли устанавливать для свойства Caption объекта Label1 значение «Вы победили!». Если переменная Score содержит значение, которое больше или равно 20, Visual Basic устанавливает свойство Caption; в противном случае оператор присвоения пропускается, а выполняется следующий оператор в тексте программы. Результатом этого вида сравнения будет значение True (Истина) или False (Ложь).

Проверка нескольких условий в структуре с условием If..-Then

Visual Basic также поддерживает структуру с условием If...Then, в которую может быть включено несколько условных выражений. Такой блок операторов может состоять из нескольких строк и содержать важные ключевые слова Elself, Else, End If.

Операторы Elself и Else позволяют задавать дополнительные ограничения в структуре с условием If...Then. Синтаксис структуры следующий:

If условие 1 Then

операторы, выполняемые если условие 1 истинно

Elself условие2 Then

операторы, выполняемые если условие 2 истинно

[Здесь могут находиться дополнительные блоки Elself и операторы]

Else

операторы, выполняемые если ни одно из условий не является истинным

End If

В этой структуре условие1 вычисляется первым. Если оно имеет значение True (Истина), выполняется расположенный за ним блок операторов. (Здесь может быть как один, так и несколько программных операторов.) Если первое условие не имеет значение True (Истина), вычисляется второе условное выражение (условие2). Если второе условие имеет значение True (Истина), выполняется второй блок операторов. (Вы можете ввести дополнительные условные операторы Elself и блоки при анализе большего числа условий.) Наконец, если ни одно из условных выражений не принимает значение True (Истина), выполняются операторы под ключевым словом Else. На закрытие структуры указывают ключевые слова End If.

Многострочные структуры If...Then прекрасно подходят для вычисления значений, относящихся к разным диапазонам, например при расчете налогов.

Следующий фрагмент программы иллюстрирует использование многострочной структуры If...Then для расчета платежей с прогрессивным тарифом.

If Adjustedlncome <= 23350 Then ' 15% налогов

TaxDue = Adjustedlncome * 0.15

Elself Adjustedlncome <= 56550 Then ' 28% налогов

TaxDue = 3502 + ((Adjustedlncome -23350)* 0.28)

Elself Adjustedlncome <= 117950 Then '31% налогов

TaxDue = 12798 + ((Adjustedlncome-56550)* 0.31)

Elself Adjustedlncome <= 256500 Then ' 36% налогов

TaxDue = 31832 + ((Adjustedlncome -117950)* 0.36)

Else ' 39.6% налогов

TaxDue = 81710 + ((Adjustedlncome-256500)* 0.396)

End If

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

Внимание! Порядок следования условных выражений в структуре If...Then очень важен. Если вы измените порядок, условных выражений в приведенном выше примере расчета платежей (допустим, расположите их в об­ратном порядке), плательщики, ставки для которых составляют 15, 28 и 31 процент, будут платить по ставке 36 процентов, поскольку их доход меньше или равен 256 500. (Visual Basic останавливается на первом же выражении, имеющем значение True (Истина), даже если остальные выражения также истинны.) Поскольку для всех условных выражений в примере используется одна и та же переменная, ставки платежей следует располагать в возрастающем порядке, чтобы уровень платежей соответствовал уровню дохода. Вывод: при использовании нескольких условных выражений будьте особенно внимательны.

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

Идентификация пользователя с помощью структуры If...Then

1 . Создайте программу с формой как показано на рисунке

2. Напишите следующий код программы:

Private Sub Command1_Click()

UserName = InputBox("Введите Ваше имя.")

If UserName = "Маша" Then

MsgBox ("Добро пожаловать, Маша! Готовы к включению Вашего PC?")

Form1.Picture = LoadPicture("c:\vb6sbs\.... \pcomputr.wmf") ‘Какой то файл с рисунком

ElseIf UserName = "Алексей" Then

MsgBox ("Добро пожаловать, Алексей! Готовы к показу Вашей картотеки?")

Form1.Picture = LoadPicture("c:\vb6sbs\....... \rolodex.wmf") ‘Какой то файл с рисунком

Else

MsgBox ("Извините! Я Вас не знаю")

End 'Завершение программы

End If

End Sub

Примечание. Длина одной строки в тексте программы в окне Code Visual Basic может составлять до 1023 символов. Однако гораздо удобнее, если длина строки не превосходит 80 символов. С помощью символа (_) вы можете разбивать длинные команды и операторы на несколько строк, помещая этот символ в конце каждой из строк кроме последней. (Тем не менее, вы не можете использовать символ переноса строки, заключенной в кавычки.)

В этой программе метафайл Windows непосредственно загружается в форму с использованием свойства Picture (Рисунок). (Формы, как и объекты изображений и рисунков, имеют свойство Picture.) При загрузке графического изображения в форму оно отображается на заднем плане. Все видимые элементы управления формы располагаются на переднем плане.

3. Сохраните форму под именем MyLogin.frm, а проект - под именем MyLogin.vbp.

Использование логических операторов в условных выражениях

Логические операторы позволяют вам проверять условия.

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

Логическая операция Действие

And

Если оба условных выражения имеют значения True (Истина),

то результирующим значением также будет True (Истина).

Or

Если одно из условных выражений имеет значение True (Истина),

то результирующим значением также будет True (Истина).

Not

Если условное выражение имеет значение False (Ложь),

то результирующим значением будет True (Истина) и наоборот.

Xor

Если одно и только одно условное выражение имеет значение

True (Истина), то результирующим значением будет True (Истина)

все другие случаи - результирующим значением

будет False (Ложь).

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

В следующей таблице приведены некоторые примеры действий логических операторов. В этих выражениях подразумевается, что переменная Vehicle содержит значение «Велосипед», а переменная Price содержит значение 200.

Логическое выражение

Результат

Vehicle = "Велосипед" And Price < 300

True (Истина) (оба выражения имеют значения

True (Истина))

Vehicle = "Машина" Or

Price < 500

True (Истина) (одно условие имеет значения

True (Истина))

Not Price < 100

True (Истина) (условие имеет значения False (Ложь)).

Vehicle = "Велосипед" Xor

Price < 300

False (Ложь) (оба условия имеют значения

True (Истина)).

В следующем упражнении вы модифицируете программу MyLogin, чтобы она предлагала ввести пароль для идентификации пользователя. Для ввода пароля будет использоваться диалоговое окно, а затем вы измените структуру If...Then и оператор Elseif, чтобы в них для проверки пароля использовалась операции And, Or или Xor.

Структуры с условием Select Case

Структуры с условием Select Case позволяют сделать выбор среди нескольких вариантов в программе в зависимости от значения условного выражения.

Visual Basic позволяет контролировать выполнение операторов в вашей программе с помощью структуры с условием. Ранее вы уже использовали структуру Select Case при написании процедур обработки полей со списком, полей с альтернативным выбором и для выбора пункта из меню. Структура Select Case похожа на структуру lf...Then...Elself, но она более эффективна в том случае, если ветвление зависит от значения только одной ключевой переменной. Вы также можете использовать структуру Select Case, чтобы ваша программа была более эффективной и удобочитаемой.

Синтаксис структуры Select Case следующий:

Select Case переменная

Case значение1

Программные операторы, выполняемые при условии совпадения значения1 и переменной

Case значепие2

Программные операторы, выполняемые при условии совпадения зкачения2 и переменной

Case значение3

Программные операторы, выполняемые при условии совпадения значения3 и переменной

End Select

Структура Select Case начинается ключевыми словами Select Case и заканчи­вается ключевыми словами End Select. Вместо слова переменная вы можете использовать переменную, свойство или другое выражение, которое является ключевым значением, или проверяемым условием выбора, для данной структуры. Вместо слов значение1, значение2 и значение3 можно использовать числа, текстовые строки или другие переменные, относящиеся к проверяемому условию. Если одно из этих значений соответствует значению переменной, выполняются операторы, относящиеся к соответствующему оператору Case, после чего Visual Basic продолжает выполнение программы с операторов, следующих за End Select. Вы можете использовать любое количество операторов Case в структуре, а также использовать более одной переменной для операторов Case. При использовании нескольких переменных в операторе выбора отделяйте их запятыми.

В приведенном ниже примере демонстрируется использование структуры

Select Case для вывода программой нужного сообщения, характеризующего тот или иной возраст человека. Если значение переменной Age совпадает со значением в одном из операторов Case, в поле метки отображается соответствующее сообщение.

Select Case Age

Case 14 Labell .Caption = "Вы уже можете получить паспорт!"

Case 16 Labell .Caption = "Вы уже можете водить машину!"

Case 18 Label1 .Caption = "Вы уже можете принимать участие в выборах!"

Case 21 Labell.Caption = "Вы можете пить вино за обедом."

Case 60 Label1.Caption = "Вы можете уйти на пенсию и наслаждаться жизнью!"

End Select

Структура Select Case выглядит более удобной для восприятия, чем со­ответствующая структура If...Then.

Структура Select Case также поддерживает вариант Case Else, используемый в том случае, если ни одно из значений не соответствует значению переменной в заголовке структуры.

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

Если возраст =14, то выдается сообщение "Вы уже можете получить паспорт!"; если возраст =16, то выдается сообщение "Вы уже можете водить машину!"; если возраст =18, то выдается сообщение "Вы уже можете принимать участие в выборах!"; если возраст = 21, то выдается сообщение "Вы можете пить вино за обедом."; если возраст =60, то выдается сообщение "Вы можете уйти на пенсию и наслаждаться жизнью!"; в остальных случаях выдается сообщение "У вас солидный возраст! Гордитесь этим!!". Для последнего утверждения используйте следующее:

Case Else

Labell .Caption = "У вас солидный возраст! Гордитесь этим!!"

Использование операций сравнения в структуре Select Case

Структура Select Case, как и структура If.. .Then, допускает использование операций сравнения.

Visual Basic позволяет вам использовать операции сравнения, чтобы иметь возможность проверки по нескольким критериям в структуре Select Case. В качестве операции сравнения Visual Basic используются операторы =,<>, >, <, >=, и <=. Чтобы использовать операции сравнения, нужно включить в выражение ключевое слово Is или ключевое слово То. Ключевое слово Is дает указание компилятору сравнить значение проверяемой переменной со значением выражения, следующего после слова Is. Ключевое слово То задает диапазон значений. В следующей структуре используются ключевые слова Is, To и несколько операций сравнения для проверки переменной Age и отображения одного из пяти сообщений:

Select Case Age

Case Is < 13 Label1 .Caption = "Радуйтесь детству!"

Case 13 To 19 Labell.Caption = "Радуйтесь юности!"

Case 23 Label1.Caption = "Вы должны уже закончить институт"

Case Is > 100 Label1.Caption = "Прекрасно выглядите!"

Case Else Label1.Caption = "Прекрасный возраст."

End Select

Реализуйте этот пример на ЭВМ.

Если значение переменной Age меньше 13, отображается сообщение «Ра­дуйтесь детству!». Если значение переменной Age находится в диапазоне от 13 до 19, отображается сообщение «Радуйтесь юности!». В случае, если возраст равен 23 году, выводится сообщение «Вы должны уже закончить институт». Если возраст больше 100, выдается сообщение «Прекрасно выглядите!». Если значение возраста не равно ни одному из предложенных диапазонов значений, выводится сообщение «Прекрасный возраст».

Структура Select Case обычно гораздо лучше воспринимается, чем эквивалентная ей структура If.. .Then, она также гораздо более эффективна в случае трех и более возможных разветвлений в программе в зависимости от значений одной переменной. Тем не менее, если вам необходимо выполнить две или более операций сравнения, или если вы работаете с несколькими различными переменными, вам, вероятно, удобнее будет использовать структуру If...Then.

В следующем упражнении вы увидите, как используется структура Select Case для обработки входных значений из поля со списком. Вы используе­те свойства Listl.Text и List1.Listlndex для получения входных данных, а затем воспользуетесь структурой Select Case для отображения приветственного сообщения на одном из четырех языков.

Реализуйте форму, как показано на рисунке с 4 метками (см.таблицу)

Объект

Свойство

Устанавливаемое значение

Labell

Caption (Надпись)

Font (Шрифт)

Международная программа приветствий

Times New Roman, Bold, 14-point

Label2

Caption (Надпись)

Выберите страну

Label3

Caption (Надпись)

(Пусто)

Label4

Caption(Надпись) BorderStyle(Тип рамки) ForeColor(Цвет надписи)

(Пусто)

1 - Fixed Single (Одинарная сплошная линия)

Dark red (Темно-красный) (&Н00000080&)

Command1

Caption (Надпись)

Выход

2 . Введите текст программы для события Form_Load

List1.AddItem "Англия

List1.AddItem "Германия"

List1.AddItem "Испания"

List1.AddItem "Италия"

List1.AddItem "Россия"

3. Введите текст программы для события

Listl _Click

Label3.Caption = List1.Text

Select Case List1.Listindex

Case 0 Label4.Caption = "Hello, programmer"

Case 1 Label4.Caption = "Hello, programmierer"

Case 2 Label4.Caption = "Hola, programador"

Case3 Label4.Caption = "Ciao, programmator"

Case 4 Label4.Caption = "Привет, программист"

End Select

Первая строка осуществляет копирование выделенного элемента списка в свойство надписи для третьего поля метки в форме. Присвоение осуществляется с помощью оператора Listl.Text, который содержит текст выбранного элемента списка. Остальные операторы являются составными частями структуры с условием Select Case. Структура использует свойство Listl .Listindex в качестве проверяемого условия и сравнивает его с различными значениями. Свойство Listindex всегда содержит номер выбранного элемента в списке; первый элемент имеет номер 0 (нуль), второй элемент имеет номер 1, третий элемент имеет номер 2, и т.д. С помощью свойства Listindex структура Select Case может быстро идентифицировать выбор пользователя и отобразить в форме нужно приветственное сообщение.

Поиск и исправление ошибок

Процесс поиска и исправления ошибок в программе называется отладкой.

Вы наверняка уже совершали ошибки в программах, которые могли быть простыми опечатками или синтаксическими ошибками. Но что делать, если в вашей программе обнаружилась более сложная проблема, которую вы не можете выявить и исправить обычным просмотром объектов, свойств и операторов? В программном окружении Visual Basic имеется несколько средств, которые вы можете использовать для отслеживания и исправления ошибок в ваших программах. Эти средства не в состоянии отучить вас делать ошибки вообще, но они облегчают поиск и исправление уже сделанных ошибок.

Рассмотрим следующую структуру с условием If.. .Then, в которой вычис­ляются значения двух условных выражений, после чего, исходя из полученного результата, отображается одно из двух сообщений:

If Age > 13 AND Age < 18 Then Text2.Text = "Вы юный человек"

Else Text2.Text = "Вы не юный человек."

End If

П равильно ли будет работать эта структура? Юный человек - это человек, чей возраст находится между 13 и 18 годами, но структура не предусматривает случай, когда возраст человека равен 13 годам. (В этом случае будет выдано ошибочное сообщение «Вы не юный человек».) Эта ошибка не относится к синтаксическим (определенным правилам записи операторов в Visual Basic); это логическая ошибка. Правильнее было бы использовать в условии структуры If ...Then оператор «больше или равно» (>=):

If Age >= 13 AND Age < 20 Then

Как ни странно, такой тип ошибок наиболее часто встречается в программах Visual Basic. Ситуацию, когда ошибка проявляется не всегда, а лишь при определенных условиях, очень трудно выявить и исправить.

Составьте программу для формы со следующим кодом

Private Sub Command1_Click()

Age = Text1.Text

If Age > 13 AND Age < 18 Then Text2.Text = "Вы юный человек"

Else Text2.Text = "Вы не юный человек."

End If

End Sub

Private Sub Command2_Click()

End

End Sub

Отладка программы. Три вида ошибок.

В программах Visual Basic возможны три вида ошибок: синтаксические, ошибки выполнения программы и логические ошибки.

Синтаксическая ошибка (или ошибка при компиляции) представляет собой ошибку в программе, которая нарушает правила Visual Basic (например, неправильное написание свойства или ключевого слова). Visual Basic указывает на некоторые типы синтаксических ошибок при вводе текста программы. Visual Basic не позволит запустить программу, если в ней не устранены синтаксические ошибки.

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

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

Использование режима останова при выполнении программы с помощью команды Break.

Режим останова Break дает возможность оценить правильность выполнения вашей программы.

Один из способов идентификации логических ошибок состоит в пошаговом режиме выполнения вашей программы, когда за один раз выполняется только одна инструкция, и вы можете просмотреть значения переменных или свойств, в процессе их изменения. Для этого требуется установить режим работы с остановом в контрольных точках при выполнении программы, а затем наблюдать текст программы в окне Code. Режим останова в контрольных точках позволяет вам анализировать ход выполнения программы компилятором Visual Basic. Это все равно, что поставить кресло за спиной пилота и наблюдать за его действиями при пилотировании самолета. Но в этом случае вы всегда можете взять управление на себя.

Для отладки ваших приложений вы должны открыть панель инструментов Debug (Отладка), кнопки которой позволяют вам управлять процессом отладки. Вам также может понадобиться открыть окно Watches (Наблюдение), в котором отображаются значения интересующих вас переменных. Вы можете воспользоваться и окном Immediate (Непосредственное выполнение), чтобы вводить программные операторы и немедленно оценивать их действие.

Н а следующем рисунке показана панель инструментов Debug (Отладка), которую можно отобразить, выбрав команду Toolbars (Панели инструмен­тов) и щелкнув на строке Debug (Отладка).

В следующем упражнении вы используете режим останова для поиска и исправления логической ошибки, обнаруженной вами ранее в структуре с условием If...Then. Чтобы выявить ошибку, вы воспользуетесь кнопкой Step Into (Войти в инструкцию) на панели инструментов Debug (Отладка) для пошагового выполнения инструкции, а также используете кнопку Quick Watche (Быстрый просмотр переменных) на панели инструментов Debug (Отладка) для просмотра текущего содержимого переменной Age. Обратите особое внимание на стратегию процесса отладки. Вы можете использовать ее в дальнейшем для поиска ошибок в ваших собственных программах.

Отладка программы

1. Откройте проект созданный Вами в ходе самостоятельного задания

2. Если форма не видна, выделите форму в окне Project (Проект), а затем щелкните на кнопке View Object (Просмотр объекта). Появится форма для Вашей программы. Эта программа запрашивает у пользователя сведения о возрасте. Если пользователь щелкнет на кнопке Тест, программа скажет, является ли пользователь юным, или нет. В программе имеется уже рассмот­ренная нами проблема с определением статуса для 13-летних.

3. Откройте панель инструментов Debug (Отладка) и используйте режим пошагового выполнения для обнаружения ошибки.

В меню View (Вид) укажите на команду Toolbars (Панели инструментов) и щелкните на строке Debug (Отладка), если она не отображена. Появится панель инструментов Debug (Отладка). (Она должна появиться справа от стандартной панели инструментов.)

4. Щелкните на кнопке Start (Пуск) на панели инструментов Debug (Отладка).

5. Программа начнет работу. В поле Возраст (Age), введите число 14, затем щелкните на кнопке Тест. Программа отобразит сообщение «Вы юный человек.». Этот результат соответствует истине.

6. Введите число 13 в текстовое поле Возраст (Age), затем щелкните на кнопке Тест. Программа отобразит сообщение «Вы не юный человек»

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

7. Щелкните на кнопке Break (Останов) на панели инструментов Debug (Отладка). (Она расположена справа от кнопки Start (Пуск).) Программа будет остановлена, a Visual Basic отобразит окно Code, в котором вы увидите текст программы по мере ее выполнения Visual Basic.

В аш экран должен выглядеть так, как показано на рисунке.

8. Щелкните на кнопке Step Into (Войти в инструкцию) на панели инструментов Debug (Отладка), чтобы выполнить следующий оператор в программе. Visual Basic отобразит форму ввода и будет ждать ввода данных.

9. Щелкните на форме на панели задач Windows, убедитесь, что число 13 по-прежнему находится в текстовом поле, затем щелкните на кнопке Тест. Поскольку Visual Basic находится в режиме пошагового выполнения, случится нечто не совсем обычное. Visual Basic откроет окно Code и отобразит про­цедуру обработки прерывания Commandl_Click вместо того, чтобы выполнить программу. Первый оператор в процедуре выделен желтым цветом. Тем самым вы можете видеть, как работает логика в вашей программе.

10. Щелкните на кнопке Step Into (Войти в инструкцию) для выполнения первого оператора в процедуре. Будет выполнен оператор Sub, а оператор, присваивающий значение переменной Age, будет выделен. Переменная Age является проверяемым условием в этой программе, поэтому вы поместите ее в окно Watches (Наблюдение), чтобы видеть, как изменяется ее значе­ние в ходе выполнения программы. Когда ваша программа работает в пошаговом режиме, вы можете про­верить значение переменной в окне Code, указав на переменную и удерживая нажатой кнопку мыши.

11. Выделите переменную Age с помощью мыши, затем щелкните на кнопке Quick Watch (Быстрый просмотр переменных) на панели инструментов Debug (Отладка). На экране появится диалоговое окно, в котором будет содержаться имя переменной, ее значение, тип и назначение. Это диалоговое окно отображается также, если вы щелкнете на команде Quick Watch (Быстрый просмотр переменных) в меню Debug (Отладка).

В окне Watches (Наблюдение) отображаются переменные, введенные с

помощью команды Quick Watch (Быстрый просмотр переменных).

12. Щелкните на диалоговом окне Quick Watch (Быстрый просмотр переменных). В нижней части экрана появится окно Watches (Наблюдение). (Для того чтобы увидеть все содержимое окна, вам может понадобиться увеличить его размеры). В настоящий момент переменная Age не имеет значения, поскольку она будет использоваться позднее в процедуре обработки прерывания. (Поскольку переменная Age не была объявлена в качестве глобальной в программе, она используется как локальная переменная для процедуры и повторно инициали­зируется при каждом новом вызове процедуры.) Чтобы удалить наблюдаемую переменную из окна Watches (Наблюдение), щелкните на переменной в окне Watches (Наблюдение), а затем нажмите клавишу | Del |.

13. Щелкните на кнопке Step Into (Войти в инструкцию) для выполнения следующей инструкции. Visual Basic скопирует число 13 из текстового поля в переменную Age, а значение переменной Age в окне Watches (Наблюдение) будет обновлено. Visual Basic выделит теперь первый оператор в структуре If.. .Then, который является наиболее важным (и ошибочным) оператором в программе. Поскольку 13-летний человек является юным, Visual Basic должен бы выполнить оператор, следующий за ключевым словом Then после вычисления условия. Если структура с условием выполняется неправильно, ищите ошибку в условном выражении и по возможности попытайтесь ее исправить.

14. Щелкните на кнопке Step Into (Войти в инструкцию) снова. Visual Basic выделит оператор Else в структуре If...Then. Сообщение не соответствует значению, и вы должны обнаружить и исправить ошибку. (Visual Basic окажет вам помощь в выявлении несоответствия, но найти и устранить причину вы должны сами.) В данном случае причина вам известна. В первой операции сравнения необходимо использовать оператор >=

15. Щелкните мышью сразу за оператором > в инструкции If.. .Then и введите =. Visual Basic позволяет находить ошибки при пошаговом режиме работы, но если вы внесете изменения в уже выполненные операторы, эти исправления не будут проявляться до тех пор, пока вы не запустите данные операторы на выполнение. Чтобы проверить правильность внесенных исправлений, вам надо будет снова щелкнуть на кнопке Тест.

16. Щелкните на кнопке Step Into (Войти в инструкцию) три раза. Visual Basic завершит выполнение структуры с условием. Щелкните на кнопке Start (Пуск), которая теперь называется Continue (Продолжить) на панели инструментов Debug (Отладка), чтобы снова выполнить программу уже в нормальном режиме. Снова появится форма. Щелкните на кнопке Тест, чтобы проверить работу исправленной программы. Проверьте появление сообщения «Вы юный человек.» в поле вывода, затем щелкните на кнопке Выход для останова программы.

Шаг вперед: использование оператора Stop для перехода в пошаговый режим

Вы можете перейти в пошаговый режим, использовав оператор Stop. Если вам точно известно место в программе, в котором вы хотите перейти в режим пошагового выполнения для отладки программы, вы можете вос­пользоваться оператором Stop, поместив его в это место. При этом выпол­нение программы будет приостановлено, и откроется окно Code. Напри­мер, вместо щелчка на кнопке Break (Останов) вы можете установить режим пошагового выполнения для рассмотренной ранее программы, вставив оператор Stop начале процедуры обработки прерывания Command1_Click, как показано ниже:

Private Sub Command1_Click ()

Stop 'ввод режима останова

If Age >= 13 And Age < 20 Then Text2.Text = "Вы юный человек"

Else Text2.Text = "Вы не юный человек"

End If

End Sub

При запуске программы, в которой имеется оператор Stop, Visual Basic переходит в режим останова после выполнения оператора Stop. В режиме останова вы можете использовать окно Code и панель инструментов Debug (Отладка), как вы это делали при переходе в режим останова вручную. Закончив отладку, можно удалить оператор Stop из текста программы.