'

Лекция 2

Понравилась презентация – покажи это...





Слайд 0

Лекция 2 Кафедра Прикладной математики М-703, тел. 362-79-62 К.т.н., профессор Глаголев Виктор Борисович, комн. Ж-405б, тел. 362-73-28 http://glagvik.narod2.ru/index.htm Преобразование и совместимость типов Базовые структуры алгоритмов Пример «Алгоритм Эвклида» Ввод и вывод данных Программирование разветвлений Инструкция IF Инструкция Select Case


Слайд 1

Преобразование и совместимость типов данных В этом разделе речь будет идти о тех ситуациях, когда при выполнении операции или инструкции участвуют данные разных типов. Например, что произойдет, если переменной целого типа присваивается числовое значение с дробной частью? По умолчанию автоматические преобразования типов разрешены (Option Strict Off). Здесь сочетание слов Strict (соответствие) Off означает отмену требования строгого соответствия типов.


Слайд 2

Чтобы запретить автоматическое преобразование типа, в начале кода проекта следует добавить инструкцию Option Strict On. В этом случае все необходимые преобразования типов программист должен сам предусматривать в программном коде, применяя функции преобразования типов данных.


Слайд 3

Функции преобразования типов данных:


Слайд 4

Пример Dim a, b As Single = 5 Dim c As Integer = 1 a = b + CSng(с) Преобразование данного типа Integer к типу Single здесь потребовалось потому, что арифметическая операция всегда выполняется только с однотипными операндами.


Слайд 5

Если же в проект включена инструкция Option Strict Off (такая опция подразумевается по умолчанию), то в отношении типов VB.NET проявляет максимальную терпимость. Когда это возможно, преобразование одного типа в другой будет выполнено автоматически и программисту нет нужды об этом заботиться.


Слайд 6

Следует при этом иметь в виду: При преобразовании числа с плавающей точкой в целое происходит округление до ближайшего целого. При преобразовании целого в число с плавающей точкой дробная часть принимается равной нулю.


Слайд 7

В случае преобразования целого типа в другой целый тип возможна ситуация, когда целый тип с большим диапазоном значений преобразуется в целый тип с меньшим диапазоном значений. Если значение, которое присваивается «короткому» типу, выйдет за пределы диапазона его допустимых значений, произойдет ошибка периода выполнения.


Слайд 8

Строковые и числовые типы совместимы, если строку можно трактовать как число. Не возникнет ошибки при присвоении свойству Text некоторой надписи, которое имеет тип String, значения некоторой переменной типа Integer, равное 125: Label1.Text = 125 Произойдет преобразование целого числового значения 125 в строку символов “125”.


Слайд 9

И наоборот. При присвоении переменной целого типа значения свойства Text некоторого текстового поля, которое имеет тип String (пусть, например, в этом текстовом поле набрано три символа 125) произойдет преобразование строки символов “125” в целое число и целочисленная переменная получит значение 125. Однако строка символов должна быть такой, чтобы она могла трактоваться как число.


Слайд 10

Возможно также выполнение арифметической операции, например умножения (*), когда один или оба операнды являются строкой символов, но при условии, что их значения, можно интерпретировать как числа: Dim i, r As Integer, _ str As String i = 5 str = “25” r = i * str ‘String -> Integer


Слайд 11

Особую осторожность следует соблюдать с символом (+), который в зависимости от контекста может означать либо операцию сложения, либо операцию сцепления.


Слайд 12

В операции операнд1 + операнд2 символ (+) VB будет воспринимать как: операцию сложения, если оба операнда имеют кокой либо из числовых типов; операцию сложения, если один операнд имеет числовой тип, а второй является строкой символов, значение которой может быть интерпретировано как число;


Слайд 13

операцию сцепления, если один операнд имеет числовой тип, а второй является строкой символов, значение которой не может быть интерпретировано как число; операцию сцепления, если оба операнда имеют строковый тип независимо от их значений.


Слайд 14

Пример 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


Слайд 15

Базовые структуры алгоритмов Алгоритм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время (википедия).


Слайд 16

Известны различные способы записи алгоритма. Любая программа на языке VB – это тоже запись соответствующего алгоритма. Наибольшей наглядностью обладает изображение алгоритма в виде блок-схемы.


Слайд 17

При разработке алгоритма необходимо применять такие технологические рекомендации, при соблюдении которых алгоритм получался бы наиболее понятным, а ошибки при записи алгоритма в виде кода программы были бы наименее вероятны.


Слайд 18

В соответствии с современными воззрениями в сегодняшней технологии разработки программ алгоритм должен быть структурирован. Структурированный алгоритм включает в свой состав только базовые структуры, которых всего три: следование (последовательная), разветвление (выбор), цикл (повторение).


Слайд 19

Следование Эта структура предполагает последовательное выполнение входящих в нее инструкций . Существенно, что структура следование, рассматриваемая как единое целое (на рисунке она заключена в пунктирный прямоугольник), имеет один вход и один выход.


Слайд 20

Разветвление


Слайд 21

Разветвление предполагает проверку некоторого условия. В зависимости от того выполняется это условие или нет, выполняется либо одна инструкция, либо другая.


Слайд 22

Если на момент проверки условие оказалось выполнено, то будет выполнена инструкция 1, а инструкция 2 игнорируется. Если же оказывается, что условие не выполнено, то будет выполнена инструкция 2, а инструкция 1 игнорируется. Разветвление также имеет один вход и один выход.


Слайд 23

Цикл Цикл предполагает повторение выполнения некоторой инструкции или группы инструкций. Цикл возникает, если на блок-схеме по направлению стрелок образуется замкнутый контур.


Слайд 24

Различают два вида базовых циклов в зависимости от порядка выполнения этих действий: сначала проверка условия выполнения инструкции, а затем ее выполнение (цикл – пока), или сначала выполнение инструкции, а затем проверка условия выхода из цикла (цикл – до). На следующем слайде изображена блок-схема цикла – пока, а также блок-схема цикла – до. Базовая структура – цикл имеет один вход и один выход.


Слайд 25

Цикл


Слайд 26

Итак, каждая из трех рассмотренных базовых структур имеет один вход и один выход. Это обстоятельство позволяет считать, что любой прямоугольник с надписью «Инструкция», изображенный на рисунках предыдущих слайдов, может быть базовой структурой. Значит, цикл может включать в свой состав базовые структуры: следование, разветвление, цикл. Это же утверждение также относится и к двум другим базовым структурам – следованию и разветвлению.


Слайд 27


Слайд 28

Пример цикла, не являющегося базовой структурой


Слайд 29

Пример 1 (алгоритм Эвклида) Эвклид - древнегреческий математик, автор первого из дошедших до нас теоретических трактатов по математике. Его научная деятельность протекала в Александрии в 3 в. до н. э. Требуется найти наибольший общий делитель двух целых положительных чисел n1 и n2 (алгоритм Эвклида).


Слайд 30

Если общий делитель 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


Слайд 31

Сначала необходимо выбрать данные, изменение значений которых в соответствие с разрабатываемым алгоритмом приведет к искомому решению, т. е. выбрать имена и тип этих данных. Для этого применим таблицу данных:


Слайд 32

n1 n2 16 40 16 24 16 8 8 8


Слайд 33

Ввод данных Функция InputBox Для ввода значения переменной можно воспользоваться функцией с именем InputBox. Она выводит на экран диалоговое окно, содержащее сообщение, а также поле ввода, и возвращает значение типа String, содержащее строку, введенную в поле ввода. Упрощенный синтаксис обращения к этой функции: InputBox(Сообщение[, Заголовок]) У этой функции обязательный только первый слева аргумент. Назначение аргументов: Сообщение – выражение типа String, отображаемое в диалоговом окне; Заголовок – выражение типа String, отображаемое в строке заголовка диалогового окна.


Слайд 34

