Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по информатике..doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
504 Кб
Скачать
☆

InputBox(“Сообщение”,[“Заголовок”],[значение по умолчанию],[Xpos,Ypos])

Пример:

A= Val(nputBox(“Введите сторону треугольника”,”Вычисление площади”))

Затем с помощь оператора присваивания переменным присваиваются промежуточные

расчѐты. И pрезультаты выводятся на экран с помощью метода Print.

Print “***”, ***

В конце программы записывается

End Sub.

18.VB. Основные принципы объектного подхода (инкапсуляция, наследование, полиморфизм).

Основные принципы объектного подхода

1. Инкапсуляция

Инкапсуляция (encapsulation) - это механизм, который объединяет данные и код, манипулирующий зтими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В объектно-ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object). Другими словами, объект - это то, что поддерживает инкапсуляцию.

Внутри объекта коды и данные могут быть закрытыми (private). Закрытые коды или данные доступны только для других частей этого объекта. Таким образом, закрытые коды и данные недоступны для тех частей программы, которые существуют вне объекта. Если коды и данные являются открытыми, то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы. Характерной является ситуация, когда открытая часть объекта используется для того, чтобы обеспечить контролируемый интерфейс закрытых элементов объекта.

На самом деле объект является переменной определённого пользователем типа. Может показаться странным, что объект, который объединяет коды и данные, можно рассматривать как переменную. Однако применительно к объектно-ориентированному программированию это именно так. Каждый элемент данных такого типа является составной переменной.

2. Полиморфизм

Полиморфизм (polymorphism) (от греческого polymorphos) - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных. Например для языка Си, в котором полиморфизм поддерживается недостаточно, нахождение абсолютной величины числа требует трёх различных функций: abs(), labs() и fabs(). Эти функции подсчитывают и возвращают абсолютную величину целых, длинных целых и чисел с плавающей точкой соответственно. В С++ каждая из этих функций может быть названа abs(). Тип данных, который используется при вызове функции, определяет, какая конкретная версия функции действительно выполняется. В С++ можно использовать одно имя функции для множества различных действий. Это называется перегрузкой функций (function overloading).

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

Полиморфизм может применяться также и к операторам. Фактически во всех языках программирования ограниченно применяется полиморфизм, например, в арифметических операторах. Так, в Си, символ + используется для складывания целых, длинных целых, символьных переменных и чисел с плавающей точкой. В этом случае компилятор автоматически определяет, какой тип арифметики требуется. В С++ вы можете применить эту концепцию и к другим, заданным вами, типам данных. Такой тип полиморфизма называется перегрузкой операторов (operator overloading).

Ключевым в понимании полиморфизма является то, что он позволяет вам манипулировать объектами различной степени сложности путём создания общего для них стандартного интерфейса для реализации похожих действий.

3. Наследовние

Наследование (inheritance) - это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование является важным, поскольку оно позволяет поддерживать концепцию иерархии классов (hierarchical classification). Применение иерархии классов делает управляемыми большие потоки информации. Например, подумайте об описании жилого дома. Дом - это часть общего класса, называемого строением. С другой стороны, строение - это часть более общего класса - конструкции, который является частью ещё более общего класса объектов, который можно назвать созданием рук человека. В каждом случае порождённый класс наследует все, связанные с родителем, качества и добавляет к ним свои собственные определяющие характеристики. Без использования иерархии классов, для каждого объекта пришлось бы задать все характеристики, которые бы исчерпывающи его определяли. Однако при использовании наследования можно описать объект путём определения того общего класса (или классов), к которому он относится, с теми специальными чертами, которые делают объект уникальным. Наследование играет очень важную роль в OOP.

19.VB. Объект. Основные характеристики объекта: события, методы, свойства. Способы задания свойства. Синтаксис применения метода.

Объект — это совокупность кода и данных, которые воспринимаются как одно целое. Объект может являться частью приложения, как, например, элемент управления или форма. Приложение в целом также может быть объектом.

Основные характеристики объекта:

Событие — это сообщение, посылаемое объектом о том, что что-то произошло. События реализуются при помощи делегатов, которые являются формой объектно-ориентированного указателя функции, позволяющего вызывать функцию не прямо, а путем ссылки на нее.

Методы - особые типы процедур и функций, методы “работают” как процедуры и функции, но принадлежат конкретным объектам, так же как и свойства.Чтобы вызвать метод, надо указать имя объекта и через точку имя метода.Методы объекта определяют те задачи, которые может выполнить данный объект.Например, в Visual Basic все объекты, в которые можно что-то записать, обладают методом PRINT.

Свойство — это имеющий имя атрибут объекта. Свойства определяют характеристики объекта (цвет, положение на экране, состояние объекта).

Способы задания свойства

Test - этот метод имеет следующий синтаксис:

Function Test(sourceString As String) As Boolean

Метод Test позволяет протестировать строку sourceString на соответствие её шаблону (Pattern). Возвращается Boolean, True - соответсвует, False - нет.

Execute - этот метод имеет следущий синтаксис:

Function Execute(sourceString As String) As MatchCollection

MatchCollection - это коллекция совпадений, которая содержит в себе всю информацию о всех совпадениях регулярного выражения в строке sourceString. Метод Execute может быть использован, например, для извлечения всех email адресов из строки sourceString.

Replace - этот метод имеет следующий синтаксис:

Function Replace(sourceString As String, replaceVar) _

As String

