Обработка данных

Содержание

Слайд 2

Элементы языка VBA Особенности организации кода Информатика. 2 семестр. Тема 03. Обработка данных

Элементы языка VBA

Особенности организации кода

Информатика. 2 семестр. Тема 03. Обработка данных

Слайд 3

Общие принципы Visual Basic for Application – императивный язык программирования высокого

Общие принципы

Visual Basic for Application – императивный язык программирования высокого уровня.


Линейное: Инструкции разделены и следуют последовательно.
Структурное: Блоки инструкций не содержат пересечений линий исполнения и собираются по принципу вложенности.
Процедурное: Часто повторяющиеся блоки инструкций могут быть выделены в подпрограммы (процедуры и функции) с одним входом и одним выходом.
Модульное: Часть кода приложения может быть вынесена в модули (библиотеки), подключаемые при необходимости использования.

Информатика. 2 семестр. Тема 03. Обработка данных

Слайд 4

Общие принципы Visual Basic for Application – интерпретируемый язык программирования высокого

Общие принципы

Visual Basic for Application – интерпретируемый язык программирования высокого уровня.


Компиляция: Построчный разбор кода при выполнении
Проверка: Синтаксис проверяется при вводе
Логические (структурные) ошибки выявляются только на этапе выполнения
Контроль работы с памятью
Хранение: Память может выделяться «по запросу» для использования с необъявленными именами
Типизация: Возможность изменения типа данных при исполнении
Необратимость: Изменения в данных невозможно обратить (вернуть)

Информатика. 2 семестр. Тема 03. Обработка данных

Слайд 5

Visual Basic for Application – язык с поддержкой объектно-ориентированного и событийного

Visual Basic for Application – язык с поддержкой объектно-ориентированного и событийного

программирования

Объект: Совокупность данных, характеризующих его состояние, и функций их обработки, моделирующих поведение объекта.
Класс: Программный шаблон, на основе которого создается объект (реализация).
Метод: Функция или процедура, являющаяся частью описания объекта, предназначенная для выполнения каких-либо действий над объектом (данными).
Событие: Информационный эквивалент реакции системы на полученное сообщение.
Обработчик: Метод объекта, предназначенный для обработки специфического события.

Информатика. 2 семестр. Тема 03. Обработка данных

Слайд 6

Основной принцип организации кода в Visual Basic for Application – модульно-процедурный

Основной принцип организации кода в Visual Basic for Application – модульно-процедурный

Размещение

кода: Модули в файлах .bas или в составе документа.
Организация кода: Исполняемые инструкции (команды) размещаются в теле процедур (Sub … End Sub) или функций (Function … End Function)
Объявление: В области General и внутри процедур и функций
Видимость: Доступность объекта или процедуры (функции) определяется размещением (например, в том же модуле, в той же процедуре и т.п.)
Модуль ≈ класс объекта (ООП)
Private, public управляют доступом к свойствам (глобальным переменным модуля) и методам (процедурам и функциям)

Информатика. 2 семестр. Тема 03. Обработка данных

Слайд 7

Элементы языка VBA Операции с данными Хранение и преобразование Информатика. 2 семестр. Тема 03. Обработка данных

Элементы языка VBA

Операции с данными
Хранение и
преобразование

Информатика. 2 семестр. Тема 03.

Обработка данных
Слайд 8

Литералы Литеральная константа – это данные (число, строковое выражение, дата и

Литералы Литеральная константа – это данные (число, строковое выражение, дата и т.п.),

размещенные непосредственно в коде программы
Константы Именованная константа – это какие-либо данные, которые не изменяются при выполнении программы, и для обращения к ним используется специальное символьное имя определённое в коде
Допускается использование типизированных констант при объявлении которых явно задаётся тип данных
Переменные Именованные объекты, предназначенные для временного хранения изменяемых данных

Информатика. 2 семестр. Тема 03. Обработка данных

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

Слайд 9

Внутренняя константа – это именованная константа, которая была определена разработчиками VBA.

Внутренняя константа – это именованная константа, которая была определена разработчиками VBA.
Внутренние

константы для работы с host-приложениями. Excel содержит внутренние константы для использования с рабочими книгами электронных таблиц.
Word содержит внутренние константы для работы с документами и шаблонами текстового редактора
Access – константы для операций с базами данных.
Внутренние константы, определяемые VBA, начинаются с букв vb.
Внутренние константы Excel - xl; Word - wd.
Полный список имеющихся в наличии внутренних констант доступен через Object Browser.
Его можно вызвать клавишей F2 в окне редактора VBA.

Информатика. 2 семестр. Тема 03. Обработка данных

Специальные константы

Слайд 10

Информатика. 2 семестр. Тема 03. Обработка данных Использование литералов и констант

Информатика. 2 семестр. Тема 03. Обработка данных

Использование литералов и констант

Sub Vvod_Formuly_Skidki()
'

Макрос записан 1.12.2012
' Быстрый вызов Ctrl + Q
Const A As Integer = 1
ActiveCell.Value = "Hello world"
Cells(ActiveCell.Row, ActiveCell.Column + 1).FormulaR1C1 = "=(RC[-2]*RC[-3]-RC[-1])*usd"
Cells(ActiveCell.Row + A, ActiveCell.Column).Select
End Sub

Наименование макроса (может быть записано кириллицей)

Начало и конец кода макроса

Комментарий к тексту программы

Строковый литерал – последовательность символов в коде программы, интерпретируемых как данные

Объект

Свойство

Метод

Объявление типизированной константы

Использование константы

Числовой литерал

Слайд 11

Информатика. 2 семестр. Тема 03. Обработка данных Объявление переменных Dim i

Информатика. 2 семестр. Тема 03. Обработка данных

Объявление переменных

Dim i
Dim j

As Integer
Sub MySub()
' Макрос записан 1.12.2012
' Быстрый вызов Ctrl + Q
Dim X As Double = 0.5
Y = 1 + X
ActiveCell.Value = "1" + Y
End Sub

Область General модуля

Объявление типизированной глобальной переменной

Оператор присваивания

Объявление типизированной переменной и инициализация значением

Использование переменной

Неявное преобразование типов

Тело процедуры

Неявное объявление через установку (присвоение) значения

Объявление нетипизированной глобальной переменной

Оператор Dim (от dimention) – Объявляет и размещает в памяти одну или несколько переменных.

Слайд 12

Типы данных Информатика. 2 семестр. Тема 03. Обработка данных

Типы данных

Информатика. 2 семестр. Тема 03. Обработка данных

Слайд 13

Информатика. 2 семестр. Тема 03. Обработка данных «Наследие Basic» - явное

Информатика. 2 семестр. Тема 03. Обработка данных

«Наследие Basic» - явное указание

типа

Dim X#
Dim Y As Double

Объявление типизированной переменной

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

Специальный символ (из не разрешенных к использованию в именах переменных) выступает указателем типа переменной при объявлении и использовании.

Символы объявления типов:

Слайд 14

Информатика. 2 семестр. Тема 03. Обработка данных Операции с переменными Dim

Информатика. 2 семестр. Тема 03. Обработка данных

Операции с переменными

Dim i As

Integer
Public x As Double
Private c As Single
Static b As Boolean
Sub MySub()
Dim b As Integer
Static y As Double
End Sub

Область General

Глобальная переменная модуля

Объявление переменной с тем же именем, что и глобальная, экранирует внешнюю переменную

Объявление статической переменной внутри процедуры – значение сохраняется между вызовами, но переменная недоступна вне этой процедуры

Тело процедуры

public – переменная доступна во всех модулях приложения
private – переменная доступна только в данном модуле (аналогично Dim в General)
static – переменная размещается в статической памяти

Применение модификаторов области видимости и способа размещения в памяти

Публичная переменная (видна везде)

Приватная переменная модуля

Статическое свойство модуля класса

Слайд 15

Хранение данных: Как это обычно работает? Информатика. 2 семестр. Тема 03.

Хранение данных:

Как это обычно работает?

Информатика. 2 семестр. Тема 03. Обработка данных

Регистры процессора
Структура памяти приложения
Стек, куча и указатели
Слайд 16

Информатика. 2 семестр. Тема 03. Обработка данных Регистры центрального процессора i8086

Информатика. 2 семестр. Тема 03. Обработка данных

Регистры центрального процессора

i8086

Сегментные регистры
CS (Code

Segment)
DS (Data Segment)
SS (Stack Segment)
ES (Enhanced Segment)

Регистры-указатели
SI (Source Index)
DI (Destination Index)

Регистры-указатели
BP (Base Pointer)
SP (Stack Pointer)

Assembler (сборщик) – язык низкого уровня, основанный на мнемонической записи инструкций центрального процессора

MOV A,100 – поместить число 100 в регистр аккумулятора

PUSH C – поместить (втолкнуть) регистр C в стек

Слайд 17

Информатика. 2 семестр. Тема 03. Обработка данных Структура памяти приложения Размещение

Информатика. 2 семестр. Тема 03. Обработка данных

Структура памяти приложения

Размещение в памяти

зависит от способа объявления переменной и типа данных

Вершина – предельные доступные приложению адреса

ОЗУ

Дно – минимальные доступные приложению адреса

static

code

heap

stack

system

Аппаратный стек – специально организованная область памяти для обработки вызовов и хранения временных данных

«Куча» («хип») – динамически распределяемая память для хранения данных

Статическая память – статически распределяемая память для хранения данных, структура которой определяется при компиляции

Область кода – область размещения программного кода, в том числе объединенных с ним на этапах сборки и компиляции неизменных данных (констант и ресурсов)

Область для организации системных вызовов

Слайд 18

Информатика. 2 семестр. Тема 03. Обработка данных Использование стека при вычислениях

Информатика. 2 семестр. Тема 03. Обработка данных

Использование стека при вычислениях

При использовании

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

Вершина стека – указатель на первую свободную ячейку

резерв стека

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

Адрес вершины стека хранится в специальных регистрах процессора SS (селектор регистра стека) и ESP (указатель стека)

стек

Растёт вниз

Инструкция Push (Втолкнуть) используется для внесения в стек промежуточных данных и ссылок, автоматически уменьшает ESP

Инструкция Pop (Извлечь) используются для получения из стека промежуточных данных и ссылок, автоматически увеличивает ESP

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

3 × (4 + 5)

3 4 5 + ×

+

3

4

5

×

3

9

27

Слайд 19

Информатика. 2 семестр. Тема 03. Обработка данных Поддержка стековых операций процессором

Информатика. 2 семестр. Тема 03. Обработка данных

Поддержка стековых операций процессором

Базовое использование

стека – сохранение состояния процессора (всех регистров) при вызове подпрограммы или обработке прерывания

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

Interrupt (Прерывание) – встроенная последовательность операций процессора, выполняемая в ответ на заданное событие. При обработке прерывания в стек помещается текущий адрес выборки команды, затем по номеру прерывания вычисляется ячейка в таблице прерываний, содержащая адрес процедуры обработчика и выполняется переход по этому адресу

стек

Инструкция Call (Вызвать) помещает в стек адрес выборки команды, затем выполняет сохранение всех регистров, а потом выполняется переход по адресу, указанному в инструкции

Offset (Смещение) – возможность указать в инструкции по обмену данными адрес ячейки памяти с помощью задания смещения от адреса вершины стека. Например, ADD AX, [SP + offset ]
С учетом возможности прямого изменения значения указателя стека это даёт возможность выделять (резервировать) память под хранение данных

параметр B

параметр A

адрес возврата

лок. перемен. D

лок. перемен. C

копия регистров

резерв стека

MOV AX, [SP + 34] – поместить в аккумулятор (регистр AX) значение параметра А

Для i8086 для сохранения копии регистров нужно 26 байт, поэтому (в подпрограмме):

Задача: запишите на ассемблере D = A + B

Слайд 20

Информатика. 2 семестр. Тема 03. Обработка данных Практическое использование стека P.S. Изображение перевернуто

Информатика. 2 семестр. Тема 03. Обработка данных

Практическое использование стека

P.S. Изображение перевернуто

Слайд 21

Информатика. 2 семестр. Тема 03. Обработка данных Где хранятся переменные? Размещение

Информатика. 2 семестр. Тема 03. Обработка данных

Где хранятся переменные?

Размещение в памяти

зависит от способа объявления переменной и типа данных

Выделенная приложению память

ОЗУ

static data

code

heap

stack

system

Стековые переменные и адреса:
Простые типы, указатели, адреса переходов, фиксированные массивы

Динамические переменные:
Строки, сложные типы данных, объекты, динамические массивы, таблицы указателей

Статическая память:
Простые типы (глобальные переменные), таблицы указателей

Константные данные. Таблица указателей на адреса входов. Защищена от записи !!!

Таблица указателей на адреса входов системных функций. Защищена от записи!!!

dynamic data

Слайд 22

Информатика. 2 семестр. Тема 03. Обработка данных Как хранятся переменные? Метод

Информатика. 2 семестр. Тема 03. Обработка данных

Как хранятся переменные?

Метод хранения зависит

от структуры данных:

static

code

heap

stack

system

В стеке хранятся временные данные стандартного размера:
Локальные данные, аргументы функций, указатели

Динамические переменные:
Строки, сложные типы данных, объекты, динамические массивы, таблицы указателей на ячейки с данными

Статическая память:
Глобальные переменные, таблицы указателей

Имена переменных и первичные указатели на объекты
Код программы содержит инструкции с жесткими или относительными ссылками на объекты

Простые данные (integer, boolean, datetime…) могут храниться в одной ячейке;
Составные данные (массивы) фиксированного размера могут храниться компактно;
Данные сложной структуры хранятся с использованием таблицы указателей;
Все динамические данные хранятся с использованием указателей.

A

101h

*

hello

102h

*

world

103h

B:const

*

*

Слайд 23

Объявление Присвоение символического (читаемого) имени структуре данных заданного типа. Объявление простого

Объявление Присвоение символического (читаемого) имени структуре данных заданного типа.
Объявление простого типа в

VBA эквивалентно выделению памяти и инициализации «пустым» (нулевым) значением
Инициализация Физическое выделение памяти с одновременным вводом начального (или заданного) значения
Динамические структуры данных могут инициализироваться без выделение памяти под данные, а копированием указателя (принцип: копирование по запросу)
Изменение Простые типы фиксированного размера перезаписывают значение в ту же ячейку памяти
Динамические и сложные типы заново выделяют память и копируют неизменившиеся фрагменты
Освобождение «Сборщик мусора» для «ненужных» ячеек в куче (не используемых далее в коде или разыменованных явно)

Информатика. 2 семестр. Тема 03. Обработка данных

Общие правила работы с переменными и объектами

Слайд 24

Интерпретация Построчная обработка исходного кода программы с возможностью приостановки исполнения (паузы)

Интерпретация Построчная обработка исходного кода программы с возможностью приостановки исполнения (паузы) и

переключения в режим «отладки»
Код макросов исполняется в одном потоке с функциями хост-приложения и пользовательских элементов управления, при этом отладочные инструменты работают в отдельном потоке
Отладка Средства отладки доступны всё время исполнения кода программы и в режиме паузы, в котором возможны модификация исходного кода, а также значений переменных
«Постановка на паузу» возможна из меню, либо с использованием «точек останова» (breakpoints)
Автоматическое освобождение памяти – все ссылки на объекты автоматически разыменовываются при завершении исполнения блока кода, в котором были объявлены данные переменные-указатели
Созданные объекты уничтожаются автоматически

Информатика. 2 семестр. Тема 03. Обработка данных

Особенности (отличия) VBA