Слайд 12006г
Московский Государственный Университет
Печати
Visual Basic
2006г
Слайд 2
1.1. Общие сведения
11.2. Алфавит и лексемы языка
1.3. Типы данных, программирование
линейного процесса
1.8. Работа с файлами в языке Visual Basic
1.5. Встроенные
функции VBA
1.6. Операторы VBA
1.7. Проектирование экранных форм
1.9. Операторы и функции для работы с файлами последовательного доступа
Visual Basic for Application
Содержание
Выход
1.4. Объявление массивов
Слайд 31-я неделя
Л-1. Visual Basic – объектно-ориентированный язык программирования. Концепция визуального
программирования (формы, элементы управления, меню, панели инструментов). Основные понятия объектно-ориентированного
программирования (объекты, свойства, методы, события, классы).
3-я неделя
Л-2. Основные понятия языка Visual Basic. Алфавит и лексемы языка. Встроенные функции. Программирование линейных вычислительных процессов.
5-я неделя
Л-3. Понятие алгоритма. Типовые алгоритмы решения прикладных задач. Базовые алгоритмы.
7-я неделя
Л-4. Объявление массивов в Visual Basic. Операторы Visual Basic. Программирование разветвляющихся и циклических вычислительных процессов.
9-я неделя
Л-5. Использование модулей и процедур в Visual Basic.
11-я неделя
Л-6. Работа с файлами в Visual Basic. Использование файлов последовательного доступа.
13-я неделя
Л-7. Разработка проектов программ на языке Visual Basic с использованием визуальных элементов. Функции MsgBox, InputBox.
Слайд 415-я неделя
Л-8. Проектирование экранных форм. Использование объектов: Label, TextBox, ListBox,
FileListBox, Image, Common Button и их свойства.
17-я неделя
Л-9. Примеры
готовых приложений созданных в среде Visual Basic.
Слайд 5Литература:
Информатика: Учебник/Под ред. Проф. Н.В. Макаровой. – М.:Финансы и статистика,
2000.
Браун С. Visual Basic 6: Учебный курс. Пер. с
англ. – СПб: Питер, 2002.
Волченков Н.Г. Программирование на Visual Basic 6: В 3-х ч. М.: Инфра-М, 2002.
Глушаков С.В., Сурядный С.А. Программирование на Visual Basic 6.0: М.: АСТ; Харьков: Фолио, 2005.
Назаров С.В., Мельников П.П. Программирование на MS Visual Basic: Учебное пособие / Под ред. С.В.Назарова. – М.: Финансы и статистика, 2002.
Петрова В.В., Шелудченко А.Г. Информатика. Программирование на MS Visual Basic. Лабораторные работы. М.: МГУП, 2007.
Слайд 61.1. Общие сведения
В Windows, как правило, программы имеют стандартный
интерфейс пользователя. Это означает, что пользователи потратят больше времени на
работу с приложением и меньше на изучение меню, диалоговых панелей и комбинаций клавиш.
До появления Visual Basic в 1991 году разработка приложений Windows была намного тяжелее процесса создания приложений для DOS. С Visual Basic программирование в Windows не становится более эффективным, но оно становится более простым.
Home
Слайд 7
Язык программирования Visual Basic является основой не только системы программирования,
его версия - язык программирования Visual Basic for Application является
общей платформой для создания Windows-приложений в среде Microsoft Office, а Visual Basic Scripting Edition (VBScript) используется для написания сценариев.
Средства доступа к данным позволяют создавать базы данных, приложения предварительной обработки данных и расширяемые компоненты обслуживающих узлов (серверов) для большинства форматов баз данных, включая Microsoft SQL Server и других баз данных предметного уровня.
Технология ActiveX позволяет использовать в документах функции, предоставляемые другими приложениями (например Word, Excel и т.д.) и отображать их с помощью браузеров.
Поддержка Internet позволяет создавать приложения для Internet-сервера и обеспечивает доступ к сетевым документам.
Home
Слайд 8
Методика программирования на Visual Basic сводится к следующему:
создание интерфейса: объектов
управления и контроля (пользовательские меню);
установка свойств объектов;
написание процедур, используемых при
вызове объектов.
Visual Basic является объектно-ориентированным языком программирования (ООП). ООП — это современный стиль в разработке программ.Этот стиль базируется на следующих требованиях к компьютерным программам, они должны быть:
проверяемыми;
легко модернизируемыми;
многократно используемыми;
переносимыми.
Home
Слайд 9
В основе ООП лежат три принципа: инкапсуляции, наследования и полиморфизма.
Принцип
инкапсуляции предполагает сочетание структур данных с методами их обработки.
Принцип наследования
состоит в том, что подклассы принадлежащие определённым классам наследуют их данные и методы обработки.
Полиморфизм обеспечивает способность объекта реагировать на запрос сообразно своему типу.
ООП максимально использует принцип модульности программ. Модульные программы состоят из отдельных относительно самостоятельных частей — модулей.
Каждый модуль выполняет специфические, строго определённые функции преобразования и имеет доступ только к тем данным, которые необходимы для этого преобразования. Код модуля, разработанный со строго определённым интерфейсом для других модулей программы, лёгок для отладки, сопровождения и понимания. Другой аспект модуля его замкнутость: изменения вносимые в код модуля влияют только на функции этого модуля и не приводят к ошибкам в работе других модулей.
Home
Слайд 10Программный объект в ООП называется «контейнером». Контейнер включает в себя
данные и программный код, который знает, как манипулировать с этими
данными. В традиционном программировании блоки данных передавались от модуля к модулю и каждый модуль использовал их своим способом. Если передавались неверные данные, то они всё равно обрабатывались, что приводило к неверным результатам.
В ООП данные и код объединены в объекте, данные не передаются, а объект, получив сообщение, выполняет или не выполняет преобразование над включёнными в него данными. Примером объектов в VBA и Excel могут служить: Рабочие книги, рабочие листы, таблицы, ячейки, диаграммы, текстовые окна.
ООП изменило само понятие «документ», под документом теперь понимают объект, состоящий из данных разного типа и программ, их обрабатывающих.
Home
Слайд 11
В объектно-ориентированной среде с любым объектом сопоставляется определённая совокупность действий.
Выбор из этой совокупности действий (методов), необходимого в данный момент
действия, определяется поставленной целью.
Программный объект обладает определёнными свойствами и методами. Свойства — это видимые характеристики объекта, а методы — это операции преобразования этих данных(например свойство Value текстового окна — это текст, который вводится в это окно, свойство Color управляет цветом шрифта, а свойство Enabled — возвращает или позволяет задать значение разрешающее или запрещающее объекту реагировать на события, вызванные действиями пользователя).
Слайд 12В ООП один объект посылает сообщение другому, который при получении
сообщения вызывает некоторый метод обработки. Обычно реакцию приложения можно разделить
на три составляющих: визуальную, системную и обработчик событий.
Визуальная составляющая определяет интерфейс пользователя (кнопки, поля сообщений и другие элементы управления). При воздействии на элементы интерфейса пользователь вызывает некоторые события. Системная составляющая среды программирования анализирует событие и запускает соответствующий метод, обработчик событий.
Для доступа к свойствам и методам объекта, являющегося составной частью других, более крупных объектов, нужно записать список из всех вложенных объектов.
Например, в конструкции: MyMonitor.Power.Value объект MyMonitor включает объект-кнопку Power, и наследует свойство Value объекта Power. Вложенность объектов наследования может возрастать.
Home
Слайд 13Приложение – это набор инструкций, заставляющий компьютер выполнять задачу. Структура
приложения – это метод организации инструкций, т.е. место их хранения
и порядок их выполнения. Приложение Visual Basic основано на объектах, поэтому структура программы близко моделирует его физическое представление на экране. Экранная форма является представлением свойств, которые определяют её вид на экране и внутреннее поведение.
Для каждой формы в приложении существует связанный с ней модуль формы, который хранится в файле с расширением FRM и содержит её код. Каждый модуль формы содержит процедуры обработки событий – раздел кода, который выполняется в ответ на определённые события. Для каждого элемента управления формы существует соответствующий набор процедур обработки событий в модуле формы. Код, не связанный с конкретной формой или элементом управления, помещается в стандартный модуль, хранимый в файле с расширением BAS.
Слайд 14Событие – это действие, распознаваемое формой или элементом управления. Каждая
форма и элемент управления в Visual Basic имеют заранее определённый
набор событий и коды процедур, связанных с обработкой этих событий.
Код приложения Visual Basic имеет иерархическую структуру. Типичное приложение состоит из одного или более модулей: модуль формы, необязательные стандартные модули для совместного использования и необязательные модули класса.
Каждый модуль содержит одну или более процедур, которые могут включать процедуры обработки событий, процедуры Sub и Function и процедуры Property (свойство).
Слайд 15
При запуске Visual Basic его первый экран будет выглядеть так,
как на рис. 1. В диалоговой панели New Project, показанной
на рис. 1, следует дважды щелкнуть на значок Standard EXE (она первая на рисунке). Программа тут же перейдет в режим, показанный на рис. 2. Отметим, что пустое окно носит имя Project1-Form1 (Form). Внутри него находится другое окно с названием Form1, в котором видна сетка из точек.
Слайд 16
Home
Рисунок 1. Первый экран при запуске Visual Basic.
Слайд 17
Рисунок 2. Первоначальное состояние среды разработки Visual Basic
Home
Слайд 181.2. Алфавит и лексемы языка
Как и любой другой язык, Visual
Basic имеет свой алфавит.
В него входят:
• прописные и строчные
буквы латинского алфавита: А, В,..., Z, a, b,...,z;
• прописные и строчные буквы кириллицы (А—Я, а—я);
• цифры от 0 до 9;
• символ подчеркивания «_»;
• не изображаемые символы («обобщенные пробельные символы»);
• специальные символы, участвующие в построении конструкций языка:
+, -,*,/, \, ", =,>,<,[,],(,),., {,},',&,;,:,@ (комерческое «ет»);
• составные символы, воспринимаемые как один символ:
< =, > =, <> ;
Home
Слайд 19При запуске Редактора кода (Code Editor) появляется окно, в котором
можно вводить текст программы.
Так как работа с программным кодом
осуществляется в модулях, то для каждого модуля, выбранного в проводнике проекта (Project Explorer), создаётся отдельное окно. Код внутри модуля разделён на отдельные секции, для каждого объекта, содержащегося в модуле.
При записи текста модуля могут встречаться длинные строки, их можно разбить на несколько строк, для этого используется символ пробела за которым следует символ подчёркивания. Пример:
Data.Record = “SELECT * From Titles, Publisher” _
& “WHERE Publishers.PubID = Titles.PubID” _
& “AND Publishers.State = ‘CA’ ”
При записи нескольких операторов в одну строку, они разделяются двоеточием. Пример:
Text1 = “Hello” : Red = 255 : Text1.BackColor = Red
Слайд 20Лексемы языка Visual Basic. Программирование линейного вычислительного процесса
Слайд 21 Лексема — это единица текста программы, которая имеет определенный смысл
для компилятора и которая не может быть разбита в дальнейшем.
В Visual Basic различают шесть классов лексем:
-свободно выбираемые и используемые идентификаторы;
-служебные (зарезервированные) слова;
-константы;
-строки (строковые константы);
-операции (строки операций);
-разделители (знаки пунктуации).
Home
Слайд 22 Visual Basic накладывает на имена следующие ограничения:
• имя должно начинаться
с буквы;
• имя не должно содержать точек, пробелов, разделительных символов,
знаков операций, а также специальных символов;
• имя должно быть уникальным, оно не должно совпадать с зарезервированными словами Visual Basic или с другими именами;
• длина имени может включать до 255 символов, но следует иметь в виду, что Visual Basic учитывает только первые 40 символов от начала имени.
Home
Слайд 24
В Visual Basic, как и в других языках программирования,
есть зарезервированные (ключевые) слова, которые нельзя выбирать в качестве идентификаторов
имен. Перечень зарезервированных слов приведен в табл.1.1
Имена могут быть простыми или сложными. Имена следует выбирать такими, чтобы они несли в себе больше информации о назначении переменной, процедуры или функции.
Примеры простых и составных имен переменных:
N, I, Number, Номер — простые имена переменных;
Фамилия_Студента — составное имя переменной, оно несет в себе информацию о фамилии студента.
Home
Слайд 26
Существуют соглашения по стилю имен, которых желательно придерживаться:
• идентификатор должен
понятным образом отражать назначение переменной, это правило способствует пониманию программы;
•
лучше использовать имена из строчных букв, в случае составных имён нужно отделять друг от друга составляющие их слова подчеркиванием или начинать новое слово с прописной буквы;
• имена из прописных букв используются для определения констант;
• название идентификатора может содержать суффикс, который указывает на тип данных, связанный с этим идентификатором.
Типом данных называется способ хранения и представления данных в компьютерной системе.
В языке VB различают 11 типов переменных:
Целое число (Integer) – занимает 2 байта памяти;
Home
Слайд 27
Длинное целое (Long) – занимает четыре байта памяти;
Короткое целое (Byte)
– всего 256 значений, длина 1 байт;
Десятичное число обычной точности
(Single) – 4 байт;
Десятичное число двойной точности (Double) – 8 байт;
Десятичное протяжённое число (Currency) – 8 байт, 15 знаков слева от десятичной точки, до 4 знаков справа;
Логическая переменная (Boolean) – 2 байта, 2 значения – True, False;
Дата (Date) – 8 байт;
Объект (Object) - 4 байта, значением является ссылка на объект, например на элемент экранной формы;
Строка (String) – текстовая переменная, длина зависит от числа символов в строке;
Произвольное значение (Variant) – по существу типом не является, такая переменная может иметь любой тип.
Суффиксы, определяющие тип, бывают у 6 из 11 типов переменных: Integer - %, Long - &, Single - !, Double - #, String - $, Currency - @.
Слайд 28 Переменные — это объекты, предназначенные для хранения данных. В разные
моменты времени переменные могут хранить различные значения. В переменных можно
запоминать какие-либо значения и извлекать их из них. Переменную можно представить как простейший объект программы следующим образом:
Home
Слайд 29
Имя переменной представляет логический уровень. Оно однозначно связывает переменную с
некоторой физической областью памяти.
В VB используют строковые переменные. Различают
строки переменной и фиксированной длины. Строки переменной длины могут содержать до двух миллионов символов.
Строка фиксированной длины — это строка постоянного размера, указанного при объявлении переменной. Если значение, которое присваивается больше, то лишние символы отбрасываются. Строковые переменные фиксированной длины должны декларироваться явно.
Home
Слайд 30Dim intLen As integer 'объявляется целочисленная переменная
Private Sub Form_Load ()
intLen
= 30 'инициализация значения целочисленной переменной
End Sub
Private Sub command1_click()
Dim MyName
As String * intLen 'объявляется строковая переменная длиной в 30 символов
MyName = « Петров»
End Sub
Home
Пример 1:
Dim strMyName As String *20
'объявляется строковая переменная
'фиксированной длины в 20 символов или
Options Explicit
Слайд 31Пример 2:
Option Explicit ‘запрещение запуска программы при наличие в ней
неописанных переменных
Dim intMyNumber As integer 'Явное объявление переменной
Defint I 'неявное
объявление переменных, имена начинающиеся с этой буквы, будут иметь объявленный тип
IntMyNumber = 10 'для явно декларированной переменной ошибки не будет
intMyNum =10 'при ошибочном указании имени option explicit включит предупреждение об ошибке
intNumber = 6 'для неявного декларирования переменной будет выдано сообщение об ошибке.
Операторы объявления типа: Defint, Deflng, Defsng, Defdbl, Defcur, Defstr, Defbyte, Defbool, Defdate, Defobj, Defvar.
Примеры декларации переменных:
Dim x As Integer, strName$, LngOld&
Dim у As Integer
Dim x As Integer, Birds%
Home
Слайд 32
Константы — это объекты, значения которых остаются постоянными и не
могут быть изменены во время выполнения программы. Константы могут быть
именованными и неименованными.
Синтаксис языка определяет три типа констант: символьные, целые и вещественные.
Символьная константа служит для изображения отдельных знаков и представляет собой лексему, состоящую из символа(или любой последовательности символов), заключенного в кавычки. Например, «Р», «Program», «3.14», «+» — неименованные символы константы.
Синтаксисом языка предусмотрены десятичные, шестнадцатеричные, восьмеричные целые константы. Целая десятичная константа представляется десятичным целым числом: 44,684, 0, 1278 — неименованные десятичные целые константы.
Home
Слайд 33
Вещественные константы представляются в памяти ЭВМ в форме числа с
плавающей точкой.
Вещественная константа состоит из следующих частей:
-целая часть (десятичная целая
константа);
-десятичная точка;
-дробная часть( десятичная целая константа);
-признак показателя «е» или «Е»;
-показатель (десятичная целая константа):44. , 3.24879, 44еО, .314159Е1,
Различают встроенные константы VB(предопределённые константы) и создаваемые пользователем. Встроенные в Visual Basic константы имеют префикс vb. Встроенные константы определены в разделах справки для этих функций. Для того чтобы узнать конкретное значение константы, можно воспользоваться окном «Object Browser» (обозреватель объектов), которое вызывается клавишей [F2] или щелчком на соответствующей кнопке панели инструментов. После выбора константы ее значения и описание функции появляются в текстовом поле в нижней части окна «Object Browser».
Home
Слайд 34
Примеры использования предопределенных констант:
MsgBox «текстовое сообщение», vbInformation
MsgBox «нет данных для
расчета»,vbExclamation
(экслёмэйшин – восклицание)
Для определения констант служит ключевое слово Const. Синтаксическая
конструкция для декларирования констант напоминает оператор для декларации переменной и имеет вид:
[Public/Private] const имя_ константы[As тип]= значение
например:
Const PI As Single = 3.14 15 'объявлена именованная числовая константа для значения числа Pi.
Home
Слайд 35.
Область видимости переменной задается при ее декларации одним из ключевых
слов:
Dim — объявляет локальные переменные, существующие только во время
вызова процедур или функций, в которых они объявлены. Если переменная объявляется в разделе глобальных переменных, объявлений модуля или формы, то она доступна для всех процедур и функций этого модуля. Для других модулей она будет не видна;
Private — не может объявлять переменную внутри процедуры или функции. Локальная переменная Private доступна всем процедурам одного модуля, но не доступна из других модулей. При объявлении переменных в разделе общих объявлений модуля Dim и Private равнозначны;
Public — объявленная таким образом переменная является глобальной на уровне приложения и доступна из всех его модулей.
Home
Слайд 36Различают динамические и статические переменные. Статические переменные объявляются внутри процедуры
или функции и вне них не доступны. Для создания статической
переменной необходимо при ее объявления вместо ключевого слова Dim указать слово Static:
Static intNumber As Integer
Значения локальных переменных, объявленных словом Static, сохраняются в течении всего времени выполнения приложения в отличие от переменных типа Dim, которые существуют только в течении выполнения процедуры.
Home
Слайд 372.2. Встроенные функции Visual Basic
Встроенные функции VB обеспечивают сложные виды
обработки данных, избавляя пользователя от разработки собственных программ. В VB
используется несколько категорий встроенных функций. Это — математические, строковые, функции даты и времени, функции преобразования типов и файловые.
Математические:
Sin(a), Cos(a), Tan(a), Atn(a) — тригонометрические функции;
Sqr(a) — корень квадратный из числа;
Log (а) — логарифм натуральный;
Ехр(а) — показательная функция;
Abs(a) — абсолютное значение;
Int(a) — округление до ближайшего меньшего целого;
Sgn(a) — знак числа;
Fix(a) — округление путём отсечения дробной части;
Home
Слайд 38Randomise — генератор случайных чисел;
Rnd() — случайное число в интервале
[0,1]. Строковые:
Len(Str$) — определение длины строки; Left(Str$,x) — выделение из
строки х символов слева;
Right(Str$,x) — выделение из строки х символов справа;
Mid(Str$,x,y) — выделение из строки у символов начиная с номера х.
Функции преобразования типов:
Val(Str$) — преобразует строковое значение в число;
Str(x) — преобразует число в строковое значение;
Chr(x) — преобразует числовой код в символ;
Chr( 13) — перевод каретки;
Chr( 10) — переход на начало строки.
Home
Слайд 39
Арифметическое выражение в Visual Basic
Арифметическое выражение – это последовательность
чисел, констант, переменных, функций и арифметических выражений, заключённых в круглые
скобки, которые соединены между собой знаками арифметических операций. Таких операций 8. Вычисления производятся в соответствии с приоритетом: 1) А^B; 2) –A; 3)A*B, A/B; 4)A\B; 5)A Mod B; 6)A+B, A-B. Для операции 34\5 результат равен 6, а для (34 mod 5) результат 4. Взятие стандартной функции имеет наивысший приоритет. Чтобы изменить последовательность выполнения операций используют круглые скобки.
Примеры:
→(a+b)/c/d;
→(sin(x)^2+cos(y^3))/(38.3+tan(pi+x))^(1/3);
Слайд 40
Составить программу для вычисления результата по формуле:
Слайд 41
Private Sub Форма1_Click()
Dim X As Single, Y As Double
X =
Val(Текст1)
Y = 1.736 * Abs(Log(Tan(X / 2))) - Sqr(Atn((Exp(X) -
Exp(-X)) / 2))
Текст2 = Str(Y)
End Sub
Текст программного модуля приведён ниже. Процедура запускается по щелчку мыши на свободном поле UserForm1.
Слайд 42
При программировании часто приходится выводить информацию непосредственно на форму с
помощью метода Print. Синтаксис оператора вывода следующий:
Имя_объекта.Print Список_вывода
При каждом
последующем вызове метода Print элементы списка вывода печатаются с новой строки. Для того чтобы пропустить строку, необходимо указать Print без параметров. Однократным вызовом метода Print можно напечатать несколько значений. В качестве разделителей элементов используются запятые и точки с запятой. При использовании точки с запятой элементы выводятся через один пробел, а если одно значение отделяется от другого запятой, то оно будет напечатано в следующей колонке (ширина каждой колонки – 14 символов). Результатом работы оператора:
Print "x="; x, "y=";y
при x=1.56, y=-45.897 будет:
x= 1.56 y= -45.897.
Строковые константы записываются в кавычках и служат, в основном, для комментирования данных.
Слайд 43В ситуации, когда необходимо продолжать печатать значения в той же
строке, вызывая новые методы Print, в конце оператора также следует
ставить точку с запятой (или запятую). Совместно с методом Print можно использовать функцию Spc(n), задающую количество пробелов перед печатаемым значением, и функцию Tab(n), указывающую позицию вывода. Например, следующие операторы:
Print Tab(21); "Результат" и Print Spc(20); "Результат"
При выводе результата можно использовать функцию Format(expression, fmt), где expression – форматируемое численное выражение, fmt – последовательность символов, определяющих отображение expression. Например, если надо вывести на печать объем V c 3 цифрами в дробной части, оператор записи результата в текстовое поле Text3 будет выглядеть так: Text3.Text = Format ( V, "##.###"). Символ "#" используется для задания количества значащих цифр в целой и дробной части выводимого числа. При V= 6.12874 в текстовое поле будет записано 6.129
Слайд 45Алгоритм и его свойства
Алгоритм – это конечная последовательность предписаний однозначно
определяющих процесс преобразования исходных данных в результат решения задачи.
Свойства алгоритма:
дискретность, детерминирован-ность, результативность, массовость.
Алгоритм может задаваться одним из следующих способов:
Путём словесного или словесно-формульного описания на естественном языке;
На языке блок-схем;
На одном из алгоритмических языков.
Словесный алгоритм: подойти к пешеходному переходу, посмотреть на сигнал светофора, на зелёный - начать переход, на красный – остановится, на жёлтый ждать переключения сигнала.
Слайд 46Алгоритм и его свойства
Блок – схемой называется наглядное графическое представление
изображения алгоритма, когда отдельные действия (этапы) алгоритма изображаются при помощи
различных геометрических фигур, а связи между ними при помощи линий и стрелок.
Основные структуры алгоритмов – это ограниченный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий.
Структурный подход к программированию предполагает использование только нескольких основных структур (линейных, ветвящихся, циклических), комбинация которых позволяет разрабатывать всё многообразие алгоритмов и программ.
Слайд 47Язык блок-схем
Начало
Блок - конец/начало, используется для обозначения конца или
начала алгоритма
Блок – процесс, используется для обозначения действия приводящего
к получению единственного результата
да
нет
Блок – решение, используется для обозначения разветвляющегося действия (проверки условия)
Блок – данные, используется для обозначения операций ввода/вывода
Слайд 48Язык блок-схем
Блок – подготовка (модификатор), используется для обозначения заголовка
цикла
Блок – типовой процесс, используется для обозначения подпрограммы, фрагмента алгоритма
Соединитель,
ставится в разрыв линии связи
Линии связи указывают направление вычислительного процесса, при естественном направлении сверху вниз и слева направо стрелку можно не ставить, во всех остальных случаях и при изломе линии стрелка обязательна
Слайд 49Требования к изображению блок-схем
Блок-схемы алгоритмов, как и любая техническая документация
должны соответствовать требованиям стандартов.
При изображении блок-схем, все элементы должны
иметь одинаковые геометрические размеры (например соотношение высоты и ширины 1:3); вертикально и горизонтально все элементы должны располагаться на одной прямой, т.е. вписываться в регулярную сетку по горизонтали и по вертикали; линии связей не должны иметь множество пересечений, лучше использовать разрыв с элементом соединитель, который ставится в месте выхода и в месте входа линии связи; текст пояснений внутри блоков записывается на естественном языке или с помощью математических формул.
Слайд 50Алгоритм решения квадратного уравнения
Начало
а,b,с
D=b2-4ac
а=0
b=0
c=0
D>0
Действ. к.
нет
1
X1,2
X=-c/b
Мн-во реш.
Нет решения
конец
1
1
да
да
да
нет
нет
нет
нет
да
x
1
Ax2+Bx+C=0
Слайд 52Текст модуля
Private Sub Комманда1_Click()
a = Val(Текст1)
b = Val(Текст2)
c = Val(Текст3)
Текст4
= " " :Текст5 = " "
If a 0
Then
d = b * b - 4 * a * c
If d > 0 Then
x1 = (-b + Sqr(d)) / 2 / a: x2 = (-b - Sqr(d)) / 2 / a
Текст4 = "x1=" & Str(x1):Текст5 = "x2=" & Str(x2): GoTo1
Else
Текст4 = «Действит. корней нет": GoTo 1
End If
End If
Слайд 53Текст модуля (продолжение)
If b 0 Then
x = -c /
b: Текст4 = “корень=“ & Str(x): GoTo 1
End If
If c
<> 0 Then Текст4 = “Нет решения” Else Текст4 = “Мн-во решений”
1: End Sub
Слайд 54Базовые алгоритмы циклической структуры
i=i+1
ai,n
Сумма
S=S+ai
S
in
Слайд 55Базовые алгоритмы циклической структуры
Максимум
ai,n
Мax=a1:im=1
i=1..n
ai>Max
Мax=ai:im=i
Max,im
конец
да
нет
Счётчик
ai,n,p,l
K=0
i=1..n
l
Слайд 56Программирование разветвляющихся процессов
Слайд 57Условный оператор
Алгоритмы, в которых последовательность выполняемых действий зависит от выполнения
проверяемых условий, называются нелинейными. Они программируются с помощью условного оператора.
В
языке VB есть две формы условного оператора: однострочная и многострочная. Однострочная такова:
If Условное выражение Then Оператор1 [ElseОператор2] Квадратные скобки содержат конструкции, которые могут отсутствовать.
Многострочная форма оператора более сложная:
If Условное выражение Then
Последовательность операторов1
[Else
Последовательность операторов2]
End If
Слайд 58Условный оператор
Условное выражение – это простое или сложное условие в
состав, которого могут входить: переменные, константы, числа, связанные знаками арифметических
и логических операций, а также знаками операций отношения. Условное выражение может принимать только два значения True и False. Логические операции в порядке приоритета их выполнения: Not, And, Or.
Примеры:
If x If ((Sex$=“м”) And (Age! >=60)) Or ((Sex$=“ж”) And (Age! >=55))
Then
V=P+Z : Goto 1
Else
V=Z : Goto 1
End if ‘ многострочный оператор
N=N+1 : Goto 2
1:Текст1=Str(V)
Слайд 59Условный оператор
Задача: Найти сумму бесконечного числового ряда с заданной точностью
ε, S=1+1/2+1/4+1/8+…
начало
n=2*n
v=1/n
s=s+v
s,v,n
конец
нет
да
s1=s
|s-s1|
Слайд 61Пример программы
Private Sub Комманда1_Click()
n = 1: v = 1: s
= 1: s1 = 0
eps = Val(Текст1)
1: n = 2
* n
v = 1 / n
s = s + v
If Abs(s - s1) < eps Then Текст2 = Str(s) Else s1 = s:GoTo 1
Текст2 = str(s)
End Sub
Слайд 62Оператор выбора Select Case
Условный оператор при многократном вложение применять не
рекомендуется – программа становится громоздкой и трудной для понимания. В
этом случае лучше использовать оператор выбора.
Синтаксис оператора:
Select Case Выражение
Case ДиапазонЗначений1
ПоследовательностьОператоров1
Case ДиапазонЗначений2
ПоследовательностьОператоров2
…
Case Else
ПоследовательностьОператоровN
End Select
(В выражении ключевое слово Is должно стоять перед любым знаком отношения.)
Слайд 63Оператор выбора Select Case
Задача: Преподаватель за каждую решённую на контрольной
работе задачу начислял баллы: за 1 и 2 по 6
баллов, за 3 и 4 по 9 баллов, за 5 по 12 баллов. Оценка за контрольную зависит от суммы набранных баллов.
Спроектируем форму:
Слайд 64
Программный код должен содержать 5 одинаковых процедур для 5
событий – щелчок мышью по каждому из 5 контрольных индикаторов.
Каждое событие будет вызывать последовательность действий:
Переменным: v1%, v2%, v3%, v4%, v5% - будут присвоены значения свойства Value пяти контрольных полей;
Будет вызвана процедура Summa, которая сначала присвоит переменной s% значение равное сумме набранных баллов, а затем присвоит переменной m% значение, равное оценке за контрольную работу.
Ниже приведены тексты одной процедуры CheckBox1_Click() и процедуры Summa, которая вызывается оператором Call. Процедура Summa демонстрирует использование оператора Select Case. Диапазоны значений переменной S% задаются с помощью ключевого слова To и с помощью неравенств и ключевого слова Is
Слайд 65Sub Summa(v1%, v2%, v3%, v4%, v5%, s%, m%)
s% = -(v1%
* 6 + v2% * 6 + v3% * 9
+ v4% * 9 + v5% * 12)
Select Case s%
Case Is < 15
m% = 2
Case 15 To 24
m% = 3
Case 25 To 34
m% = 4
Case Is > 35
m% = 5
Case Else
m% = 0
End Select
End Sub
Слайд 66Private Sub Проверка1_Click()
v1% = Проверка1.Value: v2% = Проверка2.Value
v3% = Проверка3.Value:
v4% = Проверка4.Value
v5% = Проверка5.Value
Call Summa(v1%, v2%, v3%, v4%, v5%,
s%, m%)
Текст1.Text = s
Текст2.Text = m
End Sub
Слайд 67
Системные функции, функции RND, Timer, IIf
Слайд 68
К системным функциям относятся функции, действие которых напрямую зависит от
работы Windows. Мы рассмотрим функцию InputBox - используемую для ввода
данных пользователем через системное окно и функцию MsgBox – служащую для выдачи сообщений пользователю через системное окно. Синтаксис функции следующий:
InputBox (Приглашение [, Заголовок] [,НачЗначение])
Приглашение – любой текст, который находится в Окне ввода и служит для подсказки.
Заголовок – необязательная надпись в строке заголовка.
НачЗначение – это значение, которое будет введено автоматически, если пользователь с этим согласен.
Возвращаемым значением данной функции является информация вводимая пользователем. VB автоматически приписывает этой информации тип String. В программе функция InputBox может входить в состав выражения, значение которого присваивается переменной. При обращении к функции, на экране появляется Окно ввода.
После щелчка по кнопке ОК происходит присваивание и окно ввода исчезает.
Слайд 70
Private Sub CommandButton1_Click()
Dim Fam, Im, Ot As String
Fam = InputBox("Введите
Вашу фамилию:", "Ввод фамилии")
Im = InputBox("Введите Ваше имя :", "Ввод
имени")
Ot = InputBox("Введите Ваше отчество:", "Ввод отчества")
TextBox1.Text = Fam: TextBox2.Text = Im: TextBox3.Text = Ot
End Sub
Текст модуля
Слайд 71
Функция MsgBox служит для выдачи сообщения пользователю через системное окно.
Синтаксис
функции следующий:
MsgBox (Текст [,Опция ] [,Заголовок ])
Это традиционная форма
синтаксиса, когда функция возвращает значение, которое затем используется в программе, если скобки отсутствуют, то функция не возвращает никакого значения, а действует как оператор, т.е. просто выдаёт информацию в Окно сообщения.
Текст- это строка сообщения. Она может содержать до 1024 символов;
Опция – это целое число, которое определяется по формуле ОР=ОР1 + ОР2
Значение ОР1 определяет вид сообщения и пиктограмму, которая помещается в Окно сообщения
Слайд 72
Значение ОР2 определяет набор кнопок в Окне сообщения:
0 – ОК;
1 – ОК, ОТМЕНА; 2 – СТОП, ПОВТОР,
ПРОПУСТИТЬ;
3 – ДА, НЕТ, ОТМЕНА; 4 – ДА, НЕТ;
5 – ПОВТОР, ОТМЕНА.
-Критическое сообщение, код=16
- Вопрос, код=32
- Предупреждение, код=48
- Информация, код=64
Слайд 73
Простая экранная форма – приветствие приведена на рисунке. В этом
окне имеются три объекта: кнопка OK, надпись “Здравствуй друг!” и
рисунок. В VBA экранная форма хранится в отдельном файле, имя которого имеет расширение frm.
Общий вид экранной формы представлен на рисунке.
Программный модуль, относящийся к данной экранной форме, хранится в файле с расширением bas и для нашего примера выглядит так:
Private Sub КоманднаяКнопка_Click()
MsgBox “Здравствуй, друг!”, 64, “Приветствие”
End Sub
Слайд 74
Рассмотрим использование ещё нескольких функций: датчика случайных чисел, счётчика времени
и IIf.
В процессе решения вычислительных задач часто требуется программировать вероятность
появления случайных событий. Для этого используют функцию RND значением, которой является число случайным образом выбираемое из интервала от 0 до 1. На самом деле при использование RND число берётся из очень длинной последовательности псевдослучайных чисел. Поэтому надо случайным образом определить место в этой последовательности с помощью оператора рандомизации Randomize, а для того, чтобы это число при каждом новом запуске программы было разным – используют ещё встроенный счётчик времени – функцию Timer без параметров.
Для программирования условного перехода можно использовать функцию IIF. Её синтаксис таков:
IIF(Условное_выражение, Значение1, Значение2), функция возвращает Значение1, если выражение истинно и Значение2, если оно ложно.
Слайд 75
Private Sub Комманда1 _Click()
Randomize Timer
Dim Ver As Single: Ver =
Rnd
Текст1 = IIf(Ver < 0.75, "Яблоки", "Грибы")
Текст2 = IIf(Ver
0.75, "Яблочный пирог", "Пирог с грибами")
End Sub
Слайд 76
Программирование циклических процессов
Слайд 77Объявление массивов
В VBA различают два вида переменных — простые переменные
и переменные структурного типа.
Простые переменные служат для идентификации и
резервации памяти для одного данного. Переменные структурного вида предназначены для идентификации и резервации памяти для нескольких данных. Частным случаем переменной структурного вида является массив.
Массив представляет собой структуру, все элементы которой имеют одинаковый тип. Например, это могут быть данные, определяющие вектор или матрицу. Массивы могут быть одномерными и многомерными. Так, для отображения вектора может быть использован одномерный массив, а для отображения матрицы — многомерный.
Home
Слайд 78
Объявление массива имеет следующий вид:
Dim / Public / Private Имя_Массива
(индексы)_Аs Тип_Данных
где:
Dim / Public / Private — ключевые слова,
декларирующие массив в области его видимости;
Имя_Массива —идентификатор, определяющий имя массива;
Индексы — значение индекса (номера) последнего элемента в массиве, считая с нулевого;
As — ключевое слово, определяющее указание типа элементов массива;
Тип_Данных—любой, действительный для Visual Basic тип данных базовый или созданный пользователем.
Примеры описания статических массивов:
Dim B (5) As Single ' описан одномерный массив из 6 чисел вещественного типа
Dim C (1 To 12) As Integer ' описан одномерный массив из 12 целых чисел.
Home
Слайд 79
Объявление одномерного массива из восьми элементов выглядит следующим образом:
Dim МуАrrау
(7) As integer 'одномерный целочисленный массив из 8 элементов.
При объявлении
многомерного массива в поле индекса указывают несколько индексов в соответствии с размерностью массива. Двумерный массив из шести столбцов и пяти строк объявляется следующим образом:
Dim StrArray (4,5) As String ' двумерный массив из 5строк и 6 столбцов.
Примеры описания статических массивов:
Dim B (5) As Single ' описан одномерный массив из 6 чисел вещественного типа
Dim C (1 To 12) As Integer ' описан одномерный массив из 12 целых чисел.
Пример заполнения массива:
Dim B ( ) As Single, N As Integer, i As Integer
N = Val(InputBox("Ввод количества элементов массива В"))
ReDim B (1 To N)
For i = 1 To N
B(i) =Val (InputBox("Ввод " & i & " элемента массива","Ввод с клавиатуры"))
Next i
Home
Слайд 80
Динамические массивы применяются в том случае, когда количество элементов массива
заранее неизвестно и будет определяться в процессе выполнения программы.
В
этом случае первоначально массив объявляется как динамический. Для этого в объявлении не указывается размерность. Например:
Dim strMyArray () As String
Количество элементов в объявленном массиве и его размерность в процессе выполнения программы можно переопределить с помощью ключевого слова ReDim. Синтаксическая конструкция переопределения массива имеет вид:
ReDim [Preserve] ИмяМассива (индексы) [As ТипДанных]
где:
ReDim — ключевое слово, указывающее что переопределяется размеры массива;
Preserve — необязательное ключевое слово, с помощью которого дается указание, чтобы все элементы переопределенного массива сохранили свое значение;
Индексы — размерность массива (до 60).
Home
Слайд 81Пример:
Dim strMyArray () As String 'объявление динамического масива
Dim intValarray As
integer 'объявление переменной для хранения размерности
intValArray = 9 'инициализация значения
ReDim
strMyArray (intValArray) 'одномерный массив из 10 элементов (базовый индекс равен 0)
Или другой пример:
Dim array ( ) As Long ' объявление динамического массива
……..
n = Val(InputBox("Ввод количества элементов массива array"))
ReDim array (1 To n) ' одномерный массив из n элементов
Home
Слайд 82
Для того, чтобы организовать повторение операций используют оператор цикла For-Next.
Оператор используется тогда, когда заранее известно число повторений цикла. Это
многострочный оператор, его синтаксис таков:
For Имя=Значение1 To Значение2 [Step Значение3]
исполняемые операторы
Next [Имя]
Имя – это имя переменной, которую называют счётчиком.
Значение1 – начальное значение счётчика.
Значение2 – конечное значение счётчика.
Значение3 – величина шага.
Слайд 83
Задача 1:
Вычислить факториал от числа. Число заносится в текстовое поле
1, а результат в текстовое поле 2. Вычисления производятся при
нажатие командной кнопки.
Текст программы:
Private Sub Комманда1 _Click()
Dim n,I As Integer, Nf As Long
n = Val(Текст1.Text)
Nf = 1
For I=1 To n
Nf = Nf *I
Next I
Текст2.Text = Str(Nf)
End Sub
Слайд 84
Задача2: Сумма элементов массива
Private Sub Комманда1 _Click()
Dim MyArray As Single
Dim
intValarray As Integer
intValarray = Текст1.Text
S = 0
For i = 0
To intValarray
MyArray = InputBox("Введите элемент массива :", " a(i)=")
S = S + MyArray
Next
Текст2.Text = S
End Sub
Слайд 85
Задача 3.
Разработать приложение, реализующее табулирование функции y=1,2sin(3x) при изменении аргумента
х в диапазоне [x0,xk] с шагом h с выводом результатов
вычисления непосредственно на форму с помощью метода Print.
Программный код для кнопки Расчет можно записать так:
Private Sub Комманда1 _Click() ' Кнопка Расчет
Dim x0 As Single, xk As Single, h As Single, x As Single, y As Single
Cls ' Очистка формы
x0 = Val(InputBox("Ввод x0 - начального значения аргумента"))
xk = Val(InputBox("Ввод xk - конечного значения аргумента"))
h = Val(InputBox("Ввод h - шага изменения аргумента"))
Font.Size = 10 ' Установка размера шрифта
Font.Bold = True ' Установка полужирного начертания
Print Tab(7); "Функция y = 1.2sin(3x)"
Font.Bold = False ' Отмена полужирного начертания
Print: Print "x0="; x0, "xk="; xk, "h="; h: Print
Print Tab(3); "x"; Tab(17); "y"
For x = x0 To xk + h/2 Step h
y = 1.2 * Sin(3 * x)
Print Format(x, "0.00"), Format(y, "0.000")
Next x
Print: Print "Программу разработал Иванов И.И., гр. ДЭм-1-1"
End Sub
Слайд 86
Результат работы программы для x0=0, xk=2, h=0.25 представлен на рисунке.
Слайд 87
Программирование циклических процессов (продолжение)
Слайд 88
Программирование циклических процессов (продолжение)
Слайд 89
Электронная форма для задачи поиск максимального элемента в одномерном массиве.
Слайд 90
Private Sub Комманда1_Click()
Dim MyArray As Single
Dim intValarray As Integer
intValarray
= Val(Текст1)
ReDim a(intValarray) As Single
Max = -1000: k = 0
For
i = 0 To intValarray
MyArray = InputBox("Введите э-т массива :", "Ввод a(i)=")
Список1.AddItem MyArray ‘метод AddItem используется
Список2.AddItem i ‘для добавления элементов в список
a(i) = MyArray
If a(i) > Max Then Max = a(i): k = i
Next
Текст2.Text = Max
Текст3.Text = k
End Sub
Слайд 92
Текст модуля: Сортировка
Private Sub Комманда1_Click()
Dim a(1 To 10) As Integer
Randomize
Timer
For k = 1 To 10
a(k) = Int(10 * Rnd)
Список1.AddItem
a(k)
Next k
For i = 1 To 9
For j = i + 1 To 10
If a(i) > a(j) Then
b = a(i): a(i) = a(j): a(j) = b
End If
Next j
Next i
For k = 1 To 10
Список2.AddItem a(k)
Next k
End Sub
Слайд 93Пользовательское меню программы формирования и транспонирования матрицы.
Слайд 94
Private Sub Комманда1_Click()
Dim tr, tc As Integer : Dim s
As String
Randomize Timer
Dim a(1 To 3, 1 To 3) As
Integer
Dim b(1 To 3, 1 To 3) As Integer
For tr = 1 To 3
s = " "
For tc = 1 To 3
a(tr, tc) = Int(10 * Rnd)
s = s & " " & Str(a(tr, tc))
Next tc
Список1.AddItem s
Next tr
For tr = 1 To 3 ‘транспонирование
For tc = 1 To 3 ‘матрицы
b(tr, tc) = a(tc, tr)
Next tc : Next tr
For tr = 1 To 3
s = " "
For tc = 1 To 3
s = s & " " & Str(b(tr, tc))
Next tc
Список2.AddItem s
Next tr
End Sub
Слайд 95Пользовательское меню программы формирования матрицы и вычисления сумм элементов столбцов.
Слайд 96
Private Sub Комманда1_Click()
Dim tr, tc, i, j As Integer :
Dim s As String
Randomize Timer
Dim a(1 To 3, 1 To
3) As Integer
Dim b(1 To 3) As Integer
For tr = 1 To 3
s = " "
For tc = 1 To 3
a(tr, tc) = Int(10 * Rnd)
s = s & " " & Str(a(tr, tc))
Next tc
Список1.AddItem s
Next tr
For j = 1 To 3
b(j) = 0
For i = 1 To 3
b(j) = b(j) + a(i, j)
Next i
Next j
s = " "
For j = 1 To 3
s = s & " " & Str(b(j))
Next j
Список2.AddItem s
End Sub
Слайд 97
Оператор цикла Do-Loop. Логически управляемый цикл, оператор Do — начало,
оператор Loop — конец цикла.
Оператор имеет четыре модификации:
1) Условие имеет
значение True в начале цикла.
Структура:
Do While <условие>
<блок операторов>
Exit Do <блок операторов>
Loop
Цикл выполняется пока истинно условие. Оператор Exit Do предназначен для прекращения цикла и передачи управления оператору Loop — конец цикла.
2) Условие имеет значение True в конце цикла.
Структура:
Do
<блок операторов>
Exit Do
<блок операторов>
Loop While <условие>
Цикл выполняется хотя бы один раз, проверка условия в конце цикла.
Home
Слайд 983) Условие False в начале цикла.
Структура:
Do Until
Exit
Do
Loop
Цикл выполняется до тех пор, пока условие не станет
истинным.
4) Условие False в конце цикла.
Структура:
Do
<блок операторов>
Exit Do
<блок операторов>
Loop Until<условие>
Home
Слайд 99 Условие проверяется в конце цикла. Цикл прекращается, когда условие станет
истинным.
Пример:
Do While True
A=Rnd :Debug.Print a
If a>0.99 Then Exit Do
Loop
Цикл While-Wend аналогичен циклу Do While-Loop, проверка условия выполняется в начале цикла.
Структура:
While <условие>
<блок операторов>
Wend.
Home
Слайд 100
Пример программы на использование цикла с условием. Расчёт количества расфасованных
пакетов.
Private Sub Command_Click()
M=100: I=0
Print “Номер “, “Остаток “
Do
I=I+1
If I>99
then Exit Do ‘Оператор Exit Do служит для
прерывания цикла, помещается
внутри цикла и приводит передаче
управления следующему за
циклом оператору
M=M-M/100
Loop Until M<5
Print I, M
End Sub
Слайд 101 Цикл For Each. Оператор относится к категории объектных операторов, т.е.
применяется к массивам, наборам объектов, коллекциям. Выполняется фиксированное число раз,
число объектов в наборе определяется автоматически.
Структура:
For Each <элемент> In <набор>
<блок операторов>
Exit For
<блок операторов> Next <элемент>
Пример:
For each z In arrx
n=n+1
x(n)=z
Next z
Home
Слайд 102Формула линейной интерполяции
yn=y1+(y2-y1)*(xn-x1)/(x2-x1)
x1
xn
x2
y1
y2
yn
Слайд 103Пример программы с оператором For Each.
Function intl (arrx; arry;
x_new)
Dim i As Integer
Dim n As Integer
Dim j As
Integer
Dim x (1 to 100) as Double
Dim y (1 to 100) as Double
Dim z
n=0
For each z in arrx
n=n+1
x(n)=z
Next z
n=0
For each z in arry
n=n+1
y(n)=z
Next z
Слайд 104
For i=1 to n-1
If x(i) = x_new
Then j= i
Next i
If x_new > x(n) Then j
= n – 1
If x_new < x(1) Then j = 1
Intl = y(j) + (y( j+1 ) – y( j ) ) * (x_new – x ( j )) / (x( j + 1) – x(j))
End Function
Цикл For Each…Next похож на цикл For …Next, но он повторяет группу операторов для каждого элемента из набора объектов (коллекции). Он особенно удобен, тогда, когда заранее не известно, сколько элементов содержится в наборе. Для наборов параметром этого цикла может быть только переменная типа Variant, Object или объектом перечисленным в Object Browser. Для массивов параметром этого цикла может быть только переменная типа Variant. Нельзя использовать этот цикл с массивом, имеющим определённый пользователем тип.
Пример программы с оператором For Each (продолжение).
Слайд 106
Программные модули на VB состоят из процедур. Использование процедур упрощает
программирование, разбивая код модуля на процедуры, можно намного упростить чтение
и модификацию текстов программ. В VB используется несколько видов процедур:
Процедуры SUB (не возвращает значения);
Процедуры Function (возвращает значение);
Процедуры Property (могут возвращать и присваивать значение, а также устанавливать ссылки на объекты).
Процедура SUB – это блок кода, который выполняется в ответ на событие. Синтаксис процедуры:
[Private/Public ] [Static ] Sub <имя_процедуры>(аргументы)
Операторы тела процедуры
End Sub
В VB следует понимать различие между двумя типами процедур SUB: общими процедурами и процедурами обработки событий.
Общая процедура указывает приложению, как выполнять конкретную задачу. Однажды определённая, она должна каждый раз специально вызываться приложением.
Слайд 107
В противоположность ей процедура обработки события после вызова остаётся в
ожидания событий, вызванных пользователем или инициированных системой. Так программа обработки
события Click вызывает процедуру Sub с именем CommandButton1, которая выполняет свой код и возвращает управление процедуре обработки события Click. Как только объект в VB распознаёт, что произошло событие, он активизирует процедуру обработки события с именем, соответствующем данному событию. Так как имя процедуры устанавливает связь между объектом и кодом, то говорят, что процедуры обработки событий прикреплены к формам и элементам управления.
Процедуру Sub в отличие от Function нельзя вызывать по имени в выражении. Её вызов осуществляется в отдельном операторе. Процедура Sub не возвращает значения, однако она может изменять значения любых переменных, переданных ей в качестве параметров.
Существуют два способа вызова процедуры Sub. Например для процедуры Prog1 c параметрами а и b:
Call Prog1(a,b) или Prog1 a,b . Как видно из примера при использование оператора Call, параметры заключены в круглые скобки.
Слайд 108
Home
Если имя процедуры уникально, то включать имя модуля в
вызов процедуры не обязательно. Процедура является уникальной, если она определена
только в одном месте. Если два или более модулей содержат процедуры с одинаковыми именами, то при вызове таких процедур необходимо уточнять их с помощью имени соответствующего модуля. Например, если процедура с именем CommonName существует и в Module1, и в Module2, то при вызове из Module1 процедуры CommonName процедуры Module2, надо записать: Module2. CommonName(аргумент), в противном случае будет вызвана процедура этого модуля.
В VB кроме стандартных встроенных функций можно писать собственные процедуры Function. Её синтаксис таков:
[Private/Public][Static]Function<имя_процедуры>
(аргументы) [As type]
<Операторы тела процедуры>
End Function.
Вызов процедуры Function чаще всего осуществляется заданием её имени и параметров в тексте выражения.
Процедура Function имеет тип, который определяет тип возвращаемого выражения.
Слайд 109Возвращаемое процедурой Function значение присваивается переменной с именем процедуры.
Обычно процедуре
для выполнения требуется некоторая информация о состоянии программы. Эта информация
заключена в значениях переменных, передаваемых процедуре при её вызове (их называют параметрами процедуры). По умолчанию параметры процедуры имеют тип Variant, в явном виде параметрам можно задать любой другой тип. Пример:
Function ForLunch(WeekDay As String, Hour As integer) As String
If WeekDay=“четверг” then
ForLunch=“рыба”
Else
ForLunch= “куры”
End if
If Hour >4 then ForLunch=“ Too late”
End Function
Параметры процедуры могут передаваться по значению и по ссылке. В первом случае процедуре передаётся только копия переменной, выступающей в качестве параметра процедуры. Если процедура изменяет значение параметра, то это затрагивает только копию переменной, а не саму переменную, т.е. во вне новое значение не передаётся.
Home
Слайд 110
Home
Ключевое слово ByVal служит признаком того, что параметр передаётся по
значению. Например:
Sub PostAcc(ByVal AcctNum As Integer)
Передача процедуре параметров по ссылке
открывает ей доступ к области памяти, где хранится содержимое переменной. В результате процедура может изменять значение переменной являющейся её параметром. По умолчанию в VB все параметры передаются по ссылке.
Пример: Получить таблицу значений функции по формуле: y=(arcsin(x*x)+arcsin(x))/arctan(x).
Слайд 111
Home
Private Sub Комманда1_Click()
Dim M, Y As Single
Dim a, b, c,
l As Single
a = Val(Текст1.Text)
b = Val(Текст2.Text)
c = Val(Текст3.Text)
n =
Int((b - a) / c)
l = a - c
For k = 1 To n
s = " "
l = l + c
M = l
s = “№" & Str(k) & "=" & Str(M)
Список1.AddItem s
Y = arcsin(M ^ 2) + arcsin(M) / Atn(M)
s = " "
s = “№" & Str(k) & "=" & Str(Y)
Список2.AddItem s
Next k
End Sub
Слайд 112Function arcsin(x)
arcsin = Atn(x / Sqr(1 - x * x))
End
Function
Home
Слайд 113
Home
Использование файлов в Visual Basic
Слайд 114 Работа с файлами в языке Visual Basic
Информация, которая вводится
и выводится из программы, организована в файлы. Файлом называется поименованная
область памяти на диске, содержащая совокупность связанных между собой записей.
Запись представляет собой набор элементов, рассматриваемых как единое целое с точки зрения устройств ввода-вывода. Именно записями одно устройство компьютера (например, память) обменивается с другим (например принтером или дисководом). В предельном случае запись может состоять из одного символа. При работе с Windows — приложениями, файлы чаще всего хранятся на внешнем магнитном носителе.
При записи данных в файл необходимо выполнить: открытие файла для записи, запись компонентов файла, закрытие файла. При чтении файла необходимо выполнить: открытие файла для чтения, чтение компонентов файла, закрытие файла. При открытии файлу ставится в соответствие канал ввода/вывода с определенным номером – дескриптором. Таким образом, каждый открытый файл имеет собственный канал, с помощью которого записываются или считываются данные.
Home
Слайд 115Следовательно, для ввода и вывода данных в файл имеет значение
не имя файла, а дескриптор. Кроме того, операционная система должна
иметь сведения о наличии свободных каналов, которые можно использовать для открытия файлов. Номер свободного канала можно узнать с помощью функции FreeFile.
Файлы могут содержать программы и данные. Файлы данных подразделяются на три типа: последовательные, произвольного доступа и двоичные.
В двоичном файле информация записана как набор байтов. Обычно они используются для хранения исполняемых файлов.
Home
Слайд 116 Важнейшим атрибутом файла является его имя. Имя файла состоит из
имени дисковода, имени папки и идентификатора файла — пути поиска
файла на диске.
При работе с файлами данных различают три вида работ:
-создание (запись файла на диск);
-чтение файла и обработка записей;
-добавление записей и корректировка файла.
Для добавления записей или их корректировки в файлах с последовательным доступом требуется фактически переписать все записи файла заново.
Файлы данных с произвольным доступом позволяют считывать данные в любом порядке, независимо от того в какой последовательности они были записаны в файл. Каждая запись в файлах произвольного доступа имеет свой номер, что обеспечивает возможность непосредственного обращения к ней.
Home
Слайд 117 Операторы и функции для работы с файлами последовательного доступа
OPEN
— открыть файл;
CLOSE — закрыть файл;
Input # — прочитать запись
из файла;
Print # — записать запись в файл;
Write # — записать запись в файл;
Lof — вернуть длину файла;
Eof — логическая величина, используемая для определения конца файла.
Оператор OPEN выполняет подготовительную работу для последующих операций ввода-вывода. Он заполняет блок управления данными, в которые система помещает файл и номер устройства, с которым будет работать; резервирует области памяти для буферов обмена операций ввода-вывода; определяет организацию данных в файле, режим его обработки и т.д.
Home
Слайд 118 Формат записи оператора:
OPEN имя файла[FOR режим]As[ # дескриптор
файла]
где: имя файла
может включать устройство и путь поиска файла на диске; режим—для
текстовых файлов одно из трёх ключевых слов:
Output — используется если файл открывается для записи с первой позиции (вся старая информация при этом уничтожается);
Append — используется, если файл открывается для продолжения записи;
Input — используется, если файл открывается для чтения из него текстовых данных.
Дескриптор файла — это любое целое число от 1 до 511, которое служит идентификатором файла в программе.
Home
Слайд 119 Оператор CLOSE # [список дескрипторов файлов] —закрывает все файлы, идентификаторы
которых указаны в списке через запятую. Если список дескрипторов отсутствует,
то закрываются все открытые в программе файлы.
Оператор INPUT # дескриптор файла, список переменных.
Оператор lineINPUT # дескриптор файла, список переменных.
Чаще всего чтение из текстового файла производится циклически, с помощью оператора цикла с условием: Do While ... Loop или Do Until... Loop. Условием окончания цикла является попытка прочитать данные после чтения последней строки. Эта попытка приводит к тому, что значение функции EOF будет true.
Home
Слайд 120Пример:
Запишем программу, которая помещает все фамилии, имена и даты
рождения из файла ГодРождения1.txt в три окна списка ListBox экранной
формы:
Private Sub Command1_Click()
Open “ГодРождения 1.txt” For Input As#1
Do Until EOF(1)
Input # 1, Фамилия$, Имя$, ГодРождения%
ListBox1. Addltem Фамилия$
ListBox2. Addltem Имя$
ListBox3. Addltem ГодРождения%
Loop
Close # 1
End Sub
Home
Слайд 121 Записывать данные в текстовый файл можно двумя способами с помощью
операторов Write и Print. Оба оператора записывают данные в файл
текстовыми строками. Текстовая строка — это последовательность символов, заканчивающаяся знаком "конец строки" (код = 26) или знаком возврата каретки (код в таблице символов = 13) и "перевода строки" (код = 10) .
Синтаксис операторов записи в текстовый файл одинаков:
Write # дескриптор файла, [список значений]
Print # дескриптор файла, [список значений].
Список значений — это записанные через разделитель значения. В операторе Write элементы этого списка записываются в одну текстовую строку файла через запятую. Элементы типа String заключаются в кавычки.
В операторе Print, если разделитель точка с запятой, то значения будут записаны подряд, без промежутков между ними, а, если разделитель запятая, то значения будут записываться в 14-символьные зоны вывода.
Home
Слайд 122 Пример результата для оператора Write:
“Иванов”,”Иван”, 1986
“Петров”,”Петр”, 1984
“Сидоров”,”Николай”, 1985
Пример результата для
оператора Print:
Иванов Иван 1986
Петров Петр 1984
Сидоров Николай
1985
Функция Input — это функция двух аргументов, где первый аргумент — это количество символов, которые надо прочесть, а второй дескриптор файла.
Home
Слайд 123 В качестве примера запишем программу, которая помещает в объект Text1
класса Текстовое поле число, определяющее размер файла ГодРождения1 .txt.
Open “ГодРождения.txt”
For Input As # 1
Dim ЧислоСимволов As Integer
ЧислоСимволов = LOF(1)
Text 1.Text = Input(ЧислоСимволов, # 1)
Close # 1
Home
Слайд 124Разработать приложение, в котором необходимо: создать список группы студентов с
указанием их фамилии, имени и оценки по информатике путем заполнения
файла последовательного доступа, используя окно ввода, предусмотреть просмотр введенного файла и подсчет среднего балла.
При чтении файла его содержимое будет помещено в текстовое окно, а запись в файл будет осуществляться с помощью оператора Write. После ввода очередной фамилии, имени и оценки будет появляться окно сообщения MsgBox с двумя кнопками Yes, No и вопросом "Продолжить ввод?". При нажатии на кнопку Yes цикл будет продолжен, а при нажатии на кнопку No – прекращен. На форму надо поместить 4 командные кнопки Создание файла, Чтение из файла, Средний балл, Выход, текстовое поле TextBox, 3 метки для поясняющего текста к полю TextBox, вывода подсчитанного среднего балла и вывода фамилии и группы студента. Поскольку текстовое поле предназначено для вывода содержимого файла, содержащего несколько строк, необходимо предварительно изменить некоторые его свойства: Text – удалить имя Text1, MultiText – установить значение True, ScrollBars – установить значение Vertical (см. рис.).
Home
Пример
Слайд 125Программный код для приложения можно записать так:
Private Sub Command1_Click() '
Кнопка Создание файла
Dim fam As String, im As String, ball
As Integer
Open "D:\Students\ДЭм11\Группа2.txt" For_ Output As 2
Do
fam = InputBox("Ввод фамилии", "Создание файла")
im = InputBox("Ввод имени", "Создание файла")
ball = Val(InputBox("Ввод оценки по информатике", "Создание файла"))
Write #2, fam, im, ball
ans = MsgBox("Продолжить ввод?",vbQuestion + _ vbYesNo, "Создание файла")
Loop Until ans = vbNo
Close #2
End Sub
Home
Слайд 126Private Sub Command2_Click() ' Кнопка Чтение из файла
Dim kol_sym
As Integer
Open "D:\Students\ДЭм11\Группа2.txt" For _ Input As 2
kol_sym = LOF(2)
' Количество символов в файле
Text1.Text = Input(kol_sym, #2)
Close #2
End Sub
Private Sub Command3_Click() 'Кнопка Средний балл
Dim fam As String, im As String, ball As Integer, _ kol As Integer, _
sum As Integer, sr As Single
Open "D:\Students\ДЭм11\Группа2.txt" For _ Input As 2
kol = 0: sum =0
Home
Слайд 127Do Until EOF(2)
Input #2, fam, im, ball
kol =
kol + 1
' Подсчет количества строк в файле
sum = sum + ball ' Подсчет суммы баллов
Loop
sr = Round(sum / kol, 2) ' Подсчет среднего балла и округление его до 2 цифр
' в дробной части
Label1.Caption = "Средний балл=" & sr
Close #2
End Sub
Результат работы приложения представлен на рис. 5.2.
Home
Слайд 129
Congratulation!
Конец учебника
Home
Выход