Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба4

.doc
Скачиваний:
1
Добавлен:
22.11.2018
Размер:
188.93 Кб
Скачать

9

Лабораторная работа №4

Тема: Операторы перехода по условию. Средства организации цикла.

Цель: Познакомиться с логикой управления последовательностью выполнения программ приложения. Изучить технические средства организации циклических процедур.

Без операторов управления все операторы программы будут выполняться слева направо и сверху вниз. Программы не являются монолитным набором операторов, каждый раз производящим одни и те же вычисления. Ход вычислений корректируется в зависимости от входных данных, внешних условий, типа щелчка мыши, настройки периферийных устройств и от аварийных ситуаций, генерируемых самой программой. Поскольку компьютер работает с нулями и единицами, он может использовать их для представления условий «истина» и «ложь». Двоичный ноль обозначает условие «ложь», 1 – «истина». Используя различные комбинации выражений и логических операторов, можно выполнять разнообразные сложные действия – выводить графику высокого разрешения, создавать специальные эффекты и осуществлять шифрование.

Условные выражения представляют собой часть программного оператора, запрашивающую об истинности или ложности свойства, переменной или другого элемента данных в тексте программы. В условных выражениях можно использовать операторы сравнения: = равно, <> неравно, > больше, < меньше, >= больше или равно, <= меньше или равно. Выражения, принимающие значения Истина (True) или Ложь (False), также известны как Булевы выражения, а результат Истина (True) или Ложь (False) может быть присвоен Булевой переменной или свойству. Visual Basic поддерживает следующие конструкции принятия решения:

  1. If …Then

  2. If … then … Else

  3. Select Case

Оператор ifThen применяется, когда необходимо выполнить один или группу операторов в зависимости от некоторого условия. При этом вычисляется условие, и если оно равно «Истина», то выполняется оператор, следующий за ключевым словом Then. Синтаксис оператора If допускает запись как в одну, так и в несколько строк (блочная форма).

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

If «условие» Then

«операторы»

end if

Упражнение 1

1. Открыть новый проект и присвоить ему имя «Условие».

2. Включить в состав приложения два текстовых окна и три командных кнопки (рис.1).

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

Управляющие элементы

Имя

Свойства

Форма

Frm1If

Caption = Простая конструкция

Текстовое окно 1

Txt1In

Text = “”

Текстовое окно 2

Txt2Out

Text = “”

Командная кнопка 1

Cmd1If

Caption = Условие 1

Командная кнопка 2

Cmd2If

Caption = Условие 2

Командная кнопка 3

Cmd3

Caption = Выход

4. В секции General формы объявить следующие переменные:

Dim y As Single : Dim x As Single

5 Текстовое окно 1 будет использоваться для ввода данных. Щелкнуть дважды мышью в поле текстового окна и в появившемся кодовом окне процедуры Txt1In_Change() записать код

x = Val(Txt1In.Text) ‘ ввод значения x

6.В кодовом окне кнопки c именем CmdIf1 для процедуры CmdIf1_Click записать код:

Print x : y = 10

If x = y Then Txt2Out.BackColor = vbGreen: Txt1In.Text = ""

Введенное значение х сравнивается со значением переменной y. Если это условие выполняется, то поле текстового окна (фон окна) окрашивается в зеленый цвет, а поле текстового окна 1 очищается.

7. В кодовом окне кнопки c именем Cmd2If для процедуры Cmd2If_Click записать программный код:

Dim z as single

z = 5

If x= z Then

Txt2Out.BackColor = vbRed: Txt1In.Text = ""

End if

В примере проверяется условие равенства переменных x и z. Если условие истинно, то фон текстового окна 2 окрашивается в красный цвет, а окно ввода данных - очищается.

8. В процедуре для кнопки Cmd3 записать оператор End

9. Запустить приложение. Задавая различные значения х в окне ввода данных, согласно таблице и нажимая поочередно кнопки 1 и 2, отметить работу приложения.

X

2

5

10

Txt2BackColor

Не окрашен

Красный

Зеленый

10. Сохранить приложение.

Если требуется проверить выполнение сразу нескольких условий, применяются условные выражения с использованием логических операторов. Логические операторы имеют значение только для логических типов данных: Истина (True) или Ложь (False).

Логическая операция

Действие

And

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

Or

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

Not

Если условное выражение имеет значение Истина (True), то результирующим значением будет Ложь (False). Если условное выражение – Ложь (False), то результирующим значением будет Истина (True).

Xor

Если только одно условное выражение имеет значение Истина (True), то результирующим значением будет Истина (True). Если оба выражения одинаковые, то результирующим значением будет Ложь (False).

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

Условный оператор IFTHENElse определяет несколько блоков операторов, один из которых будет выполняться в зависимости от условия Синтаксис:

IF <условие1> Then

<операторы - 1>

[Elseif <условие2 > Then

<операторы-2>]….

[ELSE

<операторы - n>]

END IF

Сначала проверяется <условие1>, если истинное, то выполняется блок операторов, следующий за then и затем передает управление строке, следующей за оператором End if. Если условие ложно, то проверяется <условие2>. Блок операторов, следующий после ключевого слова Else, выполнится, если неверно ни одно из условий. В данной конструкции может быть любое число блоков Elseif, или даже ни одного. Блок Else можно включать независимо от присутствия или, наоборот, отсутствия блоков Elseif.

Упражнение 2 Выбор корма.

1. Добавить к проекту форму с именем Frm2Animal

2. Расположить на форме два текстовых окна и две командных кнопки со свойствами:

Элементы управления

Имя

Свойство

Форма

Frm2Animal

Caption = Конструкция If…Then …Else

Текстовое окно 1

Text1

Text = “”

Текстовое окно 2

Text2

Text = “”

Командная кнопка 1

Cmd1

Caption = Выбор корма

Командная кнопка 2

Cmd2

Caption = Выход

3. Окно приложения в этом случае должно иметь вид примерно как на рис 2.

4. Щелкнуть в поле текстового окна 1 и в кодовом окне процедуры Text1_Change записать код: animal = Text1.text

5. В кодовом окне процедуры Cmd2_Click записать: End.

6. В кодовом окне процедуры Cmd_Click поместить программный код:

Private animal, foot As String

Private Sub Cmd1_Click()

If animal = "Кошка" Then

foot = "Рыба"

ElseIf animal = "Кролик" Then

foot = "Капуста"

ElseIf animal = "Лев" Then

foot = "Мясо"

End If

Text2.Text = foot

End Sub

7. Установить в качестве загружаемой формы форму с именем Frm2Animal.

8. Запустить приложение. Вводя соответствующее название животного, убедиться в правильной работе приложения.

Можно добавить любое число блоков Elseif в конструкции If …. Then Else, однако количество блоков ElseIf может стать настолько большим, что конструкция If …. Then станет очень громоздкой и неудобной. В этой ситуации следует применять другую конструкцию принятия решений - Select Case. Оператор с условием Select Case позволяет сделать выбор среди нескольких вариантов в программе в зависимости от значения условного выражения.

Синтаксис:

SELECT CASE <переменная>

CASE <значение 1>

<блок операторов 1, выполняемый при условии совпадения значения 1 и переменной>

[CASE <значение i>

<блок операторов i, выполняемый при условии совпадения значения i и переменной >]

[CASE ELSE <блок операторов>]

END SELECT

где <переменная> – переменная, свойство или другое выражение, которое является ключевым значением, или проверяемым условием выбора, для данного оператора; <значение i> – числа, текстовые строки или другие переменные, относящиеся к проверяемому условию. Если одно из этих значений соответствует переменной, выполняются операторы, относящиеся к соответствующему оператору CASE, если нет, то выполняются операторы, стоящие после CASE ELSE. После чего продолжается выполнение программы с операторов, следующих за END SELECT. Можно использовать любое количество операторов CASE, а также использовать более одной переменной для операторов CASE. Несколько переменных в операторе выбора отделяются запятыми.

Visual Basic позволяет использовать операции сравнения, чтобы иметь возможность проверки по нескольким критериям в операторе SELECT CASE. В качестве операций сравнения используются операторы =, <>, <, >, >=, <=. Что бы использовать операции сравнения, нужно включить в выражение ключевое слово IS или ключевое слово TO. Ключевое слово IS дает указание компилятору сравнить значение проверяемой переменной со значением выражения, следующего после слова IS. Ключевое слово TO задает диапазон значений.

Упражнение 3. использование оператора SELECT CASE для обработки входных значений из поля со списком. Свойства List1.Text и List1.ListIndex нужны для получения входных данных, которые проходя оператор SELECT CASE превратятся в приветствие на одном из четырех языков.

  1. Добавить новую форму с именем frmHH и свойством Caption = Приветствие.

  2. Поместить на форме метку со свойствами Name = lblH1, Caption = «Международная программа приветствий» и Font = MS Sans Serif, жирный, 14 пт.

  3. Поместить на форме метку со свойствами Name = lblH2, Caption = «Выберите страну».

  4. Поместить на форме метку со свойствами Name = lblH3, Caption = “”.

  5. Поместить на форме метку со свойствами Name = lblH4, Caption = “”, BorderStyle = Fixed Single, Fore Color = Desktop.

  6. Поместить на форму элемент ListBox.

  7. Дважды щелкнуть на форме и в процедуре Form_Load записать:

List1.AddItem "Англия"

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

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

List1.AddItem "Италия"

List1.AddItem "Россия"

  1. Дважды щелкнуть на элементе ListBox и в процедуре List1_Click добавить код:

LblH3.Caption = List1.Text

Select Case List1.ListIndex

Case 0

LblH4.Caption = "Hello, programmer"

Case 1

LblH4.Caption = "Hello, programmierer"

Case 2

LblH4.Caption = "Hela, programador"

Case 3

LblH4.Caption = "Ciao, programmator"

Case 4

LblH4.Caption = "привет, программист"

End Select

10. Поместить на форму кнопку со свойствами Name = cmdH, Caption = «Выход».

11. Дважды щелкнуть на кнопке и в процедуре cmdH_Click добавить следующий код: End

12. Установить форму с именем frmHH – загрузочной.

13. Запустить проект. Выбирая страну, познакомиться с приветствиями в упомянутых странах. Прокомментировать все строки программного кода приложения. Сохранить проект.

Циклы позволяют вычислить одну или несколько строк кода несколько раз. Visual Basic поддерживает циклы For … Next; Do … Loop; While … Wend.

Цикл FORNEXT –определяет автоматически возрастающий или убывающий цикл

В данном цикле используется переменная (называемая счетчиком цикла), значение которой увеличивается или уменьшается на заданную величину при каждом повторении цикла. Синтаксис этой конструкции следующий

For счётчик = xнач To xкон значение [Step h]

(операторы)

Next [счётчик]

где = xнач, xконначальное и конечное значение счетчика цикла (тип integer); h – шаг счета (приращение) – необязательная величина (по умолчанию шаг равен 1) (тип integer).

Шаг может быть величиной отрицательной, тогда xнач должно быть больше xкон. Элементы оператора цикла в квадратных скобках необязательны. После ключевого Next можно не указывать имя переменной – счетчика если цикл единственный.

В начале счетчику присваивается значение xнач. Операторы цикла (т.е. операторы, стоящие между FOR и NEXT) выполняются до тех пор, пока параметр цикла не станет больше, чем xкон. Если начальное значение xнач больше, чем xкон (при h>0) или xнач меньше, чем xкон (при h<0), то тело цикла пропускается. Для преждевременного прерывания цикла используется оператор EXIT FOR. При нормальном завершении цикла, т.е. при выходе из цикла через оператор NEXT, значение счетчика равно xкон + h.

Упражнение 4. Реализовать вывод первых десяти чисел последовательности Фибона́ччи 0,1,1,2,3,5,8,13,21,34… в которой каждое последующее число равно сумме двух предыдущих чисел с помощью оператора FOR…NEXT.

  1. Создать новый проект и присвоить проекту имя – Циклы.

  2. Изменить значение свойств формы: Name = frmC, Caption = Упражнение 1.

  3. Разместить на форме кнопку со свойствами: Name = cmdC, Caption = ОК.

  4. Установить на форме элемент PictureBox для вывода результата.

  5. В процедуре кнопки cmdC_Click добавить следующий фрагмент:

P

Рис. 4 Результат работы Упражнения 1

rivate Sub cmdC_Click()

a = 0: Picture1.Print (b);: b = 1

Picture1.Print (b);

For i = 3 To 11

c = a + b

Picture1.Print (c);

a = b: b = c

Next i

End Sub

  1. Запустить приложение и нажать кнопку OK. Результат работы упражнения на рис.4.

  2. После работы приложения сохранить проект в своей рабочей папке.

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

Упражнение 5. Вычислить значение функции z=y2+x, если x[0,3] шаг –3, y[1.5, 3.5] шаг 1.

  1. Добавить к проекту новую форму со свойствами: Name= frmCC и Caption =Вложенные циклы.

  2. Разместить на форме кнопку со свойствами: Name =cmdCC, Caption = ОК.

  3. В процедуре для кнопки cmdCC_Click добавить следующий фрагмент:

Private Sub cmdCC_Click()

D

Рис. 5 Результат работы упражнения 5

im y, x, c As Integer

For x = 3 To 0 Step -3

For y = 1.5 To 3.5

c = y * y + x

Print (c);

Next y

Print

Next x

End Sub

4. Сделать форму FrmCC загружаемой и запустить приложение. После работы приложения сохранить форму в своей рабочей папке.

Цикл Doloop применяется для выполнения блока операторов, когда точное количество повторений заранее неизвестно или нужно дождаться выполнения некоторого условия. Условие должно быть величиной или выражением, принимающим значение False(нуль) или True(единица).

Do While условие

Операторы

Loop

В

Рис. 6 Вид формы упражнения 3

ыполняя этот цикл, Visual Basic сначала проверяет условие. Если условие ложно (False), он пропускает все операторы цикла. Если оно истинно (True), то выполняются все операторы цикла, а управление снова возвращается оператору Do While, где снова проверяет условие. Операторы цикла могут не выполнится ни разу, если при первой проверке условие окажется ложным (False).

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

Do

Операторы

Loop While условие

Упражнение 6 Цикл с условием

1. Добавить в проект новую форму. Расположить на форме текстовую метку Label1, текстовое окно TextBox, графическое окно PictureBox, две командные кнопки СommandButtom (Рис.6). Установить свойства элементов управления в соответствии с таблицей

Элемент управления

Свойство

Форма – Form1

Имя=FrmD; Caption=Циклы с условием

Командная кнопка – CommandButtom1

Имя=CmdD; Caption=Do ….

Командная кнопка – CommandButtom2

Имя=CmdDW; Caption=While….Wend

Текстовая метка – Label

Имя = LblD

Текстовое окно – textbox

Имя=TxtD

Графическое поля – PictureBox

Имя=PictureD

2. Сделать форму загружаемой при запуске приложения и сохранить проект

3. В процедуре для кнопки CmdD_Click, записать следующий код

Рис. 7 Упражнение 3 -вывод на текстовую метку

Dim x as integer

Do while x<10

x=x+1

Loop

lblD.Caption =x

4. Запустить приложение. Цикл будет выполняться до тех пор, пока значение переменной остается меньше 10. Поскольку Х не присваивалось конкретного значения, цикл буде выполняться 10 раз.

5. Щелкнуть по кнопке «Do …». Свойству Text текстовой метки lBlD.Caption в результате работы процедуры будет присвоено значение 10. (рис 4)

Другая разновидность конструкции цикла аналогична предыдущей, за исключением того, что цикл выполняется пока условие ложно (False): Вместо ключевого слова While можно воспользоваться ключевым словом Until, но тогда вместо условия продолжения вычислений формулируется условие завершения.

Упражнение 7

  1. В режиме конструирования установить указатель мыши на текстовое окно TxtD

  2. В программном окне процедуры TxtD_ClicK() записать код:

Рис. 8 Представление результат в текстовом окне

Dim x as integer

Do Until x=10

x=x+1

Loop

TxtD.Text = x

  1. Запустить приложение. Щелкнуть в текстовом окне. В текстовом окне появится цифра 10. Результат работы упражнения приведен на рис.8

  2. Сохранить проект.

Операторы WHILEWEND.

Последовательность команд выполняется до тех пор, пока остается истинным указанное условие. Синтаксис:

WHILE <условие>

<тело цикла>

WEND

Когда выражение принимает истинное значение (ненулевое), выполняются операторы, составляющее тело цикла, следующие за оператором WHILE до оператора WEND. Как только встречается оператор WEND, управление передается на оператор WHILE. При повторном выполнении оператора WHILE заново вычисляется содержащееся в нем выражение, и если оно по-прежнему истинно, выполняются операторы тела цикла. Как только значение выражения будет ложным, управление будет передано оператору, находящемуся после WEND. Для преждевременного выхода из цикла используется оператор EXIT WHILE.

У

Рис. 9 Цикл и вывод результата в графическое поле

пражнение 8.

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

  2. В программном окне процедуры Form_Click() записать код:

Dim x As Integer

While x < 10

x = x + 1

Wend

PictureD.Print x

  1. Запустить приложение. Щелкнуть по форме. Цифра 10 появляется в графическом поле (рис 9.). Сохранить проект.

Упражнение 9 Реализзовать вывод всех чисел Фибоначчи с помощью оператора WHILE…WEND, значение которых меньше 1000.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]