Главная страница

УМП Алгоритмизация и программирование. Алгоритмизация


Скачать 0.62 Mb.
НазваниеАлгоритмизация
Дата21.02.2019
Размер0.62 Mb.
Формат файлаpdf
Имя файлаУМП Алгоритмизация и программирование.pdf
ТипУчебно-методическое пособие
#68441
страница3 из 4
1   2   3   4
Val.
2. Назовите назначение функции Str.
Лабораторная работа 3
Разработка программы с оператором условия
Цель занятия – изучение работы конструкции условия
If… Then.
Конструкция условия If.. .Then применяется в том случае, когда необ- ходимо выполнить один или группу операторов при соблюдении опреде- ленного условия, то есть когда значение заданного условия равно Истина
(True) .

32
If условие Then конструкция
If y > 20 Then y = 2
Конструкция If.. .Then.. .Else аналогична конструкции If...Then, но позволяет задать действия, исполняемые как при выполнении условий, так и в случае их невыполнения.
Конструкция имеет следующий синтаксис:
If условие Then
Конструкции для обработки истинного условия
Else
Конструкции для обработки ложного условия
End If
Ключевые слова If и End if имеют тот же смысл, что и в конструкции
If...Then. Если заданное в конструкции условие не выполняется и конст- рукция содержит ключевое слово Else, Visual Basic выполнит последова- тельность конструкций, расположенных непосредственно за Else. После чего управление перейдет к конструкции, следующей после End If.
Например:
If x >= 0 Then
Label1.Caption = "Значение больше или равно 0"
Else
Labell.Caption = "Значение меньше 0"
End If
Для выбора одного из нескольких значений используются объекты типа OptionButton, которые называются переключателями.
При размещении в форме нескольких групп переключателей каждая логическая группа должна помещаться в объект-контейнер, например
Frame (Рамка). В этом случае, для создания в форме группы переключате- лей необходимо сначала поместить в форму рамку, а затем разместить в ней поочередно необходимое количество переключателей, используя для этого кнопку OptionButton на панели элементов управления.
В качестве примера рассмотрим разработку программы расчета сред- него или поиска максимума из площадей пожаров.
Входные данные: площади 2 пожаров (А, В).
Выходные данные: средняя площадь (Avg) или максимум (Max).
Разработка алгоритма:

33
Диалоговая форма программы
Спроектируйте диалоговую форму программы с использованием эле- ментов управления (рис. 2.12).
На форме располагаются 1 рамка (Выбор операции), 2 переключателя
(Средняя площадь и Максимум), 3 текстовых надписи, 2 текстовых поля для ввода чисел, 1 - для вывода результата; 2 кнопки: 1 для выполнения операции (ОК), 1 для выхода из программы (Выход).
Начало
Ввод А, В
Avg = (А+В)/2
Вывод Avg
Конец
Расчет средн. пл.
да нет нет
А > В
Max = А
Max = B да
Вывод Max
Рис. 2.12. Диалоговая форма программы
Рис. 2.11. Блок-схема алгоритма

34
В окне свойств объектов определите свойства каждого элемента управления:
Таблица 2.7
Свойства элементов управления
Элемент управления
Свойство
Имя
Свойство Caption
Форма Form1 Вычисления
Рамка Frame1
Выбор операции
Переключатель1 Option1 Средняя площадь
Переключатель2 Option2
Максимум
Надпись1 Label1
Площадь 1 пожара
Надпись2 Label2
Площадь 2 пожара
Надпись3 Label3 Результат
Текстовое поле1
Площадь1 -
Текстовое поле2
Площадь2 -
Текстовое поле3
Результат -
Кнопка1 Command1
ОК
Кнопка2 Command2
Выход
Программный код
'Процедура расчета среднего значения и поиска максимума
Private Sub Command1_Click()
'Вычисление среднего
If Option1.Value = True Then
Результат.Text = (Val(Площадь1.Text) + Val(Площадь2.Text)) / 2
ElseIf Option2.Value = True Then
'Поиск максимума
If Val(Площадь1.Text) > Val(Площадь2.Text) Then
Результат.Text = Val(Площадь1.Text)
Else: Результат.Text = Val(Площадь2.Text)
End If
End If
End Sub
'Процедура завершения программы
Private Sub Command2_Click()
End
End Sub

