Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Диалоговое окно ввода информации inputboxСодержание книги
Поиск на нашем сайте
Достаточно часто в диалоговом окне требуется ввести информацию, которая затем анализируется программой. Для выполнения такого рода в VB можно использовать окно ввода информации InputBox(Приглашение,Заголовок,НачЗначение), где Приглашение – это любой текст, который должен находиться в окне ввода. Его назначение – служить подсказкой пользователю, какую информацию он должен ввести в специальное поле ввода, находящееся в этом окне. Заголовок– это надпись в строке заголовка окна ввода. НачЗначение – это значение, которое будет введено автоматически, если пользователь будет с этим согласен. Возвращаемым значение данной функции является информация, вводимая пользователем, которой автоматически приписывает тип String. Например, функция InputBox(”Введите s”,”Ввод данных”,””), использованная в событийной процедуре: Рrivate Sub Command1_Click() s=InputBox(”Ввод данных”,”Введите s”,””) Text1.Text= s End Sub вызывает появление диалогового окна Окно сообщения MsgBox Диалоговое окно сообщения предназначено для выдачи сообщения пользователю. Оно не требует проектирования и вызывается из программы функцией MsgBox(), имеющей следующий синтаксис: MsgBox (Сообщение[,Кнопки][,Заголовок][,Файл_помощи,Помощь]) Здесь: Сообщение – обязательный аргумент; строковое выражение, которое и является сообщением или вопросом, обращенным к пользователю. Максимально может содержать около 1024 символов. Если сообщение необходимо разбить на несколько строк, то используются специальные символы кодовой таблицы ASCII: 13 – возврат каретки, 10 – переход на новую строку. Используются они в виде строки Chr(13)+Chr(10), которая добавляется к каждой из разбиваемых строк. Например: MsgBox (“Вы уже посмотрели, как работает программа?”+ Chr(13)+Chr(10)+ “Завершить работу сейчас?”) Кнопки – необязательный параметр, определяющий внешний вид окна сообщения:
Для того, чтобы задать несколько параметров кнопок и значков одновременно, следует просто сложить соответствующие константы. Например, VbExclamation+ VbAbortRetryIgnore. Заголовок – необязательный аргумент; строковое выражение, отображаемое в заголовке окна, если он опущен, в заголовке используется имя проекта. Файл_помощи, Помощь – необязательные аргументы, используются в паре для подключения файла помощи, если используется кнопка Справка. Параметр Кнопки по умолчанию имеет значение VbOKOnly. В зависимости от выбора кнопки пользователем данная функция MsgBox возвращает следующие константы:
Если данная функция используется просто как некоторое сообщение пользователю, т.е. нет кнопок и функция не должна возвращать никакого значения, то вместо функции MsgBox() используется команда MsgBox: MsgBox(”Деление на ноль”). На Рис. 5 представлен пример работы процедуры, вызывающей окно сообщения с двумя кнопками Да и Нет: Private Sub Command1_Click() a = MsgBox("Вы уже посмотрели, как работает_ программа?" & Chr(13)&Chr(10) & "Завершить работу_ сейчас?", vbYesNo + vbQuestion, "Демонстрация_ многострочного сообщения") If a = vbYes Then Unload Me 'Выгрузить форму End Sub
Рис. 5 – Пример использования функции MsgBox:
Ввод и вывод данных в VB Осуществляется с помощью встроенных функций InputBox, MsgBox,с помощью изменения определенных свойств определенных объектов или применения к ним соответствующих методов. Ввод данных Ввод значений переменных может осуществляться: 1. С помощью функции InputBox, которая при выполнении программы выводит на экран свое собственное диалоговое окно. Возвращаемое функцией InputBox значение имеет тип string. Поэтому для использования введенного значения в качестве числовой переменной необходимо дополнительно преобразовать его к числовому типу с помощью функции Val. Например, для ввода значения числа 5,25 в переменную а необходимо записать следующую строку программного кода: a = Val(InputBox("Введите а", "Ввод данных")) 2. С помощью текстового окна TextBox. В этом случае на форме должно присутствовать текстовое окно, к примеру, Text1, а в событийной процедуре, например, для щелчка по командной кнопке, должен быть записан программный код, в котором используется свойство Тext объекта Text1: Private Sub Command1_Click() a = Val(Text1.Text) End Sub Свойство Тext объекта Text1, также имеет строковое значение, поэтому необходимо его преобразование в числовое значение с помощью функции Val. Кроме того, на этапе проектирования желательно изменить значение этого свойства, например, на пустую строку. Вывод результатов Для вывода результатов в VB существуют различные способы. 1. Основным оператором вывода значений переменных в языке VB является оператор Print, который в терминах объектно-ориентированного программирования рассматривается как метод, действующий на объект, на который и будут выводиться значения, указанные в списке. Основными объектами, для которых имеется метод Print, являются форма Form, и графическое окно PictureBox. Если объект, к которому применяется метод Print, не указан, то список значений выводится на активную форму. Например:
2. Вывести значение переменной можно с помощью функции MsgBox, которая при выполнении активизирует свое собственное окно сообщений на экране. Private Sub Command1_Click() f = 2 * a MsgBox (f) End Sub 3. Вывод можно оформить в текстовое окно TextBox, изменяя его свойство Text Text1.text=Str(a) При этом надо помнить, что свойство Text работает со строкой символов, поэтому выводимое число преобразуется в строку символов с помощью функции Str. 4. Вывод можно оформить на метку Label, изменяя ее свойство Caption: Label1.Caption=”Результат” + str(a) Функция Format При выводе результатов для большей наглядности часто используется функция Format, которая возвращает значение типа Variant (String), содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Эта функция имеет следующий синтаксис: Format (Выражение, ”Формат”), где Выражение – обязательный аргумент – любое допустимое выражение, подлежащее форматированию. Format – шаблон формата (стандартный или пользовательский):
При форматировании чисел без указания шаблона формата функция Format выдает тот же результат, что и функция Str, т.е. возвращает строку, представляющую число. Отличие состоит в том, что при преобразовании положительного числа с помощью функции Format пробел в начале строки (на месте знака числа) теряется, а при преобразовании с помощью функции Str останется. Примеры шаблонов форматов, применяемых для создания пользовательских и стандартных форматов числовых величин:
Структурные операторы Структурные операторы представляют собой структуры, построенные из других операторов по строго определенным правилам. Все структурные операторы подразделяются на три группы: условные операторы, операторы выбора и операторы повтора (цикла). Условные операторы Операторы в программе-обработчике событий выполняются в той последовательности, в которой они записаны. Однако достаточно часто требуется изменить порядок выполнения операторов в зависимости от выполнения (или невыполнения) определенного условия. Выбор одного из альтернативных путей работы программного кода в зависимости от результата проверки какого-либо условия (логического выражения) обеспечивают условные операторы. Условный оператор существует в двух формах: полной и сокращенной, и схематично может быть изображен следующим образом:
Условный оператор в VB может иметь однострочную (простую) и многострочную (блочную) структуру. Однострочная структура имеет следующий синтаксис:
Если Условие имеет значение True, то выполняется оператор после ключевого слова Then, а если оно имеет значение False, то выполняется оператор, следующий за ключевым словом Else, если таковой имеется. Пример: If a= 7 Then Beep If x < 9 Then Print ”False!” Else Print ”True!” Многострочная структура условного оператора имеет следующий синтаксис:
Замечание. Ключевое слово End if обозначает конец многострочной конструкции. Команда if может проверить только одно условие. Если необходимо осуществить переход управления в зависимости от результатов проверки нескольких условий, то их можно задать с помощью оператора Elseif. Оно будет анализироваться только в том случае, если предыдущее условие ложно. Например: If x>0 Then Label1.Caption=”Значение х положительно” Elseif x=0 Then Label1.Caption=”Значение х равно нулю” Else Label1.Caption=”Значение х отрицательно” End If Ниже приведен пример событийной процедуры решения квадратного уравнения ax2 + bx + c = 0 с использованием условного оператора. Private Sub Command1_Click() d=b*b – 4 * a * c If d < 0 then Print ”Уравнение не имеет корней” Elseif d = 0 Then x = -b / (2*a) Print ”Уравнение имеет один корень”; x Else x1 = (-b + sqr(d)) / (2 * a) x2 = (-b - sqr(d)) / (2 * a) Print ”Уравнение имеет два корня ”; x1, x2 End If End Sub 10.2. Оператор выбора Select … Case Оператор выбора позволяет обрабатывать в программе несколько условий и аналогичен блоку конструкций if...Then...Else. Используется он для частичного облегчения программирования задач, в которых содержится большое число различных проверок. Его также удобно применять тогда, когда выполнение одного из многочисленных действий зависит от значения какой-либо переменной. Синтаксис оператора выбора Select … Case: Select Case Выражение Case Диапазон значений _1 Операторы, выполняемые при попадании Выражения в Диапазон значений _1 Case Диапазон значений _2 Операторы, выполняемые при попадании Выражения в Диапазон значений _2 ... Case Диапазон значений _N Операторы, выполняемые при попадании Выражения в Диапазон значений _2 [ Case Else Операторы, выполняемые при непопадании ни в один из указанных диапазонов End Select Замечание 1. Квадратные скобки служат для обозначения необязательной части в структурах операторов. Выражение – любое выражение, допустимое в языке VB. После ключевого слова Case, которое повторяется столько раз, сколько различных действий может быть выполнено, записывается Диапазон значений этой переменной. При попадании значения переменной в этот диапазон выполняется действие, которое записано вслед за ним. Диапазон значений можно задать простым перечислением их через запятую (Case 3,5,9), либо с помощью ключевого слова To(Case 1 To 9). Если в Диапазоне значений необходимо использовать операции отношения, то такой диапазон записывается с помощью ключевого слова Is. Ниже приведены примеры событийных процедур с использованием оператора выбора. Пример 2. Проанализировать случайное число, заданное в промежутке от 0 до 10. Private Sub Command1_Click() Randomize a = Int(Rnd * 9) + 1 'Cлучайное число от 1 до 10 Select Case a Case 1 Print "Равно 1" Case 2, 3 Print "Равно 2 или 3" Case 4 To 6 Print "Больше или равно 4 и меньше или равно 6" Case Is >= 9 Print "Больше или равно 9" Case Else Print "Ни одно из предшествующих" End Select End Sub
Пример 1. Решение квадратного уравнения ax2 + bx + c = 0. Вариант 1. Здесь Выражение имеет логический тип (d>=0): Private Sub Command1_Click() A=val(inputbox(”Задайте А”)) B=val(inputbox(”Задайте B”)) C=val(inputbox(”Задайте C”)) D=B^2-4*a*c Select Сase d>=0 ' Выражение логического типа Case True Print ”x1=”;(-b-sqr(d))/(2*a),”x2=”;(-b+sqr(d))/(2*a) Case False Print ”Решений нет” End Select End Sub Вариант 2. Здесь Выражение имеет вещественный тип, а в Диапазоне значений используются операции отношения: Private Sub Command1_Click() Select Case b * b - 4 * a * c 'Вещественный тип Case Is < 0 'Используется операция отношения > Print "Уравнение не имеет корней" Case Is = 0 x = -b / (2 * a) Print "Уравнение имеет один корень"; x Case Else X1 = (-b + Sqr(d)) / (2 * a) X2 = (-b - Sqr(d)) / (2 * a) Print "Уравнение имеет два корня "; X1, X2 End Select End Sub
Операторы повтора Циклические конструкции обеспечивают многократное выполнение одной и той же последовательности операторов для различных значений, входящих в них переменных. Многократно выполняемые последовательности операторов называют циклами, а изменяющиеся в цикле переменные – переменными цикла. Алгоритм циклической структуры должен содержать: 1. Подготовку цикла – задание начальных значений переменных цикла перед первым его выполнением; 2. Тело цикла – операторы, которые выполняются при различных значениях переменных цикла; 3. Изменение значений переменных цикла перед его новым повторением; 4. Управление циклом – проверку условия окончания цикла или перехода на начало тела цикла. В VB для этой цели существуют два вида элементарных циклических структур: - циклы с параметром; - циклы с условием. Циклы с параметром Если количество повторов тела цикла заранее известно, то обычно используют так называемые циклы с параметром. Схематично такой цикл может быть изображен следующим образом: В языке VB циклы с параметром реализуются с помощью оператора For, который имеет следующий формат:
где Счетчик – параметр цикла порядкового типа; S1 и S2 – выражения, определяющие начальное и конечное значение параметра цикла; Шаг – шаг изменения значения счетчика; Тело цикла – многократно выполняемые операторы. Шаг может быть как положительным, так и отрицательным числом. Если Шаг равен единице, то конструкция Step Шаг может быть опущена. Если Шаг отрицателен, то начальное значение, естественно, должно быть больше конечного. Цикл повторяется пока значение параметра цикла лежит в интервале [S1,S2], причем эти выражения S1 и S2 вычисляются только один раз в начале цикла. Необходимо, чтобы параметр цикла, начальное и конечное значения были одного типа. В начале выполнения цикла значение Счетчик становится равным S1. При каждом проходе переменная Счетчик увеличивается на 1 или на величину Шаг. Если значение Счетчика становится больше конечного значения S2, то цикл завершается, после чего выполняются следующие за циклом операторы. Примеры конструкций операторов цикла с параметром:
Из тела цикла с параметром можно выйти до окончания цикла с помощью оператора Exit For. Пример 1. Напечатать 10 чисел ряда Фибоначчи (каждое последующее число равно сумме двух предыдущих), начиная с 11 числа.
Пример 2. Вычислить сумму конечного ряда . Private Sub Command1_Click() n=Val(Text1.Text) s=0 'Организация цикла по числу членов последовательности For k=1 To n 'Вычисление очередного члена последовательности y=(k+0.3)/(3*k*k+5) s=s+y 'Вычисление суммы ряда Next k Text2.Text=Str(s) 'Вывод результирующей суммы End; Элемент управления Slider Иногда для ввода данных удобно использовать элемент управления Slider (ползунок, движок), который позволяет вводить числовые данные путем перемещения указателя ползунка. Свойства элемента управления Slider
Пример 3. Вычислить произведение
Пример 3. Протабулировать функцию sin(x) на отрезке [–π, π] с шагом 0,1.
При проектировании данного проекта необходимо для элементов управления TextBox, предназначенных для вывода, установить следующие свойства: Multiline = True, Scrollbars=Vertical. Циклы с условием Циклы с условием используются в тех случаях, когда число повторений тела цикла заранее неизвестно. Такой цикл продолжает работу пока выполняется (или не выполняется) условие окончания цикла. Причем, если условие окончания цикла проверяется перед выполнением тела цикла, то такие циклические структуры называют циклами с предусловием («Выполнять пока»), а если проверка условия происходит после выполнения тела цикла – циклами с постусловием («Выполнять до тех пор, пока»).
В VB такие циклы образуются с помощью конструкций
Замечание 1. Чтобы цикл с предусловием или с постусловием успешно завершился необходимо, чтобы в теле цикла был хотя бы один оператор, изменяющий значения, входящих в логическое выражение переменных. Замечание 2. Циклы могут быть вложенными, когда внутри одного циклического процесса должен выполняться другой. В этом случае необходимо придерживаться правила: каждый цикл должен иметь свое начало – For или Do (заголовок цикла) и свой конец – слово Loop или Next (окончание цикла). Причем, каждый раз сначала должен быть закончен внутренний цикл, а затем уже внешний. Для безусловного выхода из цикла с условием используется оператор Exit Do. Пример 1. Определить количество цифр в целом числе N. Алгоритм решения состоит в том, что нужно делить число N на 10 до тех пор, пока в целой части числа не окажется 0. Количество таких делений будет равно числу цифр в числе.
Использование операторов цикла с условием оправдано в том случае, когда количество повторений тела цикла определяется в ходе самих вычислений и заранее неизвестно. Например, для вычисления сумм бесконечного ряда обычно задают точность вычислений ε и вычисления ведут до тех пор, пока очередное слагаемое по модулю не станет меньше заданного ε: . Пример 2. Вычислить с точностью ε = 10-4.
Использование рекуррентной формулы для вычисления Рекуррентной называется всякая формула, выражающая каждый член последовательности через предыдущие члены этой последовательности. Используется чаще всего в целях избавления от больших чисел при вычислении суммы членов последовательности. Как правило, в этом случае рекуррентная формула имеет вид: , откуда, зная общий член последовательности, можно будет найти коэффициент c, на который нужно умножать каждый предыдущий член последовательности, чтобы найти следующий: Пример. Вычислить . Найдем коэффициент c, разделив :
Таким образом, очередной член ряда можно вычислить по рекуррентной формуле: . Пример 3. Найти количество членов бесконечного ряда , сумма которых дает приближенное значение sin(x) с точностью ε=10-4.
Замечание. Иногда возникает необходимость переделать цикл типа For…Next на цикл Do…Loop (наоборот не всегда получается).
Использование функции Timer Условие продолжения или завершения цикла не всегда связано только с внутренними причинами, - изменяющимися от шага к шагу значениями каких-либо переменных. Часто, например, цикл завершается после того, как исчерпывается отпущенное на его выполнение время. Чтобы реализовать такое условие, следует воспользоваться системной функцией Timer. Она возвращает текущее время с точностью до 0,01 сек. Пример 4. Вычислить сумму бесконечного ряда с использованием функции Timer
Подпрограммы пользователя Хотя набор стандартных процедур и функций достаточно широк, он вряд ли может удовлетворить потребности каждого пользователя. Поэтому ему предоставлена возможность реализовывать собственные алгоритмы в виде подпрограмм и обращаться к ним по имени из любого места программы. Таким образом, если в программе возникает необходимость частого обращения к некоторой группе операторов, то рационально сгруппировать такую группу в самостоятельный блок, к которому можно обращаться в программе. Такие программные блоки, созданные самим пользователем принято называть подпрограммами пользователя. Каждой пользовательской подпрограмме дается уникальное имя. Передача данных в подпрограмму и возврат результата выполнения осуществляется с помощью входных и выходных параметров. Входной параметр – этопеременная, значение которой должно быть установлено до начала работы данной подпрограммы, а выходной параметр – это переменная, которая получает свой значение в результате работы подпрограммы. Имя подпрограммы и ее параметры записываются в заголовке подпрограммы. Различают формальные параметры – параметры, определенные в заголовке подпрограммы, и фактические параметры – выражения, задающие конкретные значения при обращении к подпрограмме. Имеется два типа пользовательских подпрограмм: процедуры (Sub) и функции (Function). Главное отличие функции от процедуры заключается в том, что результат работы функции – единственное значение, а результат работы процедуры – одно значение, несколько значений или ни одного. Например, можно написать процедуру, которая: - отображает полученные результаты в виде диаграмм в графическом окне; - вычисляет площадь и периметр многоугольника; - решает задачу по преобразованию векторов; - изменяет значения свойств объектов. Кроме того, обращение к функции является разновидностью операнда, т.е. функция как бы включается в состав выражения (арифметического, логического, строкового и др.). При этом говорят, что функция возвращает свое значение. Вызов же процедуры – это разновидность оператора. Прежде, чем писать какую либо подпрограмму необходимо четко представить, что она будет делать, что будет у нее на входе, а что на выходе. При этом о процедуре или функции говорят как о черном ящике, который известно, что делает, но неизвестно как устроен. Пользовательские процедуры Cоздать собственную процедуру, доступную в данной форме можно двумя способами: 1. В общей части кода программы (General/Declaration) ввести слово Sub, затем задать имя и нажать клавишу Enter. В полученной конструкции набрать код программы. 2. С помощью команды Tools ®Add Procedure… Структура пользовательской процедуры:
Переменные, объявленные внутри процедуры, называются локальными, они доступны только в этой процедуре. Если эти переменные объявлены с оператором Dim, то они существуют, пока выполняется процедура, после чего память освобождается. Но исчезновение значения локальной переменной при выходе из процедуры не всегда удобно. Есть возможность сохранять значение локальной переменной до следующего вызова процедуры. Для этого ее нужно объявить как статическую, с ключевым словом Static. В этом случае переменная недоступна в других процедурах, но ее значения сохраняются от вызова к вызову. Глобальные переменные (объявленные со словом Public), доступны всему приложению. Обращение к процедуре осуществляется в основной программе путем задания имени процедуры и списка фактических параметров без круглых скобок. Имя процедуры [Cписок фактических параметров] При вызове процедуры формальные параметры заменяются фактическими в порядке их следования. Количество, типы и порядок следования формальных и фактических параметров должно в точности совпадать! Пример 1. Процедура без параметров должна очистить форму и установить размер выводимых на форму символов в 30 пунктов и начертание курсив.
Пример 2. Процедура позволяет накоплять сумму.
Если бы в данном примере переменная S не была объявлена с помощью Static, то ее значение каждый раз бы обнулялось. Пример 3.
Способ передачи аргументов В VB аргументы могут передаваться двумя способами: либо как ссылки (ByRef), либо как значения (ByVal). Если аргумент передается как ссылка, то вызванная процедура получает физический адрес памяти передаваемой переменной. В этом случае значение этого аргумента можно изменять, так как вызываемая и вызывающая процедуры обращаются к одной и той же области памяти и значение переменной для них идентично. По умолчанию аргументы передаются как ссылка, поэтом ключевое слово ByRef можно опустить. Обычно такие параметры являются выходными. Чтобы запретить изменять значение переменных, их передают по значению, т.е. объявляют со словом ByVal. При передаче аргументов по значению вызванная процедура получает копию значения этого аргумента, и изменить его не может. Переменные, объявленные со словом ByVal, обычно – входные параметры. В этом случае ключевое слово ByVal указывается обязательно. Если некоторый параметр является одновременно входным и выходным, то его нужно передать как ссылку. Функции пользователя Функции – это подпрограммы, в результате которой вычисляется только одно значение, которое присваивается имени функции. Обращение к функции можно использовать в правой части операторов или различных выражений, то есть там, где используются переменные соответствующего типа. В общем виде блок типа Function имеет следующий вид:
В разделе Список формальных параметров через запятую перечисляются формальные параметры функции (если они есть) желательно с указанием типа (хотя этого можно и не делать, в этом случае они рассматриваются как переменные типа Variant). В разделе операторов тела функции должен обязательно п
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 1613; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.27.132 (0.013 с.) |