Пример 1 Dim k As Integer k = InputBox( _ "Введите количество слушателей", _ "Ввод исходных данных") 'String -> Integer


Слайд 35

Для вывода значений данных удобно применять текстовое поле TextBox. Чтобы текстовое окно могло содержать не одну, а несколько строк, его свойство Multiline должно иметь значение True. Для управления размещением результатов вывода в текстовом поле применяются: свойство Text; метод AppendText; метод Clear; константы vbTab и vbCrLf. Вывод данных


Слайд 36

Метод текстового поля AppendText(ДобавляемаяСтрока) записывает в конец текущей строки текстового поля строку являющуюся его аргументом. Очистка текстового поля выполняется с помощью метода Clear. TextBox1.Clear() Константа vbTab, начиная с текущей позиции вставляет в строку промежуток из пробелов. Константа vbCrLf делает текущей первую позицию следующей строки.


Слайд 37

Пример 2 Dim i As Integer, s As Single i = InputBox("i=?") 'String -> Integer s = InputBox("s=?") 'String -> Single При вводе данных в качестве разделителя целой и дробной частей числа следует использовать символ, установленный при настройке параметров операционной системы (чаще всего – запятую).


Слайд 38

Ниже приведен код событийной подпрограммы 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


Слайд 39

TextBox1.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 позволяют управлять расположением выводимых результатов.


Слайд 40

В результате выполнения кода этой процедуры в помещенном на форме текстовом окне TextBox1, будут выведены значения результатов:


Слайд 41

Пример


Слайд 42

Форматирование вывода Для форматирования чисел, дат и времени может быть применена функция Format. Эта функция преобразует число, дату или время в строку символов. Мы можем указать, сколько десятичных разрядов отведено на запись числа, нужны или нет лидирующие нули, замыкающие нули, обозначения валюты, разделители тысяч. Вот упрощенный синтаксис функции Format: Format(Выражение, Формат)


Слайд 43

Параметр Выражение определяет значение, которое требуется преобразовать. Параметр Формат – это текстовая строка, сформированная из символов: (0) – в этой позиции должен быть напечатан замыкающий или лидирующий ноль; (#) – в этой позиции не следует печатать замыкающий или лидирующий ноль; (.), (,), (-), (+), ($), ( ( ), ( ) ), (пробел) – эти символы печатаются в той позиции, где они указаны.


Слайд 44

Ниже приводятся примеры преобразования чисел и дат функцией 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 года


Слайд 45

Функция MsgBox Для вывода значения некоторого выражения может быть применена функция MsgBox. Для этого следует обратиться к функции MsgBox, пользуясь, например, упрощенным синтаксисом: MsgBox (Сообщение[, , Заголовок]) Здесь Сообщение – это выражение, которое будет преобразовано в строку символов и выведено в окне MsgBox, а Заголовок – строка символов, отображаемая в заголовке этого окна.


Слайд 46

Пример 1 Dim i As Integer = 5 MsgBox("i= " & i, , "Вывод переменной i") Окно функции MsgBox будет выглядеть так, как показано ниже на рисунке.


Слайд 47

Управление порядком выполнения инструкций Естественный порядок выполнения инструкций Инструкции программного кода процедуры выполняются в порядке их положения в составе кода сверху вниз и слева направо. Такой порядок их выполнения называется естественным. На естественном порядке основывается программирование базовой структуры – следование.


Слайд 48

Например, изображенная на рисунке структура алгоритмов – следование на VB может быть записана двумя последовательно расположенными инструкциями: x = a * b TextBox1.Text(“x =“ & x)


Слайд 49

Инструкции разветвления Условная инструкция If Имеется два варианта синтаксиса этой инструкции – блочный синтаксис и однострочный синтаксис.


Слайд 50

Блочный синтаксис Если в зависимости от условия необходимо выполнить не одну простую инструкцию, а несколько инструкций, следует использовать блочный синтаксис. Кроме того, блочная структура позволяет анализировать несколько условий. If ЛВ1 Then [Инструкции1] [ElseIf ЛВi Then Инструкцииi] [Else [Инструкции2]] End If


Слайд 51

Выполнение этой инструкции If состоит в следующем. Сначала проверяется значение ЛВ1. Если оно истинно, то выполняется группа Инструкции1 и на этом выполнение инструкции If завершается. Если же значение ЛВ1 ложно, то проверяется значение следующего условия ЛВi. Если оно истинно, то выполняется группа Инструкцииi и на этом выполнение инструкции If завершается. Если же значение ЛВi ложно, то проверяется следующее ЛВi. Если же все ЛВi оказываются ложными, то выполняется группа инструкций Инструкции2.


Слайд 52

Пример 1 If A = 7 Then Beep End If В этом примере звуковой сигнал прозвучит только в том случае, если значение переменной А равно 7.


Слайд 53

Пример 2 If Name = "Иванов" Then MsgBox ("Ваша карточка удерживается!") Else MsgBox ("Получите деньги, пожалуйста!") End If В этом примере, если значение переменной Name равно "Иванов", то будет выведено Ваша карточка удерживается!. При любом другом значении переменной Name будет выведено Получите деньги, пожалуйста!.


Слайд 54

Пример 3 If x > 0 Then kp = kp + 1 ElseIf x < 0 Then km = km + 1 Else k0 = k0 + 1 End If


Слайд 55

Пример 4 If Обращение = 1 Then MsgBox ("Здравствуйте, господин") ElseIf Обращение = 2 Then MsgBox (" Здравствуйте, госпожа") ElseIf Обращение = 3 Then MsgBox _ (" Здравствуйте, дамы и господа") Else MsgBox ("Здравствуйте, люди") End If


Слайд 56

Для этого примера результат вывода показан в таблице:


Слайд 57

Однострочный синтаксис Применяется для программирования простых разветвлений (см. рисунок), когда Инструкция1 и Инструкция2 являются простыми инструкциями (не являются следованием, разветвлением или циклом).


Слайд 58

If ЛВ Then Инструкция1 [Else Инструкция2] Здесь If (если), Then (то) и Else (иначе) - зарезервированные слова, ЛВ – логическое выражение, которое может принять одно из двух возможных значений True и False. Существенно, что здесь после слова Then, а также после слова Else может находиться только одна простая инструкция.


Слайд 59

Выполнение такой инструкции состоит в следующем. Если ЛВ, имеет значение True, выполняется Инструкция1, указанная за Then, Инструкция2 не выполняется (пропускается). Если же значение ЛВ равно False, то выполняется Инструкция2, следующая за ключевым словом Else, если такая имеется, а Инструкция1 пропускается. Пример 5 If a = 7 Then MsgBox(“b= ” & b) В этом примере выводится значение переменной b, если значение переменной a равно 7.


Слайд 60

Пример 6 If x < 9 Then MsgBox (“x меньше 9”) _ Else MsgBox (“x больше или равно 9”) В этом примере выводится текст “x меньше 9”, если значение переменной x меньше 9. В противном случае выводится текст “x больше или равно 9”.


Слайд 61

Инструкция Select Case Еще одной инструкцией VB, предназначенной для программирования разветвлений, является Select Case (инструкция выбора), которая позволяет выполнить одну из нескольких групп операторов в зависимости от значения некоторого выражения. Инструкция Select Case имеет следующий синтаксис:


Слайд 62

Select Case Проверочное_Выражение [Case Значение1 [Инструкции1]] [Case Значение2 [Инструкции2]] . . . [Case Else [Инструкции Else]] End Select


Слайд 63

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


Слайд 64

В качестве значения для блока Case можно указывать не только одно значение, но и несколько, разделенных запятой). Можно определять также области сравнения) или воспользоваться относительным сравнением (Is >= 9). Вместо непосредственного значения проверочного выражения можно использовать ключевое слово Is. Блок Case Else выполняется, если ни одно из предыдущих условий не является истинным. Если условию Select Case соответствует несколько блоков Case, то выполняется первый из них.


×

HTML:





Ссылка: