8e349dfc784217fadf83116c00e7f1a3.ppt
- Количество слайдов: 115
2006 г
Литература: 1. Информатика: Учебник/Под ред. Проф. Н. В. Макаровой. – М. : Финансы и статистика, 2000. 2. Браун С. Visual Basic 6: Учебный курс. Пер. с англ. – СПб: Питер, 2002. 3. Волченков Н. Г. Программирование на Visual Basic 6: В -х ч. М. : Инфра-М, 2002. 4. Глушаков С. В. , Сурядный С. А. Программирование на Visual Basic 6. 0: М. : АСТ; Харьков: Фолио, 2005. Назаров С. В. , Мельников П. П. Программирование на MS Visual Basic: Учебное пособие / Под ред. С. В. Назарова. – М. : Финансы и статистика, 2002. 6. Петрова В. В. , Шелудченко А. Г. Информатика. Программирование на MS Visual Basic. Лабораторные работы. М. : МГУП, 2007.
Язык программирования Visual Basic является основой не только системы программирования, его версия - язык программирования Visual Basic for Application является общей платформой для создания Windowsприложений в среде Microsoft Office, а Visual Basic Scripting Edition (VBScript) используется для написания сценариев. Средства доступа к данным позволяют создавать базы данных, приложения предварительной обработки данных и расширяемые компоненты обслуживающих узлов (серверов) для большинства форматов баз данных, включая Microsoft SQL Server и других баз данных предметного уровня. Технология Active. X позволяет использовать в документах функции, предоставляемые другими приложениями (например Word, Excel и т. д. ) и отображать их с помощью браузеров. Поддержка Internet позволяет создавать приложения для Internet-сервера и обеспечивает доступ к сетевым документам.
Методика программирования на Visual Basic сводится к следующему: • создание интерфейса: объектов управления и контроля (пользовательские меню); • установка свойств объектов; • написание процедур, используемых при вызове объектов. Visual Basic является объектноориентированным языком программирования (ООП). ООП — это современный стиль в разработке программ. Этот стиль базируется на следующих требованиях к компьютерным программам, они должны быть: • проверяемыми; • легко модернизируемыми; • многократно используемыми; • переносимыми.
В основе ООП лежат три принципа: инкапсуляции, наследования и полиморфизма. Принцип инкапсуляции предполагает сочетание структур данных с методами их обработки. Принцип наследования состоит в том, что подклассы принадлежащие определённым классам наследуют их данные и методы обработки. Полиморфизм обеспечивает способность объекта реагировать на запрос сообразно своему типу. ООП максимально использует принцип модульности программ. Модульные программы состоят из отдельных относительно самостоятельных частей — модулей. Каждый модуль выполняет специфические, строго определённые функции преобразования и имеет доступ только к тем данным, которые необходимы для этого преобразования. Код модуля, разработанный со строго определённым интерфейсом для других модулей программы, лёгок для отладки, сопровождения и понимания. Другой аспект модуля его замкнутость: изменения вносимые в код модуля влияют только на функции этого модуля и не приводят к ошибкам в работе других модулей.
Программный объект в ООП называется «контейнером» . Контейнер включает в себя данные и программный код, который знает, как манипулировать с этими данными. В традиционном программировании блоки данных передавались от модуля к модулю и каждый модуль использовал их своим способом. Если передавались неверные данные, то они всё равно обрабатывались, что приводило к неверным результатам. В ООП данные и код объединены в объекте, данные не передаются, а объект, получив сообщение, выполняет или не выполняет преобразование над включёнными в него данными. Примером объектов в VBA и Excel могут служить: Рабочие книги, рабочие листы, таблицы, ячейки, диаграммы, текстовые окна. ООП изменило само понятие «документ» , под документом теперь понимают объект, состоящий из данных разного типа и программ, их обрабатывающих.
Рисунок 2. Первоначальное состояние среды разработки Visual Basic
1. 2. Алфавит и лексемы языка Как и любой другой язык, Visual Basic имеет свой алфавит. В него входят: • прописные и строчные буквы латинского алфавита: А, В, . . . , Z, a, b, . . . , z; • прописные и строчные буквы кириллицы (А—Я, а—я); • цифры от 0 до 9; • символ подчеркивания «_» ; • не изображаемые символы ( «обобщенные пробельные символы» ); • специальные символы, участвующие в построении конструкций языка: +, -, *, /, , ", =, >, <, [, ], (, ), . , {, }, ', &, ; , : , @ (комерческое «ет» ); • составные символы, воспринимаемые как один символ: < =, > =, <> ;
При запуске Редактора кода (Code Editor) появляется окно, в котором можно вводить текст программы. Так как работа с программным кодом осуществляется в модулях, то для каждого модуля, выбранного в проводнике проекта (Project Explorer), создаётся отдельное окно. Код внутри модуля разделён на отдельные секции, для каждого объекта, содержащегося в модуле. При записи текста модуля могут встречаться длинные строки, их можно разбить на несколько строк, для этого используется символ пробела за которым следует символ подчёркивания. Пример: Data. Record = “SELECT * From Titles, Publisher” _ & “WHERE Publishers. Pub. ID = Titles. Pub. ID” _ & “AND Publishers. State = ‘CA’ ” При записи нескольких операторов в одну строку, они разделяются двоеточием. Пример: Text 1 = “Hello” : Red = 255 : Text 1. Back. Color = Red
Лексемы языка Visual Basic. Программирование линейного вычислительного процесса
Лексема — это единица текста программы, которая имеет определенный смысл для компилятора и которая не может быть разбита в дальнейшем. В Visual Basic различают шесть классов лексем: -свободно выбираемые и используемые идентификаторы; -служебные (зарезервированные) слова; -константы; -строки (строковые константы); -операции (строки операций); -разделители (знаки пунктуации).
Visual Basic накладывает на имена следующие ограничения: • имя должно начинаться с буквы; • имя не должно содержать точек, пробелов, разделительных символов, знаков операций, а также специальных символов; • имя должно быть уникальным, оно не должно совпадать с зарезервированными словами Visual Basic или с другими именами; • длина имени может включать до 255 символов, но следует иметь в виду, что Visual Basic учитывает только первые 40 символов от начала имени.
Примеры имен переменных:
В Visual Basic, как и в других языках программирования, есть зарезервированные (ключевые) слова, которые нельзя выбирать в качестве идентификаторов имен. Перечень зарезервированных слов приведен в табл. 1. 1 Имена могут быть простыми или сложными. Имена следует выбирать такими, чтобы они несли в себе больше информации о назначении переменной, процедуры или функции. Примеры простых и составных имен переменных: N, I, Number, Номер — простые имена переменных; Фамилия_Студента — составное имя переменной, оно несет в себе информацию о фамилии студента.
Существуют соглашения по стилю имен, которых желательно придерживаться: • идентификатор должен понятным образом отражать назначение переменной, это правило способствует пониманию программы; • лучше использовать имена из строчных букв, в случае составных имён нужно отделять друг от друга составляющие их слова подчеркиванием или начинать новое слово с прописной буквы; • имена из прописных букв используются для определения констант; • название идентификатора может содержать суффикс, который указывает на тип данных, связанный с этим идентификатором. Типом данных называется способ хранения и представления данных в компьютерной системе. В языке VB различают 11 типов переменных: Целое число (Integer) – занимает 2 байта памяти;
Длинное целое (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 - @.
Переменные — это объекты, предназначенные для хранения данных. В разные моменты времени переменные могут хранить различные значения. В переменных можно запоминать какие-либо значения и извлекать их из них. Переменную можно представить как простейший объект программы следующим образом:
Option Explicit ‘запрещение запуска программы при наличие в ней неописанных переменных Dim int. My. Number As integer 'Явное объявление переменной Defint I 'неявное объявление переменных, имена начинающиеся с этой буквы, будут иметь объявленный тип Int. My. Number = 10 'для явно декларированной переменной ошибки не будет int. My. Num =10 'при ошибочном указании имени option explicit включит предупреждение об ошибке int. Number = 6 'для неявного декларирования переменной будет выдано сообщение об ошибке. Операторы объявления типа: Defint, Deflng, Defsng, Defdbl, Defcur, Defstr, Defbyte, Defbool, Defdate, Defobj, Defvar. Примеры декларации переменных: Dim x As Integer, str. Name$, Lng. Old& Dim у As Integer Dim x As Integer, Birds%
Константы — это объекты, значения которых остаются постоянными и не могут быть изменены во время выполнения программы. Константы могут быть именованными и неименованными. Синтаксис языка определяет три типа констант: символьные, целые и вещественные. Символьная константа служит для изображения отдельных знаков и представляет собой лексему, состоящую из символа(или любой последовательности символов), заключенного в кавычки. Например, «Р» , «Program» , « 3. 14» , «+» — неименованные символы константы. Синтаксисом языка предусмотрены десятичные, шестнадцатеричные, восьмеричные целые константы. Целая десятичная константа представляется десятичным целым числом: 44, 684, 0, 1278 — неименованные десятичные целые константы.
Вещественные константы представляются в памяти ЭВМ в форме числа с плавающей точкой. Вещественная константа состоит из следующих частей: -целая часть (десятичная целая константа); -десятичная точка; -дробная часть( десятичная целая константа); -признак показателя «е» или «Е» ; -показатель (десятичная целая константа): 44. , 3. 24879, 44 е. О, . 314159 Е 1, Различают встроенные константы VB(предопределённые константы) и создаваемые пользователем. Встроенные в Visual Basic константы имеют префикс vb. Встроенные константы определены в разделах справки для этих функций. Для того чтобы узнать конкретное значение константы, можно воспользоваться окном «Object Browser» (обозреватель объектов), которое вызывается клавишей [F 2] или щелчком на соответствующей кнопке панели инструментов. После выбора константы ее значения и описание функции появляются в текстовом поле в нижней части окна «Object Browser» .
Примеры использования предопределенных констант: Msg. Box «текстовое сообщение» , vb. Information Msg. Box «нет данных для расчета» , vb. Exclamation (экслёмэйшин – восклицание) Для определения констант служит ключевое слово Const. Синтаксическая конструкция для декларирования констант напоминает оператор для декларации переменной и имеет вид: [Public/Private] const имя_ константы[As тип]= значение например: Const PI As Single = 3. 14 15 'объявлена именованная числовая константа для значения числа Pi.
. Область видимости переменной задается при ее декларации одним из ключевых слов: Dim — объявляет локальные переменные, существующие только во время вызова процедур или функций, в которых они объявлены. Если переменная объявляется в разделе глобальных переменных, объявлений модуля или формы, то она доступна для всех процедур и функций этого модуля. Для других модулей она будет не видна; Private — не может объявлять переменную внутри процедуры или функции. Локальная переменная Private доступна всем процедурам одного модуля, но не доступна из других модулей. При объявлении переменных в разделе общих объявлений модуля Dim и Private равнозначны; Public — объявленная таким образом переменная является глобальной на уровне приложения и доступна из всех его модулей.
Различают динамические и статические переменные. Статические переменные объявляются внутри процедуры или функции и вне них не доступны. Для создания статической переменной необходимо при ее объявления вместо ключевого слова Dim указать слово Static: Static int. Number As Integer Значения локальных переменных, объявленных словом Static, сохраняются в течении всего времени выполнения приложения в отличие от переменных типа Dim, которые существуют только в течении выполнения процедуры.
2. 2. Встроенные функции Visual Basic Встроенные функции VB обеспечивают сложные виды обработки данных, избавляя пользователя от разработки собственных программ. В VB используется несколько категорий встроенных функций. Это — математические, строковые, функции даты и времени, функции преобразования типов и файловые. Математические: Sin(a), Cos(a), Tan(a), Atn(a) — тригонометрические функции; Sqr(a) — корень квадратный из числа; Log (а) — логарифм натуральный; Ехр(а) — показательная функция; Abs(a) — абсолютное значение; Int(a) — округление до ближайшего меньшего целого; Sgn(a) — знак числа; Fix(a) — округление путём отсечения дробной части;
Randomise — генератор случайных чисел; 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) — переход на начало строки.
Арифметическое выражение в Visual Basic Арифметическое выражение – это последовательность чисел, констант, переменных, функций и арифметических выражений, заключённых в круглые скобки, которые соединены между собой знаками арифметических операций. Таких операций 8. Вычисления производятся в соответствии с приоритетом: 1) А^B; 2) –A; 3)A*B, A/B; 4)AB; 5)A Mod B; 6)A+B, A-B. Для операции 345 результат равен 6, а для (34 mod 5) результат 4. Взятие стандартной функции имеет наивысший приоритет. Чтобы изменить последовательность выполнения операций используют круглые скобки. Примеры: (a+b)/c/d; (sin(x)^2+cos(y^3))/(38. 3+tan(pi+x))^(1/3);
Составить программу для вычисления результата по формуле:
Текст программного модуля приведён ниже. Процедура запускается по щелчку мыши на свободном поле User. Form 1. 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
При программировании часто приходится выводить информацию непосредственно на форму с помощью метода Print. Синтаксис оператора вывода следующий: Имя_объекта. Print Список_вывода При каждом последующем вызове метода Print элементы списка вывода печатаются с новой строки. Для того чтобы пропустить строку, необходимо указать Print без параметров. Однократным вызовом метода Print можно напечатать несколько значений. В качестве разделителей элементов используются запятые и точки с запятой. При использовании точки с запятой элементы выводятся через один пробел, а если одно значение отделяется от другого запятой, то оно будет напечатано в следующей колонке (ширина каждой колонки – 14 символов). Результатом работы оператора: Print "x="; x, "y="; y при x=1. 56, y=-45. 897 будет: x= 1. 56 y= -45. 897.
В ситуации, когда необходимо продолжать печатать значения в той же строке, вызывая новые методы Print, в конце оператора также следует ставить точку с запятой (или запятую). Совместно с методом Print можно использовать функцию Spc(n), задающую количество пробелов перед печатаемым значением, и функцию Tab(n) указывающую позицию вывода. Например, следующие операторы: Print Tab(21); "Результат" и Print Spc(20); "Результат" При выводе результата можно использовать функцию Format(expression, fmt), где expression – форматируемое численное выражение, fmt – последовательность символов, определяющих отображение expression Например, если надо вывести на печать объем V c 3 цифрами в дробной части, оператор записи результата в текстовое поле Text 3 будет выглядеть так: Text 3. Text = Format ( V, "##. ###"). Символ "#" используется для задания количества значащих цифр в целой и дробной части
Алгоритмизация
Алгоритм и его свойства Алгоритм – это конечная последовательность предписаний однозначно определяющих процесс преобразования исходных данных в результат решения задачи. Свойства алгоритма: дискретность, детерминированность, результативность, массовость. Алгоритм может задаваться одним из следующих способов: 1) Путём словесного или словесно-формульного описания на естественном языке; 2) На языке блок-схем; 3) На одном из алгоритмических языков. Словесный алгоритм: подойти к пешеходному переходу, посмотреть на сигнал светофора, на зелёный - начать переход, на красный – остановится, на жёлтый ждать переключения сигнала.
Алгоритм и его свойства Блок – схемой называется наглядное графическое представление изображения алгоритма, когда отдельные действия (этапы) алгоритма изображаются при помощи различных геометрических фигур, а связи между ними при помощи линий и стрелок. Основные структуры алгоритмов – это ограниченный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий. Структурный подход к программированию предполагает использование только нескольких основных структур (линейных, ветвящихся, циклических), комбинация которых позволяет разрабатывать всё многообразие алгоритмов и программ.
Язык блок-схем Начало Блок - конец/начало, используется обозначения конца или начала алгоритма для Блок – процесс, используется для обозначения действия приводящего к получению единственного результата нет да Блок – решение, используется для обозначения разветвляющегося действия (проверки условия) Блок – данные, используется обозначения операций ввода/вывода для
Язык блок-схем Блок – подготовка (модификатор), используется для обозначения заголовка цикла Блок – типовой процесс, используется для обозначения подпрограммы, фрагмента алгоритма Соединитель, ставится в разрыв линии связи Линии связи указывают направление вычислительного процесса, при естественном направлении сверху вниз и слева направо стрелку можно не ставить, во всех остальных случаях и при изломе линии стрелка обязательна
Требования к изображению блок-схем Блок-схемы алгоритмов, как и любая техническая документация должны соответствовать требованиям стандартов. При изображении блок-схем, все элементы должны иметь одинаковые геометрические размеры (например соотношение высоты и ширины 1: 3); вертикально и горизонтально все элементы должны располагаться на одной прямой, т. е. вписываться в регулярную сетку по горизонтали и по вертикали; линии связей не должны иметь множество пересечений, лучше использовать разрыв с элементом соединитель, который ставится в месте выхода и в месте входа линии связи; текст пояснений внутри блоков записывается на естественном языке или с помощью математических формул.
Алгоритм решения квадратного уравнения Ax 2+Bx+C=0 Начало Действ. к. нет а, b, с нет а=0 D=b 2 -4 ac D>0 да b=0 да нет X=-c/b нет c=0 Нет решения 1 да x X 1, 2 1 1 да Мн-во реш. 1 конец
Текст модуля 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 x 1 = (-b + Sqr(d)) / 2 / a: x 2 = (-b - Sqr(d)) / 2 / a Текст4 = "x 1=" & Str(x 1): Текст5 = "x 2=" & Str(x 2): Go. To 1 Else Текст4 = «Действит. корней нет": Go. To 1 End If
Текст модуля (продолжение) If b <> 0 Then x = -c / b: Текст4 = “корень=“ & Str(x): Go. To 1 End If If c <> 0 Then Текст4 = “Нет решения” Else Текст4 = “Мн-во решений” 1: End Sub
Базовые алгоритмы циклической структуры Сумма S=0 ai, n i>n i=i+1 нет i<n i=1. . n S=S+ai да S=S+ai S конец S
Базовые алгоритмы циклической структуры Максимум Счётчик ai, n, p, l Мax=a 1: im=1 K=0 i=1. . n ai>Max да нет l<ai<p Мax=ai: im=i K=k+1 Max, im k конец да
Программирование разветвляющихся процессов
Условный оператор Алгоритмы, в которых последовательность выполняемых действий зависит от выполнения проверяемых условий, называются нелинейными. Они программируются с помощью условного оператора. В языке VB есть две формы условного оператора: однострочная и многострочная. Однострочная такова: If Условное выражение Then Оператор1 [Else. Оператор2] Квадратные скобки содержат конструкции, которые могут отсутствовать. Многострочная форма оператора более сложная: If Условное выражение Then Последовательность операторов 1 [Else Последовательность операторов 2] End If
Условный оператор Условное выражение – это простое или сложное условие в состав, которого могут входить: переменные, константы, числа, связанные знаками арифметических и логических операций, а также знаками операций отношения. Условное выражение может принимать только два значения True и False. Логические операции в порядке приоритета их выполнения: Not, And, Or. Примеры: If x<y Then max=y Else max=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)
Условный оператор Задача: Найти сумму бесконечного числового ряда с заданной точностью , S=1+1/2+1/4+1/8+… начало n=1: v=1: s 1=0 n=2*n: v=1/n n=2*n v=1/n s=s+v |v|< нет |s-s 1|< да да s, v, n конец s 1=s нет
Пример программы Private Sub Комманда 1_Click() n = 1: v = 1: s 1 = 0 eps = Val(Текст1) 1: n = 2 * n v=1/n s=s+v If Abs(s - s 1) < eps Then Текст2 = Str(s) Else s 1 = s: Go. To 1 Текст2 = str(s) End Sub
Оператор выбора Select Case Условный оператор при многократном вложение применять не рекомендуется – программа становится громоздкой и трудной для понимания. В этом случае лучше использовать оператор выбора. Синтаксис оператора: Select Case Выражение Case Диапазон. Значений 1 Последовательность. Операторов 1 Case Диапазон. Значений 2 Последовательность. Операторов 2 … Case Else Последовательность. Операторов. N End Select (В выражении ключевое слово Is должно стоять перед любым знаком отношения. )
Оператор выбора Select Case Задача: Преподаватель за каждую решённую на контрольной работе задачу начислял баллы: за 1 и 2 по 6 баллов, за 3 и 4 по 9 баллов, за 5 по 12 баллов. Оценка за контрольную зависит от суммы набранных баллов. Спроектируем форму:
Программный код должен содержать 5 одинаковых процедур для 5 событий – щелчок мышью по каждому из 5 контрольных индикаторов. Каждое событие будет вызывать последовательность действий: Переменным: v 1%, v 2%, v 3%, v 4%, v 5% - будут присвоены значения свойства Value пяти контрольных полей; Будет вызвана процедура Summa, которая сначала присвоит переменной s% значение равное сумме набранных баллов, а затем присвоит переменной m% значение, равное оценке за контрольную работу. Ниже приведены тексты одной процедуры Check. Box 1_Click() и процедуры Summa, которая вызывается оператором Call. Процедура Summa демонстрирует использование оператора Select Case. Диапазоны значений переменной S% задаются с помощью ключевого слова To и с помощью неравенств и ключевого слова Is
Sub Summa(v 1%, v 2%, v 3%, v 4%, v 5%, s%, m%) s% = -(v 1% * 6 + v 2% * 6 + v 3% * 9 + v 4% * 9 + v 5% * 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
Private Sub Проверка 1_Click() v 1% = Проверка 1. Value: v 2% = Проверка 2. Value v 3% = Проверка 3. Value: v 4% = Проверка 4. Value v 5% = Проверка 5. Value Call Summa(v 1%, v 2%, v 3%, v 4%, v 5%, s%, m%) Текст1. Text = s Текст2. Text = m End Sub
Системные функции, функции RND, Timer, IIf
К системным функциям относятся функции, действие которых напрямую зависит от работы Windows. Мы рассмотрим функцию Input. Box - используемую для ввода данных пользователем через системное окно и функцию Msg. Box – служащую для выдачи сообщений пользователю через системное окно. Синтаксис функции следующий: Input. Box (Приглашение [, Заголовок] [, Нач. Значение]) Приглашение – любой текст, который находится в Окне ввода и служит для подсказки. Заголовок – необязательная надпись в строке заголовка. Нач. Значение – это значение, которое будет введено автоматически, если пользователь с этим согласен. Возвращаемым значением данной функции является информация вводимая пользователем. VB автоматически приписывает этой информации тип String. В программе функция Input. Box может входить в состав выражения, значение которого присваивается переменной. При обращении к функции, на экране появляется Окно ввода. После щелчка по кнопке ОК происходит присваивание и окно ввода исчезает.
Окно ввода Результат
Текст модуля Private Sub Command. Button 1_Click() Dim Fam, Im, Ot As String Fam = Input. Box("Введите Вашу фамилию: ", "Ввод фамилии") Im = Input. Box("Введите Ваше имя : ", "Ввод имени") Ot = Input. Box("Введите Ваше отчество: ", "Ввод отчества") Text. Box 1. Text = Fam: Text. Box 2. Text = Im: Text. Box 3. Text = Ot End Sub
Функция Msg. Box служит для выдачи сообщения пользователю через системное окно. Синтаксис функции следующий: Msg. Box (Текст [, Опция ] [, Заголовок ]) Это традиционная форма синтаксиса, когда функция возвращает значение, которое затем используется в программе, если скобки отсутствуют, то функция не возвращает никакого значения, а действует как оператор т. е. просто выдаёт информацию в Окно сообщения. Текст- это строка сообщения. Она может содержать до 1024 символов; Опция – это целое число, которое определяется по формуле ОР=ОР 1 + ОР 2 Значение ОР 1 определяет вид сообщения и пиктограмму, которая помещается в Окно сообщения
-Критическое сообщение, код=16 - Вопрос, код=32 - Предупреждение, код=48 - Информация, код=64 Значение ОР 2 определяет набор кнопок в Окне сообщения: 0 – ОК; 1 – ОК, ОТМЕНА; 2 – СТОП, ПОВТОР, ПРОПУСТИТЬ; 3 – ДА, НЕТ, ОТМЕНА; 4 – ДА, НЕТ; 5 – ПОВТОР, ОТМЕНА.
Простая экранная форма – приветствие приведена на рисунке. В этом окне имеются три объекта: кнопка OK, надпись “Здравствуй друг!” и рисунок. В VBA экранная форма хранится в отдельном файле, имя которого имеет расширение frm. Общий вид экранной формы представлен на рисунке. Программный модуль, относящийся к данной экранной форме, хранится в файле с расширением bas и для нашего примера выглядит так: Private Sub Командная. Кнопка_Click() Msg. Box “Здравствуй, друг!”, 64, “Приветствие” End Sub
Рассмотрим использование ещё нескольких функций: датчика случайных чисел, счётчика времени и IIf. В процессе решения вычислительных задач часто требуется программировать вероятность появления случайных событий. Для этого используют функцию RND значением, которой является число случайным образом выбираемое из интервала от 0 до 1. На самом деле при использование RND число берётся из очень длинной последовательности псевдослучайных чисел. Поэтому надо случайным образом определить место в этой последовательности с помощью оператора рандомизации Randomize, а для того, чтобы это число при каждом новом запуске программы было разным – используют ещё встроенный счётчик времени – функцию Timer без параметров. Для программирования условного перехода можно использовать функцию IIF. Её синтаксис таков: IIF(Условное_выражение, Значение 1, Значение 2), функция возвращает Значение 1, если выражение истинно и Значение 2, если оно ложно.
Private Sub Комманда 1 _Click() Randomize Timer Dim Ver As Single: Ver = Rnd Текст1 = IIf(Ver < 0. 75, "Яблоки", "Грибы") Текст2 = IIf(Ver < 0. 75, "Яблочный пирог", "Пирог с грибами") End Sub
Программирование циклических процессов
Объявление массивов В VBA различают два вида переменных — простые переменные и переменные структурного типа. Простые переменные служат для идентификации и резервации памяти для одного данного. Переменные структурного вида предназначены для идентификации и резервации памяти для нескольких данных. Частным случаем переменной структурного вида является массив. Массив представляет собой структуру, все элементы которой имеют одинаковый тип. Например, это могут быть данные, определяющие вектор или матрицу. Массивы могут быть одномерными и многомерными. Так, для отображения вектора может быть использован одномерный массив, а для отображения матрицы — многомерный.
Объявление массива имеет следующий вид: Dim / Public / Private Имя_Массива (индексы)_Аs Тип_Данных где: Dim / Public / Private — ключевые слова, декларирующие массив в области его видимости; Имя_Массива —идентификатор, определяющий имя массива; Индексы — значение индекса (номера) последнего элемента в массиве, считая с нулевого; As — ключевое слово, определяющее указание типа элементов массива; Тип_Данных—любой, действительный для Visual Basic тип данных базовый или созданный пользователем. Примеры описания статических массивов: Dim B (5) As Single ' описан одномерный массив из 6 чисел вещественного типа Dim C (1 To 12) As Integer ' описан одномерный массив из 12 целых чисел.
Объявление одномерного массива из восьми элементов выглядит следующим образом: Dim Му. Аrrау (7) As integer 'одномерный целочисленный массив из 8 элементов. При объявлении многомерного массива в поле индекса указывают несколько индексов в соответствии с размерностью массива. Двумерный массив из шести столбцов и пяти строк объявляется следующим образом: Dim Str. Array (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(Input. Box("Ввод количества элементов массива В")) Re. Dim B (1 To N) For i = 1 To N B(i) =Val (Input. Box("Ввод " & i & " элемента массива", "Ввод с клавиатуры"))
Динамические массивы применяются в том случае, когда количество элементов массива заранее неизвестно и будет определяться в процессе выполнения программы. В этом случае первоначально массив объявляется как динамический. Для этого в объявлении не указывается размерность. Например: Dim str. My. Array () As String Количество элементов в объявленном массиве и его размерность в процессе выполнения программы можно переопределить с помощью ключевого слова Re. Dim. Синтаксическая конструкция переопределения массива имеет вид: Re. Dim [Preserve] Имя. Массива (индексы) [As Тип. Данных] где: Re. Dim — ключевое слово, указывающее что переопределяется размеры массива; Preserve — необязательное ключевое слово, с помощью которого дается указание, чтобы все элементы переопределенного массива сохранили свое значение; Индексы — размерность массива (до 60).
Пример: Dim str. My. Array () As String 'объявление динамического масива Dim int. Valarray As integer 'объявление переменной для хранения размерности int. Val. Array = 9 'инициализация значения Re. Dim str. My. Array (int. Val. Array) 'одномерный массив из 10 элементов (базовый индекс равен 0) Или другой пример: Dim array ( ) As Long ' объявление динамического массива ……. . n = Val(Input. Box("Ввод количества элементов массива array")) Re. Dim array (1 To n) ' одномерный массив из n элементов
Для того, чтобы организовать повторение операций используют оператор цикла For Next. Оператор используется тогда, когда заранее известно число повторений цикла. Это многострочный оператор, его синтаксис таков: For Имя=Значение 1 To Значение 2 [Step Значение 3] исполняемые операторы Next [Имя] Имя – это имя переменной, которую называют счётчиком. Значение 1 – начальное значение счётчика. Значение 2 – конечное значение счётчика. Значение 3 – величина шага.
Задача 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
Задача 2: Сумма элементов массива Private Sub Комманда 1 _Click() Dim My. Array As Single Dim int. Valarray As Integer int. Valarray = Текст1. Text S=0 For i = 0 To int. Valarray My. Array = Input. Box("Введите элемент массива : ", " a(i)=") S = S + My. Array Next Текст2. Text = S End Sub
Задача 3. Разработать приложение, реализующее табулирование функции y=1, 2 sin(3 x) при изменении аргумента х в диапазоне [x 0, xk] с шагом h с выводом результатов вычисления непосредственно на форму с помощью метода Print. Программный код для кнопки Расчет можно записать так: Private Sub Комманда 1 _Click() ' Кнопка Расчет Dim x 0 As Single, xk As Single, h As Single, x As Single, y As Single Cls ' Очистка формы x 0 = Val(Input. Box("Ввод x 0 - начального значения аргумента")) xk = Val(Input. Box("Ввод xk - конечного значения аргумента")) h = Val(Input. Box("Ввод h - шага изменения аргумента")) Font. Size = 10 ' Установка размера шрифта Font. Bold = True ' Установка полужирного начертания Print Tab(7); "Функция y = 1. 2 sin(3 x)" Font. Bold = False ' Отмена полужирного начертания Print: Print "x 0="; x 0, "xk="; xk, "h="; h: Print Tab(3); "x"; Tab(17); "y" For x = x 0 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
Результат работы программы для x 0=0, xk=2, h=0. 25 представлен на рисунке.
Программирование циклических процессов (продолжение)
Электронная форма для задачи поиск максимального элемента в одномерном массиве.
Private Sub Комманда 1_Click() Dim My. Array As Single Dim int. Valarray As Integer int. Valarray = Val(Текст1) Re. Dim a(int. Valarray) As Single Max = -1000: k = 0 For i = 0 To int. Valarray My. Array = Input. Box("Введите э-т массива : ", "Ввод a(i)=") Список 1. Add. Item My. Array ‘метод Add. Item используется Список 2. Add. Item i ‘для добавления элементов в список a(i) = My. Array If a(i) > Max Then Max = a(i): k = i Next Текст2. Text = Max Текст3. Text = k End Sub
Сортировка методом «пузырька»
Текст модуля: Сортировка Private Sub Комманда 1_Click() Dim a(1 To 10) As Integer Randomize Timer For k = 1 To 10 a(k) = Int(10 * Rnd) Список 1. Add. Item 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. Add. Item a(k) Next k
Пользовательское меню программы формирования и транспонирования матрицы.
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. Add. Item 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. Add. Item s Next tr End Sub
Пользовательское меню программы формирования матрицы и вычисления сумм элементов столбцов.
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. Add. Item 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. Add. Item s End Sub
Оператор цикла Do-Loop. Логически управляемый цикл, оператор Do — начало, оператор Loop — конец цикла. Оператор имеет четыре модификации: 1) Условие имеет значение True в начале цикла. Структура: Do While <условие> <блок операторов> Exit Do <блок операторов> Loop Цикл выполняется пока истинно условие. Оператор Exit Do предназначен для прекращения цикла и передачи управления оператору Loop — конец цикла. 2) Условие имеет значение True в конце цикла. Структура: Do <блок операторов> Exit Do <блок операторов> Loop While <условие> Цикл выполняется хотя бы один раз, проверка условия в конце цикла.
3) Условие False в начале цикла. Структура: Do Until <условие> <блок операторов> Exit Do <блок операторов> Loop Цикл выполняется до тех пор, пока условие не станет истинным. 4) Условие False в конце цикла. Структура: Do <блок операторов> Exit Do <блок операторов> Loop Until<условие>
Условие проверяется в конце цикла. Цикл прекращается, когда условие станет истинным. Пример: Do While True A=Rnd : Debug. Print a If a>0. 99 Then Exit Do Loop Цикл While-Wend аналогичен циклу Do While-Loop, проверка условия выполняется в начале цикла. Структура: While <условие> <блок операторов> Wend.
Пример программы на использование цикла с условием. Расчёт количества расфасованных пакетов. 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
Цикл For Each. Оператор относится к категории объектных операторов, т. е. применяется к массивам, наборам объектов, коллекциям. Выполняется фиксированное число раз, число объектов в наборе определяется автоматически. Структура: For Each <элемент> In <набор> <блок операторов> Exit For <блок операторов> Next <элемент> Пример: For each z In arrx n=n+1 x(n)=z Next z
Формула линейной интерполяции yn=y 1+(y 2 -y 1)*(xn-x 1)/(x 2 -x 1) y 2 yn y 1 xn x 2
Пример программы с оператором 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
Пример программы с оператором For Each (продолжение). For i=1 to n-1 If x(i) <= x_new And x(i+1)>= 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. Для массивов параметром этого цикла может быть только переменная типа Varian Нельзя использовать этот цикл с массивом, имеющим определённый пользователем тип.
Использование процедур в VB
Программные модули на VB состоят из процедур. Использование процедур упрощает программирование, разбивая код модуля на процедуры, можно намного упростить чтение и модификацию текстов программ. В VB используется несколько видов процедур: • Процедуры SUB (не возвращает значения); • Процедуры Function (возвращает значение); • Процедуры Property (могут возвращать и присваивать значение, а также устанавливать ссылки на объекты). Процедура SUB – это блок кода, который выполняется в ответ на событие. Синтаксис процедуры: [Private/Public ] [Static ] Sub <имя_процедуры>(аргументы) Операторы тела процедуры End Sub В VB следует понимать различие между двумя типами процедур SUB: общими процедурами обработки событий. Общая процедура указывает приложению, как выполнять конкретную задачу. Однажды определённая, она должна каждый раз специально вызываться приложением.
В противоположность ей процедура обработки события после вызова остаётся в ожидания событий, вызванных пользователем или инициированных системой. Так программа обработки события Click вызывает процедуру Sub с именем Command. Button 1, которая выполняет свой код и возвращает управление процедуре обработки события Click. Как только объект в VB распознаёт, что произошло событие, он активизирует процедуру обработки события с именем, соответствующем данному событию. Так как имя процедуры устанавливает связь между объектом и кодом, то говорят, что процедуры обработки событий прикреплены к формам и элементам управления. Процедуру Sub в отличие от Function нельзя вызывать по имени в выражении. Её вызов осуществляется в отдельном операторе. Процедура Sub не возвращает значения, однако она может изменять значения любых переменных, переданных ей в качестве параметров. Существуют два способа вызова процедуры Sub. Например для процедуры Prog 1 c параметрами а и b: Call Prog 1(a, b) или Prog 1 a, b. Как видно из примера при использование оператора Call, параметры заключены в круглые скобки.
Если имя процедуры уникально, то включать имя модуля в вызов процедуры не обязательно. Процедура является уникальной, если она определена только в одном месте. Если два или более модулей содержат процедуры с одинаковыми именами, то при вызове таких процедур необходимо уточнять их с помощью имени соответствующего модуля. Например, если процедура с именем Common. Name существует и в Module 1, и в Module 2, то при вызове из Module 1 процедуры Common. Name процедуры Module 2, надо записать: Module 2. Common. Name(аргумент), в противном случае будет вызвана процедура этого модуля. В VB кроме стандартных встроенных функций можно писать собственные процедуры Function. Её синтаксис таков: [Private/Public][Static]Function<имя_процедуры> (аргументы) [As type] <Операторы тела процедуры> End Function. Вызов процедуры Function чаще всего осуществляется заданием её имени и параметров в тексте выражения. Процедура Function имеет тип, который определяет тип возвращаемого выражения.
Возвращаемое процедурой Function значение присваивается переменной с именем процедуры. Обычно процедуре для выполнения требуется некоторая информация о состоянии программы. Эта информация заключена в значениях переменных, передаваемых процедуре при её вызове (их называют параметрами процедуры). По умолчанию параметры процедуры имеют тип Variant, в явном виде параметрам можно задать любой другой тип. Пример: Function For. Lunch(Week. Day As String, Hour As integer) As String If Week. Day=“четверг” then For. Lunch=“рыба” Else For. Lunch= “куры” End if If Hour >4 then For. Lunch=“ Too late” End Function Параметры процедуры могут передаваться по значению и по ссылке. В первом случае процедуре передаётся только копия переменной, выступающей в качестве параметра процедуры. Если процедура изменяет значение параметра, то это затрагивает только копию переменной, а не саму переменную, т. е. во вне новое значение не передаётся.
Ключевое слово By. Val служит признаком того, что параметр передаётся по значению. Например: Sub Post. Acc(By. Val Acct. Num As Integer) Передача процедуре параметров по ссылке открывает ей доступ к области памяти, где хранится содержимое переменной. В результате процедура может изменять значение переменной являющейся её параметром. По умолчанию в VB все параметры передаются по ссылке. Пример: Получить таблицу значений функции по формуле: y=(arcsin(x*x)+arcsin(x))/arctan(x).
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. Add. Item s Y = arcsin(M ^ 2) + arcsin(M) / Atn(M) s="" s = “№" & Str(k) & "=" & Str(Y) Список 2. Add. Item s Next k End Sub
Function arcsin(x) arcsin = Atn(x / Sqr(1 - x * x)) End Function
Использование файлов в Visual Basic
Работа с файлами в языке Visual Basic Информация, которая вводится и выводится из программы, организована в файлы. Файлом называется поименованная область памяти на диске, содержащая совокупность связанных между собой записей. Запись представляет собой набор элементов, рассматриваемых как единое целое с точки зрения устройств ввода-вывода. Именно записями одно устройство компьютера (например, память) обменивается с другим (например принтером или дисководом). В предельном случае запись может состоять из одного символа. При работе с Windows — приложениями, файлы чаще всего хранятся на внешнем магнитном носителе. При записи данных в файл необходимо выполнить: открытие файла для записи, запись компонентов файла, закрытие файла. При чтении файла необходимо выполнить: открытие файла для чтения, чтение компонентов файла, закрытие файла. При открытии файлу ставится в соответствие канал ввода/вывода с определенным номером – дескриптором. Таким образом, каждый открытый файл имеет собственный канал, с помощью которого записываются или считываются данные.
Следовательно, для ввода и вывода данных в файл имеет значение не имя файла, а дескриптор. Кроме того, операционная система должна иметь сведения о наличии свободных каналов, которые можно использовать для открытия файлов. Номер свободного канала можно узнать с помощью функции Free. File. Файлы могут содержать программы и данные. Файлы данных подразделяются на три типа: последовательные, произвольного доступа и двоичные. В двоичном файле информация записана как набор байтов. Обычно они используются для хранения исполняемых файлов.
Важнейшим атрибутом файла является его имя. Имя файла состоит из имени дисковода, имени папки и идентификатора файла — пути поиска файла на диске. При работе с файлами данных различают три вида работ: -создание (запись файла на диск); -чтение файла и обработка записей; -добавление записей и корректировка файла. Для добавления записей или их корректировки в файлах с последовательным доступом требуется фактически переписать все записи файла заново. Файлы данных с произвольным доступом позволяют считывать данные в любом порядке, независимо от того в какой последовательности они были записаны в файл. Каждая запись в файлах произвольного доступа имеет свой номер, что обеспечивает возможность непосредственного обращения к ней.
Операторы и функции для работы с файлами последовательного доступа OPEN — открыть файл; CLOSE — закрыть файл; Input # — прочитать запись из файла; Print # — записать запись в файл; Write # — записать запись в файл; Lof — вернуть длину файла; Eof — логическая величина, используемая для определения конца файла. Оператор OPEN выполняет подготовительную работу для последующих операций ввода-вывода. Он заполняет блок управления данными, в которые система помещает файл и номер устройства, с которым будет работать; резервирует области памяти для буферов обмена операций вводавывода; определяет организацию данных в файле, режим его обработки и т. д.
Формат записи оператора: OPEN имя файла[FOR режим]As[ # дескриптор файла] где: имя файла может включать устройство и путь поиска файла на диске; режим—для текстовых файлов одно из трёх ключевых слов: Output — используется если файл открывается для записи с первой позиции (вся старая информация при этом уничтожается); Append — используется, если файл открывается для продолжения записи; Input — используется, если файл открывается для чтения из него текстовых данных. Дескриптор файла — это любое целое число от 1 до 511, которое служит идентификатором файла в программе.
Оператор CLOSE # [список дескрипторов файлов] —закрывает все файлы, идентификаторы которых указаны в списке через запятую. Если список дескрипторов отсутствует, то закрываются все открытые в программе файлы. • Оператор INPUT # дескриптор файла, список переменных. • Оператор line. INPUT # дескриптор файла, список переменных. Чаще всего чтение из текстового файла производится циклически, с помощью оператора цикла с условием: Do While. . . Loop или Do Until. . . Loop. Условием окончания цикла является попытка прочитать данные после чтения последней строки. Эта попытка приводит к тому, что значение функции EOF будет true.
Пример: Запишем программу, которая помещает все фамилии, имена и даты рождения из файла Год. Рождения 1. txt в три окна списка List. Box экранной формы: Private Sub Command 1_Click() Open “Год. Рождения 1. txt” For Input As#1 Do Until EOF(1) Input # 1, Фамилия$, Имя$, Год. Рождения% List. Box 1. Addltem Фамилия$ List. Box 2. Addltem Имя$ List. Box 3. Addltem Год. Рождения% Loop Close # 1 End Sub
Записывать данные в текстовый файл можно двумя способами с помощью операторов Write и Print. Оба оператора записывают данные в файл текстовыми строками. Текстовая строка — это последовательность символов, заканчивающаяся знаком "конец строки" (код = 26) или знаком возврата каретки (код в таблице символов = 13) и "перевода строки" (код = 10). Синтаксис операторов записи в текстовый файл одинаков: Write # дескриптор файла, [список значений] Print # дескриптор файла, [список значений]. Список значений — это записанные через разделитель значения. В операторе Write элементы этого списка записываются в одну текстовую строку файла через запятую. Элементы типа String заключаются в кавычки. В операторе Print, если разделитель точка с запятой, то значения будут записаны подряд, без промежутков между ними, а, если разделитель запятая, то значения будут записываться в 14 символьные зоны вывода.
Пример результата для оператора Write: “Иванов”, ”Иван”, 1986 “Петров”, ”Петр”, 1984 “Сидоров”, ”Николай”, 1985 Пример результата для оператора Print: Иванов Иван 1986 Петров Петр 1984 Сидоров Николай 1985 Функция Input — это функция двух аргументов, где первый аргумент — это количество символов, которые надо прочесть, а второй дескриптор файла.
В качестве примера запишем программу, которая помещает в объект Text 1 класса Текстовое поле число, определяющее размер файла Год. Рождения 1 . txt. Open “Год. Рождения. txt” For Input As # 1 Dim Число. Символов As Integer Число. Символов = LOF(1) Text 1. Text = Input(Число. Символов, # 1) Close # 1
Пример Разработать приложение, в котором необходимо: создать список группы студентов с указанием их фамилии, имени и оценки по информатике путем заполнения файла последовательного доступа, используя окно ввода, предусмотреть просмотр введенного файла и подсчет среднего балла. При чтении файла его содержимое будет помещено в текстовое окно, а запись в файл будет осуществляться с помощью оператора Write. После ввода очередной фамилии, имени и оценки будет появляться окно сообщения Msg. Box с двумя кнопками Yes, No и вопросом "Продолжить ввод? ". При нажатии на кнопку Yes цикл будет продолжен, а при нажатии на кнопку No – прекращен. На форму надо поместить 4 командные кнопки Создание файла, Чтение из файла, Средний балл, Выход, текстовое поле Text. Box, 3 метки для поясняющего текста к полю Text. Box, вывода подсчитанного среднего балла и вывода фамилии и группы студента. Поскольку текстовое поле предназначено для вывода содержимого файла, содержащего несколько
Программный код для приложения можно записать так: Private Sub Command 1_Click() ' Кнопка Создание файла Dim fam As String, im As String, ball As Integer Open "D: StudentsДЭм 11Группа 2. txt" For_ Output As 2 Do fam = Input. Box("Ввод фамилии", "Создание файла") im = Input. Box("Ввод имени", "Создание файла") ball = Val(Input. Box("Ввод оценки по информатике", "Создание файла")) Write #2, fam, im, ball ans = Msg. Box("Продолжить ввод? ", vb. Question + _ vb. Yes. No, "Создание файла") Loop Until ans = vb. No Close #2 End Sub
Private Sub Command 2_Click() ' Кнопка Чтение из файла Dim kol_sym As Integer Open "D: StudentsДЭм 11Группа 2. txt" For _ Input As 2 kol_sym = LOF(2) ' Количество символов в файле Text 1. Text = Input(kol_sym, #2) Close #2 End Sub Private Sub Command 3_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
Do Until EOF(2) Input #2, fam, im, ball kol = kol + 1 ' Подсчет количества строк в файле sum = sum + ball ' Подсчет суммы баллов Loop sr = Round(sum / kol, 2) ' Подсчет среднего балла и округление его до 2 цифр ' в дробной части Label 1. Caption = "Средний балл=" & sr Close #2 End Sub Результат работы приложения представлен на рис. 5. 2.
Выход
8e349dfc784217fadf83116c00e7f1a3.ppt