Метод Replace даёт возможность заменить все совпадения регулярного выражения строкой replaceVar.

20.VB. Элементы управления: командная кнопка, метка, текстовое окно, таймер, переключатель, флажок. Свойства элементов управления. Окно свойств. Задание свойств на разных стадиях работы приложений. Примеры.

Командная кнопка CommandButton (системные имена Command1, Command2, …) в среде VB сочетает в себе два типа кнопок, используемых в средах BCB и Delphi. Кроме заголовка (свойство Caption) на этой кнопке можно разместить от одной до трех растровых картинок небольшого размера в формате bmp, появляющихся на кнопке в разных ее состояниях:

Picture — картинка, наклеенная на не нажатую кнопку;

DownPicture — картинка, появляющаяся на нажатой кнопке;

DisabledPicture — картинка, соответствующая недоступному состоянию кнопки.

Метки могут содержать любой допустимый Visual Basic идентификатор-таким как те, которые определяют литералы программирование элемент-или целого числа. Метка должна располагаться в начале строки исходного кода. За ней должен следовать знак двоеточия, независимо от того, расположен ли оператор далее в той же строке. Метки имеют свое собственное пространство для объявления и не пересекаются с другими идентификаторами. Областью видимости метки является тело метода. В любой неоднозначной ситуации преимущество в порядке применения имеет объявление метки..

Для отображения информации и ввода данных в форме предназначен объект типа поле, для создания которого используется кнопка TextBox (Текстовое поле) на панели элементов управления.

Информация, выводимая в текстовом поле, определяется свойством Text и может задаваться следующим способом:

1) в диалоговом окне Properties;

2) в процессе выполнения программного кода;

3)при вводе данных в поле пользователем. В этом случае свойство Locked не должно иметь значение True, так как данные, отображаемые в поле, можно только просматривать, но нельзя редактировать.

Текстовые поля — это наиболее часто встречающийся тип элементов управления, т. к. их можно использовать не только для просмотра информации, как с помощью рассмотренных ранее элементов управления типа Label, но и для ввода информации пользователями приложения.

Элемент управления Timer (таймер) используется для выполнения действия через определенный промежуток времени. Основное свойство элемента - Interval - задает интервал времени, определяющий, как часто таймер должен уведомлять приложение. Свойство Interval задается в миллисекундах (1000 миллисекунд = 1 секунде). Хочется отметить, что максимально возможное значение данного свойства равно 65 секундам

Объект переключатель (OptionButton) используют для выбора некоторого действия среди нескольких альтернатив. Рассмотрим такие свойства переключателей:

Объекты типа OptionButton называются переключателями, так как, располагаемые в группах, они позволяют выбрать одно из нескольких значений. Установка одного переключателя в группе (присвоение его свойству value значения True) автоматически сбрасывает другие переключатели, присваивая аналогичным свойствам значения False.

Флажок - Check Box Используется, когда пользователь должен ввести Да (флажок установлен ) или Нет (флажок снят )

Свойства:

Value - содержит значение элемента управления. Имеются следующие значения:

- нет, флажок снят;

- есть, флажок установлен;

- флажок недоступен.

Элементы управления и их свойства

6.1 Кнопки (Button)

Командные кнопки (button) применяются чаще всего и являются простейшими элементами управления: как правило - это такие серые ящички, на которых находится текст, как например, "OK" или "Отмена", и по которым просто кликают.

Особенные свойства: Если свойство Cancel установлено как истинно (True), то кнопка будет реагировать на каждое нажатие кнопки Esc. Свойство Default действует тоже только тогда, когда установлено на True. Оно "садит" на кнопку чёрную рамку, которая означает, что кнопка реагирует на все нажатия кнопки Enter. При помощи свойства Font можно изменять вид и стиль шрифта на кнопке.

События: Нужно собственно только событие Click (кнопка нажата)

6.2 Таймер

Таймер назван так правильно: он никакой не настоящий элемент управления и на окне невидим, если программа запущена. Всё, что он делает - это в через определённые отрезки времени выполняет какое-нибудь событие, событие Timer'a. Много таймеров применять не надо, т.к. в Windows'e постоянно имеется максимум 16 таймеров одновременно. [мои. прим.: теперь речь идёт видимо о ранних версиях Windows и VB, т.к. сейчас таёмеров можно вешать сколько угодно]

Особенные свойства: Свойство Interval задаёт отрезок времени между двумя процедурами таймера в миллисекундах. Чтобы таймер работал свойство Enabled должо быть установленно на True.

События: Имеется только событие таймера (см. выше).

6.3 Линии и фигуры

Два этих элементов управления для того, чтобы украшать окна программы линиями, кругами, прямоугольниками и другими фигурами. Исполнять какие-либо события они не могут!

Особенные свойства линии: Свойство BorderWidth определяет толщину линии. Со свойством BorderStyle из обычной линии можо сделать к примеру прерывистую линию - однако если её толщина не толще 1, то видно её очень плохо. X1, Y1, X2 и Y2 определяют координаты начальной точки(1) и конечной точки(2) линии. При помощи изменений этих своёств из программы можно заставлять эти линии "двигаться". И, наконец, свойств BorderColor определяет цвет линии.

