Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие по информатике. Часть 3

.pdf
Скачиваний:
25
Добавлен:
31.05.2015
Размер:
1.49 Mб
Скачать

71

Пример 2: Найти произведение первых n натуральных чисел.

Sub Factor ()

Const n as Integer=20, Fact as Integer=1 Dim i as Integer

For i=1 to n Fact = Fact*i Next i

MsgBox Format (Fact, “############”) „ Будет выведено 2432902008176640000

End Sub

Пример 3: Найти сумму элементов выделенного диапазона

With Selection n=.Rows.Count m=.Column.Count End With : S=0 For i=1 to n

For j=1 to m S=S+selection.Cells(i,j).value Next j

Next i

with Section.End(xlDown) „ Здесь под 1 столбцом выделенного

.offset (1,0).value = “Сумма” „диапазона выводится «сумма»,

.offset (1,1).value = S „а в соседней клетке значение

End With

2. Оператор Do_Loop является вторым оператором, позволяющим организовать циклический процесс.

Он создаѐт логически управляемый цикл. Имеет 4 модификации: а) условие True в начале цикла

Do [While <условие>] – выполняется пока условие истинно [<блок операторов>]

[Exit Do]

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

Loop

б) условие True в конце цикла:

Do

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

[Exit Do]

[<блок операторов>] Loop [While <условие>]

в) условие False в начале цикла:

Do [Until <условие>]

– выполняется пока условие

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

не станет истинным

[Exit Do]

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

Loop

г) условие False в конце цикла:

Do

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

72

[Exit Do]

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

Loop [Until <условие>]

Пример 1:

Option Explicit

Sub Do_Rnd()

Dim a As Single: Dim I as Integer Randomize

Do While True a = Rnd()

Debug.Print a „печать случайного числа

If a>0.99 Then Exit Do Loop

End Sub

Пример 2. Вычислить сумму в каждом столбце матрицы

Sub CommandButton1_Click() Dim i, j, s(3), x(5, 3) As Integer For j = 0 To 2

s(j) = 0

For i = 0 To 4

x(i, j) = Cells(i + 1, j + 1) s(j) = s(j) + x(i, j)

Next i

Лист1.Range("E" & i + 1).Value = s(j) Next j

End Sub

Пример 3: Найти сумму всех вводимых чисел.

S=0: Do

x=InputBox (“Введите число”)

If Not IsNumeric (x) then Exit Do S=S+x

Loop

Пример 4: Код, ожидающий правильного ввода пароля Do : Пароль = InputBox(“Введите пароль”)

Loop Until Пароль = “Привет”

3. Следующей разновидностью оператора цикла является оператор

While_Wend.

Его невозможно прервать – нет Exit Do. Он имеет следующую конструкцию:

While <условие> <блок операторов>

Wend

Пример: Бросается игральная кость до выпадения 6 очков.

Dim Бросок As integer, Очки As integer Randomize

Очки = Int(6*Rnd())+1

Бросок = 1 While Очки<6

Бросок = Бросок + 1

Очки = Int (6+ Rnd ())+1

73

Wend

MsgBox “Победили на броске” & CStr(Бросок)

4. Циклический оператор For Each_Next относится к операторам объектного типа, т.е. применяется к массивам и наборам элементов. Имеет вид:

For Each <элемент>In<набор>

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

[Exit For] „– используется для прерывания цикла [<блок операторов >]

Next [<элемент>]

Пример 1: Суммирование элементов массива

Dim A As Variant Dim b, s as Integer

A = Array (1, 4, 12, 23, 34, 3, 23) S = 0

b=InputBox (" введите с клавиатуры значение для b ") For Each b in A

S=S+b

Next b

Пример 2: S = 0

For Each с in Selection.Cells S = S+c.value

Next c 'Из выделенного диапазона

MsgBox “S=”&CStr(S)

Пример 3: Работа с семейством рабочих листов – удаление из книги рабочего листа Тест.

For Each Лист in Worksheets If Лист.Name = “Tест” then

Лист.Delete End If

Next Лист

Пример 4: Работа с семейством ячеек в диапазоне А1 : С4, ячейки с положительными значениями окрашиваются в синий цвет, а с неположительными – в красный.

With Ячейка

if .value <=0 then

.Interior.ColorIndex =3 else .Interior.ColorIndex =5 End if

End With Next Ячейка

Пример 5. Вычислить сумму элементов массива а(30), значения которых лежат в диапазоне [2,5].

Private Sub CommandButton1_Click() Dim а (30) Аs 1ntegег, i, k, sum Аs Integег

'внесение в массив значений элементов массива с рабочего листа i = 1

Dо Whi1е i <= 30

а(i) = Се11s( (i + 1) , 1) i = i + 1: Lоор

