Главная страница

Лекции. Основные понятия и определения


Скачать 1.94 Mb.
НазваниеОсновные понятия и определения
Дата27.03.2018
Размер1.94 Mb.
Формат файлаdocx
Имя файлаЛекции.docx
ТипКонтрольные вопросы
#39570
страница7 из 58
1   2   3   4   5   6   7   8   9   10   ...   58

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


Тип – множество допустимых значений и операций над ними. Элемент какого-либо типа: переменная | константа | литерал. Тип литерала определяется его изображением, для переменной необходима специальная конструкция языка – описание, константы в пособии не рассматриваются.

Внимание! Все переменные должны быть описаны до их использования (по описаниям выделяется память для них).

Большинство типов имеют определенный в языке набор операций, реализованных в виде операторов или функций.

Существуют определенные в языке типы данных (так называемые предопределенные) и типы, задаваемые пользователем (о них позже).

3.1.1. Целые


Это семейство типов, значения которых являются целыми. Типы различаются диапазоном значений и объемом выделяемой под элемент памяти.

Память в

байтах

Память в

разрядах

Диапазон

Тип

Basic

Тип

C

1

8

-128 – 127(27-1)

SByte

char

2

16

-32768 – 32767(215-1)

Short

short

4

32

-2147483648 – 2147483647(231-1)

Integer

int | long

8

64

-263 – 263-1

Long

long long

Замечание 1. В языках C и C++ для всех целых типов существует модификатор unsigned, в рассматриваемых версиях языка Basic типы Byte, UShort, UInteger, ULong, которые запрещают соответствующим типам принимать отрицательные значения. При этом изменяется диапазон представления значений.

unsigned char, Byte→ 0 – 255

unsigned short, UShort→ 0 – 65535

unsigned [int] | unsigned long, UInteger→ 0 - 4294967295

ULong → 0 – 264-1

В качестве литералов в обоих языках могут употребляться числа в 10-чной, 8-чной и 16-чной системах счисления. Признак 8-чного литерала в языке Basic – префикс &o (буква "o”), в языке C0 (цифра "0"), 16-ного: Basic -- &h, C0{x|X}.

Пример.

-1 2345 9999999999 → 10

&o7777 Basic 07777 C → 8

&hab Basic 0xab 0Xab C → 16

3.1.2. Данные с плавающей точкой


Это семейство типов, значения которых являются вещественными (дробными). Типы различаются диапазоном значений и объемом выделяемой под элемент памяти.

Память в

байтах

Память в

разрядах

Диапазон

Точность представления (число разрядов мантиссы)

Тип

Basic

Тип

C

4

32

|x|<3,4...1038

6-7

Single

float

8

64

|x|<1,8...10308

16

Double

double

8


64




16




long double

Замечание. Типы double и long double в изучаемой версии языка C не отличаются. Тип long double введен для совместимости со стандартом языка, поэтому его употреблять не рекомендуется.

Литералы имеют 2 формы записи:

- обычную:

[+|-]<целая часть>.<дробная часть>

и экспоненциальную или показательную:

<мантисса>e<степень>,

где мантисса – это целое число или число с плавающей точкой в обычной форме, e означает 10 в степени (регистр не важен), степень – целое число.

Все литералы с плавающей точкой относятся к типу double.

Пример.

-2.3 5e-15 -2.245E12 0.0002 .0002Basic–>0.0002 среда корректирует)

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

Несмотря на различные формы записи литералов (внешнего представления) данные этого типа хранятся в памяти компьютера в форме с плавающей точкой (мантисса, порядок), отсюда и произошло название типа.

Замечание 1. В языке C разделитель между целой и дробной частью числа или мантиссы в виде десятичной точки может отсутствовать только при наличии степени (экспоненты). Если отсутствуют и точка, и степень, это означает литерал целого типа.

Замечание 2. Basic. Весьма важно!!! Во многих странах, в том числе и в нашей, в качестве десятичного разделителя используется символ ",". Более того, многие программы, например Microsoft Excel, используют в этом качестве установки ОС, которые могут быть изменены. В результате при вводе данных с клавиатуры или выводе их на экран (печать) используются установки ОС, однако при задании литералов в тексте программы необходимо употреблять в качестве разделителя точку. Эти проблемы также возникнут при работе с датами, временем, денежными единицами.

3.1.3. Логический тип


Используется для задания логических условий и свойств объектов.

Описывается ключевыми словами bool в языке C++ и Boolean в языке Basic. Литералы этого типа имеют только 2 значения:

true (истина) иfalse (ложь).

Basic: в памяти занимают 2 байта (16 разрядов) и хранятся в виде True (-1), False (0).

C++: в памяти занимают 1 байт (8 разрядов) и хранятся в виде true (1), false (0).

Замечание. В стандарте языка C логический тип не предусмотрен, однако в этом качестве можно использовать любую модификацию целого типа. Если значение условия не равно 0, то считается, что оно имеет значение true, если равно 0, то – значение false.

3.1.4. Символьные данные


Различают представления отдельных символов и последовательностей символов (строк). 1 символ занимает в памяти 1 байт. Каждый символ кодируется целым значением в диапазоне: 0 – 255. Символы с кодами от 0 до 127 представляют собой международную кодовую таблицу ASCII, которая едина для всех стран. Диапазон 128 – 255 содержит символы национальных алфавитов, спецсимволы и др. Эта кодовая страница специфична для различных стран.

Замечание. В обоих языках существует набор символов, каждый из которых занимает в памяти 2 байта. Они используются для представления символов национальных алфавитов, в основном, иероглифического типа (Япония, Китай, Корея и т.п.). Такая кодировка носит название Unicode. В данных версиях языке Basic для хранения одного символа используется эта кодировка и отводится 2 байта памяти.

В языке C литерал одиночного символа имеет вид: символ. Для записи символов, не имеющих графического представления или приводящих к неправильной трактовке, используется формат вида ‘\символ.

Пример.

a’ ‘C’ ‘\’’ ‘\”’ ‘\\’

\n’ – новая строка,

\t’ – табуляция,

\r’ – возврат каретки (переход к началу той же строки).

Для переменных используется ключевое слово char.

В языке Basic для одиночных символов также применяется тип char, однако он требует 2-х байтов памяти и не относится к целому типу. Литерал для одиночного символа имеет вид “<символ>”C.

Пример.

“a”C

Для задания символа “ (кавычка) надо записывать так: “”””C.

Для строк (последовательностей символов) в обоих языках формат записи литералов одинаков:

"<строка>"

Пример.

"Это строка!" "Запись в Си и Бэйсике одинакова"

Для включения в языке Basic в строчный литерал " (кавычки) ее надо дублировать.

В языке C для того, чтобы транслятор мог обнаружить конец строки в памяти, он добавляет в ее "хвост" символ '\0', поэтому строка имеет длину на 1 байт больше. В языке Basic каждая строка переменной длины, к которым следует отнести литералы, дополнительно хранит 10 байтов информации о длине строки.В Basic 4 байта длина строки+2 байта на символ+2 байта \0

Пример.

"Это строка!" – длина 12 байтов.

Замечание. В языке C следует различать записи 0 и '0'. В первом случае значение в памяти будет действительно равно 0, во втором – 48 – ASCII-код символа 0. Записи 0 и '\0' равнозначны.

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

Пример.

"Уральский социально-экономический институт"

"Академии труда и социальных отношений" Это 1 строка!

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

В языке Basic для строк применяется тип String. Максимальная длина таких строк может достигать 2 млн символов. Отметим, что для работы со строками так же, как и в языке C, можно использовать массивы типа Char.

3.1.5. Дополнительные типы данных


Описанные выше типы данных можно считать основными. Они используются в той или иной форме во всех языках программирования. В языке C (C++) определены также следующие типы: указатели, ссылки, перечисления (enum), void; в языке Basic: перечисления (Enum), даты (Date), универсальный (Object) и десятичный (Decimal). Они будут введены позже по ходу изложения.
1   2   3   4   5   6   7   8   9   10   ...   58


написать администратору сайта