Особенные свойства фигуры: Свойство Shape определяет что за геометрическую фигуру должна принять сама фигура: прямоугольник, квадрат. овал, круг, прямоугольник с закругленными углами и такой же квадрат. Три свойства Border... определяют вид рамки фигуры по цвету, стилю и толщине. Должна ли фигура быть заполнена цветом определяет свойство BackStyle. Цвет заднего фона определяет свойство BackColor. Для стиля заполнения фигуры цветом можно выбрать шесть стилей (свойство FillStyle) и, конечно же, заполнить фигуру можно любым цветом (FillColor-свойство).

6.4 Текстовое поле и поле надписи

В текстовомм поле пользователь должен вводить текст, который потом может быть использован в программе, например его имя или очки игры. На экране видно ящичек, в котором, если на него кликнуть, появится курсор. Поле надписи (этикетка, Label) используется, чтобы показывать текст, который пользователь не может изменить.

Особенные свойства текстового поля: Одно текстовое поле имеет 37 (!) свойств, и поэтому я объясню только важнейшие: свойство Text содержит текст, который высвечивается в поле или то, которое задал пользователь. При помощи свойства MaxLenght можно ограничивать число вводимых символов. Если это свойство установленно на нуль - ввод не ограничен (кроме памяти компьютера!). Cо свойствами Font... можно использовать другие вилы и стили шрифта, мо свойством Alignment можно определять положения текста в текстовом поле (центрирование, выравнять по левому/правому краю).

Особенные свойства поля надписи: Многие свойства абсолютно одинаковы со свойствами тексового поля, как например события Font... и Alignment. Однако текст находится в событии Caption.

События: Для текстового поля прежде всего важно событие LostFocus, которое происходит каждый раз, когда пользователь активирует другой объект. Это самый подходящий момент для программы, чтобы среагировать на изменённый пользователем текст.

6.5 Графическое поле

Графическое поле отображает графику, которая была сохранена, как .bmp или .ico файл.При этом будет показана только часть картинки. которая, которая поместилась в размеры графического поля. Если написать процедуру для события Click, можно использовать графическое поле, как красивую кнопку.

Особенные свойства графического поля: Графическое поле имеет даже 46 свойств, даже больше чем текстовое: свойство Picture определяет, какая картинка должна быть показана. Изменять его можно в режиме design и в ходе программы. Например, чтобы графическое поле приняло картинку другого графического поля, которое может быть невидимо. Припомощи свойства AutoSize можно устанавливать "авторазмеры" графического поля, т.е. оно примет размеры введённой картинки. Кроме того здесь находятся многие свойства предыдущих элементов управления.

Окно свойств

Окно Properties (Свойства) предназначено для отображения и настройки свойств формы, а также размещенных в ней объектов. В нем, например, содержатся такие свойства выбранного объекта, как позиция в форме, высота, ширина, цвет:

21.VB. Стандартные функции. Арифметические выражения. Порядок выполнения арифметических операций.

Стандартные функции

Функция – это подпрограмма, которую вызывают, чтобы выполнить какие-то расчеты или проверки. Когда она завершает работу, то возвращает управление вызывающей программе и передает ей результат расчета..

Abs (функция) - возвращает абсолютное значение числа

And (операция) - логическое И

AppActivate (оператор) - активизирует окно приложения

Array (функция) - создает массив из параметров и возвращает его какпеременную типа Variant

Asc (функция) - возвращает числовой код первого символа строки аргумента

Порядок арифм. Операций:

Операции с более высоким приоритетом выполняются раньше операций с меньшим приоритетом. Порядок убывания приоритетов:

1)вычисление функции;

2)унарная операция смены знака (-);

3)*, /, div, mod;

4)+, -

Несколько записанных подряд операций одинакового приоритета выполняются последовательно слева направо.

Часть выражения, заключенная в скобки, вычисляется в первую очередь. (Например, (А + В)*(C - D) - умножение производится после сложения и вычитания).

Не следует записывать выражений, не имеющих математического смысла. Например, деление на нуль, логарифм отрицательного числа и т.п.

22.VB. Операции отношения. Логические выражения. Логические операции. Правила выполнения логических операций.

Операции отношения

В отличие от математических операций, результатом выполнения которых может быть любое значение, операция отношения может иметь только два результирующих значения - True (истина) и False (ложно), которые могут быть присвоены переменным типа Boolean или определенному свойству объекта.

Логическое выражение — это выражение, результатом вычисления которого является значение логического типа данных: True или False. Выражения Boolean могут принимать различные формы. Самой простой является прямое сравнение значения переменной Boolean с литералом Boolean

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

Синтаксис:

результат = выражение1 And выражение2

Т.е. результат будет истинным только в том случае, когда истинны выражение1 И выражение2. Возвращаемые оператором значения представлены в следующей таблице: выр1 выр2 результат

True True True

True False False

True Null Null

False True False

False False False

False Null False

Null True Null

Null False False

Null Null Null

Правила записи лог. операций

операторы сравнения в С/С++. Проядок выполнения операции сравнения- слева направо

< - меньше (то есть, первый операнд, стоящий слева от данного оператора имеет значение

меньшее, чем операнд, стоящий справа)

> - больше (аналогично)

<= - меньше или равно

>= - больше или равно

!= - не равно

== - равно. ! Обратите внимание: не путайте два разных оператора: = используется для операции присваивания, а для операции сравнения используется двойное равенство!!!

Операторы логичнеских действий пишутся НЕ так, как они написаны в таблице.

&& - это оператор логическое И (в нашей таблице- AND)

|| - это логическое ИЛИ (OR в таблице)

! - это логическое НЕ. (NOT).

Например:

х0 && y=10

