Информатика_2 семестр_Тема 04_Алгоритмика.pptx

Содержание

Слайд 2

Инициализация Dim A Dim B As Integer Dim C As Integer

Инициализация

Dim A
Dim B As Integer
Dim C As Integer = 1
D =

1 ‘Неявное объявление через присвоение значения
Function MyFunc(E As Integer) As Byte
‘Объявление как аргумент функции

Информатика. 2 семестр. Тема 04. Алгоритмика

1 → i

My(x)

Сложные вычисления либо вызов функции с возможной неявной установкой значения

Y = Sin (X)
Function My (byVal F As Integer) As Byte
‘Возврат значения при передаче параметра по-ссылке

Блок процесса

Отображение:

j:integer

Слайд 3

Вычисления и обработка данных Блок процесса A = B + C

Вычисления и обработка данных

Блок процесса

A = B + C / (D

– E)
***
Y = Math.Sin(X) ‘ Вызов «стандартной функции»
***
IF ( A>B ) THEN Max = A ELSE Max = B
‘ Простая алгоритмическая конструкция, которая
‘ может интерпретироваться как очевидная
‘ «алгоритмическая» функция

Информатика. 2 семестр. Тема 04. Алгоритмика

1+1 → j

Go(x)

Предопределенный процесс (функция)

Y = GetSmthValue (SmthParams)
Call DoSmth (SmthParams)
‘Вызов функции с возвратом значения и процедуры

Отображение:

Блоки процесса можно объединять!!!

Слайд 4

Потоки исполнения – нити (threads) и процессы Функциональное представление Поток исполнения

Потоки исполнения – нити (threads) и процессы

Функциональное представление

Поток исполнения – фрагмент

исходного кода, в виде блока инструкций, которые должны выполняться последовательно.
На логическом уровне (при рассмотрении «логики» приложения) поток исполнения может включать ветвления и вызов функций.
На уровне реализации поток получает исполнителя (виртуальный процессор) для независимого исполнения, либо объединяется с другим потоком (встраивается)

Информатика. 2 семестр. Тема 04. Алгоритмика

x+1 → ret.

y = f(x)

Представление потоков

Вызов функции

основной (main)

вычислитель

алгоритм

функция

Слайд 5

Многопоточность, конкуренция за ресурсы При наличии нескольких исполнителей, в системе может

Многопоточность, конкуренция за ресурсы

При наличии нескольких исполнителей, в системе может поддерживаться

и быть реализована многопоточность.

Информатика. 2 семестр. Тема 04. Алгоритмика

основной (main)

поток 1

поток 2

поток 3

Существует две реализации потоков: нить (thread) и процесс (process).

Реализации многопоточности: невытесняющая (фоновая), кооперативная и приоритетная (вытесняющая). В одноядерных системах используется временно́е мультиплексирование (переключение контекста процессора).

Важная проблема многопоточности – конкуренция за ресурсы (доступ к общим ячейкам памяти и объектам)

write

read

write

write

object

Слайд 6

Особенности исполнения кода VBA Поскольку концептуально исполнение кода на VBA эквивалентно

Особенности исполнения кода VBA

Поскольку концептуально исполнение кода на VBA эквивалентно действиям

пользователя в интерфейсе хост-приложения, то на уровне реализации код (инструкции) VBA всегда выполняется в одном потоке исполнения.

Информатика. 2 семестр. Тема 04. Алгоритмика

Во время исполнения кода интерфейс хост-приложения «заморожен».

Исполнение кода может быть приостановлено постановкой на паузу (Ctrl + Break или из меню IDE VBA), прервано ошибкой исполнения или точкой отладки (Breakpoint).

Во время приостановки интерфейс хост-приложения будет доступен, в том числе и для редактирования данных в документах.
Однако при этом:
Исполнение другого потока кода VBA будет невозможно.
Формулы в ячейках, содержащие пользовательские функции, будут возвращать неопределённые значения.
Обработчики событий на пользовательских формах и в документах не будут вызываться. При этом сами элементы управления будут активны, например, для ввода значений.

Слайд 7

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

Операции ввода-вывода

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

вычислениях, и внешними сущностями и (или) их инкапсуляциями в виде объектов.

Информатика. 2 семестр. Тема 04. Алгоритмика

i → stdout

MsgBox(x)

Вывод результатов вычислений

Print #1, smthvalue ‘Вывод значения в 1-й поток
Line Input #1, smthvar ‘Загрузка текстовой строки

Блок ввода-вывода

Отображение:

Print(x)

Ввод-вывод начальных и исходных значений разумнее обозначать специальными блоками для повышения читаемости алгоритма

Debug.Print smthvalue ‘Вывод в отладочное окно
MsgBox ( smthvar ) ‘Использование диалогового окна

Слайд 8

Объектное представление визуальных компонент и «синтаксический сахар» Программная реализация визуальных компонент

Объектное представление визуальных компонент и «синтаксический сахар»

Программная реализация визуальных компонент (элементов

управления) и элементов документов инкапсулирована (скрыта) в соответствующих им объектах и управление ими выполняется через соответствующие методы и свойства.
Согласно принципам ООП доступ к свойствам реализован через акцессоры (accessor) и мутаторы (mutator).

Информатика. 2 семестр. Тема 04. Алгоритмика

Вывод результатов вычислений

Отображение:

y → label1

Используются специальные методы вместо «прямого» доступа к памяти объекта потому, что есть дополнительная функциональность!

TextBox1.SetText(“Hello”) ‘Использование мутатора
TextBox1.Text = “Hello” ‘Присвоение (через «сахар»)

Ввод исходных данных

txt1 → x

проверить

внести

показать

event

Слайд 9

Управляющие конструкции: IF (condition) THEN statements ‘ Однострочная запись с положительной

Управляющие конструкции:

IF (condition) THEN statements
‘ Однострочная запись с положительной ветвью

Информатика.

2 семестр. Тема 04. Алгоритмика

Пример вывода оценки за тест

‘Многострочная запись
IF (condition) THEN ‘ если …. то
Statements
ELSE ‘ иначе …
Statements
END IF

Блок «решение» с проверкой условия

Отображение:

Простое ветвление

Да

Нет

a > 0

Изменение порядка следования инструкций

IF (condition) THEN statements ELSE statements
‘ Однострочная запись с двумя ветвями

Да

Нет

score > 50

зачет

незачет

Слайд 10

Управляющие конструкции: Информатика. 2 семестр. Тема 04. Алгоритмика If (Condition) Then

Управляющие конструкции:

Информатика. 2 семестр. Тема 04. Алгоритмика

If (Condition) Then ‘ Первое

условие отбора
Statements
ElseIf (Condition) Then ‘ Дополнительное условие
Statements
Else ‘ Остальные случаи
Statements
End If

Отображение:
Каскад обычно «растет» вправо-вниз

Каскад по отрицательной ветви

Использование уточняющих условий

Пример вывода дифференцированной оценки за тест

Да

Нет

score < 50

неудовл.

Да

Нет

удовл.

хорошо

score < 75

Из стандарта оформления кода:
Использование отступов для выделения внутренних блоках

Слайд 11

Управляющие конструкции: Информатика. 2 семестр. Тема 04. Алгоритмика Блок «решение» с

Управляющие конструкции:

Информатика. 2 семестр. Тема 04. Алгоритмика

Блок «решение» с проверкой состояния

SELECT

CASE property ‘Многострочная запись
CASE Expressions: Statements

CASE ELSE: Statements
END SELECT

Отображение:

Проверка состояния

Выбор – это альтернативная реализация множественного ветвления через анализ значения одной переменной «простого» типа

Способы записи условий выбора:
Case 5, 6: smth ‘ Явное указание списка значений
Case 5 To 7: smth ‘ Указание диапазона
Case Is>7: smth ‘ Указание условия на значение

Слайд 12

Управляющие конструкции: Информатика. 2 семестр. Тема 04. Алгоритмика Блок «циклическое повторение»*

Управляющие конструкции:

Информатика. 2 семестр. Тема 04. Алгоритмика

Блок «циклическое повторение»*

Do While …

Loop ‘ Цикл «пока» с предусловием
Do … Loop While ‘ Цикл «пока» с постусловием
For … Next ‘ Цикл со счетчиком

Отображение:

Организация циклов

Принято различать циклы:
С предусловием
С постусловием
Со счетчиком

j +1 → j

a > 0

c1

c1

Альтернативные формы:

While … Wend ‘ Цикл «пока» с предусловием (устар.)
Do … Loop Until ‘ Цикл «пока не» с постусловием
Do Until … Loop ‘ Цикл «пока не» с постусловием

* Примечание:
Это основная форма согласно ГОСТ 19.701-90

Слайд 13

Управляющие конструкции: Информатика. 2 семестр. Тема 04. Алгоритмика Повторять пока условие

Управляющие конструкции:

Информатика. 2 семестр. Тема 04. Алгоритмика

Повторять пока условие истинно

Do While

(Condition) ‘ Сначала проверяем условие
Statements
Loop
‘ либо
While (Condition) ‘ Сначала проверяем условие
Statements
Wend

Отображение:

Реализация цикла «пока» с предусловием

Да

Нет

a > 50

j +1 → j

Слайд 14

Управляющие конструкции: Информатика. 2 семестр. Тема 04. Алгоритмика Повторять пока условие

Управляющие конструкции:

Информатика. 2 семестр. Тема 04. Алгоритмика

Повторять пока условие истинно

Do ‘

Сначала выполняем
Statements
Loop While (Condition) ‘ Потом проверяем

Отображение:

Реализация цикла «пока» с постусловием

Да

Нет

a > 50

j +1 → j

Альтернативная форма – «пока не» (Until)

While (NOT(Condition)) Until (Condition)

Слайд 15

Управляющие конструкции: Информатика. 2 семестр. Тема 04. Алгоритмика I = 1

Управляющие конструкции:

Информатика. 2 семестр. Тема 04. Алгоритмика

I = 1 ‘ Инициализация

счётчика
While ( I <= 50) ‘ Проверка достижения границы
Statements ‘ Что-то делаем
I = I + 1 ‘ Наращиваем счётчик
Wend ‘ Закрывающая скобка

Отображение:

Реализация цикла со счетчиком

Альтернативная форма – «для» (For)

Повторять пока счётчик не достигнет границы

Да

Нет

i <= 50

j + 5 → j

1 → i

i +1 → i

FOR I = 1 TO 5 STEP 1
Statements
NEXT I

Слайд 16

Однако… Информатика. 2 семестр. Тема 04. Алгоритмика Структурный код «громоздок» Цикл

Однако…

Информатика. 2 семестр. Тема 04. Алгоритмика

Структурный код «громоздок»

Цикл со счетчиком предполагает

доступ к переменной счетчика «только по чтению» и только в коде тела цикла

«Лабиринт» тройного цикла

FOR I = 1 TO 5 STEP 1
X = I + 1 ‘ Можно
I = 5 ‘ Нельзя
NEXT I
X = I + 1 ‘ Нельзя

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

Слайд 17

Другие : Информатика. 2 семестр. Тема 04. Алгоритмика Отображение: Безусловный переход

Другие :

Информатика. 2 семестр. Тема 04. Алгоритмика

Отображение:

Безусловный переход (Goto)

Можно реализовать

«пропускание» тела цикла, подпрограммы…

Обход тела цикла

loop1:
Statements
If (Condition) Then Goto loop1

Ухудшается «читаемость» → «тарелка спагетти»
+ нет логичного повода сделать отступы

FOR I = 1 TO 5 STEP 1
If I > 3 Then GoTo FastNext1 ‘ Переход в конец
Statements
FastNext1:
NEXT I

…обработчики или циклы

п/п

«Подпрограмма»

Слайд 18

Дополнительные конструкции: Информатика. 2 семестр. Тема 04. Алгоритмика I = 1

Дополнительные конструкции:

Информатика. 2 семестр. Тема 04. Алгоритмика

I = 1 ‘ «Незащищенная»

инструкция
On Error Goto endcalc1 ‘ Переход при ошибке
Statements ‘ Что-то делаем «под защитой»
endcacl1: ‘ Метка для перехода
On Error Goto 0 ‘ Отключение «перехватчика»
Statements

Отображение:

Перехват исключений (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 ‘ Повторить ошибочный оператор

Слайд 19

Дополнительные конструкции: Информатика. 2 семестр. Тема 04. Алгоритмика Отображение: Перебор коллекции

Дополнительные конструкции:

Информатика. 2 семестр. Тема 04. Алгоритмика

Отображение:

Перебор коллекции

Модификация

For i = 1

To 5
Statements
If i > 3 Then Exit For
Next I
MsgBox(“Цикл завершен”)

Exit For ‘ Прерывание цикла For (досрочный выход)

Exit Do ‘ Прерывание цикла Do

For Each Element In Group
Statements ‘ Обработка Element
NEXT Element

Прерывание исполнения блока

Exit Sub ‘ Досрочный выход из процедуры

End ‘ Завершение программы

Прерывание цикла