Базовые типы данных языков программирования высокого уровня

Содержание

Слайд 2

Основные принципы концепции типа данных
Тип данных определяет
множество допустимых значений;
множество операций, которые могут

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

Слайд 3

Основные принципы концепции типа данных
Тип константы, переменной или выражения может быть определен

Основные принципы концепции типа данных Тип константы, переменной или выражения может быть
по внешнему виду (по изображению) или по описанию без выполнения каких-либо вычислений
Любая операция или функция требует аргументов и возвращает результат вполне определенного типа. Типы аргументов и результатов операций определяется по вполне определенным правилам языка

Слайд 4

Конструируемые типы данных
Рассмотрим группы разновидностей типов данных, которые в литературе часто называют

Конструируемые типы данных Рассмотрим группы разновидностей типов данных, которые в литературе часто
"составными", т.к. любое значение любого из этих типов состоит из значений одного или нескольких других типов

Слайд 5

Конструируемые типы данных

Конструируемые типы данных

Слайд 6

Массивы

Структуры аналогичные векторам и матрицам в информатике принято называть массивами
Все элементы массива

Массивы Структуры аналогичные векторам и матрицам в информатике принято называть массивами Все
должны быть одного и того же типа

 

Слайд 7

Массивы

Массив – это последовательность однотипных данных, объединенная общим именем, элементы (компоненты) которой

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

Слайд 8

Массивы
К элементам массива можно обращаться только по их номеру (индексу)
Все компоненты массива

Массивы К элементам массива можно обращаться только по их номеру (индексу) Все
являются одинаково доступными
Значения элементам массива присваиваются также как и другим переменным с учетом типа массива
Для доступа (обращения) к отдельному элементу массива используется индекс или несколько индексов (w[5]; w[i+2]; A[1,2])
Индексы могут быть выражениями, значения которых могут произвольным образом изменяться в заранее заданных границах. Поэтому говорят, что к элементам массивов имеется прямой доступ

Слайд 9

Массивы
В языке C++ под индексом элемента массива понимают смещение относительно адреса начала

Массивы В языке C++ под индексом элемента массива понимают смещение относительно адреса
массива в оперативной памяти, выраженное в элементах

В C++ индекс может изменяться от 0 до size-1,
где size – число элементов в массиве
описание массива сводится к описанию адресной переменной (указателя), хранящей адрес первого элемента массива (с индексом 0)

Слайд 10

Массивы

Массив – это группа однотипных элементов, имеющих общее имя и расположенных в

Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных
памяти рядом
Особенности:
все элементы имеют один тип
весь массив имеет одно имя
все элементы расположены в памяти рядом
Примеры:
список студентов в группе
квартиры в доме
школы в городе
данные о температуре воздуха за год

Слайд 11

Массивы

Массив – это группа однотипных элементов, имеющих общее имя и расположенных в

Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных
памяти рядом
Примеры: Накормить кота из 3 коробки. Сравните с командой Накормить Мурчика. Чувствуете разницу?

Слайд 12

A

массив

3

15

НОМЕР элемента массива
(ИНДЕКС)

A[1]

A[2]

A[3]

A[4]

A[5]

ЗНАЧЕНИЕ элемента массива

A[2]

НОМЕР (ИНДЕКС) элемента массива: 2

ЗНАЧЕНИЕ элемента массива: 10

A массив 3 15 НОМЕР элемента массива (ИНДЕКС) A[1] A[2] A[3] A[4]

Массивы

Pascal

Слайд 13

Зачем объявлять?
определить имя массива
определить тип массива
определить число элементов
выделить место в памяти
Массив

Зачем объявлять? определить имя массива определить тип массива определить число элементов выделить
целых чисел:
Размер через константу:

имя

начальный индекс

конечный индекс

тип
элементов
var A: array[1.. ] of integer;

const N=5;

N

var A : array[ 1 .. 5 ] of integer ;

Объявление массивов

Pascal

Слайд 14

Массивы других типов:
Другой диапазон индексов:
Индексы других типов:

var X, Y: array

Массивы других типов: Другой диапазон индексов: Индексы других типов: var X, Y:
[1..10] of real;
C: array [1..20] of char;

var Q: array [0..9] of real;
C: array [-5..13] of char;

var A: array ['A'..'Z'] of real;
B: array [False..True] of integer;
...
A['C'] := 3.14259*A['B'];
B[False] := B[False] + 1;

Объявление массивов

Pascal

Слайд 15

Тип компонент массива может быть любым:

var a4: array[10..20] of real;
-

Тип компонент массива может быть любым: var a4: array[10..20] of real; -
массив из компонент простого типа
a5: array[0..100] of record1;
- массив из записей
a6: array[-10..10] of ^string;
- массив из указателей на строки
a7: array[-1..1] of file;
- массив из имен файловых переменных
a8: array[1..100] of array[1..100] of char;
- двумерный массив (массив векторов)

Тип компонент

Pascal

Слайд 16

Что неправильно?

var a: array[10..1] of integer;
...
A[5] := 4.5;

[1..10]

var a: array ['z'..'a']

Что неправильно? var a: array[10..1] of integer; ... A[5] := 4.5; [1..10]
of integer;
...
A['B'] := 15;

A['b']

['a'..'z']

var a: array [0..9] of integer;
...
A[10] := 'X';

Pascal

Слайд 17

Массивы

Двумерные
массивы в С++