23.VB. Строковые переменные. Операции с символьными переменными, правила их выполнения. Обработка последовательности символов. Стандартные функции, работающие со строковыми переменными.

Строковые (символьные) переменные предназначены для хранения и обработки в программах последовательностей символов. Строковые переменные задаются именами, определяющими области памяти, в которых хранятся их значения (последовательности символов). Для хранения строковых переменных требуется одна ячейка на каждый символ. Простейший способ задания типа переменной (ее объявления) состоит в приписывании к имени переменной определенного суффикса. Для строковой переменной это суффикс $ (например, А$, Строка$).

Операции с строковыми переменными

Visual Basic использует строковые переменные двух типов: с переменной (до 231 байт) и фиксированной длиной (до 216 байт):

Для обработки строк в VB имеется довольно большой набор встроенных операторов и функций. Однако среди них можно выделить несколько базовых, с помощью которых получаются все остальные. Ключевыми функциями являются: операция конкатенации (слияния) строк, операции сравнения (равно, больше, меньше), Mid$ (оператор), Mid$ (функция), Asc и Chr$. Вот примеры реализации некоторых встроенных функций:

24.Ввод и вывод данных в VB. Системные функции. Функции InputBox() и MsgBox().

Ввод\Вывод данных

Для ввода значения переменной можно воспользоваться функцией с именем InputBox. Она выводит на экран диалоговое окно, содержащее сообщение и поле ввода, возвращает значение типа String, содержащее текст, введенный в поле ввода.

Упрощенный синтаксис обращения к функции:

InputBox(Сообщение[,Заголовок])

У этой функции первый слева аргумент обязательный, а все остальные – необязательные. Назначение аргументов:

сообщение – выражение типа String, отображаемое в диалоговом окне;

заголовок – выражение типа String, отображаемое в строке заголовка диалогового окна.

Функция MsgBox предназначена для вывода сообщения, адресованного пользователю, и ожидания реакции пользователя в виде числового кода нажатой кнопки:

K= MsgBox(Msg,Buttons,Caption,HelpFile,Context])

Единственным обязательным параметром функции MsgBox является текст сообщения Msg. Если задан только он, то в диалоговом окне наряду с сообщением Msg появляется только кнопка <OK> (рис.6.4). Ничего другого, кроме как нажать единственную кнопку, пользователю не остается — крестик и тот не доступен. Числовой код, соответствующий нажимаемой кнопке в данном случае равен 1 (системная константа vbOK).

Если вы хотите ограничиться только выводом сообщения, то к функции MsgBox можно обратиться как к оператору:

MsgBox Msg

25.VB. Оператор присваивания. Оператор перехода. Порядок выполнения операторов.

Оператор присваивания в языке Visual Basic имеет вид переменная = выражение (три из четырех записанных нами в приложениях предыдущего урока операторов — операторы присваивания). Данный оператор выполняется в следующем порядке: сначала вычисляется выражение справа, затем оно присваивается переменной слева, то есть после выполнения оператора переменная будет иметь значение, которое получилось при вычислении выражения в правой части. Важно представлять себе, что оператор присваивания не представляет собой равенство в алгебраическом смысле! Левую и правую части оператора нельзя менять местами1.

Оператор условного перехода – это структура, которая выбирает ту или иную ветвь кода процедуры на основе некоторого предопределенного условия или группы условий.

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

Операторы вычисляются в следующем порядке приоритета:

Арифметические операторы и операторы объединения

Возведение в степень (^)

Унарные плюс и минус (+, –)

Умножение и деление с плавающей запятой (*, /)

Целочисленное деление (\)

Модульная арифметика (Mod)

Сложение и вычитание (+, –)

Объединение строк (&)

Арифметический сдвиг разрядов (<<, >>)

Операторы сравнения

Все операторы сравнения (=, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf... Is)

Логические и побитовые операторы

Отрицание (Not)

Конъюнкция (And, AndAlso)

Включающая дизъюнкция (Or, OrElse)

Исключающая дизъюнкция (Xor)

26.VB. Оператор условного перехода. Линейный и блочный синтаксис.

Оператор условного перехода – это структура, которая выбирает ту или иную ветвь кода процедуры на основе некоторого предопределенного условия или группы условий

Блочный синтаксис:

IF логическое_вырожение THEN

[блок_операторов_1 ]

