vb. (694737), страница 15

Файл №694737 vb. (Програмирование на Visual Basic) 15 страницаvb. (694737) страница 152016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 15)

3.5.4. Управляющая структура Select Case

Структура Select Case применяется, когда одна величина участвует в нескольких логических сравнениях и определяет, какой блок операторов будет выполняться Алгоритм такого множественного сравнения можно запрограммировать и с использованием логического структурного оператора, но применение структура Select Case эффективнее

Наиболее часто структура Select Case применяется в тех случаях, когда сравниваемая величина является целым числом (например, для выбора блоков операторов программы в зависимости от выбранной альтернативы диалога) *

Рис 34

Select Case, Case, Case Else, End Select ключевые слова

(Select Case и End Select соответственно оператор начала и конца структуры);

проверяемое выражение — арифметическое или символьное выражение;

список выражении I, список выражении 2...- может иметь одну из следующих форм:

выражение

выражение То выражение

Is знак отношения выражение

Пример:

Select Case Value

Case /, 3

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

Case 5 То 10

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

Case 12 Is >= 15

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

Case Else

Блок операторов 4 End Select

В данном примере проверяемым выражением является значение Value. Если значение Value 1 или 3 (Case /, 3), выполняется Блок операторов I. Если значение Value от 5 до 10 (Case 5 То 10), выполняется Блок операторов 2. Если значение Value равно 12 или больше 15 (Case 12 Is >= 15), выполняется Блок операторов 3. Если значение Value не равно ни одному из указанных значений

^и не принадлежит ни одному из указанных диапазонов, выполняется Блок операторов 4.

Пример программы.

