Разделы презентаций


Сложные типы данных

Содержание

Простые (Simple) типы данныхByte ‘Короткое целое без знакаBoolean ‘ЛогическийInteger ‘Целое со знакомLong ‘Длинное целое со знакомSingle ‘С плавающей точкой одинарной точностиDouble ‘С плавающей точкой двойной точностиDate ‘Дата и времяDecimal ‘Действительное значение, хранимое как целоеCurrency ‘Число строго с четырьмя знаками после

Слайды и текст этой презентации

Слайд 1Университет машиностроения
Кафедра «Автоматика и процессы управления»
Дисциплина
Информационные технологии
Тема 05
Сложные типы

данных
2 семестр
Информатика. 2 семестр. Тема 05. Сложные типы

(Язык VBA for

Ms Excel)
Университет машиностроенияКафедра «Автоматика и процессы управления»ДисциплинаИнформационные технологииТема 05 Сложные типы данных2 семестрИнформатика. 2 семестр. Тема 05. Сложные

Слайд 2Простые (Simple) типы данных



Byte ‘Короткое целое без знака
Boolean ‘Логический
Integer ‘Целое со знаком
Long ‘Длинное целое

со знаком
Single ‘С плавающей точкой одинарной точности
Double ‘С плавающей точкой двойной точности
Date ‘Дата

и время
Decimal ‘Действительное значение, хранимое как целое
Currency ‘Число строго с четырьмя знаками после запятой

Информатика. 2 семестр. Тема 05. Сложные типы

«Почти-простые» типы данных

Variant ‘Нетипизированный указатель
Object ‘Указатель на объект
String ‘Строка символов

Простые (Simple) типы данныхByte	‘Короткое целое без знакаBoolean	‘ЛогическийInteger	‘Целое со знакомLong	‘Длинное целое со знакомSingle	‘С плавающей точкой одинарной точностиDouble	‘С плавающей

Слайд 3Пользовательские типы данных



Type newtype ‘Определили имя нового типа данных
element As

SimpleType ‘Описали элемент структуры
* * *
End Type
Информатика. 2 семестр. Тема 05.

Сложные типы

