VISAUL_BASIC_lektsii_po_UP.pptx
- Количество слайдов: 104
VISAUL BASIC Презентация к курсу лекций по УП по информатике 1
Типы данных Byte Целое неотрицательное число. Принимает значения от 0 до 255, занимает 1 байт. Boolean Логическая величина. Принимает одно из двух значений True и False, занимает 2 байта. Currency Десятичное протяженное число. Используется для проведения денежных вычислений с фиксированным количеством знаков после десятичной запятой, занимает 8 байт. (До 15 знаков слева от десятичной точки и до 4 знаков справа от десятичной точки). Date Дата. Используется для хранения дат/времени, занимает 8 байт. Double Десятичное число двойной точности, занимает 8 байт. Integer Короткое целое числовое значение, занимает 2 байта. Используется для представления целых чисел в диапазоне от – 32768 до 32767. Используется представления байта. занимает Long Длинное длячисло, 4 целое целых чисел в диапазоне от – 2147483648 до 2147483647. 2
Single Десятичное число обычной точности, занимает 4 байта. Используются для представления отрицательных чисел в диапазоне от – 3. 402823 E 38 до – 1. 401298 E-45 и для представления положительных чисел в диапазоне от 1. 401298 E-45 до 3. 402823 E 38. String Строка переменной длины. Занимаемая память линейно зависит от числа символов в строке. String * длина Строка постоянной длины. Variant Произвольное значение. Используется для хранения данных любых типов. Занимает 16 байтов плюс по одному байту на каждый символ, если значением является строка. Object Объект. Используется только для хранения ссылок на объекты, занимает 4 байта. 3
Оператор определения переменной Dim имя Переменной [ As тип Переменной] Например: Dim My_name As String Dim Число_ворон As Integer, Пи As Double Dim Яблоко Dim Номер Телефона As String*12 4
Option Explicit Модуль с опцией Option Explicit в окне редактора кода. 5
Оператор объявления типа: Def. Тип Начальная буква [ - Конечная буква] Вместо Тип в Def. Тип указывается одно из следующих ключевых слов: • Def. Int (для типа Integer); • Def. Lng (для типа Long); • Def. Sng (для типа Single); • Def. Str (для типа String), и так далее. Например: ' (General) (Declaration) Def. Int A - Z Dim A, B As Byte Dim С, D As Long 6
Объявление переменной с помощью суффикса Суффикс % Тип & ! Integer Long Single # $ @ Double String Currency Например: My_name$ - переменная типа String Пи# - переменная типа Double 7
Константы Const Имя. Константы [As Тип] = Значение Например: Const Pi = 3. 1415926535 Const m. Name As String = "Maria" 8
Определение массива Dim Имя. Переменной ([Нижний. Предел Верхний. Предел) [As тип] To] Пример: ‘Объявляется массив из 15 элементов (0 -14) Dim CN(14) As Integer ‘Объявляется массив из 15 элементов (1 -15) Dim CM(1 To 15) As Integer Оператор Option Base позволяет задать индексацию массива с единицы. ' (General) (Declarations) Option Base 1 9
Общая структура описания подпрограммы Sub имя_подпрограммы[(аргументы)] операторы VISAUL BASIC End Sub Вызов подпрограммы: Call имя_подпрограммы[(параметры)] или имя_подпрограммы [параметры] 10
Функции Общая структура описания функции: Function имя_функции[(аргументы)][As Тип] операторы имя_функции=выражение End Function Вызов функции: переменная=имя_функции[(аргументы)] 11
Вывод данных в стандартное диалоговое окно Msg. Box переменная = Msg. Box(текст[, опция][, заголовок][, файл справки, контекст]) 12
Константы функции Msg. Box 13
Значения, возвращаемые функцией Msg. Box 14
Пример вывода диалогового информационного окна. 15
Оператор присваивания [Let] Имя Переменной = Выражение Арифметические операции: • возведение в степень (^) • умножение (*) и обычное деление (/) • целочисленное деление () • вычисление остатка от целочисленного деления (Mod) • сложение (+) и вычитание (-) 16
Некоторые встроенные математические функции: Abs(x) - абсолютная величина числа x; Sqr(x) - квадратный корень из числа x; Fix(x) - целая часть числа x; Int(x) - наибольшее целое число, не превышающее x. 17
Пример процедуры, вычисляющей арифметическое выражение (площадь круга). 18
Ввод данных в стандартное диалоговое окно Input. Box(приглашение[, заголовок][, молчание] _ [, Xпоз][Yпоз][, файл справки, контекст]) 19
Пример использования функции Input. Box для ввода значения. 20
Пример работы функции Input. Box для ввода фамилии 21
Пример работы функции Input. Box для ввода имени 22
Пример работы функции Input. Box для ввода отчества 23
2 знака конкатенации 1) + 2) & 24
Наиболее распространенные встроенные функции 1) Функция определения длины строки: Len(Строка$) Возвращает длину строки Строка$ Например: Len("Иван" + "Петрович") возвращает 12 2) Функции выделения подстроки: 2. 1) Mid(Строка$, Позиция& [, Длина&]) Например: Mid("Иван Петрович", 6) возвращает "Петрович"; Mid("Иван Петрович", 6, 3) возвращает "Ива" 2. 2) Left(Строка$, Длина&) Например: Left("Иван Петрович", 4) возвращает "Иван" 2. 3) Right(Строка$, Длина&) Например: Right("Иван Петрович", 8) возвращает "Петрович" 25
3) Функции удаления пробелов из строки: 3. 1) Ltrim(Строка$) удаляет из строки начальные пробелы; 3. 2) Rtrim(Строка$) удаляет из строки конечные пробелы; 3. 3) Trim(Строка$) удаляет из строки начальные конечные пробелы. 4) Функция поиска подстроки: In. Str([Начало&, ] Строка$, Подстрока$) 26
5)Функции преобразования: 5. 1) Val (Строка$) преобразует строку Строка$ в число. Например: Если Text 1. Text содержит значение “ 3580”, то результатом вычисления Nom. Gr = val(Text 1. Text)+1 будет число 3581. Если первый символ в строке не является цифрой, то Val возвращает 0. 27
5. 2) Str(Число) преобразует любого типа в строку. число Например: str(Nom. Gr) возвращает строку « 3581» , Ltrim(str(Nom. Gr)) возвращает строку « 3581» без начального пробела. 5. 3) Asc(Строка$) преобразовывает строку в код ASCII первого символа этой строки. Например: Asc("1999") возвращает 49 (код ASCII цифры 1) 28
5. 4) Chr(Код&) преобразовывает код ASCII в строку из одного символа. Например: Chr(49) возвращает "1". Примечание. Чтобы разбить строку в окне сообщения на части, ее нужно представить в виде конкатенации строк: Строка 1$&Chr(13)&Chr(10)&Строка 2$ (13 и 10 это коды неотображаемых символов перехода на новую строку (перенос) и возврата на левую сторону страницы (возврат каретки)) 29
6) Функции смены регистра: 6. 1) UCase(Строка$) возвращает исходную строку, все буквы которой преобразованы в прописные. Например: UСase(Visual Basic) возвращает «VISUAL BASIC» 6. 2) LCase(Строка$) возвращает исходную строку, все буквы которой преобразованы в строчные. Например: LСase ("Список Стран") возвращает "список стран" 30
Логические выражения True - выполняется False – не выполняется Для построения простых условий используются операции сравнения: >, <, =, >=, <>. Для построения сложных условий используются логические операции Not, And, Or. 31
Таблица истинности 32
Ветвление в VISAUL BASIC • условного оператора IF • встроенной функции IIF • оператора выбора CASE а) Однострочный: If условие Then операторы1 операторы2] б) Блочный: If условие Then блок операторов 1 [Else блок операторов 2] End If [Else 33
Пример решения задачи с использованием блочного оператора IF 34
в) Для проверки более одного условия и выполнения одного из нескольких блоков операторов используется оператор IF вида: If условие 1 Then блок операторов 1 Else. If условие 2 Then блок операторов 2 …………… Else. If условие n Then блок операторов n [Else блок операторов Else] End If 35
Функция IIF (условие, значение 1, значение 2) Эта функция возвращает значение 1, если условие истинно и значение 2, если условие ложно. В качестве условия можно использовать логическое выражение, возвращающее значение True (Истина) или False (Ложь), или любое арифметическое выражение (нулевое значение эквивалентно False, а ненулевое – True). 36
Оператор выбора SELECT CASE Формат записи оператора: Select Case проверяемое выражение Case список выражений 1 операторы 1 Case список выражений 2 операторы 2 Case список выражений 3 операторы 3 ………………. Case Else операторы группы Else End Select 37
Формы списка выражений • выражение 1 To выражение 2 • Is логический оператор(оператор сравнения) выражение Например, Is >= 10 38
Пример решения задачи с использованием оператора Select Case 39
Методы Print и Cls Printer. Print - вывод на принтер Print - вывод в текущую форму Cls - убать с формы весь текст, выведенный ранее 40
Программирование циклов Три оператора цикла: • For … Next • While … Wend • Do … Loop 41
Оператор цикла For … Next Оператор цикла For…Next имеет формат: For счетчик = начало To конец [Step приращение] операторы Next [счетчик] Рассмотрим пример решения задачи использующей цикл с параметром. Требуется найти сумму 7 чисел. Private Sub Command 1_Click() Dim a(7) As Integer, s As Integer s=0 For i = 1 To 7 a(i) = Val(Input. Box("Введите число")) s = s + a(i) Next Print s 42 End Sub
Оператор цикла WHILE…WEND Используется для организации циклов с предусловием и имеет следующий формат: While условие продолжения цикла операторы тела цикла Wend Рассмотрим пример решения задачи: Вывести в форму все значения, большие 1, причем каждое последующее значение получается путем деления предыдущего пополам Private Sub Command 1_Click() Dim x As Single x = Input. Box("Введите число") While x > 1 Print x x=x/2 Wend End Sub 43
Оператор цикла DO…LOOP Для организации цикла с предусловием может использоваться в двух модификациях: а) Do While условие продолжения цикла операторы тела цикла Loop б) Do Until условие прекращения цикла операторы тела цикла Loop Для организации цикла с постусловием этот оператор также может быть использован в двух модификациях: в) Do операторы тела цикла Loop While условие продолжения цикла г) Do операторы тела цикла Loop Until условие прекращения цикла 44
Пример использования цикла с постусловием. 45
Модульный принцип построения проекта и программного кода В файле модуля формы (frm) содержится программный код, относящий к форме и объектам этой формы. В стандартном (универсальном) модуле (bas) содержатся программные коды, которые могут использоваться не в одной, а в нескольких формах (и даже в нескольких проектах). VISAUL BASIC позволяет создавать новые объекты, разрабатывать для них свойства и методы и описывать их в модулях класса (cls). 46
Классификация процедур 47
Добавление общей процедуры первым способом 48
Добавление общей процедуры вторым способом 49
Объявление переменной статической: Static Имя_переменной Тип_переменной] как [As Пример: Private Sub Command 1_Click() Static a As Integer Dim b As Integer a=a+1 b=b+1 Print a Print b End Sub 50
Полное описание общей процедуры: [Область. Видимости] [Static] имя. Процедуры (Список. Параметров) Sub Операторы End Sub Область видимости - это одно из двух ключевых слов Public или Private. 51
Передача параметров в процедуры Способы: - либо как ссылки (By. Ref) - либо как значение (By. Val) Sub pr 1(By. Ref n As String) Function fkl(By. Val k As String) As Boolean 52
При вызове процедуры параметры: имя параметра: =значение следует именовать Пример: Private Sub Summa(a, b, c) c=a+b End Sub Private Sub Command 1_Click() X=val(Input. Box( «Первое число» ) Y=val(Input. Box( «Второе число» ) Summa c: =S, b: =x, a: =y Print S End Sub 53
Optional Sub Pr(a, Optional b) If Is. Missing(b) Then Print a, b Else Print a End. If End Sub Private Sub Command 1_Click() Pr 1, 2 End Sub 54
Статический массив Static| Public| Dim] Имя_массива([Нижн_предел To] Верхн_предел) [As Тип_данных] [ 55
Динамический массив 1. Массив определяют в секции (General) (Declarations) контейнера (Form, Module) без указания размера. 2. С помощью оператора Re. Dim устанавливают фактический размер массива. Синтаксис оператора Re. Dim: Re. Dim [Preserve] Тип_данных] Имя_массива(Границы) [As 56
Пример: '(General) (Declarations) Dim a() As Variant Private Sub Command 1_Click() Re. Dim Preserve a(5, 10). . . . End Sub 57
Способы объявления массивов: Public – глобальный; Dim - контейнерный. Встроенные функции для фактического размера массива : определения Lbound(массив, размерность) - нижняя граница. Ubound(массив, размерность) - верхняя граница. 58
Пример ввода данных в динамический массив: Dim ms() As String Private Sub Command 1_Click() Cls Re. Dim ms(0) s = "Начало работы" Do Until s = "" s = Input. Box("введите фамилию") ms(UBound(ms)) = s Re. Dim Preserve ms(UBound(ms) + 1) Loop Re. Dim Preserve ms(UBound(ms) - 1) For i = 0 To UBound(ms) Print i; " "; ms(i) Next i End Sub 59
Пример передачи массива в качестве параметра массива Public Sub srt(b() As Integer) Dim i As Integer, f As Integer, k As Integer Do f=0 For i = LBound(b) To UBound(b) - 1 If b(i) > b(i + 1) Then k = b(i): b(i) = b(i + 1): b(i + 1) = k: f = 1 End If Next Loop While f = 1 End Sub Private Sub Command 1_Click() Dim a(1 To 5) As Integer Dim i As Integer For i = 1 To 5 a(i) = Val(Input. Box("Введите число")) Next Call srt(a) Cls For i = 1 To 5 Print a(i); Next End Sub 60
Пример функции, возвращающей массив: Public Function VV(By. Val n As Byte) As Byte() Dim x(1 To n) As Byte, i As Byte For i = 1 To n x(i) = Val(Input. Box("Введите число")) Next VV=x End Function Private Sub Commnd 1_Click() Dim b() As Byte, i As Byte B()=VV(10) ‘вызов функции For i = 1 To 10 Print b(i) Next End Sub 61
Дескриптор файла VISAUL BASIC имеет функцию Free. File[(дапазон. Номеров)] • если 0 (по умолчанию) - возвращается номер канала из диапазона 1 -255, • если 1 - то из диапазона 256 - 511 62
Последовательный файл Формат - ASCII Open имя. Файла For режим As дескриптор. Файла Значения режима доступа: Input (Ввод) Output (Вывод) Append (Дополнение) Открытые файлы закрываются оператором: Close [список. Дескрипторов] 63
Операторы для записи в файл Print # Дескриптор. Файла, [Список. Значений] Write # Дескриптор. Файла, [Список. Значений] Пример: "Иванов", 1982 "Петров", 1984 "Сидорова", 1983 "Крылов", 1980 64
Вариант 1. Использование оператора Write 65
Оператор Print Функции: Spc(n) Tab(n) 66
Для чтения из файла используются: -оператор Input # Дескриптор. Файла Список. Переменных -оператор Line Input # Дескриптор. Файла Переменная - функция Input (Число. Символов, дескриптор. Файла) 67
Использование оператора Input 68
Пример использования функции Input: Private Sub Command 3_Click() Dim ks As Integer Open "c: Год. Р 1. txt" For Input As #1 ks = LOF(1) Print Input(ks, #1) Close #1 End Sub 69
Пример использования функции Line Input: Private Sub Command 3_Click() Dim ts As String Open "c: Год. Р 1. txt" For Input As #1 Do Until EOF(1) Line Input #1, ts Print ts Loop Close #1 End Sub При обработке файлов также используются функции: LOF(дескриптор. Файла) EOF(дескриптор. Файла) 70
Пользовательский тип данных {Private| Public} Type Имя. Типа. Данных Элемент1 As Тип. Элемента 1. . . Элемент. N As Тип. Элемента. N End Type 71
Например, определим следующий пользовательский тип данных: ‘(General)(Declarations) Public Type Данные. Студент Фамилия As String*15 Имя As String*10 Группа As String*4 Оц. Матем As Integer Оц. Инфор As Integer Оц. Филос As Integer End Type 72
Объявим переменную Студент, имеющую пользовательский тип Данные. Студент и найдем длину записи, которой будет являться любое значение этой переменной: Dim Студент As Данные. Студент, x As Integer x= Len(Студент) 73
Файлы с произвольным доступом Открытие файла Open Имя. Файла For Random [Access доступ] [блокировка] _ As #Дескриптор. Файла Len = Длина. Записи Значения параметра блокировка: Shared Lock Read Lock Write Lock Read. Write 74
Запись в файл Put # Дескриптор. Файла[, Номер. Записи], Имя. Переменной Чтение из файла Get # Дескриптор. Файла[, Номер. Записи], Имя. Переменной 75
Пример решения задачи создания и обработки файла прямого доступа: 76
Результат решения задачи создания и обработки файла прямого доступа. 77
Файлы двоичного доступа Для открытия двоичного файла применяется оператор: Open Имя. Файла For Binary As # Дескриптор. Файла Запись данных в файл происходит при помощи оператора: Put # Дескриптор. Файла, Номер. Байта, Имя. Переменной Чтение данных из двоичного файла осуществляется оператором: Get # Дескриптор. Файла, Номер. Байта, Имя. Переменной 78
79
Типы интерфейсов. Элементы интерфейса Три типа: • однодокументный SDI (Single – Document Interface) интерфейс; • многодокументный MDI (Multiple – Document Interface); • интерфейс типа проводник (Explorer). 80
Форма. Основные свойства и события формы Значения свойствам элементов управления могут быть присвоены двумя способами: • В окне Properties (свойства) для выбранного в форме элемента управления. • В процедуре модуля формы: [Форма. ]Объект. Свойство = Значение Например: Text 1. Text=”Иванов” Значение свойства элемента управления может быть присвоено переменной: Переменная = [Форма. ]Объект. Свойство Например: Fam= Text 1. Text 81
Основные свойства формы: Name Caption Height Width Left Top Scale. Mode Border. Style Control. Box Max. Button Min. Button Font Fore. Color Icon Winwow. State MDIChild 82
Основные события формы Initialize Load Aktivate Got. Focus Resize Unload Deactivate Процедуры обработки события формы имеют следующий синтаксис: Form_Событие[(Аргументы)] 83
Отображение формы Имя стартовой формы задается в окне Project Properties Load Имя. Формы. Show 84
Отображение формы Чтобы отобразить форму в модальном окне следует в качестве параметра указать константу vb. Modal. Например: Student. Show vb. Modal Метод Hide удаляет форму с экрана, не выгружая ее из памяти. Оператор Un. Load убирает форму с экрана и выгружает ее из памяти. Формат оператора: Un. Load Имя. Формы Для выгрузки текущей формы можно написать оператор: Un. Load Me. 85
Меню. Создание меню ToolsMenuEditor… Пример двухуровнего меню. Окно приложения с раскрытыми пунктами меню 86
Окно редактора меню ToolsMenuEditor… 87
Свойства: Caption Name Index Shortcut Help. Context. Id Checked Enabled Visible Window. List 88
Пример контекстного меню 89
Основные элементы управления панель Tool. Bar Первоначально на панели размещены так называемые внутренние (intrinsic) элементы управления Для размещения в блоке инструментов других элементов предназначена команда ProjectComponents. 90
Кнопка (Command. Button) Свойства: Caption Default Cancel Style Picture Desabled Picture Down Picture 91
Надпись(Label) Свойства: Caption Максимальное количество символов в тексте 65528. Размеры надписи можно задавать мышью или командами Shift+{ | | | }; Height и Width; Autosize имеет два значения: True, False Word. Wrap Border. Style Font Fore. Color и Back. Color Appearance определяет внешний вид: объемный (1 -3 d) или плоский (0 – Flat). 92
Текстовое поле (Text. Box) События: Change Private Sub txt. Nom. Gr_Change() If Not Is. Numeric(txt. Nom. Gr) Then Msg. Box “Вводите только цифры” End. If End Sub Validate Causes Validation Lost. Focus Got. Focus Private Sub txt. Nom. Gr_Validate(Cancel_ As Boolean) If Val(txt. Nom. Gr. Text)<100 Or _ Val(txt. Nom. Gr. Text)>9999 Then Msg. Box “Номера групп от 100 до 9999” End. If End Sub Private Sub txt. Nom. Gr_Lost. Focus() Stud. Nom. Gr=txt. Nom. Gr. Text End Sub 93
Свойства текстового поля: Text Пример: Visible Private Sub Command 1_Click() Enabled Command 1. Enabled = False Tool. Tip. Text Command 2. Visible = False Password. Char End Sub Max. Length Password. Char и Max. Length Log in Dialog Свойства для управления текстом Пример выделения всего текста в текстовом Multi. Line поле и замена его новым: Scroll. Bars Sel. Start Private Sub Text 1_Got. Focus() Text 1. Sel. Start =0 Sel. Length Text 1. Sel. Length = Len(Text 1. Text) Sel. Text 94 End Sub
Флажок(Check. Box) События: Click - щелчок мыши. Свойства: Value : 0 - отмечен; 1 - не отмечен; 2 - третье состояние (Отмечен , но не доступен). Style : 0 -Standard; 1 -Graphical 95
Переключатель (Option. Button) События: Click Свойства: Value Пример 1 Private Sub opt. But 1_Click(Index As Integer) Select Case Index Case 0 Msg. Box “Выбрали первый переключатель” Case 1 Msg. Box “Выбрали второй переключатель”. . . End Select End Sub Пример 2 If opt. But 1=True Then Msg. Box “Выбрали первый переключатель” Else Msg. Box “Выбрали второй переключатель”. . . End. If 96
Список (List. Box) События: Click Методы: Add. Item List. Box. Add. Item Элемент[, Индекс] Пример: Создание списка разрядов Private Sub Form_Load() lst. Rasr. Add. Item "10" lst. Rasr. Add. Item "11" lst. Rasr. Add. Item "12" lst. Rasr. Add. Item "13" lst. Rasr. Add. Item "14 « End Sub 97
Remove. Item List. Box. Remove. Item Индекс_элемента Clear List. Box. Clear Свойства: List() Text Sorted List. Index Пример: ls = lst. Box. List(lst. Box. List. Index) List. Count For i=0 to lst. Box. List. Count-1 lst. Box. List(i) Next i 98
Style Columns Multi. Selected() Пример: For i=0 to lst. Box. List. Count-1 If lst. Box. Selection(i) then lst. Box. List(i) End. Ef Next i Itemdata Пример. Создать список lst. Fam. Элементами списка являются фамилии студентов существующего файла данных. Свойству Item. Data присвоить список значений – номера зачетной книжки студентов. 99
Private Sub Form_Load() Open “Stud” For Random As#1 Len=Len(Stud) For i=1 to Lof(1)Len(Stud) Get#1, i, Stud Lst. Fam. Add. Item Stud. Fam Lst. Fam. Item. Data(lst. Fam. New. Index)=Stud. Nom. St Next End Sub ‘ Свойства New. Index содержит добавленного в список элемента Private Sub lst. Fam_Click() индекс последнего ‘ действие над значением – номер зачетной книжки, полученным ‘после выбора фамилии студента из списка n=lst. Fam. Item. Data(lst. Fam. List. Index) End Sub 100
Поле со списком (Combo. Box) События: Click Change Свойства: Style 0 - Combo. Box представляет собой текстовое поле для редактирования и открывающийся список (задано по умолчанию). 1 - Combo. Box представляет собой текстовое поле для редактирования и постоянно открытый список. 2 - отличается от 0 тем, что пользователь не может вводить текст в текстовое поле. 101
Форма для ввода сведений о работнике 102
Private Sub Command 1_Click() Dim фамилия As String, имя As String, отчество As String Dim номер As String, разряд As String, пенсия As String Dim пол As String Open "c: person. txt" For Append As #1 Do Until txt. Fam. Text = "" фамилия = txt. Fam. Text имя = txt. Name. Text отчество = txt. Otch. Text номер = txt. Tab. Text разряд = lst. Rasr. Text If Option 1. Value = True Then пол = "м" Else пол = "ж" End If If Check 1 = 0 Then пенсия = "да" Else пенсия = "нет" 103
End If txt. Fam. Text = "" txt. Name. Text = "" txt. Otch. Text = "" txt. Tab. Text = "" Print #1, фамилия; ", "; имя; ", "; отчество; ", "; номер; ", "; _ разряд; ", "; пенсия; ", "; пол Loop Close #1 End Sub Private Sub Form_Load() lst. Rasr. Add. Item "10" lst. Rasr. Add. Item "11" lst. Rasr. Add. Item "12" lst. Rasr. Add. Item "13" lst. Rasr. Add. Item "14" lst. Rasr. Add. Item "15" lst. Rasr. Add. Item "16" lst. Rasr. Add. Item "17" End Sub 104
VISAUL_BASIC_lektsii_po_UP.pptx