35
Практическое задание
1. Дополнительно создайте операцию поиска минимального из пло- щадей пожаров.
Контрольные вопросы
1. Объясните работу конструкции If.. Then.
2. Объясните работу конструкции If.. Then.. Else.
3. Объясните работу элемента управления Option Button.
Лабораторная работа 4
Обработка одномерного массива
Цель занятия – изучение операций по обработке одномерного мас-
сива с использованием конструкций условия.
Конструкция условия For...Next выполняет последовательность ко- манд определенное число раз. Такую конструкцию называют циклом, а выполняемые ею программные коды — телом цикла.
Синтаксис конструкции For.. .Next следующий:
For счетчик = начальное значение То конечное значение [Step шаг] конструкции
Next[счетчик]
Первый аргумент конструкции — счетчик определяет имя перемен- ной, которая будет считать количество выполнении цикла. Параметр на-
чальное значение указывает числовое значение, которое присваивается переменной-счетчику перед первым выполнением цикла. Цикл выполняет- ся до тех пор, пока значение счетчика не превысит конечного значения, указанного после ключевого слова . После каждого выполнения цикла значение счетчика изменяется на величину шага, указанную за ключевым словом Step. Ключевое слово Next обозначает конец тела цикла и является обязательным.
Перед каждым проходом цикла Visual Basic сравнивает значения счетчика и аргумента конечное значение. Если значение счетчика не пре- вышает установленного значения конечное значение, то выполняются

36
конструкции тела цикла. В противном случае управление переходит к сле- дующей за Next конструкции. Например:
For n = 1 То 10 Step 2 m = m+1
Next
Здесь цикл выполняется пять раз при значениях счетчика n = 1, 3, 5, 7 и 9.
Ключевое слово Step можно опустить. В этом случае значение шага по умолчанию принимается равным 1.
Для создания в форме раскрывающегося списка используется объект типа ComboBox. Этот тип списка позволяет пользователю осуществлять выбор значения, вводимого в размещаемое сверху поле ввода, или выби- рать значение из списка, открываемого нажатием кнопки со стрелкой, раз- мещаемой с правой стороны.
Список данного типа удобно использовать в том случае, если вводи- мых значений много, а места в форме для расположения обычного списка не хватает.
В качестве примера рассмотрим создание программы обработки од- номерного числового массива.
Входные данные: размер массива (size), элементы массива.
Выходные данные: сумма элементов (sum), минимальный элемент
(min).
Разработка алгоритма: алгоритмы разработаны на предыдущих за- нятиях.
Диалоговая форма программы
Спроектируйте интерфейс программы с использованием элементов управления (рис. 2.13).
На форме располагаются 4 текстовых надписи (одна из них пустая), 2 текстовых поля для ввода данных, 1 - для вывода результата; раскрываю- щийся список для выбора операции; 4 кнопки: 1 для ввода размера (коли- чество элементов) массива (Ввод размера), 1 для ввода элементов массива
(Ввод массива), 1 для выполнения операции (ОК), 1 для выхода из про- граммы (Выход).

37
Свойства объектов
В окне свойств объектов определите свойства каждого элемента управления:
Таблица 2.8
Свойства элементов управления
Элемент управления
Свойство
Имя
Свойство Caption
1 2 3
Форма Form1
Операции с одномерным массивом
Надпись1 Label1
Размер
Надпись2 Label2
Элементы
Надпись3 Label3
*
Надпись4 Label4 Выбор операции
Текстовое поле1
РазмерМассива -
Текстовое поле2
ЭлементыМассива
-
Текстовое поле3
Результат -
Кнопка1 Command1 Ввод размера
Кнопка2 Command2 Ввод массива
Кнопка3 Command3
ОК
Кнопка4 Command4
Выход
Раскрывающийся список
Combo1 -
* - пустая надпись (надпись выводится в зависимости от типа операции)
Рис. 2.13. Диалоговая форма программы
Расположение пустой надписи

38
В текстовых полях необходимо стереть заданный по умолчанию текст. В раскрывающемся списке в свойстве List наберите список опера- ций: Сумма и Минимум.
Программный код
'Установка индексации элементов массива (начинается с 1)
Option Base 1
'Объявление переменной целого типа для ввода размера массива
Dim size As Integer
'Объявление переменной целого типа (флага) для обеспечения много-
кратного ввода данных
Dim f As Integer
'Объявление имени массива и максимального количества элементов
Dim A(100)
'Процедура ввода размера массива
Private Sub Command1_Click() size = Val(РазмерМассива.Text)
Command1.Enabled = False
'Установка курсора в окно ввода элементов массива
ЭлементыМассива.SetFocus
'Активация кнопки ввода элементов массива в случае ее деактивации
If Command1.Enabled = False Then
Command2.Enabled = True
'Установка флага на единицу f = 1
End If
'Очистка формы
Form1.Cls
'Очистка текстового поля
Результат.Text = ""
'Очистка надписи
Label3.Caption = ""
End Sub
'Процедура ввода элементов массива
Private Sub Command2_Click()
'Установка курсора в окно ввода элементов массива
ЭлементыМассива.SetFocus
'Объявление счетчика элементов массива (статическая переменная)
Static i

39
'Если флаг содержит единицу (повторный ввод данных) устанавлива-
ем счетчик элементов массива на 0 и флаг устанавливаем на 0
If f = 1 Then i = 0 f = 0
End If
'Операция ввода элементов массива
If i <= size Then
A(i+1) = Val(ЭлементыМассива.Text) i = i + 1
'Очистка текстового поля ввода элементов массива
ЭлементыМассива.Text = ""
End If
'Деактивация кнопки ввода элементов массива и их вывод (индекс
больше или равен количеству элементов массива)
If i >= size Then
Command2.Enabled = False
Command1.Enabled = True
Combo1.SetFocus
For i = 1 To size
Print Spc(1); A(i);
Next
End If
End Sub
'Процедура выполнения операций по обработке массива данных
Private Sub Command3_Click()
'Объявление переменных для хранения результатов обработки масси-
ва данных
Dim min As Double
Dim sum As Double
'Поиск минимального элемента
If Combo1.Text = "Минимум" Then min = A(1)
For i = 1 To size
If A(i) <= min Then min = A(i)
End If
Next
'Вывод минимального элемента
Label3.Caption = "Минимум"
Результат.Text = Str(min)

40
End If
'Вычисление суммы элементов массива
If Combo1.Text = "Сумма" Then sum = 0
For i = 1 To size sum = sum + A(i)
Next
'Вывод суммы элементов массива
Label3.Caption = "Сумма"
Результат.Text = Str(sum)
End If
End Sub
'Процедура выхода из программы
Private Sub Command4_Click()
End
End Sub
Практическое задание
1. Дополнительно запрограммируйте операцию поиска максимума, вычисления произведения элементов массива, среднего арифметического из элементов, суммы отрицательных и суммы положительных элементов, определение номера максимального элемента.
Контрольные вопросы
1. Объясните работу конструкции For… Next.
2. Объясните работу элемента управления ComboBox.
Лабораторная работа 5
Обработка двумерного массива
Цель занятия – изучение операций по обработке двумерного мас-
сива.
Цель
Создание программы обработки двумерного массива А(5,5).
Входные данные: элементы массива.
Выходные данные: максимальный элемент (М), сумма элементов
(Sum).

41
Разработка алгоритма: алгоритмы разработаны на предыдущих за- нятиях.
Диалоговая форма
Спроектируйте интерфейс программы, состоящий из 2 форм с исполь- зованием элементов управления (рис. 2.14, рис. 2.15).
На первой форме располагаются 7 текстовых надписей (одна из них пустая), 5 текстовых полей для ввода данных, 1 - для вывода результата; список для выбора операции; 3 кнопки: 1 для построчного ввода элементов матрицы (Ввод данных), 1 для выполнения операции (ОК), 1 для выхода из программы или ввода новой матрицы (Выход/Ввод новой матрицы); 2 флажка: 1 для вывода элементов матрицы, 2 для ввода новой матрицы; 1 рамка.
На второй форме располагаются 1 текстовая надпись, 25 текстовых полей для вывода данных; 1 кнопка (Закрыть) для закрытия формы.
Рис. 2.14. Первая диалоговая форма
Расположение пустой надписи
Рис. 2.15. Вторая диалоговая форма