Директива Type задает (декларирует) описание пользовательского типа. В VBA под пользовательским типом понимается структура ( struct в c# ) или запись (record в Delphi).

Пользовательские типы могут «вкладываться» друг в друга

Type extranewtype
element As newtype ‘ «Вложили» описанный ранее тип
* * *
End Type


newtype


element

* * *


newtype


element

* * *


element

* * *

Пользовательские типы данныхType  newtype			‘Определили имя нового типа данных	element As SimpleType	‘Описали элемент структуры	* * *End TypeИнформатика. 2

Слайд 4Использование



Type student
fio As String
course As Integer
score As Double
End Type
*

* *
Dim Ivanov As student
Dim students() As student
* * *
Ivanov.fio

= “Иванов“
students(1).score = 5
* * *
students(5) = Ivanov

Информатика. 2 семестр. Тема 05. Сложные типы

Главное преимущество использования пользовательских типов – поддержание целостности данных при копировании

Dim Ivanov_fio As String
Dim Ivanov_course As Integer
Dim Ivanov_score As Double
Dim students_fio() As String
Dim students_course() As Integer
Dim students_score() As Double
* * *
Ivanov_fio = “Иванов“
students_score(1) = 5
* * *
students_fio(5) = Ivanov_fio
students_course(5) = Ivanov_course
students_score(5) = Ivanov_score

А если нужно добавить студенту, например, возраст?

ИспользованиеType  student				fio As String		course As Integer	score As DoubleEnd Type* * *Dim Ivanov As studentDim students() As

Слайд 5Объявление и видимость



Информатика. 2 семестр. Тема 05. Сложные типы

В отличие

от «стандартных» типов, объявление пользовательского типа должно быть доступно для

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

Если тип объявлен в нескольких модулях, то используем полное имя типа: ModuleName.TypeName


DefModule

Type student
fio As String
course As Integer
score As Double
End Type


Module1

Dim Ivanov As student

Dim Ivanov As DefModule.student

Если тип с совпадающим именем объявлен также в своём модуле, то его определение экранирует остальные. При необходимости, можно использовать полное имя типа: ModuleName.TypeName

Объявление и видимостьИнформатика. 2 семестр. Тема 05. Сложные типыВ отличие от «стандартных» типов, объявление пользовательского типа должно

Слайд 6Статические и динамические массивы



Информатика. 2 семестр. Тема 05. Сложные типы

Иногда

нужно сохранять набор однотипных данных
Если данные одного типа (даже пользовательского)

и их можно упорядочить (пусть и формально) для хранения набора можно использовать массив

Для статического массива заранее известно количество элементов


usertype


type1

* * *


list


element

* * *


element


element


type2


type3

Type usertype
type1 As String
type2 As Integer
type3 As Double
* * *
End Type

Dim ArrayName(Length) As smthtype
Dim ArrayName() As smthtype

Для динамического массива - количество элементов может меняться

Важно:

Статические и динамические массивыИнформатика. 2 семестр. Тема 05. Сложные типыИногда нужно сохранять набор однотипных данныхЕсли данные одного

Слайд 7Работа с индексами



Информатика. 2 семестр. Тема 05. Сложные типы

Для статического

массива (массива фиксированного размера):
Dim Array1(5) As Integer ‘Определена

верхняя граница
Dim Array2(2 To 10) As Integer ‘Определены обе границы

Возможно создать многомерный «прямоугольный» массив

Dim Array3(5, 2 To 10) As Integer ‘Определен двумерный массив

Не путать размер и размерность!

Для динамического массива (массива переменного размера):

Dim Array4() As Integer ‘Определен динамический массив

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

ReDim Array4(2 To 6, 3) As Integer ‘Настройка массива

При использовании ReDim массив «очищается», но

ReDim Preserve Array4(2 To 6, 5) As Integer ‘Данные сохраняются

Preserve используется только при изменении последнего индекса

Работа с индексамиИнформатика. 2 семестр. Тема 05. Сложные типыДля статического массива (массива фиксированного размера):Dim  Array1(5) As

Слайд 8На границе…



Информатика. 2 семестр. Тема 05. Сложные типы

Менеджер памяти VBA

всегда выполняет контроль диапазонов индексов для массивов при обращении к

элементам

Ошибка ‘9’: Subscript out of range

Option Base 2 ‘Установка нижнего индекса «по-умолчанию»

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

Dim Array5 ( 4 ) As Integer ‘Объявлен массив с 3 элементами
Dim Array5 ( 1 To 4 ) As Integer ‘Объявлен массив с 4 элементами

В VBA определены функции для получения граничных индексов

MinIndex = LBound ( ArrayName ) ‘Нижняя граница
MaxIndex = UBound ( ArrayName ) ‘Верхняя граница

N = UBound ( A ): ReDim Preserve A(N + 1): A(N + 1) = X ‘ «на вершину»

Пример: Добавление элемента X «в конец» массива A():

В VBA индекс элемента массива не равен его порядковому номеру

На границе…Информатика. 2 семестр. Тема 05. Сложные типыМенеджер памяти VBA всегда выполняет контроль диапазонов индексов для массивов

Слайд 9Работа со строками



Информатика. 2 семестр. Тема 05. Сложные типы

Строка –

это последовательность символов.
Dim str1 As String ‘Строка переменной длины
Dim

str2 As String*10 ‘Строка фиксированной длины

Для строк определены два оператора

str1 = “Hello world!” ‘Присвоение значения
str1 = “Здравствуй, ” & “Мир!” ‘Конкатенация – слияние строк

Последовательность символов образующая строку хранится в памяти как неизменная величина в динамической памяти. Указатель на структуру, образующую строку, обрабатывается средой VBA «прозрачно» для пользователя.

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

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

str1 = Str ( 100500 ) ‘Получение строкового представления
N = Val (“100500”) ‘Преобразование строки в число (тип Double)

VBA использует для строк кодировку Unicode ( UTF-16LE )

Работа со строкамиИнформатика. 2 семестр. Тема 05. Сложные типыСтрока – это последовательность символов.Dim str1 As String

Слайд 10Функции для обработки строковых значений



Информатика. 2 семестр. Тема 05. Сложные

типы

Строка – это последовательность двухбайтных кодовых единиц.
Непосредственная работа с кодовыми

единицами выполняется функциями Asc() и Chr():

1055 ← AscW ( “Привет” ) ‘ Unicode-код первого символа строки
31 ← AscB ( “Привет” ) ‘ Значение первого байта строки
207 ← Asc ( “Привет” ) ‘ ASCII-код первого символа строки
П ← ChrW ( 1055 ) ‘ Символ по Unicode-коду
Z ← ChrB ( 90 ) ‘ !!! Неполная кодовая единица !!!
П ← Chr ( 207 ) ‘ Символ по ASCII-коду

Можно использовать комбинации

П̅ ← ChrB( 31 ) & ChrB( 4 ) & ChrW( 774 ) ‘ «Надчёркнутое» П (cyrrilic)

Подсчет «длины» строки – функция Len()

L = Len ( “Привет” ) ‘ Число «полных» кодовых единиц в строке

L = LenB ( “Привет” ) ‘ «Устаревшая» функция «длина в байтах»

Число кодовых единиц не равно числу кодовых точек (символов)

Функции для обработки строковых значенийИнформатика. 2 семестр. Тема 05. Сложные типыСтрока – это последовательность двухбайтных кодовых единиц.Непосредственная

Слайд 11Полезные функции



Информатика. 2 семестр. Тема 05. Сложные типы

Выборка фрагмента строки
Mid

(, [, ]) ‘ Скопировать подстроку
Mid (, ) ‘

Скопировать от <старт> до конца
Left (<строка>, <длина>) ‘ Скопировать от левого края
Right (<строка>, <длина>) ‘ Скопировать от правого края

«Чистка» от служебных символов и пробелов

Trim (<строка>) ‘ Удаление краевых пробелов (всех)
LTrim (<строка>) ‘ Удаление пробелов слева
RTrim (<строка>) ‘ То же, но справа

Анализ строки (поиск подстрок и замена вхождений)

InStr([<старт>,] < строка1>, <строка2> [,<сравнение>]) ‘ Поиск подстроки
InStrRev( … ) ‘ Поиск подстроки, но с конца
Replace (<строка>, <строкаПоиск>, <строкаЗамена>) ‘ Замена

Задание: Напишите программу обработки CSV:

S = “1; 2; 3; 4” ‘ Загрузить в Dim A() AS String по отдельности

Полезные функцииИнформатика. 2 семестр. Тема 05. Сложные типыВыборка фрагмента строкиMid (, [, ]) 	‘ Скопировать подстрокуMid (,

Слайд 12Полезные функции 2



Информатика. 2 семестр. Тема 05. Сложные типы

Работа с

символами в строках
StrReverse () ‘ «Переворот» строки
UCase () ‘ Всё

в ВЕРХНИЙ регистр
LCase (<строка>) ‘ Всё в нижний регистр
StrConv (<строка> [, <метод>]) ‘ Преобразование строки
‘ метод = vbProperCase (Слова
‘ начинаются с заглавных)

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

<строка> Like <шаблон> ‘ Сравнить с шаблоном
StrComp (<строка1>, <строка2> [, <метод>]) ‘ Сравнить строки:
‘ Результат = {-1, 0, 1, Null } для { < , = , > , Null }
‘ <метод> = {vbBinaryCompare, vbTextCompare}

Заполнение

String (<длина>, <символ>) ‘ Создать строку из символов
Space (<длина>) ‘ То же, но из пробелов

Полезные функции 2Информатика. 2 семестр. Тема 05. Сложные типыРабота с символами в строкахStrReverse () 	‘ «Переворот» строкиUCase

Слайд 13Операции со строковыми массивами



Информатика. 2 семестр. Тема 05. Сложные типы

Разбор

строки в массив по символу-разделителю
Buf = “” ‘ Это буфер
For I

= 1 To Len( Str1) ‘ «Пробежимся» по строке
If (Mid(Str1, I, 1) = “;”) Then ‘ Если i-тый символ – разделитель
* * * Buf → S() * * * ‘ Здесь код добавления в массив
Else ‘ Если i-тый символ – не разделитель
Buf = Buf & Mid(Str1, I, 1) ‘ Добавляем в буфер
Next I

Очистка буфера, последний элемент , а если нет разделителя?

Split (<строка> [, <разделитель>]) ‘ Разбить строку на подстроки
Join (<массив строк> [, <разделитель>]) ‘ Объединить строки
Filter(<массив строк>, <фрагмент>[, <включение>] [, <сравнение>])
‘ Просмотр массива строк с целью поиска искомой
‘ Возвращает массив подходящих строк

Ничего не упустили?

Что предлагает VBA?

Операции со строковыми массивамиИнформатика. 2 семестр. Тема 05. Сложные типыРазбор строки в массив по символу-разделителюBuf = “”	‘

Слайд 14Полезная «экзотика»



Информатика. 2 семестр. Тема 05. Сложные типы

Непрямоугольные массивы
«Разреженные» массивы

array


row_0





row_1



row_2






Type

rowtype
el() As String
End Type
Dim myarr() As rowtype
myarr(2).el(3) = “X”
X

array

row_0

row_1

row_2



0:

2:

1:

3:

1:

2:


Type celltype
id

As Integer
value As String
End Type
Type rowtype
el() As celltype
End Type
* * *

А есть ещё «облака» и коллекции…

Полезная «экзотика»Информатика. 2 семестр. Тема 05. Сложные типыНепрямоугольные массивы«Разреженные» массивыarrayrow_0row_1row_2……Type rowtype	el() As StringEnd TypeDim myarr() As rowtypemyarr(2).el(3)

Слайд 15Университет машиностроения
Кафедра «Автоматика и процессы управления»
Блок дисциплин
Информатика и информационные технологии
Спасибо

за внимание !!!
Контакты:
mami.testolog.ru
timid@mami.ru
inform437@gmail.com
Информатика. 2 семестр. Тема 05. Сложные типы

Далее:

Обработка данных
Основные алгоритмические конструкции
Сложные типы данных. Работа со строками
Использование функций. Передача параметров

Университет машиностроенияКафедра «Автоматика и процессы управления»Блок дисциплинИнформатика и информационные технологииСпасибо за внимание !!! Контакты:mami.testolog.rutimid@mami.ruinform437@gmail.comИнформатика. 2 семестр. Тема

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика