Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Автоматические преобразования




Преобразование типов

End type

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

В языке Basic отсутствует такой вид совокупности данных как структура, который весьма удобен при реализации многих приложений. Это ограничение можно обойти, используя определение пользовательского типа данных. В языке C структуры определены, однако при их объявлении необходимо записывать ключевое слово struct, которое нарушает единый стиль объявления объектов программы. Кроме того, иногда желательно подчеркнуть природу объекта программы, задав ему соответствующее имя типа. Например, массив из 2 элементов можно определить как точку на плоскости. Тогда имя типа point (точка) сразу подскажет, что данный массив определяет координаты точки на плоскости.

10.9.1. Инструкция type (B)

Формат записи:

type <имя_типа>

<элемент>

[<элемент>]

...

end type

<элемент>:=<имя_элемента>[([индексы])] as <тип>

Пример. Описание звезды.

type star

nom_GC as long ' Номер по каталогу GC

mv as single ' Блеск (звездная величина)

spectr as string *5; ' Спектр. класс

alfa as double ' Прямое восхождение

delta as double ' Склонение

mu_alfa as double ' Собственное движение по alfa

mu_delta as double ' ------------------- ------------- по delta

rem as string* 15 ' Особенности (примечания)

После описания типа можно определить произвольное число переменных и массивов этого типа.

Пример.

dim RefStar as star, ViewStar as star, Pattern() as star

Элементы пользовательского типа (структуры) иногда называют полями. Обращение к элементу (полю) имеет вид:

<имя_типа>.<имя_поля>

Пример.

RefStar.alfa ViewStar.spectr

Замечание. Инструкция type должна записываться перед текстом процедуры в области деклараций.

10.9.2. Инструкция typedef (C)

Формат:

typedef

<описание_типа>

<имя-типа>;

Пример.

typedef struct {

long nom_GC; // Номер по каталогу GC

float mv; // Блеск (звездная величина)

char spectr[5]; // Спектр. класс

double alfa; // Прямое восхождение

double delta; // Склонение

double mu_alfa; // Собственное движение по alfa

double mu_delta; // ------------------- -------------- по delta

char rem[15]; // Особенности (примечания)

}star;

После описания типа star переменные объявляются без ключевого слова struct:

star RefStar, ViewStar;

Обращение к полям выполняются аналогично языку Basic:

RefStar.alfa ViewStar.rem[4]

Замечание. Указание имени структуры при обращении к ее элементу обязательно.

Различают автоматические преобразования, которые выполняются транслятором в случае вхождения в состав выражения объектов разных типов, и явные преобразования, задаваемые указанием программиста.

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

Для языка C это можно выразить следующими цепочками:

charàshortàintàlongàdouble floatàdouble

Для языка Basic:

byteàintegeràlongàdouble singleàdouble

Это позволяет не терять точности представления данных при преобразовании.

В языке Basic допустимо преобразование из числа в строку и обратно. Для успешного преобразования из строки в число необходимо, чтобы содержание строки могло быть интерпретировано как число в любой форме представления. Число в строку преобразуется всегда успешно.

Особый случай представляет собой преобразование данных при присваивании. Его можно отнести к группе явных преобразований.




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 608; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.