74

i =1 k = 1

sum = 0

Dо Whi1е i <= 30

If а(i) >= 2 And а(i) <= 5 Then Лист1.Rаngе("В" & k + 1).vа1ue = i k = k + 1

sum= sum + а (i) End If

i=i + 1 Lоор

Лист1.Rаngе("С2").vа1uе = sum End Sub

Privatе Sub СоmmandВutton2_С1iсk () Dim i Аs Integег

i = 1

Dо Whi1е i <= 30 Се11s ( (i + 1) , 2) = " " i = i + 1

Lоор

Се11s (2, 3) = " " End Sub

Можно использовать оператор цикла For_Next. Тогда программа примет вид, приведенный ниже:

Private Sub CommandButton1_Click() Dim a(10) As Integer, i, k, sum As Integer For i=0 to 9

a(i) = Cells((i + 1), 1) Next i

k = 1 sum = 0

For i=0 to 9

If a(i) >= 2 And a(i) <= 5 Then Лист1.Range("b" & k + 1).Value = i k = k + 1

sum = sum + a(i) End If

Next i Лист1.Range("c2").Value = sum End Sub

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

1 вариант:

With Range (“A1”)

.value = 3

.Font.Italic = True End With

2 вариант:

With Range (“A1”)

75

.value = 3 With .Font

.italic = True

.size = 12

.Bold = True

.Color = RGB(255, 30, 255) End With

End With

11 ВСТРОЕННЫЕ ДИАЛОГОВЫЕ ОКНА

11.1 Окно ввода информации

Встроенных диалоговых окон существует 2 типа: окно сообщений и окно ввода) [5].

Окно сообщений выводит простейшую информацию (MsgBox), а окно ввода (InputBox) обеспечивает ввод информации.

Функция InputBox – окно с двумя кнопками ОК и Cancel, строкой сообщения и полем ввода. Рассмотрим оператор, выдающий это окно на экран.

InputBox (Prompt[,Title] [,Default] [,xPos] [,yPos] [,Helpfile, Context]), где:

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

Default – строковое выражение, отображаемое в поле ввода по умолчанию, если не ввести другое.

xPos – расстояние по горизонтали между левой границей ДО и левым краем экрана (если нет, то по центру горизонтали)

yPos – расстояние по вертикали между верхней границей ДО и верхним краем экрана (если нет, на 1/3 высоты экрана)

Helpfile – адрес файла-справки о ДО, а Context – номер соответствующего раздела в системе.

Пример:

Option Explicit

Sub Msg_Inp()

Dim Response As Integer

Dim Message As String

Dim Default As String Dim Title As String Dim Help As String Dim Style As Integer Dim Ctxt As Integer

Message = «Введите Фамилию, Имя и Отчество студента» „ строка-„сообщение Title=”Пример окна для ввода” „Заголовок окна

Default = “Смирнов Игорь Александрович” „текст по умолчанию

Responce = InputBox (Message; Title; Default; 100; 100) End Sub

11.2 Встроенные диалоговые окна для обмена сообщениями

Они бывают нескольких типов [5, 8]. А) Простое окно-сообщение

Пример: MsgBox (“Строка сообщения”)

76

Б) Функция MsgBox – выводит на экран ДО с сообщением, устанавливая режим ожидания нажатия кнопки пользователя.

MsgBox ((Prompt[,Buttons] [,Title] [,Helpfile, Context]) Prompt – строковое сообщение в ДО

Buttons – числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых в ДО кнопок: 0 – ОК+отмена; 2 – стоп + повтор + пропустить; 3 – да + нет + отмена; 4 – да + нет; 5 – повтор + отмена.

Остальные пункты команды, как в InputBox. Кроме кнопок можно отображать коды значков: 16 – белый на сером; 48 – черный на светло сером;

Пример. Использование окна с кнопками Да, Нет, Отмена.

Sub Три_кнопки ()

Dim Сообщение As String: Dim Кнопкa As Integer

„В Переменной сообщение задаѐтся структура ДО Сообщение = vbYesNoCancel + vbQuestion + vbDefaultButton1

„Кнопка возвращает число при нажатии кнопки

Кнопка = MsgBox (“Выберите Да, Нет, или Отмена?”, Сообщение, “Ещѐ пример”) „В зависимости от полученного значения будет одно из сообщений из Select Case: Select Case Кнопка

Case vbYes: MsgBox “Выбрали Да”,vbInformation, “Еще пример” Case vbNo: MsgBox “Выбрали Нет” vbInformation, “Еще пример”

Case vbCancel: MsgBox “Выбрали Отмена”, vbInformation, “Еще пример” End Select

End Sub

Пример. Использование в программе.

Sub Msg_Priim()

Dim a As Single Randomize a=rnd()

MsgBox “Значение случ. числа” &cstr(a) End Sub

Пример. Ввод значения.

x= InputBox(“Введите х”, “Пример”) : y=x^2

Для вывода в окне командной кнопки используются коды, приведѐнные в табл. 5. Рассмотрим пример использования этих кодов.

Пример. Использование кодов кнопок.

Option Explicit

Sub Msg_Priim()

Dim Response As Integer, Msg As String Dim Title As String

Dim Help As String, Style As Integer, Ctxt As Integer

Msg= «Вы хотите продолжить?»

Style = 35‟vbYesNoCancel+ vbDefaultButton1+ vbQuestion

Title=”Пример окна сообщения” „ (Заголовок окна) Help = “DEMO.HLP” „Имя файла-подсказки

Ctxt = 0 „Номер контекста внутри файла-подсказки

Response = MsgBox ( Msg; Style; Title; Help; Ctxt ) „ присвоение „ переменной кода ответа:End Sub

 

 

77

 

 

Таблица 5

Код

Константа

Описание

 

 

Коды командных кнопок:

0

vb OK Only

OK

1

vb OK Cancel

OK, Отмена

2

vb AbortRetryIgnore

Прекратить, Повторить, Игнорировать

3

vb YesNoCancel

Да, Нет, Отмена

4

vb YesNo

Да, Нет

5

vb RetryCancel

Повторить, Отмена

 

 

Коды активности по умолчанию

0

vbDefaultButton1

Активная первая

256

vbDefaultButton2

Активная вторая

512

vbDefaultButton3

Активная третья

 

 

Коды пиктограмм

16

vbCritical

Важное сообщение

32

vbQuestion

Предупредительный запрос (справка)

48

vbExclamation

Предупредительное сообщение

64

vbInformation

Информационное сообщение

 

 

Коды модальности

0

vbApplicationModal

Программное модальное описание (требуется

 

 

обязательный ответ, работа приложения

 

 

приостанавливается)

4096

vbSystemModal

Системное модальное описание (требуется

 

 

обязательный ответ – работа всех приложений

 

 

приостанавливается)

Программное модальное описание (требуется обязательный ответ, работа приложения приостанавливается).

Системное модальное описание (требуется обязательный ответ – работа всех приложений приостанавливается).

11.3 Диалоговые окна пользователей

Они обеспечивают ввод и редактирование данных файлов и таблиц [8]. Для создания ДО выполнить команду:

Вид | Макрос | Диалог – тип вставляемого листа.

На экране есть панель инструментов Формы для размещения и настройки элементов окна и основа для построения ДО пользователя.

Состав пиктограмм панели инструментов Формы имеет вид, приведѐнный

втабл. 6.

Вдиалоговом окне могут размещаться элементы произвольного вида, которые сознают наборы объектов. Доступ к конкретному элементу – по имени набора и имени или порядковому номеру элемента внутри набора.

78

Таблица 6. Перечень пиктограмм

Вид

Название вида

 

 

Метка (создание текстовых вставок в окне)

Label

Поле ввода текста

EditBox

Рамка группы (обеспечение элементов окна)

GroupBox

Командная кнопка (может быть назначена процедура

CreateBatton

или макросы)

 

Поле ввода со списком (комбинированное окно)

Combination List Edit

Поле ввода с раскрывающимся списком

Combination

Drop_Down Edit

 

Редактор органов управления (свойства объекта)

Control Properties

Переключатель координатной сетки

Toggle grid

Флажок (контрольный индикатор)

Check Box

Переключатель (кнопка выбора)

OptionBatton

Окно списка

ListBox

Раскрывающийся список (выпадающее окно)

Drop_Down

Линейка прокрутки

ScrollBar

Регулятор счетчика (спиннер)

Spinner

Редактор кода программы

EditCode

Выполнение диалога

RunDialog

Метки – не могут редактироваться пользователем в процессе работы с диалоговым окном, но могут изменяться программным путем с помощью свойства Caption объекта Labels()

Пример.

Sheets(“<имя_листа_диалога>”). Labels (“<имя_объекта_метки>”). Caption = “строка_текста”

Поле ввода – является многострочным, содержит текст, который можно корректировать. Поле ввода входит в набор EditBoxes(), его можно редактировать и программным способом.

Пример.

Sheets(“<имя_листа_диалога>”). EditBoxes (“<имя_окна>”). Text = “строка_текста”

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

Флажок – обеспечивает аддитивный выбор, имеет свойство Value (значение True или False) и образует набор CheckBoxes().

Выбран – не выбран Кнопка переключателя – обеспечивает альтернативный выбор из списка

взаимоисключающих опций. Образуют набор OptionBattons () Свойство Value имеет значения True или False - не выбрана кнопка.

79

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

1)ListFillRange – ссылка на диапазон ячеек электронной таблицы, содержащая значения элементов списка.