Программа должна определять, является ли вводимый символ большой или малой буквой латинского алфавита или четной или нечетной десятичной цифрой. Проверка символа осуществляется по значению ASClI-кода вводимого символа. Значение ASClI-кода вводимого символа является проверяемым выражением структуры Select Case. В зависимости от значения кода выдается то или иное сообщение (соответствующие блоки Case-операторов. Запуск программы осуществляется щелчком мыши по форме (операторы программы помещаются в процедуру обработки события Form_Click). Для ввода символа и вывода сообщения используются встроенные функции InpupBox и MseBox.

Рис 3 5

В программе используются всгроенные функции Len (определяет длину строки), Cdbl (преобразует тип исходного выражения в тип Double), Is Numeric (проверяет, является ли символ числом), Asc (преобразует символ и ASCll-код), Спг (преобразует ASCII-код в строку).

После запуска программы появляется пустая форма. Щелчок мыши на форме вызывает появление окна ввода, в котором можно набрать вводимый символ и ввести его щелчком мыши по кнопке или клавишей “Enter” (рис. 3.5). После ввода появляется окно, выводящее характеристику введенного символа

Ввод других символов будет вызывать вывод соответствующих сообщений.

Рис 3 б

3.5.5. Циклы

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

Для реализации такого рода программ в Visual Basic специальные средства — операторы цикла.

3.5.5.1. Оператор цикла For-Next

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

For параметр цикла = начшьное значение То конечное значение [Step

шаг}

{блок операторов}

[Exit For] [блок операторов^ Next {параметр цик-га {,параметр цик-ш ][, ...]]

где For, To, Exit For, Step, Next ключевые слова. Пара For-Next определяют начало и конец оператора цикла. Операторы между ними (б->ок операторов) повторяются столько раз, сколько определено. задаваемыми начальным значением, конечным значением и

шагом.

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

Параметр цчюш - арифметическая переменная, не может быть элементом массива или элементом пользовательского типа

данных.

Начальное значение, конечное значение и шаг определяют значения, которые принимает параметр цикла при работе программы - на первом шаге параметр цикла принимает начальное значение, после выполнения операторов, входящих в цикл (блок операторов), параметр цикла изменяется на величину шага (выполняется оператор Next), опять выполняются операторы, входящие в цикл, параметр цикла изменяется на величину шага и т. д., пока параметр цикла не примет последовательно все свои

значения.

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

. Операторы, входящие в цикла будут выполняться если:

шаг цикла >= 0 и конечное значение >= начальное значение шаг цикла < 0 и конечное значение <= начальное значение. Пример.

Рассматривается фрагмент программы для нахождения максимального значения элементов одномерного массива из 15 элементов.

Dim В (1 То J5), МахВ As Single 'оператор объявления массива и переменной

МахВ = В(1) 'присвоение начального значения МахВ For /= /To 15 'начало цикла

If B(I) > МахВ Then МахВ = В(1) 'этот оператор выполнится 15 раз

Next / 'конец цикла MsgBox Str(MaxB) 'для вывода результата используется

'встроенная функция MsgBox, в которой 'используется встроенная функция Str 'для преобразования числового значения в строку

При использовании оператора цикла необходимо соблюдать правила:

1. Следует избегать изменения значения параметра цикла в каких-либо операторах внутри цикла.

  • 2. Передача управления на операторы внутри цикла (кроме первого) из каких-либо операторов вне цикла запрещена.

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

При выполнении цикла в цикле внутренний цикл выполняется для каждого значения параметра внешнего цикла (в фрагментах программ оператор C(I,J) = A(I) * B(J) выполнится 12 раз со следующей последовательностью индексов: С(1,1), С(1,2), С(1,3), С(1,4), С(2,1), С(2,2), С(2,3), С(2,4), С(3,1), С(3,2), С(3,3),

С(3,4)).

Внутренний (“вложенный”) цикл должен целиком содержаться во внешнем цикле:

Число вложенных циклов не ограничено.

Пример.

Рассматривается фрагмент программы для формирования вектора А(4). элементами которою являются суммы столбцов матрицы В (5,4).

Dim А(1 То 4), В(1 То 5, / То 4) As Single’onepaTop объявления массивов

For J = I To 4

A(J) = 0 'присвоение начального значения

'элемента вектора For / = / То 5

A(J) = A(J) + B(/,J) 'вычисление суммы в цикле Next / Next J

Пример программы.

Определен массив записей для хранения результатов экзаменов

Dim Sesia (5) As Resiiitaf на основе пользовательского типа данных Type Reyiltat

Familia As Sti ing * 20 Name Exam (1 To 3) As Stung * /5 ReyiltExam (/ To J) As Integer End Type

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

Поместим описание пользовательской структуры данных в раздел Geneial модуля Module! (рис 3 7) и создадим форму (рис 3 8).

Рис 37

Форма и программы процедур обработки событии обеспечивают следующую логику работы При загрузке формы меткам (Label I, Label2, Label3) присваиваются названия экзаменов и активизируется командная кнопка “Ввод”, командная кнопка “Вычисление” не активна Последовательное пятикратное щелканье мыши по кнопке “Ввод” после заполнения информацией текстовых окон обеспечивает ввод необходимых исходных данных После чего командная кнопка “Ввод” деактивизируется, а командная кнопка “Вычисление” активизируется После ввода в текстовое окно под ней фамилии и щелчка мыши по кнопке “Вычисление” производится вычисление средней оценки студента и результат выводится в текстовое окно

Рис 38

Работа с формой показана на рис.3.9, а, б.

3.5.5.2. Оператор цикла Do-Loop

Синтаксис оператора следующий

Do [{While | Until} логическое выражение]

[блок операторов}

[Exit Do]

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

Loop

или

Do

[блок операторов }

[Exit Do]

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

Loop [{While | Until} логическое выражение ] где Do, While, Until, Exit Do, Loop ключевые слова. Пара Do-Loop определяют начало и конец оператора цикла;

While определяет выполнение операторов, входящих в цикл, пока стоящее следом логическое выражение принимает значение “True”;

Until определяет выполнение операторов, входящих в цикл, до тех пор пока стоящее следом логическое выражение не примет значения “True”; Exit Do используется для прекращения выполнения цикла (управление передается на оператор, который следует сразу за Loop) и применяется, например, и логическом операторе, который проверяет альтернативное условие прерывания цикла (например, ошибку).

Запись условия “{While | Until} логическое выражение” в начале или в конце цикла определяет, где это условие (задается логическим выражением) будет проверяться.

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

Пример последовательного чтения информации из файла, когда необходима проверка, что файл не закончился, анализируя наличие записи конца файла с использованием встроенной функции EOF ( номер файла):

Операторы чтения файла будут выполняться только в случае значения функции EOF — False (текущая запись не является концом файла).

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

Пример.

Do I Do Password = InputBox (“Введите пароль”) Password = InputBox (“Введите пароль”) Loop While Password О “Секрет” ] Loop Until Password = “Секрет”

В данном примере условие стоит в конце и ввод пароля (обращение к встроенной функции InputBox) выполняется хотя бы один раз (формируется проверяемое в конце условие). В первом случае используется While, определяющее повторение цикла пока “Секрет” не совпадает с введенным значением. Во втором случае используется Until, определяющее повторение цикла до момента совпадения “Секрет” с введенным значением.

Пример программы.

Программа производит вычисление ряда с задаваемой точностью вычисления. М-и элемент ряда вычисляется по формуле

(-irN/(N!*(2*N+l))

Программа реализуется в четырех вариантах с использованием оператора цикла Do-Loop. Варианты определяют место записи условий While и Until. Каждый вариант помещается в процедуру обработки события щелчка мыши по соответствующей командной кнопке (кнопки “Вариант!”, “Вариант2”, “ВариантЗ”, “Вариант4”) на форме. Иллюстрации работы примера на рис. 3.10.

Текст процедур примера:

Private Sub Commandl_Click () Dim Eps, Sum, Sumi As Double Dim N, NFactorial As Integer Eps = Val(InputBox(“Введите точность вычисления”).) Sum = 0: N = 1: NFactorial = 1 Do While Abs((-1)”N/(NFactorial*(2 * N + 1))) > Eps

Sum = Sum + (-1) л N /(NFactorial * (2 * N + 1)) • N = N + 1

NFactorial = NFactorial * N Loop

MsgBox “Сумма paBHa”+Str$(Sum)+”,N равно” + Str$(N) End Sub

Private Sub Command2_Click() Dim Eps, Sum, Sumi As Double Dim N, NFactorial As Integer

Eps = Val(InputBox(“Введите точность вычисления”)) Sum = 0: N =- 1: NFactorial = 1

Do Until Abs ( (-1)”N/(NFactorial*(2 * N + 1))) < Eps Sum = Sum + (-1) A N / (NFactorial * (2 * N + 1)) N = N + 1

NFactorial = NFactorial * N Loop

MsgBox “Сумма равна”+31г$(Sum)+”, N равно”+ Str$(N) End Sub

Private Sub Command3_Ciick() Dim Eps, Sum, Sumi As Double

Dim N, NFactorial As Integer

Eps = Val(InputBox(“Введите точность вычисления”))

Sum =0: N = 1: NFactorial - 1

Do Sum ^ Sum + (-1; N / (NFactorial * (2 * N + 1))’

N = N + 1

NFactorial = NFactorial * N

Loop Wnile Abs ( (-1)’”N/(NFactorial* (2 * N + !)))> Eps

MsgBox “Сумма paBHa”+Str$(Sum)+ “, N равно” + Str$(N) End Sub

Private Sub Command4_Ciick () Dim Eps, Sum, Sumi As Double Dim N, NFactorial As Integer Eps = Val(InputBox(“Введите точность вычисления”)) Sum = 0: N = 1: NFactoriai = 1 Do

Sum = Sum + (-1) л N / (NFactorial (2 * N + 1))

N = N + 1

NFactorial = NFactoriai * N Loop Until Abs((-1)”N/(NFactorial*(2*N + !)))< Eps MsgBox “Сумма paBHa”+Str$(Sum).”, N равно” + Str$(N) End Sub

Циклы Do-Loop позволяют также строить циклы со счетчиком, аналогично циклам For-Next.

Пример.

Counter = 1 \ Counter = 1

Do While Counter <= 100 Do While Counter > 100

В(Counter) = ......... В(Counter) = ........

Counter = Counter + 1 Counter = Counter + 1

Loop Loop

Эти два фрагмента программы эквивалентны следующему фрагменту с использованием цикла For — Next.

For Counter = 1 То 100

В(Counter ) = ...........

Next Counter

Для организации ввода исходных значений элементов массивов удобно использовать операторы цикла при работе For-Next и Do-Loop. Примеры процедур обработки события щелчка мыши по форме, которые обеспечивают последовательный ввод элементов массива в специальном окне InpiitBox и их вывод в специальном окне MsgBox:

Sub Form_Click ()

Dim I As Integer

Static A(1 To 5)

I = 1

Do While I <= 5

A (‘I^=Val (InputBox ( “Введите элемент массива” ( Str(-T) ) )

MsgBox “Значение элемента массива” •+ Str(A(I))

1=1+1

Loop

End Sub

Sub Form_Click ()

Dim I As Integer

Static A(1 To 5) 1=1 Do Until I > 5

A (I)=Val(InputBox(“Введите элемент массива” + Str(-I) ) )

MsgBox “Значение элемента массива” + Str(A(‘I))

1=1+1

Loop

End Sub

Окна для ввода и вывода в приведенных примерах имеют вид на рис. 3.11 и 3.12. Альтернативным способом ввода нескольких значении элементов массива может быть использование текстового окна и его свойств SelLength, SelStart, SelText (см описание текстового окна) В определенных позициях текстового окна можно задавать значения различных элементов массива и с использованием указанных функции эти поля выделять (аналогично тому, как осуществлялся ввод данных в текстовой строке ввода в операционнои системе DOS и др ) Создадим форму и разместим на ней текстовое окно, определив максимальное число символов 80 (свойство MaxLength = 80)

Исторический экскурс' когда-то недавно на перфокарте можно было “набить” 80 символов и строка фортран-программы состояла из 80 позиции Каждый элемент массива будем располагать последовательно в четырех позициях строки (число символов вводимого числа, включая десятичную точку, не превышает 4) Пробелы между числами отсутствуют

Имя текстового окна Input_Txt Остальные параметры определяются по умолчанию Определим процедуру обработки события нажатия клавиши KeyPiess

Sub Inpui:_Txt_KeyPress (KeyAscii As Integer) Static A(1 To 5) As Single If KeyAscii = 13 Then For I = 1 To 5 Input-_txt. SalStart-f’I 1) *4 'последовательно

'определяется начальная позиция вводимого числа lnput_txt.SelLength= 4 'определяется количество ' вводимых символов

Характеристики

Тип файла
Документ
Размер
1,22 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее