УМП Алгоритмизация и программирование. Алгоритмизация
Скачать 0.62 Mb.
|
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[счетчик] Первый аргумент конструкции — счетчик определяет имя перемен- ной, которая будет считать количество выполнении цикла. Параметр на- чальное значение указывает числовое значение, которое присваивается переменной-счетчику перед первым выполнением цикла. Цикл выполняет- ся до тех пор, пока значение счетчика не превысит конечного значения, указанного после ключевого слова Tо. После каждого выполнения цикла значение счетчика изменяется на величину шага, указанную за ключевым словом 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() |