Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать

6.1.3. Типы данных

Все переменные должны быть объявлены. При объявлении перемен­ных вначале указывается тип, а затем имена переменных через запятую. Пере­мен­ные можно ини­ции­ровать в месте их описания (Int height=71).

Скалярные типы данных приводятся в следующих двух таблицах.

Простейшие скалярные стандартные типы

С++Builder

Delphi

Тип

Число

байтов

Диапазон значений

unsigned char

Byte,

ByteBool,

AnsiChar

Целое, символ

1

[0,255]

char

ShortInt,

Char

Целое

1

[-128,128]

wchar_t

WideChar

Символ Unicode

2

unsigned short

Word,

WordBool

Целое

2

[0,65535]

short

SmallInt

Целое

2

[-32768,32767]

int

Integer

Целое

2

[-32768,32767]

unsigned long

Cardinal,

LongBool

Целое

4

[0,4294967295]

long

LongInt

Целое

4

[-2147483648,

2147483647]

float

Single,

real

Вещественное

4

[3.4x10-38,

3.4x1038]

double

Double,

comp

Вещественное

8

[1.7x10-308,1.7x10308]

long double

Extended

Вещественное

10

[3.4x10-4932,

1.1x104932]

unsigned

char *

PChar,

PAnsiChar

Указатель на символы без знака

4

void *

Pointer

Указатель

4

bool

Boolean

Логический

1

false, true

Дополнительные типы, реализуемые классами

С++Builder

Delphi

Тип

Set

Set

Множество 1-32 байт

String

String

Cтрока, подобная при работе строке Delphi

SmallString

String[n]

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

AnsiString

AnsiString

Текстовая строка Delphi произвольной длины

Variant

Variant

Любое значение

TdateTime

TDateTime

Значение даты и времени в виде Float

Currency

Currency

Значение денежной величины

Рассмотрим отдельно эти типы.

Set реализуется шаблонным классом Set:

Set<<тип>,<мин.значение элемента множества>,<макс. значение(<=255)>>

Пример:

typedef Set <char, 'A','Z'> bolhiebukvi; // прописные латинские буквы

bolhiebukvi glasnie, soglasnie; // объявление множеств гласных и согласных

glasnie <<'A'<<'I'<<'E'; // заполнение множества гласными буквами

soglasnie <<'B'<<'C'<<'D'; // заполнение множества согласными буквами

// проверка принадлежности буквы ‘B’ принадлежности множеству glasnie

Label1->Caption=glasnie.Contains('А')?“Да“:“Нет“; // вывод “Да”

String реализуется в виде: String <список имен>. Эти строки могут исполь­зоваться в привычных опера­циях сцепления (+) и срав­­нения строк (==).

В нимание! Отсчет символов начинается не с нуля, а с единицы

Пере­чис­лим основные методы (имя строки и метод раз­де­ляются точкой) работы с этими строками:

ToDouble/ToInt перевод строки в вещественное/целое число.

c_strвозвращает указатель на символьный массив с исходной строкой.

Length, IsEmpty ‑ возвращает длину строки, признак пустой строки (True).

IsEmpty ‑ возвращает true, если длина строки нулевая.

Insert(i) ‑ вставка строки после i‑й позиции исходной строки.

Delete/SubString(i,n) ‑ удаление/выделение подстроки длиной n с i‑й по­зи­ции исходной строки (r=Label1->Caption.SubString(2,3)).

LastDelimiterвозвращает позицию последнего символа‑ограничителя. LowerCase/UpperCase ‑ пере­вод строки в нижний/верхний регистр.

Trim, TrimLeft/TrimRight ‑ убрать пробелы и управ­ляющие символы в на­ча­ле и в конце строки, только в начале/конце строки соответственно.

Formatформатирование строки, аналогично функции printf.

ToInt/ToDouble‑ перевод числовой ст­ро­ки к целому/вещественному числу.

AnsiPos(s), Pos(s) ‑ возврат номера первого символа вхождения строки S.

Пример формирования и вывода фамилии, имени и отчества:

String Fio, Fam=”Иванов”, Imj=”Иван”; Fio=Fam+’ ‘+Imj+’ ‘;

Fio.Insert(“Иванович”,Fio.Length()+1); Label1->Caption=Fio;

SmallString реализуется в виде: SmallString <длина> <имя строки>.

Пример: SmallString<30>Fam; Fam=“Иванов“; Label1->Caption=Fam;

AnsiString реализуется в виде:

AnsiString<имя переменной>[<длина>]. Этот тип эквивалентен типу String.

Пример:

AnsiString Fio, Fam=”Иванов”, Imj=”Иван”; Fio=Fam+’ ‘+Imj+’ ‘;

Fio.Insert(“Иванович”,Fio.Length()+1); Label1->Caption=Fio;

Variant реализуется в виде: Variant <список имен переменных>.

Пример:

Variant Fam=”Иванов”,Dp=Date();//объявление универсальных переменных

Label1->Caption=Fam+DateToStr(Dp); // формирование и вывод метки

TDateTime реализуется в виде: TDateTime <список имен переменных>. Этот тип имеет структуру типа double, которая содержит в целой части зна­че­ние даты (порядкового номера дня начиная с 30.12.1899), а в дробной ‑ значение времени (отсчитывая от 12:00).

Пример: TDateTime d=Date(); Label1->Caption=d+1; // дата на завтра

Currency реализуется в виде: Currency <список имен переменных>.

Currency Stoimoct=123565.15; Label1->Caption=Stoimoct;

Переменные‑константы задаются добавлением модификатора const и значений при объявлении этих переменных. Попытки изменить эти значения операторами присваивания будут обнаружены при компиляции.

Пример. const int a=1; /* переменная‑константа*/ a=2; // ошибка

Переопределение типа можно осуществить оператором typedef.

Пример переопределения типа long double на новый тип vehhiclo:

typedef long double vehhiclo;vehhiclo a=1.2, b=1.6; // перемен. типа vehhiclo