Программирование ветвлений и циклов.



Ветвление в VisualBasic организуется с использованием:

· условного оператора IF;

· встроенной функции IIF;

· оператора выбора CASE.

Для проверки одного условия и выполнения оператора или блока операторов используется условный оператор IF...THEN. Этот оператор можно использовать с разным синтаксисом: однострочным (линейным) и многострочным (блочным).

Линейный оператор имеет следующий синтаксис:

If<условие>Then<операторы!> [Else<операторы2>]

Блочный оператор имеет следующий синтаксис:

If<условие>Then
<блок операторов 1>
[Else
<блок операторов2>]
EndIf

Если заданное условие имеет значение True, выполняется блок операторов, в противном случае — блок операторов2. Если предложение Else не задано, при невыполнении условия управление сразу же передается следующему после If оператору.

Оператор If может быть вложенным, т. е. находиться внутри блоков операторов. Для проверки более одного условия и выполнения одного из нескольких блоков операторов используется расширенный условный оператор вида:

If<условие 1>Then
<блок операторов 1>
Elself<условие 2>Then
<блок операторов 2>
Elself<условие n>Then
<блок операторов n>
[Else
<блок операторов Else>]
EndIf

Для выбора одного из значений в зависимости от выполнения или невыполнения некоторого условия используется условная функция IIF, имеющая следующий синтаксис:

IIF (<условие>, <значение1>, <значение2>)

Эта функция возвращает значение1, если условие истинно, и значение2, если условие ложно.

В качестве условия можно использовать логическое выражение, возвращающее значение True (Истина) или

False (Ложь), или любое арифметическое выражение (нулевое значение эквивалентно False, а ненулевое — True).

Оператор выбора SELECT CASE используется для проверки одного условия и выполнения одного из нескольких блоков операторов.

Формат записи оператора:

SelectCase<проверяемое выражение>
Case<список выражений 1>
<операторы 1>Case<список выражений 2>
<операторы 2>Case<список выражений 3>
<операторы 3>
CaseElse
<операторы группы Else>
EndSelect

Проверяемое выражение вычисляется в начале работы оператора SelectCase. Это выражение может возвращать значение любого типа (логическое, числовое, строковое).

Список выражений — одно или несколько выражений, разделенных стандартным символом — разделителем (точкой с запятой).

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

Эти алименты списка выражений могут иметь одну из следующих форм:

<выражение> — проверяет совпадение заданного выражения с одним из выражений — элементов списка;

<выражение 1> То <выражение 2> — проверяет попадание заданного выражения в указанный диапазон;

<Is<логический оператор>< выражение> — проверяет выполнение указанного условия для заданного выражения.

ЯЗЫК ПРОГРАММИРОВАНИЯ VISUAL BASIC. ПРОГРАММИРОВАНИЕ ЦИКЛОВ

В VisualBasic применяются три конструкции операторов цикла:

· For ... Next

· While ... Wend

· Do ... Loop

Оператор цикла For...Next имеет формат:

For<счетчик> = <начало> То <конец>
[Step<приращение>]
<операторы тела цикла>Next [<счетчик>]

Перед выполнением цикла переменной счетчику цикла присваивается начальное значение. Операторы, перечисленные в цикле, выполняются до тех пор, пока значение счетчика цикла не превысит конечное значение. При каждом выполнении цикла значение счетчика увеличивается на шаг (приращение). По умолчанию шаг равен 1.
Оператор цикла WHILE...WEND используется для организации циклов с предусловием и имеет следующий формат:

While<условие продолжения цикла>
<операторы тела цикла>
Wend

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

Оператор цикла DO...LOOP используется для орга-шзации циклов с неопределенным числом повторений с предусловием и с постусловием).

Этот оператор для организации цикла с предусловием может использоваться в двух модификациях:

а) DoWhile<условие продолжения цикла>

<операторы тела цикла>

Loop

б) DoUntil<условие прекращения цикла>

<операторы тела цикла>

Loop
Операторы, перечисленные в цикле, выполняются до ех пор, пока выполняется заданное условие продолжения цикла, если задано предложение While, или до тех ор, пока нарушается условие прекращения цикла. Для организации цикла с постусловием оператор DoLoop также может быть использован в двух модификациях:

в) Do

•<операторы тела цикла>

LoopWhile<условие продолжения цикла>

г) Do

<операторы тела цикла>

LoopUntil<условие прекращения цикла> Условие выполнения или прекращения цикла здесь проверяется в конце. Поэтому этот цикл обязательно выполняется хотя бы один раз.

42.ПОНЯТИЕ ПРОЦЕДУРЫ. ПОДПРОГРАММЫ И ФУНКЦИИ. МОДУЛЬНЫЙ ПРИНЦИП ПОСТРОЕНИЯ ПРОГРАММНОГО КОДА

В VisualBasic весь программный код находится внутри процедур (подпрограмм). Общая структура описания подпрограммы VisualBasic:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<ОбластьВидимости>] [Static] Sub<имяПроцедуры>
(<Списокпараметров>)
<Операторы>
EndSub

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

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

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

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

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

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

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

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

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

Sub pr1(ByRefnAsString)

При передаче параметра по значению VisualBasic передает копию содержимого переменной вместо ее адреса в памяти, и функция или процедура не сможет напрямую модифицировать исходное значение. Ключевое слово ByVal перед параметром должно указываться обязательно. Например, Functionfkl (ByValkAsString) AsBoolean.


Дата добавления: 2019-09-02; просмотров: 223; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!