Слайд 1Лекция 2
Кафедра Прикладной математики
М-703, тел. 362-79-62
К.т.н., профессор Глаголев Виктор Борисович,
комн. Ж-405б,
тел. 362-73-28
http://glagvik.narod2.ru/index.htm
Преобразование и совместимость типов
Базовые структуры алгоритмов
Пример «Алгоритм Эвклида»
Ввод и вывод данных
Программирование разветвлений
Инструкция IF
Инструкция Select Case
Слайд 2Преобразование и совместимость типов данных
В этом разделе речь будет идти о
тех ситуациях, когда при выполнении операции или инструкции участвуют данные разных типов. Например, что произойдет, если переменной целого типа присваивается числовое значение с дробной частью?
По умолчанию автоматические преобразования типов разрешены (Option Strict Off). Здесь сочетание слов Strict (соответствие) Off означает отмену требования строгого соответствия типов.
Слайд 3 Чтобы запретить автоматическое преобразование типа, в начале кода проекта следует добавить
инструкцию Option Strict On. В этом случае все необходимые преобразования типов программист должен сам предусматривать в программном коде, применяя функции преобразования типов данных.
Слайд 4Функции преобразования типов данных:
Слайд 5Пример
Dim a, b As Single = 5
Dim c As Integer =
1
a = b + CSng(с)
Преобразование данного типа Integer к типу Single здесь потребовалось потому, что арифметическая операция всегда выполняется только с однотипными операндами.
Слайд 6Если же в проект включена инструкция Option Strict Off (такая опция подразумевается
по умолчанию), то в отношении типов VB.NET проявляет максимальную терпимость. Когда это возможно, преобразование одного типа в другой будет выполнено автоматически и программисту нет нужды об этом заботиться.
Слайд 7Следует при этом иметь в виду:
При преобразовании числа с плавающей точкой
в целое происходит округление до ближайшего целого.
При преобразовании целого в число с плавающей точкой дробная часть принимается равной нулю.
Слайд 8В случае преобразования целого типа в другой целый тип возможна ситуация,
когда целый тип с большим диапазоном значений преобразуется в целый тип с меньшим диапазоном значений. Если значение, которое присваивается «короткому» типу, выйдет за пределы диапазона его допустимых значений, произойдет ошибка периода выполнения.
Слайд 9Строковые и числовые типы совместимы, если строку можно трактовать как число.
Не
возникнет ошибки при присвоении свойству Text некоторой надписи, которое имеет тип String, значения некоторой переменной типа Integer, равное 125:
Label1.Text = 125
Произойдет преобразование целого числового значения 125 в строку символов “125”.
Слайд 10И наоборот. При присвоении переменной целого типа значения свойства Text некоторого
текстового поля, которое имеет тип String (пусть, например, в этом текстовом поле набрано три символа 125) произойдет преобразование строки символов “125” в целое число и целочисленная переменная получит значение 125. Однако строка символов должна быть такой, чтобы она могла трактоваться как число.
Слайд 11 Возможно также выполнение арифметической операции, например умножения (*), когда один или
оба операнды являются строкой символов, но при условии, что их значения, можно интерпретировать как числа:
Dim i, r As Integer, _
str As String
i = 5
str = “25”
r = i * str ‘String -> Integer
Слайд 12 Особую осторожность следует соблюдать с символом (+), который в зависимости от
контекста может означать либо операцию сложения, либо операцию сцепления.
Слайд 13 В операции операнд1 + операнд2 символ (+) VB будет воспринимать как:
операцию сложения, если оба операнда имеют кокой либо из числовых типов;
операцию сложения, если один операнд имеет числовой тип, а второй является строкой символов, значение которой может быть интерпретировано как число;
Слайд 14 операцию сцепления, если один операнд имеет числовой тип, а второй
является строкой символов, значение которой не может быть интерпретировано как число;
операцию сцепления, если оба операнда имеют строковый тип независимо от их значений.
Слайд 15 Пример
Dim i, j, k, r As Integer
i = 18
j = 24
Label1.Text
= i
Label2.Text = j
k = Label1.Text _
+ Label2.Text + 10‘Рез-т: 1834
r = 10 + Label1.Text _
+ Label2.Text ‘Рез-т: 52
Слайд 16Базовые структуры алгоритмов
Алгоритм — набор инструкций, описывающих порядок действий исполнителя для
достижения результата решения задачи за конечное время (википедия).
Слайд 17 Известны различные способы записи алгоритма.
Любая программа на языке VB – это
тоже запись соответствующего алгоритма.
Наибольшей наглядностью обладает изображение алгоритма в виде блок-схемы.
Слайд 18 При разработке алгоритма необходимо применять такие технологические рекомендации, при соблюдении которых
алгоритм получался бы наиболее понятным, а ошибки при записи алгоритма в виде кода программы были бы наименее вероятны.
Слайд 19 В соответствии с современными воззрениями в сегодняшней технологии разработки программ алгоритм
должен быть структурирован. Структурированный алгоритм включает в свой состав только базовые структуры, которых всего три:
следование (последовательная),
разветвление (выбор),
цикл (повторение).
Слайд 20Следование
Эта структура предполагает последовательное выполнение входящих в нее инструкций
. Существенно, что
структура следование, рассматриваемая как единое целое (на рисунке она заключена в пунктирный прямоугольник), имеет один вход и один выход.
Слайд 22Разветвление предполагает проверку некоторого условия.
В зависимости от того выполняется это условие
или нет, выполняется либо одна инструкция, либо другая.
Слайд 23Если на момент проверки условие оказалось выполнено, то будет выполнена инструкция
1, а инструкция 2 игнорируется.
Если же оказывается, что условие не выполнено, то будет выполнена инструкция 2, а инструкция 1 игнорируется.
Разветвление также имеет один вход и один выход.
Слайд 24Цикл
Цикл предполагает повторение выполнения некоторой инструкции или группы инструкций.
Цикл возникает, если
на блок-схеме по направлению стрелок образуется замкнутый контур.
Слайд 25 Различают два вида базовых циклов в зависимости от порядка выполнения этих
действий: сначала проверка условия выполнения инструкции, а затем ее выполнение (цикл – пока), или сначала выполнение инструкции, а затем проверка условия выхода из цикла (цикл – до). На следующем слайде изображена блок-схема цикла – пока, а также блок-схема цикла – до.
Базовая структура – цикл имеет один вход и один выход.
Слайд 27 Итак, каждая из трех рассмотренных базовых структур имеет один вход и
один выход.
Это обстоятельство позволяет считать, что любой прямоугольник с надписью «Инструкция», изображенный на рисунках предыдущих слайдов, может быть базовой структурой.
Значит, цикл может включать в свой состав базовые структуры: следование, разветвление, цикл.
Это же утверждение также относится и к двум другим базовым структурам – следованию и разветвлению.
Слайд 29Пример цикла, не являющегося базовой структурой
Слайд 30Пример 1 (алгоритм Эвклида)
Эвклид - древнегреческий математик, автор первого из дошедших
до нас теоретических трактатов по математике. Его научная деятельность протекала в Александрии в 3 в. до н. э.
Требуется найти наибольший общий делитель двух целых положительных чисел n1 и n2 (алгоритм Эвклида).
Слайд 31Если общий делитель n чисел n1 и n2 существует, то он
же обязательно является и общим делителем разности большего (n2) и меньшего (n1) из этих двух чисел. Действительно, пусть
n1 = n * k, а n2 = n * m
Тогда разность r = n2 – n1 = n * (m – k)
Возьмем в качестве n2 большее из значений r и n1, а в качестве n2 – меньшее из этих значений.
Мы пришли к той же задаче, но теперь n2 стало меньше. Повторение этих действий неизбежно приведет к ситуации, когда n1 = n2 = n
Слайд 32 Сначала необходимо выбрать данные, изменение значений которых в соответствие с разрабатываемым
алгоритмом приведет к искомому решению, т. е. выбрать имена и тип этих данных.
Для этого применим таблицу данных:
Слайд 34Ввод данных
Функция InputBox
Для ввода значения переменной можно воспользоваться функцией с именем
InputBox. Она выводит на экран диалоговое окно, содержащее сообщение, а также поле ввода, и возвращает значение типа String, содержащее строку, введенную в поле ввода.
Упрощенный синтаксис обращения к этой функции:
InputBox(Сообщение[, Заголовок])
У этой функции обязательный только первый слева аргумент. Назначение аргументов:
Сообщение – выражение типа String, отображаемое в диалоговом окне;
Заголовок – выражение типа String, отображаемое в строке заголовка диалогового окна.
Слайд 35Пример 1
Dim k As Integer
k = InputBox( _
"Введите количество слушателей", _
"Ввод
исходных данных")
'String -> Integer
Слайд 36 Для вывода значений данных удобно применять текстовое поле TextBox.
Чтобы текстовое окно
могло содержать не одну, а несколько строк, его свойство Multiline должно иметь значение True.
Для управления размещением результатов вывода в текстовом поле применяются:
свойство Text;
метод AppendText;
метод Clear;
константы vbTab и vbCrLf.
Вывод данных
Слайд 37 Метод текстового поля
AppendText(ДобавляемаяСтрока)
записывает в конец текущей строки текстового поля
строку являющуюся его аргументом.
Очистка текстового поля выполняется с помощью метода Clear. TextBox1.Clear()
Константа vbTab, начиная с текущей позиции вставляет в строку промежуток из пробелов.
Константа vbCrLf делает текущей первую позицию следующей строки.
Слайд 38 Пример 2
Dim i As Integer, s As Single
i = InputBox("i=?")
'String -> Integer
s = InputBox("s=?") 'String -> Single
При вводе данных в качестве разделителя целой и дробной частей числа следует использовать символ, установленный при настройке параметров операционной системы (чаще всего – запятую).
Слайд 39 Ниже приведен код событийной подпрограммы Form1_Click, которая выполняется при щелчке на
форме Form1:
Private Sub Form1_Click(ByVal sender _
As Object, ByVal e As _
System.EventArgs) Handles MyBase.Click
Dim a As String = "Строка символов"
Dim b As Integer = 10, c As Single
Dim d As Double, f, g, h As Decimal
g = 1
h = 3
f = g / h
c = f
d = f
Слайд 40TextBox1.Text = "a = " & a & vbTab _
& "b
= " & b & vbCrLf
TextBox1.AppendText("c = " & c & vbCrLf)
TextBox1.AppendText("d = " & d & vbCrLf)
TextBox1.AppendText("f = " & f & vbCrLf)
End Sub
Константа vbTab создает некоторый интервал при выводе между значением переменной a и значением переменной b. Константа vbCrLf обеспечивает перевод строки и возврат каретки (иначе говоря, делает текущей следующую строку текстового окна). Константы vbTab и vbCrLf позволяют управлять расположением выводимых результатов.
Слайд 41 В результате выполнения кода этой процедуры в помещенном на форме
текстовом окне TextBox1, будут выведены значения результатов:
Слайд 43Форматирование вывода
Для форматирования чисел, дат и времени может быть применена функция
Format. Эта функция преобразует число, дату или время в строку символов. Мы можем указать, сколько десятичных разрядов отведено на запись числа, нужны или нет лидирующие нули, замыкающие нули, обозначения валюты, разделители тысяч.
Вот упрощенный синтаксис функции Format:
Format(Выражение, Формат)
Слайд 44Параметр Выражение определяет значение, которое требуется преобразовать.
Параметр Формат – это текстовая
строка, сформированная из символов: (0) – в этой позиции должен быть напечатан замыкающий или лидирующий ноль; (#) – в этой позиции не следует печатать замыкающий или лидирующий ноль; (.), (,), (-), (+), ($), ( ( ), ( ) ), (пробел) – эти символы печатаются в той позиции, где они указаны.
Слайд 45Ниже приводятся примеры преобразования чисел и дат функцией Format:
Обращение к функции Результат
Format
(315.4,”00000.00”) 00315,40
Format (315.4,”#####.##”) 315,4
Format (6315.4,”##,##0.00”) 6 315,40
Format (315.4,”$##0.00”) $315,40
Format (“09.10.2001”,”dd.mm.yy”) 09.10.01
Format (“09.10.2001”,”dddd, dd mmmm, yyyy года”)
вторник, 09 октября, 2001 года
Слайд 46Функция MsgBox
Для вывода значения некоторого выражения может быть применена функция MsgBox.
Для этого следует обратиться к функции MsgBox, пользуясь, например, упрощенным синтаксисом:
MsgBox (Сообщение[, , Заголовок])
Здесь Сообщение – это выражение, которое будет преобразовано в строку символов и выведено в окне MsgBox, а Заголовок – строка символов, отображаемая в заголовке этого окна.
Слайд 47Пример 1
Dim i As Integer = 5
MsgBox("i= " & i, ,
"Вывод переменной i")
Окно функции MsgBox будет выглядеть так, как показано ниже на рисунке.
Слайд 48Управление порядком выполнения инструкций
Естественный порядок выполнения инструкций
Инструкции программного кода процедуры выполняются
в порядке их положения в составе кода сверху вниз и слева направо. Такой порядок их выполнения называется естественным. На естественном порядке основывается программирование базовой структуры – следование.
Слайд 49Например, изображенная на рисунке структура алгоритмов – следование на VB может
быть записана двумя последовательно расположенными инструкциями:
x = a * b
TextBox1.Text(“x =“ & x)
Слайд 50Инструкции разветвления
Условная инструкция If
Имеется два варианта синтаксиса этой инструкции – блочный
синтаксис и однострочный синтаксис.
Слайд 51 Блочный синтаксис
Если в зависимости от условия необходимо выполнить не одну простую
инструкцию, а несколько инструкций, следует использовать блочный синтаксис. Кроме того, блочная структура позволяет анализировать несколько условий.
If ЛВ1 Then [Инструкции1]
[ElseIf ЛВi Then
Инструкцииi]
[Else
[Инструкции2]]
End If
Слайд 52 Выполнение этой инструкции If состоит в следующем. Сначала проверяется значение ЛВ1.
Если оно истинно, то выполняется группа Инструкции1 и на этом выполнение инструкции If завершается. Если же значение ЛВ1 ложно, то проверяется значение следующего условия ЛВi. Если оно истинно, то выполняется группа Инструкцииi и на этом выполнение инструкции If завершается. Если же значение ЛВi ложно, то проверяется следующее ЛВi. Если же все ЛВi оказываются ложными, то выполняется группа инструкций Инструкции2.
Слайд 53Пример 1
If A = 7 Then
Beep
End If
В этом примере
звуковой сигнал прозвучит только в том случае, если значение переменной А равно 7.
Слайд 54 Пример 2
If Name = "Иванов" Then
MsgBox ("Ваша карточка удерживается!")
Else
MsgBox
("Получите деньги, пожалуйста!")
End If
В этом примере, если значение переменной Name равно "Иванов", то будет выведено Ваша карточка удерживается!. При любом другом значении переменной Name будет выведено Получите деньги, пожалуйста!.
Слайд 55 Пример 3
If x > 0 Then
kp = kp + 1
ElseIf x
< 0 Then
km = km + 1
Else
k0 = k0 + 1
End If
Слайд 56 Пример 4
If Обращение = 1 Then
MsgBox ("Здравствуйте, господин")
ElseIf Обращение =
2 Then
MsgBox (" Здравствуйте, госпожа")
ElseIf Обращение = 3 Then
MsgBox _
(" Здравствуйте, дамы и господа")
Else
MsgBox ("Здравствуйте, люди")
End If
Слайд 57 Для этого примера результат вывода показан в таблице:
Слайд 58Однострочный синтаксис
Применяется для программирования простых разветвлений (см. рисунок), когда Инструкция1 и
Инструкция2 являются простыми инструкциями (не являются следованием, разветвлением или циклом).
Слайд 59If ЛВ Then Инструкция1 [Else Инструкция2]
Здесь If (если), Then (то) и
Else (иначе) - зарезервированные слова, ЛВ – логическое выражение, которое может принять одно из двух возможных значений True и False.
Существенно, что здесь после слова Then, а также после слова Else может находиться только одна простая инструкция.
Слайд 60Выполнение такой инструкции состоит в следующем. Если ЛВ, имеет значение True,
выполняется Инструкция1, указанная за Then, Инструкция2 не выполняется (пропускается). Если же значение ЛВ равно False, то выполняется Инструкция2, следующая за ключевым словом Else, если такая имеется, а Инструкция1 пропускается.
Пример 5
If a = 7 Then MsgBox(“b= ” & b)
В этом примере выводится значение переменной b, если значение переменной a равно 7.
Слайд 61 Пример 6
If x < 9 Then MsgBox (“x меньше 9”) _
Else
MsgBox (“x больше или равно 9”)
В этом примере выводится текст “x меньше 9”, если значение переменной x меньше 9. В противном случае выводится текст “x больше или равно 9”.
Слайд 62Инструкция Select Case
Еще одной инструкцией VB, предназначенной для программирования разветвлений, является
Select Case (инструкция выбора), которая позволяет выполнить одну из нескольких групп операторов в зависимости от значения некоторого выражения.
Инструкция Select Case имеет следующий синтаксис:
Слайд 63Select Case Проверочное_Выражение
[Case Значение1
[Инструкции1]]
[Case Значение2
[Инструкции2]]
.
.
.
[Case Else
[Инструкции Else]]
End Select
Слайд 64
Select Case V
Case 1
MsgBox("Равно 1“)
Case 2, 3
MsgBox("Равно 2 или 3“)
Case 4
То 6
MsgBox("Больше или равно 4 и меньше или равно 6“)
Case Is >= 9
MsgBox("Больше или равно 9“)
Case Else
MsgBox("Ни одно из предшествующих")
End Select
Пример 6
Слайд 65В качестве значения для блока Case можно указывать не только одно
значение, но и несколько, разделенных запятой).
Можно определять также области сравнения) или воспользоваться относительным сравнением (Is >= 9). Вместо непосредственного значения проверочного выражения можно использовать ключевое слово Is.
Блок Case Else выполняется, если ни одно из предыдущих условий не является истинным.
Если условию Select Case соответствует несколько блоков Case, то выполняется первый из них.