Информатика. 2 семестр. Тема 04. Алгоритмика
1 → i
My(x)
Сложные вычисления либо вызов функции с возможной неявной установкой значения
Y = Sin (X)
Function My (byVal F As Integer) As Byte
‘Возврат значения при передаче параметра по-ссылке
Блок процесса
Отображение:
j:integer
Информатика. 2 семестр. Тема 04. Алгоритмика
1+1 → j
Go(x)
Предопределенный процесс (функция)
Y = GetSmthValue (SmthParams)
Call DoSmth (SmthParams)
‘Вызов функции с возвратом значения и процедуры
Отображение:
Блоки процесса можно объединять!!!
Информатика. 2 семестр. Тема 04. Алгоритмика
x+1 → ret.
y = f(x)
Представление потоков
Вызов функции
основной (main)
вычислитель
алгоритм
функция
основной (main)
поток 1
поток 2
поток 3
Существует две реализации потоков: нить (thread) и процесс (process).
Реализации многопоточности: невытесняющая (фоновая), кооперативная и приоритетная (вытесняющая). В одноядерных системах используется временно́е мультиплексирование (переключение контекста процессора).
Важная проблема многопоточности – конкуренция за ресурсы (доступ к общим ячейкам памяти и объектам)
write
read
write
write
object
Информатика. 2 семестр. Тема 04. Алгоритмика
Во время исполнения кода интерфейс хост-приложения «заморожен».
Исполнение кода может быть приостановлено постановкой на паузу (Ctrl + Break или из меню IDE VBA), прервано ошибкой исполнения или точкой отладки (Breakpoint).
Во время приостановки интерфейс хост-приложения будет доступен, в том числе и для редактирования данных в документах.
Однако при этом:
Исполнение другого потока кода VBA будет невозможно.
Формулы в ячейках, содержащие пользовательские функции, будут возвращать неопределённые значения.
Обработчики событий на пользовательских формах и в документах не будут вызываться. При этом сами элементы управления будут активны, например, для ввода значений.
Информатика. 2 семестр. Тема 04. Алгоритмика
i → stdout
MsgBox(x)
Вывод результатов вычислений
Print #1, smthvalue ‘Вывод значения в 1-й поток
Line Input #1, smthvar ‘Загрузка текстовой строки
Блок ввода-вывода
Отображение:
Print(x)
Ввод-вывод начальных и исходных значений разумнее обозначать специальными блоками для повышения читаемости алгоритма
Debug.Print smthvalue ‘Вывод в отладочное окно
MsgBox ( smthvar ) ‘Использование диалогового окна
Информатика. 2 семестр. Тема 04. Алгоритмика
Вывод результатов вычислений
Отображение:
y → label1
Используются специальные методы вместо «прямого» доступа к памяти объекта потому, что есть дополнительная функциональность!
TextBox1.SetText(“Hello”) ‘Использование мутатора
TextBox1.Text = “Hello” ‘Присвоение (через «сахар»)
Ввод исходных данных
txt1 → x
проверить
внести
показать
event
Блок «решение» с проверкой условия
Отображение:
Простое ветвление
Да
Нет
a > 0
Изменение порядка следования инструкций
IF (condition) THEN statements ELSE statements
‘ Однострочная запись с двумя ветвями
Да
Нет
score > 50
зачет
незачет
Отображение:
Каскад обычно «растет» вправо-вниз
Каскад по отрицательной ветви
Использование уточняющих условий
Пример вывода дифференцированной оценки за тест
Да
Нет
score < 50
неудовл.
Да
Нет
удовл.
хорошо
score < 75
Из стандарта оформления кода:
Использование отступов для выделения внутренних блоках
Отображение:
Проверка состояния
Выбор – это альтернативная реализация множественного ветвления через анализ значения одной переменной «простого» типа
Способы записи условий выбора:
Case 5, 6: smth ‘ Явное указание списка значений
Case 5 To 7: smth ‘ Указание диапазона
Case Is>7: smth ‘ Указание условия на значение
Отображение:
Организация циклов
Принято различать циклы:
С предусловием
С постусловием
Со счетчиком
j +1 → j
a > 0
c1
c1
Альтернативные формы:
While … Wend ‘ Цикл «пока» с предусловием (устар.)
Do … Loop Until ‘ Цикл «пока не» с постусловием
Do Until … Loop ‘ Цикл «пока не» с постусловием
* Примечание:
Это основная форма согласно ГОСТ 19.701-90
Отображение:
Реализация цикла «пока» с предусловием
Да
Нет
a > 50
j +1 → j
Отображение:
Реализация цикла «пока» с постусловием
Да
Нет
a > 50
j +1 → j
Альтернативная форма – «пока не» (Until)
While (NOT(Condition)) Until (Condition)
Отображение:
Реализация цикла со счетчиком
Альтернативная форма – «для» (For)
Повторять пока счётчик не достигнет границы
Да
Нет
i <= 50
j + 5 → j
1 → i
i +1 → i
FOR I = 1 TO 5 STEP 1
Statements
NEXT I
«Лабиринт» тройного цикла
FOR I = 1 TO 5 STEP 1
X = I + 1 ‘ Можно
I = 5 ‘ Нельзя
NEXT I
X = I + 1 ‘ Нельзя
Циклы не могут пересекаться – операторы цикла полностью изолируют тело цикла.
Выйти из «лабиринта» вложенных циклов можно только пройдя все итерации.
При невозможности досрочного выхода нужно создавать «ветви обхода».
Ухудшается «читаемость» → «тарелка спагетти»
+ нет логичного повода сделать отступы
FOR I = 1 TO 5 STEP 1
If I > 3 Then GoTo FastNext1 ‘ Переход в конец
Statements
FastNext1:
NEXT I
…обработчики или циклы
п/п
«Подпрограмма»
Отображение:
Перехват исключений (on Error)
Реализуемы «обработчики» и «сбросы»
Условный блок «на исключение»
On Error
unsafe stat.
On Error Goto ErrorHandler1
Statements
Exit Sub
ErrorHandler1:
MsgBox(“Ошибка №” & Str( Err.Number ))
Resume 0
safe stat.
safe stat.
unsafe stat.
Error protect
On Error Resume Next ‘ Пропустить ошибку
On Error Resume 0 ‘ Повторить ошибочный оператор
Exit For ‘ Прерывание цикла For (досрочный выход)
Exit Do ‘ Прерывание цикла Do
For Each Element In Group
Statements ‘ Обработка Element
NEXT Element
Прерывание исполнения блока
Exit Sub ‘ Досрочный выход из процедуры
End ‘ Завершение программы
Прерывание цикла
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть