что значит скалярный тип данных
Что значит скалярный тип данных
Горбачев Л.И. Основы программирования в среде Turbo Pascal.
Типы данных.
Понятие тип связано с фиксированным набором данных. Переменная относится к определенному типу, если ей можно присвоить данные, принадлежащие к набору, определяющему этот тип. В языке Турбо-Паскаль необходимо явное определение типа каждой из переменных в программе.
Например, значения переменной, равные 1 или 10 относятся к целочисленному типу, их можно складывать, умножать и выполнять другие арифметические операции. В языке Паскаль для описания типа в общем случае используется зарезервированное слово Type.
Формат: type имя_типа = значение_типа;
Все типы данных разделяются на две группы: скалярные (простые) и структурированные (составные). Скалярные типы в свою очередь подразделяются на стандартные и пользовательские. Стандартные типы данных предлагаются пользователям разработчиками системы Turbo Pascal.
К стандартным скалярным типам относятся целочисленные, вещественные, символьные, булевские типы данных и указатели.
В десятичной системе числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть от дробной отделяется десятичной точкой. Если десятичная точка отсутствует, число считается целым. Перед числом может находиться знак «+» или «-«. Если знак отсутствует, по умолчанию число считается положительным.
Структурированные типы в своей основе имеют один или несколько скалярных типов данных. К структурированным типам относятся строки, массивы, множества, записи, файлы и данные процедурного типа и типа object.
Набор основных типов переменных Турбо-Паскаля можно представить в виде следующей схемы:
5.1. Скалярные типы данных.
5.1.1. Целочисленный тип.
Целочисленные типы данных представляют собой значения, которые могут использоваться в арифметических выражениях и занимать память от 1 до 4 байт.
Тип | Наименование | Допустимые значения | Занимаемая память |
shortint | короткое целое | -128..127 | 1 байт |
byte | байт | 0..255 | 1 байт |
integer | целое | -32768..32767 | 2 байта |
word | слово | 0..65535 | 2 байта |
longint | длинное целое | -2*10^9..2*10^9 | 4 байта |
Пример: var X1, X2 : byte;
Y1 : word;
K, L : integer;
5.1.2. Вещественный тип.
Вещественные типы данных представляют собой вещественные значения, которые используются в арифметических выражениях. Допускается представление вещественных значений как в виде с плавающей, так и с фиксированной точкой.
Тип | Наименование | Допустимые значения | Число значащих цифр | Занимаемая память |
real | вещественный | 10^-38-10^38 | 11-12 | 6 байт |
single | с одинарной точностью | 10^-38-10^38 | 7-8 | 4 байта |
double | с двойной точностью | 10^-308-10^308 | 15-16 | 8 байт |
extended | с повышенной точностью | 10^-4931-10^4931 | 19-20 | 10 байт |
comp | сложный(длиное целое) | -9*10^18-9*10^18 | 19-20 | 8 байт |
5.1.3. Символьный тип.
Тип | Диапазон | Требуемая память |
Char | Кодовая таблица ПЭВМ | 1 байт |
Пример: var Ch : char;
Let, Znak : char;
5.1.4. Логический (булевский) тип.
Булевский тип представлен двумя значениями: True (истина) и False (ложь). Он широко применяется в логических выражениях и выражениях отношения.
Тип | Диапазон | Требуемая память |
boolean | True, False | 1 байт |
Пример: var Flag1, Flag2 : boolean;
5.2. Пользовательские типы.
Кроме стандартных типов данных, Паскаль поддерживает скалярные типы, определенные самим пользователем. К ним относятся перечисляемый и интервальный типы.
Данные этих типов занимают в памяти один байт, поэтому любой пользовательский тип не может содержать более 256 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок и экономит память.
5.2.1. Перечисляемый тип.
Перечисляемый тип задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки.
Переменная типа «перечисление» задается перечислением значений, которые она может принимать. Описание этих переменных имеет вид:
1) type имя_типа = (список_значений);
var имя_переменной = имя_типа;
или
2) var имя_переменной: (список_значений);
Пример: type God = (Zima, Vesna, Leto, Osen); var A1, A2: God;
или
var A1, A2: (Zima, Vesna, Leto, Osen);
Третий тип перечисления анонимный ( не имеет имени) и задается перечислением значений в разделе Var. Season является переменной этого типа и может принимать значения Winter, Spring, Summer и Autumn. Таким образом может быть задан любой тип, но это не всегда приемлемо, так как первый способ более понятен и больше соответствует характеру языка Паскаль.
Пример: Для разработки программы управления уличным светофором можно использовать описание света, которое принимает три значения: красный, желтый и зеленый. Это можно описать так:
type Lights = (Red, Yellow, Green);
var Color: Lights;
Имена из списка перечисляемого типа (внутри круглых скобок) являются константами соответствующего типа перечисления и соответствуют обычным правилам для констант. Эти идентификаторы должны быть уникальны в пределах блока; недопустимы описания двух и более перечислимых типов с совпадающими константами. Например, описания вида:
type Color1 = (Red, Yellow, Blue);
Color2 = (Green, Blue, Gray);
являются некорректными из-за повторного использования идентификатора Blue.
Выражения и константы перечисляемого типа допустимы для использования в операторе CASE. Операция отношения и логические операции допустимы для значений перечисления одного и того же типа. Упорядочение осуществляется по номеру элемента в описании типа.
Например, будет истинно выражение Winter
В отличии от данных других типов, Паскаль не поддерживает операции ввода-вывода значений пользовательского перечисляемого типа. При необходимости программист сам должен организовать ввод-вывод таких данных.
Для работы с данными перечисляемого типа в языке Паскаль предназначены стандартные функции Succ, Pred, Ord.
Функция | Тип результата | Результат выполнения функции |
Succ(X) | порядковый тип X | следующий за X в описании типа (если таковой существует) |
Pred(X) | порядковый тип X | предшествующий X в описании типа (если таковой существует) |
Ord(X) | integer | номер X в описании типа (начиная с 0 |
5.2.2. Интервальный тип.
Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Компилятор при каждой операции с переменной интервального типа генерирует подпрограммы проверки, определяющие, остается ли значение переменной внутри установленного для нее диапазона. Обе константы должны принадлежать одному из стандартных типов (напомним, что тип real здесь недопустим). Значение первой константы должно быть обязательно меньше значения второй.
Для переменных ограниченного (диапазонного) типа указывается подмножество значений, которые они могут принимать. Описание этих переменных имеет вид:
1) type имя_типа = Min..Max;
var имя_переменной: имя_типа;
или
2) var имя_переменной: Min..Max;
В этом примере переменные WorkDay, BolnDay имеют тип DayMonth и могут принимать любые значения из диапазона 1..31. Выход из диапазона вызывает программное прерывание.
5.3. Структурированные типы данных.
Структурированные типы данных определяют упорядоченную совокупность скалярных переменных и характеризуются типом своих компонентов. В языке Паскаль допускаются следующие структурированные типы данных: строки, массивы, множества, записи, файлы, указатели, процедурные типы и объекты. Все они требуют отдельного рассмотрения и будут подробно описаны (кроме объектов) ниже.
Главная |
Новости |
TurboPascal |
Учебное пособие |
Лекции |
Исходники |
Математика |
Книги |
Лекции |
Шпоры |
ЦТ и ЕГЭ |
Физика |
© Copyright(c) 2004 Amro Group. All rights reserved
Презентация к защите
Скалярный тип данных
Скалярный тип данных в Perl предназначен для представления и обработки числовых данных (чисел) и последовательности символов, называемых строками. Для задания в программе перечисленных данных используются буквальные константы, или литералы: числовые и строковые.
Числовые литералы используются для представления обычных чисел, необходимых для реализации какого-либо алгоритма в программе Perl. Обычно используются числа с основанием десять, или десятичные числа, но язык позволяет использовать и восьмеричные (с основанием восемь), и шестнадцатеричные (с основанием шестнадцать) числа, которые полезны при работе с содержимым памяти компьютера в процессе решения некоторых системных задач.
Десятичные числа могут быть целыми или вещественными с дробной частью, которые в программировании часто называют числами с плавающей точкой из-за способа их представления и хранения в памяти компьютера. Соответствующие им литералы ничем не отличаются от записи подобных чисел в математике: последовательность цифр без пробелов для целых чисел и последовательность цифр, в которой точка отделяет целую часть от дробной, для вещественных чисел (пример 3.1).
Пример 3.1. Числовые литералы
123 # Целое десятичное число.
234.89 # Вещественное число.
0.6780 # Вещественное с нулевой целой частью
678 # Незначащие нули можно не задавать
1_000_000.67 # Для отделения разрядов в целой части числа
# можно использовать символ подчеркивания.
Для вещественных чисел с плавающей точкой можно использовать и экспоненциальную форму записи:
Эта форма записи означает, что для получения значения числа следует его мантиссу, заданную в форме действительного числа с точкой ([цифры]. [цифры]), умножить на десять в степени числа со знаком, заданного в его экспоненциальной части после символа Е или е (пример 3.2).
Пример 3.2. Экспоненциальная форма записи вещественных чисел
10.67Е56 # Знак «+» в экспоненте можно опускать.
10.67е+06 # Так экспонента лучше читаема.
1е-203 # Число близко к машинному нулю.
1е+308 # Число близко к бесконечно большому числу.
Некоторые системные установки или анализ некоторых системных параметров легче осуществлять с использованием чисел, представленных в восьмеричной или шестнадцатеричной системах счисления. Форма записи таких чисел аналогична их синтаксису в языке С: любое целое число, начинающееся с нуля «о», трактуется интерпретатором как восьмеричное целое число, а символы, непосредственно следующие за комбинацией «Ох», рассматриваются как шестнадцатеричные цифры. При использовании восьмеричных чисел следует помнить, что в них не может быть цифры больше, чем 7, а в шестнадцатеричных числах кроме десяти цифр от о до 9 используются буквы А или а, в или ь, с или с, о или d, Е или е, F или f для обозначения недостающих цифр числа (пример 3.3).
Пример 3.3. Восьмиричные и шестнадцатиричные числа
010 # Восьмеричное 10, равное десятичному 8.
0x10 # Шестнадцатеричное 10, равное десятичному 16.
0239 # Вызовет ошибку интерпретации: нельзя использовать цифру 9.
OxAIFf # Соответствует 41477 десятичному.
OxGA # Вызовет ошибку интерпретации: нельзя использовать букву G.
Замечание
Задание шестнадцатеричных цифр — это единственный случай в Perl, когда прописные и строчные буквы идентичны. В других случаях их употребления, например в идентификаторах, они различны.
Внимание
Нельзя вместо последовательности символов «Ох», идентифицирующей шестнадцатеричные числа, использовать последовательность «ох».
Строковые литералы, или просто строки, представляют последовательность символов, заключенную в одинарные (‘), двойные («) или обратные (‘) ка вычки, которая рассматривается как единое целое. Использование одинарных и двойных кавычек для задания строк аналогично их применению для этих же целей в системе UNIX.
В строке, ограниченной одинарными кавычками, нельзя использовать ESC-, или управляющие последовательности, а также в нее нельзя подставить значение переменной. Единственное исключение составляют две управляющие последовательности: (V) и (\\). Первая используется для отображения одинарной кавычки в самой строке, так как иначе интерпретатор рассматривал бы первую, встретившуюся ему одинарную кавычку как признак завершения строки, что не соответствовало бы ее включению в строку. Вторая последовательность используется для отображения самой обратной косой черты. Примеры задания строковых литералов, ограниченных одинарными кавычками, можно найти в табл. 3.2.
Таблица 3.2. Символьные литералы, ограниченные одинарными кавычками
Замечание
Esc-последовательности, состоящие из обратной, косой черты (\), за которой следует буква или комбинация цифр. В них символ обратной косой черты рассматривается как символ, изменяющий значение буквы. Они вместе являются одним целым и выполняют определенное действие при выводе на устройство отображения, например, переход на новую строку (\п). Комбинация цифр трактуется как ASCII-код отображаемого символа. Название таких последовательностей происходит от английского слова «escape», означающего изменять смысл. Их еще называют управляющие последовательности.
Строковый литерал может распространяться на несколько строк программы (см. последний литерал табл. 3.2). Для этого при его вводе с клавиатуры следует использовать клавишу для перехода на новую строку.
Многострочные литералы отображаются на стольких строках, на скольких они заданы. Это означает, что символ перехода на новую строку, введенный с клавиатуры, сохраняется в символьном литерале, ограниченном одинарными кавычками. Следует заметить, что это справедливо и для строковых литералов, ограниченных двойными кавычками.
Строки в двойных кавычках позволяют вставлять и интерпретировать управляющие последовательности, а также осуществлять подстановку значений переменных, содержащих скаляры или списки. Управляющие последовательности (табл. 3.3) при выводе строк могут интерпретироваться как символы новой строки, табуляции и т. п., а могут изменять регистр следующих за ними букв.
Таблица 3.3. Управляющие последовательности
Замечание
Если после обратной косой черты в строковом литерале, ограниченном двойными кавычками, следует символ, который не составляет с ней управляющую последовательность, то обратная косая черта не отображается при выводе строки на устройство отображения.
Строковые литералы в двойных кавычках удобно использовать для структурированного вывода текстовой информации, заданной одной строкой. Примеры строк в двойных кавычках представлены в табл. 3.4.
Таблица 3.4. Символьные литералы, ограниченные двойными кавычками
Комментарий
Последней разновидностью строковых литералов являются строки в обратных кавычках, которые, по существу, не являются строками данных в том смысле, что содержащиеся в них символы не обрабатываются при выводе интерпретатором языка Perl как некоторый поток отображаемых символов. Встретив строку в обратных кавычках, интерпретатор передает ее на обработку операционной системе, под управлением которой он функционирует: Windows, UNIX или какая-либо другая, которая выполняет переданную ей команду и возвращает в программу Perl результаты ее выполнения в виде строки, которую в дальнейшем можно использовать для организации вычислений. Таким образом, строки в обратных кавычках должны содержать значимую для операционной системы последовательность символов: команду операционной системы, строку загрузки приложения и т. п. Например, при выводе строки
оператором print отобразится не слово «dir», a результат выполнения команды dir операционной системы. В системе Windows эта команда отобразит содержимое текущей папки (пример 3.4).
СКАЛЯРНЫЕ ТИПЫ ДАННЫХ
К скалярным типам относятся стандартные типы и типы, определяемые пользователем.
К стандартным типам относятся целые, действительные, логические, символьный и адресный типы.
ЦЕЛЫЕ типы представляют собой значения, которые могут использоваться в арифметических выражениях и занимать память от 1 до 4 байт. Например, Integer, Byte.
ДЕЙСТВИТЕЛЬНЫЕ типы представляют собой вещественные значения, которые используются в арифметических выражениях. Допускается представление вещественных значений как в виде с плавающей, так и с фиксированной точкой. Например, Real, Single.
ЛОГИЧЕСКИЙ тип (Boolean) определяет те данные, которые могут принимать логические значения TRUE и FALSE. В ТУРБО ПАСКАЛЬ введены еще разновидности логического типа:
ByteBool, WordBool и LongBool, которые занимают в памяти ЭВМ один, два и четыре байта соответственно.
ПЕРЕЧИСЛЯЕМЫЙ тип задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки.
Перечисляемый тип описывается в разделе описания типов, который начинается со служебного слова type. Переменные перечисляемого типа могут быть описаны в разделе описания переменных, который начинается со слова var. Переменные и константы перечисляемого типа не могут быть элементами списка ввода или вывода.
ИНТЕРВАЛЬНЫЙ тип позволяет задавать две константы –это минимальное и максимальное значения для данной переменной. Значения констант разделены двумя точками. Минимальное и максимальное значения констант называются нижней и верхней границами отрезка, определяющего интервальный тип. Обе константы должны принадлежать одному из стандартных типов (тип real здесь недопустим). Значение первой константы должно быть обязательно меньше значения второй. При использовании в программах интервальных типов данных может осуществляться контроль за тем, чтобы значения переменных не выходили за границы, введенные для этих переменных в описании интервального типа.
СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ определяют упорядоченную совокупность скалярных переменных и характеризуются типом своих компонентов. В языке Паскаль допускаются следующие структурированные типы данных: строки, массивы, множества, записи, файлы.
Тип-файл представляет собой последовательность компонент одного типа, расположенных на внешнем устройстве. Число компонент в файле не объявляется. Для задания типа-файла следует использовать зарезервированные слова file и of, после чего указать тип компонент файла. Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций. Их можно использовать лишь для выполнения операций с файлами (чтения, записи, удаления файла и т. д.).
Наиболее простыми формами АРИФМЕТИЧЕСКИХ ВЫРАЖЕНИЙ являются: целая или действительная константа без знака; целая или действительная переменная; элемент массива целого или действительного типа; функция, принимающая целое или действительное значение. Другие арифметические выражения составляются из вышеперечисленных простых форм путем применения круглых скобок и арифметических операций. В Паскале сесть следующие арифметические операции: сложение, вычитание, умножение, деление, целочисленное деление, остаток от целочисленного деления.
В языке ПАСКАЛЬ принят следующий ПРИОРИТЕТ ОПЕРАЦИЙ:
1. унарная операция (унарный минус not, взятие адреса @)
2. операции типа умножения (мультипликативные) * / div mod and
4. операции отношения = <> = in
Порядок выполнения нескольких операций равного приоритета устанавливается компилятором из условия оптимизации кода программы и не обязательно слева направо. При исчислении логических выражений операции равного приоритета всегда вычисляются слева направо.
ПРОСТЫЕ ОПЕРАТОРЫ – оператор присваивания и операторы ввода и вывода информации.
Оператор ПРИСВАИВАНИЯ
В операторе присваивания слева всегда стоит имя переменной, а справа – значение, например:А:=В;
Где А – имя переменной, В – значение как таковое, выражение, переменная, константа или функция.Типы переменных А и В должны совпадать или быть совместимыми для присваивания.
Оператор присваивания неэквивалентен математическому знаку равенства.