Главная страница

Лекции по АТП. В состав бпо входят


Скачать 419 Kb.
НазваниеВ состав бпо входят
Дата28.02.2018
Размер419 Kb.
Формат файлаdoc
Имя файлаЛекции по АТП.doc
ТипДокументы
#37413
страница3 из 6
1   2   3   4   5   6
5 глава Повторяющиеся операции


5.1 Повторяющиеся операции

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

Определённые циклы.

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

For I % To 10

Print I %

Next I %

For- начало цикла.

Next- конец цикла I

I-счетчик, который изменяется от 1 до 10

For и Next являются зарезервированными словами и их необходимо использовать совместно. Операторы между For и Next называют телом цикла, а всю управленческую структуру - цикл For-Next

Слово For- устанавливает переменную счётчик. Сначала VB присваивает переменной начальное значение, затем проверяет, превышает ли счетчик конечного значения, если нет, то VB обрабатывает все операторы между строками For и Next, затем к значению счетчика добавляется 1 и цикл повторяется.

(Смотри рис 7)


  1. Установка начального значения счётчика

  2. Счётчик больше конкретного значения

  3. Тело цикла

  4. Увеличение значения счётчика

  5. Если счётчик равняется 10, то переход к операции после тела цикла

Не всегда в программе требуется увеличить счетчик на 1 . Для таких целей в цикле For Next используется зарезервированное слово Step
For I%=10 To 1 Step -1

Print I%

Next I%
5.2 Вложенные циклы For Next

Циклы, размещенные один в другом, называются ВЛОЖЕННЫМИ. Рассмотрим пример формирования таблицы умножения (на 2).

For I%=1 To 10

Print 2*I%

Next I%

Чтобы сформировать полную таблицу необходимо вложить данный цикл внутрь другого.

For Y%=1 To 10

For I%=1 To 10

Print Y%*I%

Next I%

Print

Next Y%

Существует простое правило для вложенных циклов: внутренний цикл должен всегда завершать работу до выполнения оператора Next внешнего цикла. Вложенный цикл может быть 2-й, 3-й, 4-й…

Цикл Do While - данный цикл отличается от рассмотренных раннее зарезервированным словом While вместо Until.

Любой цикл Do Until легко превратить в цикл Do Whileизменив логическое выражение на противоположное.

Do Do

……… . …………….

Loop Until x $<> “ “ Loop While x $= “ “
Кроме того, в выражении можно использовать условия: And, Or, Not. Например, предположим, что необходимо продолжить работу цикла до тех пор, пока число N>0 и поле ввода пустое

Do While N>0 And Text1.Text= “ “
В VB используется еще один тип цикла Wend, для совместимости с интерпретатором Бейсик, VB допускает вариант Do While.

Do While x=0 While x=0

…………….. …………..

Loop Wend

5.3 Выражение If-Then и If-Then-Else

If <условие>Then<сделать что либо>

VB реагирует на выражение If-Then, как на обычную английскую фразу например чтобы предупредить пользователя о том что вводимое число должно быть положительным, можно использовать следующее:

If x<0 Then Msg Box “Number must be positive”

Когда VB встречает выражение If Then он сначала проверяет первую его часть (If) на значении True, если оно True, то ЭВМ выполняет группу операторов следующие за True, если данный текст не проходит, то происходит переход к следующему оператору.

If A$Когда VB обрабатывает выражение If-Then-Else, то в случае успешного теста он выполняет операторы, следующие за условием Then, а если условие не выполняется, то работает ветвь Else.

(Смотри рис 8)

1-й блок - выполняется ли условие,

во второй блок

2-й блок - оператор условия Else

3-й блок - оператор условия Then

Кроме того, If Then можно использовать можно использовать зарезервированные слова And, Or, Not это позволит проверять одновременно 2 условия одновременно. Например, необходимо проверить принадлежит ли данное число диапазону чисел от 0 до 9.

If Digit>=0 And Digit<=9 Then Print “Ok”

Кроме того, можно использовать оператор эквивалентности (Egv) - данный оператор проверяет, имеют ли оба выражения одинаковое логическое значение, оба True или оба False.

If (X=True And Y=True) or (X=False And Y=False) или If x Egv y…
Другой полезный оператор (Xor), «исключающее или» он соответствует фразе либо «а» либо «б», но не одновременно «а» и «б».
5.4 Блок If – Then, Взаимодействие If Then с информационными панелями

Более часто в выражении If-Then приходится обрабатывать несколько операторов, чем один. Для этого необходимо использовать другую форму оператора If-Then так называемый блок If Then, для этого необходимо слегка изменить форму оператора If Then. Блок будет выглядеть следующим образом.
If<Выражение>Then

Группа операторов

Else

Группа операторов

End If
Поля зарезервированного слова Then необходимо нажать Enter такая строка с «пустым» Then означает для VB начального блока операторов, Else-является необязательным, блок заканчивается на End If.
Используется для определения того, какая кнопка была нажата в информационной панели, например:

X$=MsgBox(“Yes/No?”,Vb Yes/No)

If X$=Vb Yes Then Print “Yes button clicket”

В данном случае MsgBox использует параметры, в следующей таблице перечислены константы, необходимые для работы с возвращаемыми значениями информационной панели.

(Смотри рис 9)
Дополнительная информация об операторе If Then

Рассмотрим: Даны три переменных А и B,если А=В,то вывести АиВ, если переменная A
1) If A=B Then 2) If AB Then

Print A Print A Print B

Print B A=A+2 B=B+2

End If End If End If
Предположим что значение А=4 а В=5. После 2-го блока If Then значение А=6, но таком случае будут выполнены 3 блока, что противоречит заданию, для того чтобы обработать задание правильно

необходимо использовать зарезервированное слово Else-If-Then.

If A=B Then

Print A

Print B

Else If A

Print A

A=A+2

Else If A>B Then

Print B

B=B+2

End If

После того как сработает, какой либо блок VB переходит непосредственно в конец - к выполнению End If, а не продолжает анализировать другие случаи.

5.5 Оператор Select Case

Предположим, что необходимо написать программу вычисления степени компьютерной грамотности по тестам, если количество правильных ответов равняется 90 и выше, то пользователь оценку 5, если от 80-89, то 4 и т.д. В такой ситуации VB использует специально созданную управленческую структуру, она носит название Select Case например в место выражения:

If X>=90 Then Print "5"

If X>=80 And X>=98 Then Print "4"

можно написать такое:

Select Case X

Case X>90 Print "5"

Case X>80 Print "4"

.............................

End Select

Зарезервированным словом Select Case служит переменная либо выражение и то, что будет делать VB, зависит от их значения. Необходимо выделить из списка те символы, у которых ASCII значение таблица Code находится в интервале от 91 до 95.

Case Rhr $(91) To Chr $(95)

.

.

End Select

Здесь зарезервированное слово To позволяет обозначить диапазон значений. Управляющая структура Select Case позволяет скомбинировать несколько проверок в одной строке кода.

Case “A”, “B”, “C”, “O”, “P”.



Print

Вместо того чтобы расписывать данное выражение, как 5-ть различных Case.


5.6 Оператор Go to

Как и большинство языков программирования VB поддерживает оператор безусловного перехода Go to. Обычно в программах используется Go to, когда необходимо выйти из нескольких вложенных одно в другое выражений или циклов при чём одновременно из всех. Для того чтобы использовать Go to, необходимо присвоить метку кокой либо строки. Метка должна начинаться с буквы и заканчиваться двоеточием, кроме того, она начинается с первой колонки.

Предположим необходимо выйти из вложенного цикла For, если пользователь вводит строку zzz.

For I=1 To 100

For Y=1 To 100

Get Date=Input Box (“Data Input”, ”Enterdate”, zzz to End, “ “)

If Get Date= zzz “…”

Go to Bad

Else

{обработка данных}

End If

Next Y

Next I

Exit Sub

Bad

MsgBox («Ввод данных закончен по просьбе пользователя»)

Отметим что применение Exit Sub позволяет избежать ненужного выполнения части программы после метки Go to.
5.7 файлы последовательного доступа.

Хотя циклы For-Next являются удобным способом извлечения информации, содержащейся в файле, очевидно, существуют ситуации, когда это непрактично. В файле может быть слишком много информации или неизвестно, какие пределы использовать. Нужен способ реализации следующего алгоритма:

Пока в файле остается информация

Получить следующий блок информации

Обработать его

Конец цикла

Чтобы выполнить это, необходим способ проверки на достижение конца файла. В VB оператор, который позволяет сделать это, называется EOF () (сокращение от End of file- конец файла), в круглых скобках которого указывается идентификатор файла. Вот как выглядит общая программа чтения информации из файла, созданного при помощи команды Print#.

FileNum=FreeFile

Open File Name $ For Input As # FileNum

Do Until EOF(FileNum)

Line Input # FileNum ,A$

‘строка обработки - это, вероятно, может быть вызов процедуры или функции.

Loop