42
Свойства объектов
В окне свойств объектов определите свойства каждого элемента управления для 2 диалоговых форм:
Таблица 2.9
Свойства элементов управления первой диалоговой формы
Элемент управления
Свойство
Имя
Свойство Caption
1 2 3
Форма Form1
Операции с двумерным массивом
Надпись1 Label1 1
Надпись2 Label2 2
Надпись3 Label3 3
Надпись4 Label4 4
Надпись5 Label5 5
Надпись6 Label6
Выбор операции
Надпись7 Label7
*
Текстовое поле1
Первый -
Текстовое поле2
Второй -
Текстовое поле3
Третий -
Текстовое поле4
Четвертый -
Текстовое поле5
Пятый -
Текстовое поле6
Результат -
Кнопка1 Command1
Ввод данных
Кнопка2 Command2
ОК
Кнопка3 Command3
Выход/Ввод новой матрицы
Список List1
-
Флажок1 Check1 Вывод элементов матрицы
Флажок2 Check2 Ввод новой матрицы
Рамка1 Frame1
Ввод данных
* - пустая надпись (надпись выводится в зависимости от типа операции)
В текстовых полях необходимо стереть заданный по умолчанию текст. В списке в свойстве List наберите список операций: Максимум и
Сумма.

43
Таблица 2.10
Свойства элементов управления второй диалоговой формы
Элемент управления
Свойство
Name
Свойство Caption
Форма Form2
Вывод элементов матрицы
Надпись1 Label1
Элементы матрицы
Массив из 25 элементов
Текстовое поле *
Text1 -
Кнопка1 Command1
Закрыть
* - для создания массива из 25 текстовых полей выполните следующие операции: создайте текстовое поле Text1, выделите это текстовое поле и скопируйте с помощью контекстного меню (Copy), вставьте скопированное текстовое поле в форму (Paste), подтвердите запрос о создании массива текстовых полей, построчно вставьте 25 полей
(5х5) (рис. 2.15)
Программный код
Для первой диалоговой формы:
'Установка индексации элементов массива (начинается с 1)
Option Base 1
'Объявление квадратной матрицы из целых чисел
Dim A(5, 5) As Integer
'Объявление переменной целого типа для контроля повторного
ввода данных
Dim f As Integer
'Процедура построчного ввода элементов матрицы
Private Sub Command1_Click()
'Объявление счетчика строки матрицы
Static i
'Если переменная f содержит единицу (повторный ввод данных)
'обнуляем счетчик строк матрицы и переменной f присваиваем
ноль
If f = 1 Then i = 1 f = 0
End If
'Построчный ввод элементов матрицы
If i <= 5 Then
A(i+1, 1) = Val(Первый.Text)
A(i+1, 2) = Val(Второй.Text)
A(i+1, 3) = Val(Третий.Text)

44
A(i+1, 4) = Val(Четвертый.Text)
A(i+1, 5) = Val(Пятый.Text) i = i + 1
'Деактивация кнопки после окончания ввода элементов матрицы
If i >= 5 Then
Command1.Enabled = False
End If
End If
'Очистка текстовых полей
Первый.Text = ""
Второй.Text = ""
Третий.Text = ""
Четвертый.Text = ""
Пятый.Text = ""
'Установка курсора в текстовое поле
Первый.SetFocus
End Sub
'Процедура выполнения операций по обработке матрицы
Private Sub Command2_Click()
'Проверка включения флажка на вывод элементов матрицы
If Check1.Value = 1 Then
'Вывод элементов матрицы в форму
For j = 1 To 5
Form2.Text1(j-1).Text = A(1, j)
Next
For j = 6 To 10
Form2.Text1(j-1).Text = A(2, j - 5)
Next
For j = 11 To 15
Form2.Text1(j-1).Text = A(3, j - 10)
Next
For j = 16 To 20
Form2.Text1(j-1).Text = A(4, j - 15)
Next
For j = 21 To 25
Form2.Text1(j-1).Text = A(5, j - 20)
Next
'Открытие формы с элементами матрицы
Form2.Show
End If
'Объявление переменных

45
Dim M As Integer
Dim Sum As Integer
'Определение максимального элемента
If List1.Text = "Максимум" Then
M = A(1, 1)
For i = 1 To 5
For j = 1 To 5
If A(i, j) >= M Then
M = A(i, j)
End If
Next j
Next i
'Вывод максимального элемента в текстовое поле
Результат.Text = Str(M)
'Вывод надписи "Максимум"
Label7.Caption = "Максимум"
End If
'Определение суммы элементов матрицы
If List1.Text = "Сумма" Then
Sum = 0
For i = 1 To 5
For j = 1 To 5
Sum = Sum + A(i, j)
Next j
Next i
'Вывод суммы элементов матрицы в текстовое поле
Результат.Text = Str(Sum)
'Вывод надписи "Сумма"
Label7.Caption = "Сумма"
End If
End Sub
'Процедура выхода из программы/ввода новой матрицы
Private Sub Command3_Click()
1   2   3   4


написать администратору сайта