[ELSE IF логическое_выраженив_2 THEN

[блок_операторов_2]

[ELSE

[блок_операторов_п]]

END IF

Линейный синтаксис:

IF логическое выражение THEN операторы 1 [ELSE операторы2]

• операторы1 — операторы, выполняющиеся при значении логического выражения "истина"

• операторы2 — операторы, выполняющиеся при значении логического выражения "ложь"

При блочной форме, Microsoft BASIC тестирует первое логическое выражение. Если оно ненулевое ("истина"), выполняются операторы блока THEN. Если первое выражение равно нулю ("ложь"), Microsoft BASIC оценивает каждое условие ELSEIF. При выполнении такого условия выполняются операторы данного блока. Если ни одно из условий ELSEIF не выполнено (все = "ложь"), выполняются операторы блока ELSE.

27.VB. Оператор выбора SELECT CASE. Описание и порядок выполнения. Пример.

При необходимости анализировать большое количество условий в качестве альтернативы условному оператору If используется оператор Select Case, который создает более читабельную программу. Оператор Select Case - это оператор выбора ветви в зависимости от значения тестируемого выражения.

Синтаксис оператора select case

Select [ Case ] testexpression

[ Case expressionlist

[ statements ] ]

[ Case Else

[ elsestatements ] ]

End Select

Dim a As String 'Объявляем переменную a для хранения символов

Private Sub Command1_Click()

a = InputBox("Как тебя зовут", "Опрос")

Select Case a

Case "Андрей" 'Если a = "Андрей", то выводится сообщение имя занято

MsgBox "Андрей - это я", 64,

Case "Иван" 'Если a = "Иван", msgbox выводит сообщение

MsgBox "Это правда?", 64,

Case Else 'Если a равно чему - то другому то комп выводит сообщение

MsgBox "Какое - то неизвестное у тебя имя", 64,

End Select

End Sub

28.VB. Оператор цикла с параметром FOR…NEXT. Заголовок оператора. Структура. Область действия оператора. Выполнение оператора. Порядок изменения параметра цикла.

For Счетчик = Начальное Значение To Конечное значение Действия Next Счетчик Например:

Private Sub Command1_Click() 'При нажатии на кнопку:

For i = 0 To 4 'Действие будет обновляться 5 раз

MsgBox ""

Next i

End Sub

Цикл For…Next является самой старой и самой простой циклической конструкцией Basic. Фрагмент блок-схемы, который реализует оператор For…Next, можно представить следующим образом:

Cинтаксис оператораFor…Next следующий:

For Cчетчик=Начальное значение To Конечное значение [Step шаг]

Операторы блока S

Next [счетчик]

Операторы блока S называется телом цикла. Строка, начинающаяся с ключевого слова For, – заголовком цикла, строка с ключевым словом Next – концом цикла.

29.VB. Оператор цикла DO…LOOP. Структура оператора. Операторы с предусловием и постусловием. Условия While, Until. Выполнение оператора.

Циклы типа Do ... Loop используются, когда заранее неизвестно, сколько раз должно быть повторено выполнение блока операторов.

Такой цикл продолжает свою работу до тех пор, пока не будет выполнено определенное условие. Существуют четыре вида циклов Do ... Loop, которые различаются типом проверяемого условия и временем выполнения этой проверки. Синтаксис этих четырех конструкций приведен в табл.

Синтаксис

Do [{While | Until} Условие = True]

Блок операторов

[Exit Do]

Блок операторов

Loop

или

Do

Блок операторов

[Exit Do]

Блок операторов

Loop [{While | Until} Условие = True]

While/Until

Условие может задаваться ключевыми словами While и Until. В случае While цикл будет выполняться, пока условие истинно:

i = 0

Do While i < 10

i = i + 1

Loop

В случае Until цикл выполняется пока условие ложно:

i = 0

Do

i = i + 1

Loop Until i = 10

Этот цикл будет выполняться до тех пор, пока i не станет равным 10.

30.Вложенные циклы. Порядок изменения параметров внешних и внутренних циклов. Примеры на языке VB.

Вложенный цикл - это цикл, размещённый внутри другого цикла. На первом проходе внешний цикл вызывает внутренний, который исполняется до своего завершения, после чего управление передается в тело внешнего цикла. На втором проходе внешний цикл опять вызывает внутренний.Например:

При вложении циклов надо соблюдать определенные правила:

1)При вложении циклов For..Next каждый цикл должен иметь свою уникальную переменную счетчика;

2)При вложении циклов For Each..Next каждый цикл должен иметь свою уникальную element-переменную;

3)Если используется оператор Exit For или Exit Do во вложенном цикле, этим оператором заканчивается только выполняемый в данный момент цикл. VBA продолжает выполнение следующего цикла более высокого уровня.

31.Понятие массива. Переменные с индексами одномерные и многомерные массивы. Примеры на языке VB.

МАССИВ ДАННЫХ — совокупность однородных записей (т. е. наборов данных, характеризующих какой-либо объект управления, процесс и т. д.), рассматриваемых как одно целое и упорядоченных таким образом, что их описание (набор индексов) однозначно определяет положение каждого элемента или путь доступа к нему (напр., картотека материалов в отделе снабжения завода). Простейшее упорядочение данных — их нумерация в виде списка (одномерный массив).

Св-ва:

Размерность массива — количество индексов, необходимое для однозначного доступа к элементу массива

РАЗМЕРНОСТЬ МАССИВА (dimension). Количество индексов, необходимое для однозначной идентификации любого элемента массива. Массив, элемент которого - переменная с одним индексом, называется одномерным массивом, с двумя индексами - двумерным и т. д.

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

Пример: найти макс. Число в одномерном массиве:

Option Base 1

Dim a(10) As Single

Private Sub Command1_Click()

n = Val(Text1.Text)

av = Split(Text2.Text, " ")

For i = 1 To n

a(i) = val(av(i - 1))

Next

Max = a(1)

k = 1

For i = 1 To n

If a(i) > Max Then

Max = a(i)

k = i

End If

Next i

Picture1.Print "Максимальный элемент "; Max

Picture1.Print "Его номер "; k

End Sub

32.VB. Типовые программы обработки массивов. Поиск минимальных и максимальных элементов в одномерных массивах и матрицах. Пример.

Поиск max эл-та в массиве:

Public Class Form1

Dim a(10) As Integer ' Описываем массив из 10 элементов

Dim max As Integer ' max - это максимальное число массива

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

For i = 1 To 10

a(i) = Fix(Rnd() * 100) ' Задаем массив случайным образом, числами от 1 до 99

Next

max = 0 ' Значение max должно быть минимально возможным (т.к. в нашем случае все числа положительные, то будет достаточно и нуля)

For i = 1 To 10

If a(i) > max Then max = a(i) ' Сравниваем каждый элемент массива с max. Если он больше, то max равен данному элементу

Next

MsgBox("Максимум равен: " & max) ' Выводим сообщение с максимальным числом

End Sub

End Class

Нахождение min эл-та

Public Class Form1

Dim a(10) As Integer ' Описываем массив из 10 элементов

Dim min As Integer ' min - это минимальное число массива

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

For i = 1 To 10

a(i) = Fix(Rnd() * 100) ' Задаем массив случайным образом, числами от 1 до 99

Next

min = 9999999 ' Значение min должно быть максимально возможным

For i = 1 To 10

If a(i) < min Then min = a(i) ' Сравниваем каждый элемент массива с min. Если он меньше, то min равен данному элементу

Next

MsgBox("Минимум равен: " & min) ' Выводим сообщение с минимальным числом

End Sub

End Class

33.VB. Типовые программы обработки массивов. Вычисление суммы элементов массива. Ввод и вывод одномерных и двумерных массивов. Примеры.

Вычисление суммы элементов массива

Допустим, матрица 20 на 20, тогда сумма будет находится таким образом:

Private Sub Command1_Click()

Dim B(1 To 20, 1 To 20) As Integer

m = o

For i = 1 To 20

For j = 1 To 20

B(i, j) = Rnd * 20 + 1

If j > i Then m = m + B(i, j)

Print B(i, j);

Next j

Print

Next i

Print "Сумма элементов матрицы, стоящих над главной диагональю равна"; m

End Sub

34.VB. Типовые программы обработки массивов. Изменение размеров массивов. Циклический сдвиг. Сортировка.

Изменение размерности динамического массива

Могут сложиться обстоятельства, при которых точно неизвестно, сколько элементов потребуется в массиве. В VBA имеется возможность при помощи оператора ReDim переопределять размерность массива, а во время объявления не указывать его размерность.

Синтаксис ReDim:

ReDim [Preserve] varname(subscripts) [As Type] [, varname(subscripts) [As Type]]

varname - имя существующего массива;

subscripts - размерность существующего массива;

Type - любой тип VBA. Необходимо использовать отдельный оператор As Type для каждого массива, который определяется;

Preserve - необязательный аргумент. Его использование приводит к тому, что данные уже имеющиеся в массиве, сохраняются после изменения его размерности.

Примеры правильного использования оператора ReDim:

Dim Array_Month() As String - одномерный строковый динамический массив

ReDim Array_Month(29) - устанавливет размерность динамического массива равную 29 элементам

ReDim Array_Month(1 To 30) - изменяет размер массива до 30 элемента

ReDim Preserve Array_Month(1 To 31) - изменяет размер массива до 31 элемента, сохраняя содержимое

Dim Array_DBL() As Single - объявляет динамический массив

ReDim Array_DBL(2, 9) - делает массив двумерным

ReDim Array_DBL(3, 7) - изменяет размер двумерного массива

ReDim Preserve Array_DBL(1 To 3, 1 To 5) - изменяет последний размер массива, сохраняя содержимое

Обратите внимание! Можно изменять только последнее измерение многомерного массива, когда используется ключевое слово Preserve.

Сортировка массива

Например, сортировка массива по возрастанию:

Public Class Form1

Dim a(15), u As Integer 'задаем массив из 15 элементов и переменную u для запоминания цисел

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' При запуске формы

For i = 1 To 15 ' Задаем значение каждому элементу массива

a(i) = Fix(Rnd() * 100) ' Случайное число от 1 до 99

ListBox1.Items.Add(a(i)) ' Печатаем на ListBox1

Next

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Кнопка "Упорядочить"

'Создаем двойной цикл

For i = 1 To 15 ' Где конечное число цикла равно количеству чисел в массиве

For j = 1 To 14 'Тут конечное число цикла равно количеству чисел в массиве минус один

If a(j) > a(j + 1) Then ' Если предыдущие число больше следущего, то

u = a(j) ' Запоминаем предыдущие число в переменную u

a(j) = a(j + 1) ' Предыдущие число приравниваем следующему

a(j + 1) = u ' А следующие число заменяем числом u

End If

Next

Next

For i = 1 To 15 ' Распечатываем весь получившийся массив

ListBox2.Items.Add(a(i)) ' На ListBox2

Next

End Sub

End Class

35VB. Программирование циклических процессов. Типовые программы обработки массивов. Сортировка.

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

- циклы, которые используются только тогда, когда нужно выполнить некую группу операторов заданное количество раз (For .... Next);

- циклы, которые используются в тех случаях, когда заранее неизвестно сколько раз нужно повторить некоторую группу операторов (Do ..... Loop);

- циклы, которые используются для повторения определенных действий через заданные интервалы времени (использование объекта типа «Таймер»)

Рассмотрим все возможные виды циклов:

For <переменная>=<нач. значение> To <кон. значение> [Step <шаг>]

<повторно исполняемые операторы>

Next <переменная>

В роли переменной может быть использована только переменная числового типа.

Шаг может быть как положительным , так и отрицательным числом, а также десятичной дробью. Если шаг равен единице, то он может быть опущен.

Сортировка массива

Например, сортировка массива по возрастанию:

Public Class Form1

Dim a(15), u As Integer 'задаем массив из 15 элементов и переменную u для запоминания цисел

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' При запуске формы

For i = 1 To 15 ' Задаем значение каждому элементу массива

a(i) = Fix(Rnd() * 100) ' Случайное число от 1 до 99

ListBox1.Items.Add(a(i)) ' Печатаем на ListBox1

Next

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Кнопка "Упорядочить"

'Создаем двойной цикл

For i = 1 To 15 ' Где конечное число цикла равно количеству чисел в массиве

For j = 1 To 14 'Тут конечное число цикла равно количеству чисел в массиве минус один

If a(j) > a(j + 1) Then ' Если предыдущие число больше следущего, то

u = a(j) ' Запоминаем предыдущие число в переменную u

a(j) = a(j + 1) ' Предыдущие число приравниваем следующему

a(j + 1) = u ' А следующие число заменяем числом u

End If

Next

Next

For i = 1 To 15 ' Распечатываем весь получившийся массив

ListBox2.Items.Add(a(i)) ' На ListBox2

Next

End Sub

End Class

Программирование циклических процессов

36.Подпрограммы VB. Механизм передачи информации между подпрограммами. Передача аргументов по ссылке. Передача аргументов по значению. Примеры.

Общая структура описания подпрограммы Visual Basic:

Sub <имя_подпрограммы> [(<параметры>)]

<операторы>

End Sub

Такие процедуры могут вызываться или самим Visual Basic, или другими процедурами. Вызов подпрограммы выполняется с помощью следующих операторов:

Call <имя_подпрограммы> [(<параметры>)];

<имя_подпрограммы> [<параметры>]. Функция построена точно так же, как и процедура, однако результатом работы функции является возвращаемое значение (только одно).

Общая структура описания функции следующая:

Function <имя_функции> [(<аргументы>)] [As <Тип>] <операторы>

<имя_функции> = <выражение> End Function

Вызов функции выполняется с помощью оператора; присваивания:

<переменная> = <имя_функции> {(<аргументы>)].

Использование принципов модульного программирования Windows-приложения в среде проектирования VB выражено в двух аспектах.

1. Разбиение программного кода на отдельные компактные модули.

В файле модуля формы (frm) содержится программный код, относящийся к форме и объектам этой формы. В стандартном (универсальном) модуле (bas) содержатся программные коды, которые могут использоваться не в одной, а в нескольких формах (и даже в нескольких проектах).

2. Разбиение программного кода уже внутри модуля на отдельные части — процедуры.

В Visual Basic процедуры делятся на подпрограммы и функции. В свою очередь подпрограммы делятся на общие и процедуры обработки событий. Процедуры обработки событий начинают работать в ответ на какое-либо событие, например, нажатие, кнопки в экранной форме. Общие процедуры начинают работать после явного их вызова из какого-нибудь места программы. После выполнения такой процедуры происходит автоматический возврат в то место программы, откуда процедура была вызвана.

Общая процедура может входить в состав модуля экранной формы (в файл frm) или в состав стандартного модуля (в файл bas).

В Visual Basic есть три вида областей определения, характеризующих доступность переменной:

локальная: переменная доступна только в текущей процедуре;

контейнера: переменная доступна только в текущей форме, модуле или классе;

глобальная: переменная доступна во всем проекте. Локальными называются переменные, определяемые внутри процедуры или функции. Они доступны только внутри этой процедуры. Поэтому не возникает конфликтов при использовании разными процедурами переменных с одним и тем же именем. При выходе из процедуры все ее локальные переменные сразу же удаляются из памяти, а при новом вызове этой процедуры переменные создаются вновь.

Переменные контейнера определяются в секции (General) (Declarations) с помощью оператора Dim и доступны только внутри соответствующего контейнера, т, е. формы, модуля или класса.

Глобальные переменные определяются в секции (General) (Declarations) модуля. При этом вместо оператора Dim используется Public. Глобальные переменные доступны во всех модулях и процедурах проекта.

Локально объявленные переменные при выходе из процедуры удаляются из памяти, а при новом вызове процедуры инициализируются заново. Их содержимое при этом не сохраняется, что не всегда желательно. Этого можно избежать путем расширения области определения, т. е. объявив переменную глобальной или как минимум переменной контейнера. Но это разрешает доступ к переменной из других процедур.

Visual Basic дает возможность объявлять переменные как статические. При выходе из процедуры содержимое статической переменной сохраняется. При новом вызове этой процедуры переменной присваивается значение, которое она имела при последнем выходе из этой процедуры. Содержимое переменной сохраняется в течение всего времени, пока существует в памяти форма или модуль.

Объявление переменной как статической производится оператором:

Static <Имя_переменной> [As <Тип_переменной>]

Чтобы объявить статическими все локальные переменные процедуры, следует записать ключевое слово Static в заголовке процедуры.

Полное описание общей процедуры выглядит следующим образом:

<ОбластьВидимости>] [Static] Sub <имяПроцедуры>

(<Списокпараметров>)

<Операторы>

End Sub

Область видимости — это одно из двух ключевых слов Public или Private. Они устанавливают, к какому классу принадлежит процедура: к классу локальных или классу глобальных процедур. Процедура локальная (Private), если она доступна (видна) только внутри данного модуля и не может быть вызвана из других модулей. Процедура глобальная (Public), если она доступна (видна) из других модулей.