Close # FileNum

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

Многие программисты используют для таких циклов форму Do While. Они предпочитают

Do While Not EOF(1)/Loop

или

While Not EOF(1)/Wend
5.8 Чтение символов.
Одним из наиболее общих вариантов применения оператора EOF является посимвольное чтение информации из файла. В VB читается один символ из файла при помощи оператора:

String Variable Name = Input$ (Number OF Chars, File Id) где первый параметр задает количество символов, а второй – идентификатор файла. Следовательно:

SixChar$ = Input$ (6,#2)

Считывает 6 символов из файла, открытого с идентификатором 2, и присваивает их строковой переменной SixChar$.

Хотя оператор Input$ () позволяет посимвольно проверить структуру многих текстовых файлов, им не стоит злоупотреблять. Например, он выполняется значительно медленнее, чем функция Line Input# и Input#. Более того, возможно файлы, созданные текстовыми процессорами или программами, не будут читаться с помощью этого метода. Это происходит из-за того, что VB прекращает чтение при достижении комбинации Ctrl + Z (CHR $ (26)), которая традиционно является символом конца файла. Некоторые файлы созданные программами используют эту комбинацию для своих внутренних нужд, а не для свидетельства конца файла.

Совет: Если помеситьCHR$(26) в начало своего файла то это будет простым и достаточно эффективным способом защиты от всяких пользователей, сующих нос не в свои дела.

5.9 Запись специальных символов в файлы последовательного доступа
Так как запись информации в файл равносильно выводу ее на экран, то опять нужно решать следующие проблемы:

  • Как вывести на экран специальные символы (как, например, двойные кавычки)?

  • Как лучше всего отформатировать файл?

VB для записи элементов в файл используют оператор Write#, отделенный запятой от строки, заключенной в двойные кавычки. Например:

Write# 3, ”Testing 1,2,3,”

Запишет или добавит все (включая кавычки и запятые) в файл с идентификатором 3.

Когда в файл посылается отдельный блок информации, команда Print# и Write# взаимозаменяемы. Например, обе строки

Print # FileNum, ”Hello”

и

Write # FileNum, ”Hello”

поместят одинаковый блок информации в файл. Но при записи в файл трех чисел с помощью:

Print # FileNum, 1,2,3

в файл запишется большое количество ненужных пробелов. Команда

Write # FileNum, 1,2,3

запишет числа, экономя место и облегчая последующее прочтение файла. Это эквивалентно такому выражению

Print # FileNum, 1; ”,”; 2; ”,”; 3

Проще говоря, следует использовать Write # вместе с Input#, а Print# с LineInput#.

Изменения внутри файла последовательного доступа.

Команда Open FileName For Append As # FileNum позволяет добавить информацию в конец файла прямого доступа. Предположим, что теперь надо добавить информацию в начало файла. Надо выполнить следующие действия:

  1. Открыть временный файл для записи

  2. С помощью Print # или Write # занести в него новую информацию

  3. Закрыть временный файл

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

  • Первый подход заключается в повторном открытии временного файла для добавления. Исходный файл затем открывается для чтения, и информация читается из исходного файла и записывается во временный файл. И, наконец, временный файл снова закрывается.

  • Второй подход быстрее, если размер исходного файла значительно больше. Он заключается в использовании команды Shell для выполнения команды операционной системы Copy. Команда операционной системы:

Copy File1 + File2

добавляет файл File2 в файл File1. Таким образом, команда Shell принимает следующий вид:

Shell ”Copy TempFileName+OriginalFileName”

или

Shell «Copy ” + TempFileName$+”+” +OriginalFileName$

5.Удалить исходный файл при помощи команды Kill

6. Переименовать временный файл в имя исходного файла при помощи команды Name.

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

Например, требуется заменить в файле все слова “Quick Basic” на “Visual Basic” (то есть, в общем, написать свою процедуру поиска и замены). Надо следовать ниже перечисленным действиям:

  1. Прочитать информацию из файла во временной файл, останавливаясь при достижении строки “Quick Basic”

  2. Записать во временный файл “Visual Basic”

  3. Пропустить строку “Quick Basic” и повторить шаги 1и 2, пока не будет достигнут конец файла.

  4. Затем удалить исходный файл и переименовать временный файл в имя исходного файла.

Метод LoadFile.

Метод LoadFile за один раз загружается в элемент управления RichTextBox текстовый файл или файлы в формате .rtf. Вот его синтаксис:

Name Of RichTextBoxLoadFile (pathname, filetype).

Глава 6 Пользовательские функции и процедуры

6.1 ФУНКЦИИ.

При создании сложных приложений используются два типа пользовательских процедур. Первым из них являются функции (Function proudure), позволяющие создать новые функции, дополняющие встроенные в VB. И вторые- процедуры, представляют собой «небольшие вспомогательные программы» вызываемые по необходимости. Процедуры и функции позволяют разделить большую задачу на ряд более мелких или автоматизированные повторяющиеся операции.

Для того чтобы подключить к текущей форме функцию, необходимо открыть окно Code, дважды щелкнуть по форме или нажать F7, затем выбрать пункт меню Tools подменю Add Procedure и выбрать опциюType Function.

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

Общий формат функции выглядит следующим образом.

Function Имя Функции (параметр 1, параметр 2)

Операторы

Имя Функции= выражение

END Function, где

Параметр 1, 2- являются переменными. Дальше переменные передаются в качестве параметров функции.

Если в выражении VB встречается строка Имя Функции ( аргумент1, аргумент2), то значение Аргумента1 присваивается параметру1, а значение Аргумента2, параметру2 и т. д. После этого VB выполняет операторы тела функции, последнее значение присваивается выражению с Имя Функции. Аргументами функции могут быть константы, переменные или выражения. Выражение VB использует функцию и передает ей аргументы в качестве параметров. После этого, функция возвращает свое значение. Тип значения, возвращаемого функцией, указывается при помощи идентификатора добавляемого к названию функции, либо с использованием слова As в конце строки с названием функции, либо в выражении Def Type перед определением данной функции. Функцию можно вызвать, если количество аргументов соответствует количеству ее аргументов. Каждый аргумент передаваемый функции, может иметь имя отличное от имени параметра, но должен быть одного с ним типа.

Об использовании собственных функций в проекте имеет смысл думать, если необходимо вычислить какие-то сложные выражения. Например: нужно сгенерировать случайное число в диапозоне от 1 до 10. Можно использовать выражение каждый раз (Int(10* RND)+1), когда оно необходимо, что достаточно утомительно. Теперь предположим, что иногда необходимо сгенерировать число от1 до40, в другом случае от 1 до100 и т. д. Все эти выражения будут похожи, что имеет смысл написать одно общее выражение для автоматизации процесса.

Шаблон текста функции будет выглядеть следующим образом:

Function Random Range (x) As Integer

Random Rande = Int (x* RND)+1

END Function
Теперь пользователь может использовать данную функцию аналогично любой встроенной функции VB.

Если необходимо ввести случайное число от1 до10, можно написать Print Random Range(10).

Гибкость функции определяется использованием формального параметра ( у нас параметр х ).В данном случае этот параметр имеет тип variant, так как при его определении не использовался идентификатор tung. Если же написать выражение типа:

Function Random Range (x As Integer) As Integer, то теперь значение параметра может быть только целочисленным, в дополнение к тому, что и функция сама возвращает значение типа !!!.

В данном примере функция Random Range использует только одну часть информации, то есть эта функция с одной переменной часто бывает необходимо передать функции несколько частей информации.

Например: сгенерировать случайные числа от ч до 4, тогда наша функция будет выглядеть следующим образом:

Function Random Range (x As Integer, Y As Integer) As Integer

Random Range= Int ((Y-x+1)*RND)+x

END Function.

Подставим в функцию конкретные значения параметров.

Допустим, х=5, у=37, умножая RND на выражения в скобках мы получим диапазон случайных чисел от 0 до 32, далее добавляя х, сдвигаем диапазон (от5 до37) .

Как и в процедурах обработки событий, внутри функций можно объявить локальные переменные, указывать являются ли они статистическими, в зависимости от вида приложения. Объявить всем переменным в функции статистический тип можно используя зарезервированное слово Static перед именем функции.

Static Имя Функции (список параметров).
ОСНОВНЫЕ ФУНКЦИИ:
Таблица 1


ФУНКЦИЯ

НАЗНАЧЕНИЕ


  1. Abs

  2. Atn

  3. Cos

  4. Exp

  5. FV

  6. Hex

  7. Inf

  8. Ipmt

  9. IRR

  10. Log

  11. MIRR

  12. Nper




  1. NRV

  2. Pmt

  3. Ppmt




  1. RV

  2. Rate

  3. RND

  4. Sgn

  5. Sin

  6. SLN

  7. Sgr

  8. SYD

  9. Tan

  10. Timer

Вычисляет абсолютное значение числа.

Вычисляет арктангенс.

Вычисляет косинус.

Возводит значение в указанную степень.

Будущее значение.

Переводит число в 16-й формат.

Вычисляет наиболее целое для данного числа.

Процентная ставка за период времени.

Внутренняя ставка возвратных выплат.

Логарифм.

Изменяемая внутренняя ставка возвратных выплат.

Время для накопления или выплаты при фиксированной сумме выплат.

Значение чистого текущего дохода.

Вычисляет размер фиксированных выплат.

Вычисляет размер капитала, исходя из которого определяется размер ежегодных выплат.

Текущее значение.

Процентная ставка за период для фиксированных выплат.

Вызывает генератор случайных чисел.

Возвращает знак числа.

Вычисляет синус.

Сложные фиксированные вычисления.

Вычисляет квадратный корень.

Сумма годовых амортизационных выплат.

Тангенс.

Возвращает значение в секунду от полуночи до текущего момента.


Наиболее общие строковые функции

Таблица 2

Функция


Назначение.


  1. Asc

  2. In Str




  1. L Case

  2. Left




  1. Len

  2. L Trim

  3. Mid

  4. Right




  1. R Trin

  2. Str

  3. Str Comp

  4. Str Conv

  5. String

  6. Trim

  7. U Case



Возвращает код первого символа строки.

Возвращает номер начальной позиции 1-ой строки внутри 2-ой строки.

Превращает регистр всех символов строки в начальный.

Находим или удаляем указанное количество символов слева от начала строки.

Определяет длину строки.

Удаляет пробелы от начала строки.

Находит или удаляет символы строки.

Находит или удаляет указанное количество символов, начиная с конца строки.

Удаляет пробелы, начиная с конца строки.

Возвращает строковый эквивалент числа.

Сравнение значений строк.

Превращает строку из одной формы в другую.

Возвращает строку с указанным числом одинаковых символов.

Удаляет пробелы в начале и конце строки.

Превращает регистр всех символов строки в верхний.



Функции даты и времени.

Таблица 3

Функции



  1. Date

  2. Date Add

  3. Date Diff

  4. Date Serial




  1. Date Value

  2. Day

  3. Hour

  4. Minute

  5. Month

  6. Now

  7. Second

  8. Time

  9. Time Serial




  1. Weekday

  2. Year




Возвращает текущую дату.

Позволяет добавить интервал к дате.

Отнимает указанный интервал от даты.

Возвращает значение даты на основании указанных значений дня, месяца и года.

Превращает значение типа striry в date.

Возвращает значение дня в текущее значение поля date.

Возвращает значение часов в текущее значение поля date.

Возвращает значение минут в текущее значение поля date.

Возвращает значение месяца в текущее значение поля date.

Возвращает текущие значения времени и даты.

Возвращает значение секунд в текущее значение поля date.

Возвращает текущее время.

Возвращает переменную типа date для текущих значений часов, минут и секунд.

Возвращает день недели для текущего значения поля date.

Возвращает значение года в текущем значении поля date.



Назначение.

6.2 Процедуры SUB.

Сообщить VB о том, что определяется новая процедура Sub, можно способом аналогичным для функции: Использовать меню Tools или подменю Add Procedure и выбрать опцию Sub.

В целом процедура Sub, представляет собой участок программы, выполняющий одну или несколько взаимосвязанных задач, имеющий собственное имя, по которому к ней осуществляется доступ; за ним следует определенное число параметров, разделяемых запятыми. Список параметров может и не присутствовать, но !!! присутствуют обязательно. После списка параметров следуют выражения, составляющие собственно тело процедуры.

Завершение тело процедуры осуществляется зарезервированным выражением END SUB. Как и для функции, можно использовать данное выражение для преждевременного выхода из процедуры Sub.

СИНТАКСИС ПРОЦЕДУРЫ:

SUB Имя Процедуры (параметр1, параметр2,…)

Оператор (ы)

END SUB
Вызов процедуры SUB осуществляется следующим образом:

Сначала указывается Имя Процедуры, а затем через запятую список параметров.

Имя Процедуры аргумент1, аргумент2, …

Так же можно использовать следующую версию вызова:

Call Имя Процедуры (аргумент1, аргумент2,…)
После вызова процедуры значения аргументов передаются соответствующим параметрам, а затем выполняются операторы в теле процедуры. По достижению оператора END SUB программа продолжает работу, начиная со следующей после вызова процедуры строки кода. Как и в случае с функцией, необходимо использовать одинаковое количество аргументов в качестве параметров, причем подходящего типа.

1   2   3   4   5   6


написать администратору сайта