2)List() – перечисление элементов списка, непосредственно, замена старого списка новым целиком.

Раскрывающийся список – подобен окну списков, но входит в набор

DropDowns()

Поле ввода со списком – объединяет окно списка и окно редактирования. При выборе элемента списка он автоматически появляется в окне редактирования, где его корректируют (здесь два различных окна).

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

Линейка прокрутки – создаѐт вертикальную или горизонтальную линейку прокрутки. Value содержит положение ползунка – число, доступ к линейкам через набор ScrolBars().

Свойства Min и Max – это диапазон значений, а свойства LargeChange и SmallChange содержат величину изменения Value.

Регулятор счетчика – аналогичен линейке прокрутки, но нет свойства

LargeChange.

12 КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Что входит в основные понятия языка VBA?

2.Перечислите пункты меню для создания функции пользователя

3.Какие встроенные типы данных вы знаете?

4.Как описываются переменные?

5.Как описываются массивы переменных?

6.Как объявляют константы?

7.Какие операции языка VBA вы знаете?

8.Какие операторы языка VBA вы знаете?

9.Как вызвать процедуру?

10.Перечислите операторы управления

11.Какая конструкция у оператора повтора?

12.Какие есть встроенные диалоговые окна?

13.Как создать окно ввода информации?

14.Укажите оператор для вызова встроенного диалогового окна для обмена сообщениями

15.Как создают диалоговые окна пользователей?

80

ЛИТЕРАТУРА

1.Информатика. Базовый курс. 2-е издание. Под ред. Симоновича С.В. –

СПб.:Питер, 2005. – 640 с.

2.Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика. – М.: Academia, 2004. – 848 с.

3.Гофман В., Хоменко А. Delphi. Быстрый старт. - СПб: БХВ-Петербург,

2002.

4.Основы программирования в DELPHI. Часть 1. – Новосибирск, СГГА

5.Гарнаев А.Ю. Microsoft Excel 2002: разработка приложений. – СПб.: БХВ-Петербург, 2003. – 768 с.

6.Брайан Сайлер, Джефф Споттс. Использование Visual Basic 6. Специальное издание: пер. с англ. – М.: Издательский Дом «Вильямс», 1999. –

832 с.

7.Михаэль Райтингер, Геральд Муч. Visual Basic 6: для пользователя: пер.

снем. – Издательская группа BHV, 1999. – 416 с.

8.Волченков Н.Г. Программирование на Visual Basic 6: В 3-х ч. – М.:

ИНФРА-М, 2000. – 288 с.

9.Глушаков С.В., Сурядный А.С. Microsoft Excel 2007. – М.: АСТ МОСКВА, 2008. – 416 с.

10.Березин Б.Н., Березин С.Е. Начальный курс С и С++. – М.: ДИАЛОГ-

МИФИ, 1996. – 288 с.

11.Либерти Д. Освой самостоятельно С++. 10 минут на урок, 2-е издание: пер. с англ. – М.: Издательский Дом «Вильямс», 2005. – 352 с.

12.Культин Н.Б. С/С++ в задачах и примерах. – СПб: БХВ-Петербург, 2001.

– 288 с.

13.Керниган Б., Ритчи Д., Фьюэр А. Язык программирования Си. – М.: Финансы и статистика, 1985. – 601 с.

14.Уэйт М., Прата С., Мартин Д. Язык Си. Руководство для начинающих:

пер. с англ. – М.: Мир, 1988. – 512 с.

15.Райслорф К., Хендерсон К. Borland C++ Builder. Освой самостоятельно.

– М.: БИНОМ, 1998. – 704 с.

16.Теллес М. Borland C++ Builder: библиотека программиста. – СПб.:

Питер Ком, 1998. – 512 с.

17.Холингвэрт Д., Баттерфилд Д., Сворт В., Олсоп Д. и др. С++ Builder. Руководство разработчика: В 2-х томах. – М.: Издательский Дом «Вильямс», 2001. Том 1. Основы. – 880 с. Том 2. Сложные вопросы программирования. –

832 с.

18.С++ Builder в задачах и примерах. – СПб.: БХВ-Петербург, 2005. –

336 с.

19.Самоучитель С++ Builder. – СПб.: БХВ-Петербург, 2004. – 320 с.

20.Гридасов А.Ю., Вдовин С.А. Автоматизация бухгалтерского учета на современном малом и среднем предприятии. – Новосибирск, НГТУ, 2002.

21.Харитонов С.А. Бухгалтерский и налоговый учет в программе «1С:Бухгалтерия 8.0». – М.: Кнорус, 2005.