Наличие или отсутствие ключевого слова Static говорит о статусе локальных переменных, т. ё. переменных, объявленных внутри этой процедуры. При наличии этого слова локальные переменные будут сохранять свои значения между Последовательными вызовами этой процедуры. При отсутствии слова Static — не будут.

В процедурах обработки событий набор параметров зависит от события и не может быть изменен разработчиком.

В общих процедурах количество и порядок используемых параметров определяется разработчиком. В заголовке процедуры можно указывать тип данных для параметров.

В Visual Basic параметры могут передаваться двумя способами:

как ссылки (ByRef);

как значение (ByVal).

Если параметр передается как Ссылка, то вызванная процедура получает физический адрес памяти переданной переменной. При таком способе передачи можно изменять значение этого параметра. Так как вызываемая и вызывающая процедуры обращаются к одной и той же области памяти, значение переменной для них идентично.

По умолчанию параметры в Visual Basic передаются по ссылке, но можно указывать явно ключевое слово ByRef перед параметром в заголовке процедуры. Например,

Sub pr1(ByRef n As String)

При передаче параметра по значению Visual Basic передает копию содержимого переменной вместо ее адреса в памяти, и функция или процедура не сможет напрямую модифицировать исходное значение. Ключевое слово ByVal перед параметром должно указываться обязательно. Например, Function fkl (ByVal k As String) As Boolean.

37.VB. Процедура Sub…End Sub. Заголовок процедуры. Формальные и фактические параметры. Обращение к процедуре. Порядок выполнения.

Процедура Sub — это последовательность операторов Visual Basic, заключенных между операторами Sub и End Sub. Процедура Sub выполняет задачу и возвращает контроль коду вызова, но она не возвращает значения в код вызова.

При каждом вызове процедуры ее операторы выполняются, начиная с первого исполняемого оператора после оператора Sub и заканчивая первым из операторов End Sub, Exit Sub или Return.

Процедуру Sub можно определять в модулях, классах и структурах. По умолчанию она является Public, что означает, что ее можно вызывать из любого места в приложении, которое имеет доступ к модулю, классу или структуре, в котором она определена. Другими словами, method описывает процедуру Sub или Function, доступ к которой осуществляется вне модуля, класса или структуры, в которой определена эта процедура. Дополнительные сведения см. в разделе Методы класса.

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

Формальные параметры — это идентификаторы входных данных для подпрограммы. Если формальные параметры получают конкретные значения, то они называются фактическими. Формальные параметры могут получить конкретные значения только в той программе, где производится обращение к данному модулю-подпрограмме. Тип и порядок записи фактических параметров должны быть такими же, как и формальных параметров. В противном случае результат работы программы будет непредсказуемым. Из этого следует, что фактические параметры используются при обращении к подпрограмме из основной, а формальные параметры — только в самом модуле.

38.VB. Процедура-функция. Описание. Формальные и фактические параметры. Обращение к процедуре-функции. Порядок выполнения.

Функция-процедура - это особый вид процедуры VBA, возвращающей результат. Пользовательские функции-процедуры, как и встроенные функции VBA, могут иметь необязательные и именованные аргументы. Для записи функции-процедуры нельзя использовать макрорекордер, хотя можно редактировать записанный рекордером макрос и превращать его в функцию-процедуру.

Основное различие между функцией-процедурой и другими процедурами, помимо того, что функции возвращают значение, а процедуры - нет, состоит в том, что в функции-процедуре используются ключевые слова Function и End Function.

Синтаксис:

Function Name([Arglist]) [As Type]

'VBA Statements

[Name = expression]

End Function

Function - ключевое слово, объявляющее начало функции.

Name - имя функции. Имена функций следуют тем же правилам, что и имена других идентификаторов VBA.

Arglist - список аргументов данной функции, необязательный элемент.

Type - любой тип возвращаемого значения функции. Если тип не определен, результат, который возвращает функция-процедура, имеет тип Variant.

Name = expression - присваивание функции, которое указывает VBA, какое значение должна возвращать функция, необязательный элемент. Тем не менее, всегда следует включать оператор присваивания в функции-процедуры.

End Function - ключевые слова, заканчивающие функцию.

Формальные параметры — это идентификаторы входных данных для подпрограммы. Если формальные параметры получают конкретные значения, то они называются фактическими. Формальные параметры могут получить конкретные значения только в той программе, где производится обращение к данному модулю-подпрограмме. Тип и порядок записи фактических параметров должны быть такими же, как и формальных параметров. В противном случае результат работы программы будет непредсказуемым. Из этого следует, что фактические параметры используются при обращении к подпрограмме из основной, а формальные параметры — только в самом модуле

39.VB. Управляющие операторы: END, END IF, END FUNCTION, END SUB.

Оператор End - Обязательный. Завершает определение программного элемента.

Оператор End If - Обязателен для завершения блока определений If... Then... Else, начатого соответствующим оператором If. Дополнительные сведения см. в разделе

Оператор End Function - Завершает определение данной процедуры.

End Sub: завершает оператор Sub.

Пример:

Sub ExampleRandomSelect

Dim iVar As Integer

iVar = Int((15 * Rnd) -2)

Select Case iVar

Case 1 To 5

Print "Число от 1 до 5"

Case 6, 7, 8

Print "Число от 6 до 8"

Case Is > 8 And iVar < 11

Print "Число больше 8"

Case Else

Print "Вне диапазона от 1 до 10"

End Select

end sub

40.Дополнительные элементы управления языка VISUAL BASIC.