Опубликован: 04.07.2006 | Доступ: свободный | Студентов: 5583 / 686 | Оценка: 4.11 / 3.96 | Длительность: 11:08:00
Лекция 2:

Управление ходом выполнения программ. Примеры типовых алгоритмов

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

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

Условная инструкция If : Then : Else

Необходимость использования инструкции If : Then : Else возникает, если имеются альтернативные пути выполнения программы; при еe использовании проводится проверка условий и в зависимости от их истинности выполняются определeнные действия. Используется простой и полный синтаксис. Простой синтаксис:

If условие Then инструкция [Else инструкция]

- если условие, стоящее после If истинно ( True ), то выполняется инструкция, следующая за Then, если условие ложно ( False ), то выполняется инструкция, следующае за Else.

Полный синтаксис:

If условие 1 Then 
инструкция 1
.
[инструкция m]
[ElseIf условие 2 Then 
инструкция k] 
[Else
инструкция n]
End If

Во втором случае синтаксиса инструкция 1 : инструкция m,: записываются на новых строчках, присутствует инструкция End If. Наличие ElseIf позволяет анализировать дополнительные условия. Добавлением нескольких инструкций ElseIf можно анализировать дополнительное количество условий. Else используется для обработки противоположных ситуаций. Если нужно проверить некоторое условие при наличии другого условия, то используются вложенные инструкции, пример:

If условие 1 Then
If условие 2 Then 
инструкция 1
.
Else
инструкция m
End If
Else
инструкция n
End If

Для демонстрации различия синтаксиса рассмотрим пример нахождения максимального из 2-х чисел.

Dim max As Integer
If Val(txt1.Text) > Val(txt2.Text) Then max = Val(txt1.Text) Else max = Val(txt2.Text)
lblMax.Caption = max
или:
If Val(txt1.Text) > Val(txt2.Text) Then
max = Val(txt1.Text)
Else: max = Val(txt2.Text)
End If
lblMax.Caption = max

Цикл For : Next

Цикл For : Next предназначен для выполнения определeнного количества действий, когда количество действий известно заранее; синтаксис:

For начальное_значение переменной-счeтчик 
 To конечное_значение переменной-счeтчик [Step величина шага]
инструкции

Next [переменная-cчeтчик]

Сначала инициализируется начальное значение переменной-счeтчик, при каждом выполнении цикла еe значение увеличивается на величину шага, или на 1, если шаг не указан.

Практическая работа 9. Цикл For : Next

9а. Цикл For : Next, формирование массива, вычисление суммы элементов массива, вывод текстовые поля, поля списка и Label1.

Создать требуемые объекты, см. код процедуры Command1_Click(), данный ниже, очистить свойство Text текстового поля, а его свойству Multiline присвоить значение Тrue, тогда в процессе выполнения будет проводиться перенос строк в текстовое поле. Ввести код:

Private Sub Command1_Click()
Dim mass(15) As Integer, i As Integer
Rem переменная для хранения суммы элемeнтов массива
Dim summ As Integer 
For i = 0 To 14
mass(i) = i
' вывод элементов массива в поле списка
lst1.List(i) = mass(i) 
' вывод значений i в поле TextBox
txt1.Text = txt1.Text & " " & i 
Next i
summ = 0
For i = 0 To 14
' суммирование элементов маcсива
summ = summ + mass(i) 
Next i
lbl1.Caption = summ ' вывод суммы элементов 
End Sub

стартовать проект, сделать щелчок на командной кнопке.

9b. Цикл For : Next, формирование массива случайных чисел в заданном диапазоне, вычисление суммы элементов массива, вывод в поле списка и Label1.

Используется функция RND, возвращающая псевдослучайное число в диапазоне 0 - 1. Выражение вида: Int(КонецДиапазона - НачалоДиапазона + 1) * RND() + НачалоДиапазона) позволяет получить случайное целое число в заданном диапазоне. Функция Int возвращает целую часть числа.

Создать требуемые объекты, см. код, данный ниже и ввести код:

Private Sub Command1_Click()
Dim mass(15) As Integer, I As Integer, A As Integer, В As Integer
Dim Summ As Integer
A = -5: B = 5: Summ = 0
For I = 0 To 14
mass(I) = Int(Rnd * (B - A + 1) + A)
lst1.List(I) = mass(I)
Summ = Summ + mass(I)
Next I
lbl1.Caption = Summ
End Sub

стартовать проект, сделать щелчок на командной кнопке.

9c. Создание массива объектов, использование вложенного цикла For : Next для формирования двумерного массива, вывод элементов двумерного массива в массив поля списка и суммы элементов массива в элемент управления Label1.

Создать на форме элемент управления CommandButton, создать массив полей списка, для этого:

  • щелчком маркировать поле списка,
  • использовать команду Копировать контекстного меню поля списка,
  • использовать команду Вставить того же контекстного меню; на вопрос :"Хотите, чтобы объект стал элементом массива?" ответить : "Да", копия выводится в верхний левый угол формы,
  • повторить копирование, т.к. нужен массив объектов из 3-х элементов; проверить на форме идентификаторы поля списка: List1(0), List1(1), List1(2),рис. 2.1
Схема формы

Рис. 2.1. Схема формы

ввести код:

Private Sub Command1_Click()
Dim mass(15, 3) As Single, i As Integer, j As Integer 
Dim A As Integer
Dim B As Integer, Summ As Single 
A = -5: B = 5: Summ = 0
For j = 0 To 14
For i = 0 To 2
mass(j, i) = Rnd * (B - A) + A
' вывод элементов в поля массива списка
List1(i).List(j) = mass(j, i) 
' суммирование элементов двумерного массива
Summ = Summ + mass(j, i) 
Next i, j
Label1.Caption = Summ ' вывод суммы элементов массива
End Sub

стартовать проект, сделать щелчок на командной кнопке.

Константин Новков
Константин Новков

Лекция 3: 2

Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox).

Не могу найти меню Разработать (Develop)>Links и т.д.

антонина квасова
антонина квасова