Массивы Двумерные массивы в С++

Слайд 18

Массивы

Краткие итоги
Массив является представителем структурированного типа данных
в языке С++
Элементы массива имеют

Массивы Краткие итоги Массив является представителем структурированного типа данных в языке С++
одинаковые имя, тип и располагаются в памяти последовательно
Элементы массива характеризуются индексами, значениями и адресуемой памятью
Для массивов нельзя выполнить операцию прямого присваивания
Адресация элементов массива осуществляется с помощью индексированного имени. Обращаться к элементам массива можно также посредством механизма указателей
Массивы используются для решения прикладных задач

Слайд 19

Строки

Строкой называется последовательность символов
Строка – это динамическая структура
В процессе выполнения программы количество

Строки Строкой называется последовательность символов Строка – это динамическая структура В процессе
элементов строки
(ее длина) может изменяться от нуля до максимального размер памяти, выделенной под эту строку
Строка представляет собой массив символов из элементов типа char

Слайд 20

Строки

Чем плох массив символов?
каждый символ – отдельный объект;
массив имеет длину N, которая

Строки Чем плох массив символов? каждый символ – отдельный объект; массив имеет
задана при объявлении
Что нужно?
обрабатывать последовательность символов как единое целое
строка должна иметь переменную длину

Слайд 21

Операции над строками

Операции над строками

Слайд 22

Операции над строками

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

Операции над строками Операция присваивания Операндами могут быть символы, строки, символьные массивы
строка равная значению операнда
Если строковой переменной присваивается значение, превышающее её длину, то перед присваиванием происходит усечение присваиваемого значения

Слайд 23

Операции над строками

Операция сравнения
Переменные строкового типа можно сравнивать между собой
Из двух строк

Операции над строками Операция сравнения Переменные строкового типа можно сравнивать между собой
является та большей, у которой первый из неравных символов больше (по ASCII-коду)
Иначе они равны
Система кодировки символов ASCII (American Standard Code for Information Interchange)

Слайд 24

Операции над строками

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

Операции над строками Операция конкатенации Операндами могут быть символы, строки, символьные массивы
полученная дописыванием в конец первого операнда второго операнда

Слайд 25

Операции над строками

В языке С++ строка – это пронумерованная последовательность символов (массив

Операции над строками В языке С++ строка – это пронумерованная последовательность символов
символов), она всегда имеет тип char[]
Все символы строки нумеруются, начиная с нуля
Символ конца строки также нумеруется – ему соответствует наибольший из номеров
Строка считывается значением типа «массив символов»
Количество элементов в таком массиве на 1 больше, чем изображение соответствующей строки, так как в конец строки добавлен нулевой символ '\0'

Слайд 26

Операции над строками

В языке С++ строка – это пронумерованная последовательность символов (массив

Операции над строками В языке С++ строка – это пронумерованная последовательность символов
символов), она всегда имеет тип char[]

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

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

Слайд 27

Записи (Структуры)

Структура – это составной объект, в который входят элементы любых типов,

Записи (Структуры) Структура – это составной объект, в который входят элементы любых
за исключением функций
В отличие от массива, который является однородным объектом (все элементы относятся к одному типу данных), структура может быть неоднородной
Структура – это тип данных, сформированный из объектов однородных либо разнообразных типов данных
Структуру можно представить себе как запись, состоящую из нескольких полей или элементов
Структуры обеспечивают удобный способ организации связанных по смыслу переменных

Слайд 28

Записи (Структуры)

Традиционный пример структуры – строка платежной ведомости:
содержит сведения о служащем:
полное имя
адрес
номер

Записи (Структуры) Традиционный пример структуры – строка платежной ведомости: содержит сведения о
карточки социального страхования
зарплата и т.д.
некоторые из этих характеристик сами могут быть структурами:
полное имя состоит из нескольких компонент
(фамилии, имени и отчества)
адрес
зарплата

Слайд 29

Записи (Структуры)

Традиционный пример структуры из области графики :
точка на плоскости есть

Записи (Структуры) Традиционный пример структуры из области графики : точка на плоскости
пара вещественных координат,
шар в пространстве моделируется четырьмя вещественными числами и т. д

Слайд 30

Записи (Структуры)

Записи - структуры, аналогичные строкам таблицы
Компоненты записей принято называть полями
Различные поля

Записи (Структуры) Записи - структуры, аналогичные строкам таблицы Компоненты записей принято называть
(столбцы таблицы) могут быть разных типов
Для доступа к отдельным полям записи используются их фиксированные и неизменные имена
Например: День Победы. Месяц := май
Поля могут выбираться для обработки в произвольном порядке, поэтому говорят, что доступ к компонентам записи прямой

Слайд 31

Множество - ограниченный , неупорядоченный набор различных элементов одного типа Примеры множеств: Множество

Множество - ограниченный , неупорядоченный набор различных элементов одного типа Примеры множеств:
арабских цифр. Множество знаков арифметических операций.

У множества есть имя и тип.
Тип элементов множества называется базовым типом.
Примеры: В множестве A базовым типом является интервальный, который включает цифры от 0 до 9.
В множестве В базовым типом является символьный тип

0 1 2 3 4 5 6 7 8 9

+ - / *

А

В

Множества

Слайд 32

Множества

Множества

Слайд 33

Операции над множествами

количество элементов в множестве заранее не определяется, и с течением

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