Меню

Turbo Pascal. Типы данных

Проблемы 

3.2. Простые типы данныхв Turbo Pascal 7

Простой тип определяет упорядоченное множество значений параметра. В Turbo Pascal имеются следующие группы простых типов:

  • целые типы;
  • логический тип;
  • символьный тип;
  • перечисляемый тип;
  • тип-диапазон;
  • вещественные типы.

Все простые типы, за исключением вещественных, называются порядковыми типами. Для величин порядковых типов определены стандартные процедуры и функции: Dec, Inc, Ord, Pred, Succ (см. п. 13.1).

3.2.1. Целые типы

В отличие от языка Паскаль, где определен единственный целый тип Integer, в Turbo Pascal имеется пять стандартных типов целых чисел: Shortint, Integer, Longint, Byte, Word. Характеристики этих типов приведены в табл. 2.

Таблица 2. Целые типы данных

Тип Диапазон Формат Размер в байтах
Shortint -128 .. 127 Знаковый 1
Integer -32768 .. 32767 Знаковый 2
Longint -2147483648 .. 2147483647 Знаковый 4
Byte 0 .. 255 Беззнаковый 1
Word 0 .. 65535 Беззнаковый 2

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

Стандартный логический тип Boolean (размер - 1 байт) представляет собой тип данных, любой элемент которого может принимать лишь два значения: True и False. При этом справедливы следующие условия:
False Ord (False) = 0
Ord (True) = 1
Succ (False) = True
Pred (True) = False

В Turbo Pascal 7.0 добавлено еще три логических типа ByteBool (размер - 1 байт), WordBool (размер - 2 байта) и LongBool (размер - 4 байта). Они введены для унификации с другими языками программирования и со средой Windows. Отличие их от стандартного типа Boolean заключается в фактической величине параметра этого типа, соответствующей значению True. Для вех логических типов значению False соответствует число 0, записанное в соответствующее количество байтов. Значению же True для типа Boolean соответствует число 1, записанное в его байт, а для других типов значению True соответствует любое число, отличное от нуля (хотя функция Ord в этом случае дает значение 1).

3.2.3. Символьный тип

Стандартный символьный тип Char определяет полный набор ASCII-символов. Функция Ord от величины типа Char дает код соответствующего символа. Сравниваются величины символьного типа по своим кодам.

3.2.4. Перечисляемый тип

Перечисляемый тип не является стандартным и определяется набором идентификаторов, с которыми могут совпадать значения параметра. Список идентификаторов указывается в круглых скобках, идентификаторы разделяются запятыми:

type
= ();)

Важно, в каком порядке перечислены идентификаторы при определении типа, т. к. первому идентификатору присваивается порядковый номер 0, второму - 1 и т. д. Один и тот же идентификатор можно использовать в определении только одного перечисляемого типа. Функция Ord от величины перечисляемого типа дает порядковый номер ее значения.

Пример. Перечисляемый тип.

type Operat = (Plus, Minus, Mult, Divide);

Логический тип является частным случаем перечисляемого типа:

type Boolean = (False, True);

3.2.5. Тип-диапазон

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

type = . . ;

Минимальное значение при определении такого типа не должно быть больше максимального.

Пример. Определение типов-диапазонов.

type
Dozen = 1..12; {числа от 1 до 12}
AddSub = Plus..Minus; {операции сложения и вычитания}

3.2.6. Вещественные типы

В отличие от стандарта языка Паскаль, где определен только один вещественный тип Real, в Turbo Pascal имеется пять стандартных вещественных типов: Real, Single, Double, Extended, Соmр. Характеристики этих типов см. в табл. 3. Таблица 3. Вещественные типы данных

Тип Диапазон Число значащих цифр Размер в байтах
Real 2.9*10-39..1.7*1038 11-12 6
Single 1.5*10-45..3.4*1038 7-8 4
Double 5.0*10-324.-1.7*10308 15-16 8
Extended 3.4*10-4932..1.1*104932 19-20 10
Comp -263+1..263-1 19-20 8

Тип Comp фактически является типом целых чисел увеличенного диапазона, однако порядковым не считается.

Типы Single, Double, Extended и Comp можно использовать в программах только при наличии арифметического сопроцессора или при включенном эмуляторе сопроцессора (см. пп. 17.5.8 и 17.7.1).

Вы находитесь в разделе материалов по пограммированию на Паскале. Перед тем как начать программировать, надо прояснить некоторые понятия, которые нам понадобятся в начале. Ведь просто так программировать нельзя. Мы не можем записать программу словами – компьютер кроме нулей и единиц больше ничего не понимает. Для этого в Паскале создана специальная символика – язык Паскаля, набор зарезервированных слов, которые нельзя использовать в своих программах больше нигде, кроме как по назначению. Перечислим основные понятия, которые нам понадобятся в начале:

✎ 1) program – по-английски «программа», пишется в самом начале кода, после чего идет название программы латиницей и точка с запятой. Например: program Summa; − программа под названием Summa. Но эту часть кода, называемую заголовком программы, можно и не писать − она присутствует только для наглядности и показывает, какую задачу решает данная программа. Здесь мы употребили слово «код» − так называется текстовая запись программы.

✎ 2) integer – по-английски означает «целое число» (или просто «целое») и в Паскале используется для обозначения 32-битных (8 байт) целых чисел со знаком с диапазона [-2147483648, 2147483647] . Что означают эти большие числа, мы потом разберем.

✎ 3) real – с английского «реальный», «настоящий», «вещественный», «действительный». В языке Паскаль этим термином обозначаются вещественные числа с диапазона [-1.8∙10 308 , 1.8∙10 308 ] . Это очень большие числа, но значащих цифр выводится 15 – 16. Кстати, типы данных integer и real в среде программирования PascalABC.Net всегда автоматически выделяются синим цветом.

✎ 4) const – аналог англ. «constant», означающее «постоянная», «константа». В Паскале это величина, которая не может изменяться. Записывается так:


Эту запись надо воспринимать так, как она пишется: число N равно 12, S равно 5, «пи» равно 3,14 (как и в математике, только вместо запятой в Паскале используется точка). В последней строке мы использовали двойной слэш (две косые черты), после которых идет текст, – так в Паскале пишутся комментарии, и их программа не воспринимает. Всё, что начинается двойным слэшом и до конца строки – это комментарий, который пишется для пояснения к программе и всегда выделяется другим цветом (в PascalABC.Net - это зеленый, в Turbo Pascal не используется такой вид комментария). Существует и другой тип комментария – это {текст, заключенный в фигурные скобки, так же, как и здесь, тоже выделяющийся зеленым цветом} . Этот вид комментария может действовать несколько строк подряд – от начала скобки и до её закрытия, и всё, что находится в середине такой конструкции, компилятор не воспринимает как код и просто пропускает.

В действительности формат записи const немножко сложнее. По правилам мы должны были записать:

1 2 3 4 const N: type integer;

Описание:

")" onmouseout="toolTip()">integer
= 12 ; //число N – целого типа S: type integer;

Описание:
Представляет 32-битовое целое число со знаком.

Диапазон значений: -2 147 483 648 .. 2 147 483 647 ")" onmouseout="toolTip()">integer
= 5 ; //число S – целого типа pi : type real;

Описание:
Представляет число двойной точности с плавающей запятой.

Размер: 8 байт
Количество значащих цифр: 15 - 16
Диапазон значений: -1.8∙10 308 .. 1.8∙10 308
")" onmouseout="toolTip()">real
= 3.14 ; //число «пи» - вещественного

После объявления каждой величины указывается её тип, а потом присваивается значение. Но предыдущая запись тоже верна, поскольку компилятор Паскаля настроен так, что он автоматически определяет тип постоянной. Но этого нельзя сказать о следующем типе чисел – переменных.

✎ 5) var – происходит от англ. «variable» («переменная», или «изменчивый»), что в Паскале означает величину, которая в процессе программы может изменять свое значение. Записывается так:


Как видно из записи, знака «=» здесь нет – пересчитываются переменные одного типа (через запятую) и после двоеточия указывается только тип. Переменные N, m (целые) и Q, r, t (вещественные) в программе могут изменять значения в пределах integer и real соответственно. Ещё одно замечание: описание переменных всегда стоит после описания констант (постоянных) – сначала идет конструкция const , а потом var .

✎ 6) begin – в переводе с английского означает «начинать» и Паскале означает начало основной программы, в которой записываются команды (операторы). После слова begin точка с запятой не ставится.

✎ 7) end – по-англ. «конец», и в языке Pascal означает то же (конец программы). После последнего слова end всегда стоит точка. Мы выделили слово «последнего», поскольку использование конструкции begin – end возможно ещё в одном случае: это так называемые операторные скобки, которые применяются для объединения нескольких операций под одним оператором. Но об этом потом. Таким образом, основная программа будет выглядеть так:

1 2 3 4 5 6 begin < оператор 1 > ; < оператор 2 > ; . . . . . . . < оператор N > ; end .

Здесь операторы в теле программы – это разные команды компилятору.

✎ 8) write – по-английски означает «писать». Этот оператор выводит на экран текст, помещенный в него, поэтому так и называется – оператор вывода. Текст, помещенный в него, выделяется синим и записывается так:

Write("этот текст выведен на экране" );

Сообщение, находящееся в скобках и кавычках, будет показано в окне консоли (просто в скобках без кавычек нельзя). После выполнения этого оператора мы увидим на экране:

этот текст выведен на экране

В таком виде оператор write используется в том случае, когда надо показать подсказку, пояснение, комментарий и т. п. А от если необходимо вывести ещё и числовое значение, скажем, S = 50 кв. м, то используется формат:

Write(, S);

В результате получим на экране результат:

Величина площади равна: S = 50

А при необходимости вывести единицы измерения, надо после S снова вставить текст в кавычках:

Write("Величина площади равна: S = " , S, " кв.м" );

После выполнения последнего оператора вывода получим вывод на экран:

Величина площади равна: S = 50 кв.м

✎ 9) writeln – то же, что и write, но после выполнения курсор будет переведен на следующую строку.

✎ 10) read – в переводе с английского означает «читать», поэтому read называется оператором считывания, или ввода данных. Записывается как read(N), что означает необходимость ввода величины N, где N – любое число, или текст, или другой тип переменной. Например, если надо ввести возраст человека, которому 32 года, мы можем записать так:


В первой строчке этого кода программа выводит вопрос «Каков Ваш возраст? » и переводит курсор в следующую строку (окончание ln); во второй строке мы выводим « Year = » (в начале пробел); далее мы видим оператор readln(Year) означающий необходимость введения возраста Year (число 32); наконец, выводим сообщения «Мой возраст », «32 » и « года. » поочередно. Необходимо внимательно следить за пробелами. В результате выполнения данного кода мы получим сообщение:

Каков Ваш возраст?
Year = 32
Мой возраст 32 года

✎ 11) readln – то же, что и read, только с переводом на новую строку. Действительно, в приведенном выше примере после введения числа Year мы только в следующей строке пишем: «Мой возраст 32 года ».

Это пока что все. На следующей странице мы напишем первую программу, и в программировании на Паскале это будут наши

Каждый тип обозначает подмножество целых чисел:

Тип Диапазон Формат
ShortInt -128..127 Знаковый 8 бит
Integer -32768.. Знаковый 16 бит
LongInt -2147483648.. Знаковый 32 бита
Byte 0..255 Беззнаковый 8 бит
Word 0..65535 Беззнаковый 16 бит

Все целочисленные типы являются порядковыми . Максимальным значениям Integer и LongInt соответствуют константы MaxInt и MaxLongInt . Максимальные и минимальные значения других целочисленных типов можно получать, изпользуя функции Low и High .

Ада

Пакет Interfaces:

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

Тип Диапазон Формат
Integer_8 -128..127 Знаковый 8 бит
Integer_16 -32768..32767 Знаковый 16 бит
Integer_32 -2147483648..2147483647 Знаковый 32 бита
Integer_64 -2**63 .. 2**63 - 1 Знаковый 64 бита
Unsigned_8 0..255 Беззнаковый 8 бит
Unsigned_16 0..65535 Беззнаковый 16 бит
Unsigned_32 0..4294967296 Беззнаковый 32 бита
Unsigned_64 0 .. 2**64 - 1 Беззнаковый 64 бита

Пакет Standard (подключается автоматически):

В этом пакете определены стандартные целочисленные типы. По стандарту, диапазон каждого следующего типа должен быть не уже, чем у предыдущего. Кроме того, на два из этих типов наложены явные минимальные ограничения по битности.

Тип Не уже, чем у... Обычно является...
Short_Short_Integer Integer_8
Short_Integer Integer_16
Integer Integer_16 Integer_32
Long_Integer Integer_32 Integer_32
Long_Long_Integer Integer_64

Несмотря на то, что я в правой колонке выписал битность каждого типа, использовать я рекоммендую только Integer и Long_Integer. Для всех остальных битностей предпочтительней типы Integer_x. Компилятор - это как частный сыщик. Чем больше от него недоговорок, тем меньше он будет полезен. Кто знает, какими битностями будут обладать стандартные типы на платформе Win128.

Кроме указанных типов, в Standard есть часто используемые:

Natural is Integer range 0 .. Integer"Last;
Positive is Integer range 1 .. Integer"Last;

Система типов языка Ада продумана лучше, чем в Borland Pascal. В Borland Pascal нельзя скомпилировать такую программу:

program Test_Word;

var
I: Word; { из лучших побуждений }

begin
for I:= 0 to -1 do { Constant out of range }
begin
end;
end.

Индекс -1 - это обычное явление, если работать с массивами, начальный индекс которых 0. Если массив пустой, то верхняя граница цикла for (длина массива минус один) как раз и получается -1. Вместо вызова ошибки этот цикл должен просто ничего не делать. В языке Ада таких проблем не возникнет. Используйте Natural и Positive на здоровье.

В языке Паскаль переменные характеризуются своим типом . Тип - это свойство переменой, по которому переменная может принимать множество значений, допустимых этим типом, и участвовать во множестве операций, допустимых над данным типом.

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

Например:

n:integer;

Паскаль - статический язык, из этого следует, что тип переменой определяется при ее описании и не может быть изменен. Язык Паскаль имеет развитую систему видов - все данные должны принадлежать заранее известному типу данных (либо стандартному типу, созданному при разработке языка или пользовательскому типу, который определяет программист). Программист может создавать свои типы произвольной структурой сложности на основе стандартных типов, либо уже определенных пользователем типов. Количество создаваемых типов неограниченно. Пользовательские типы в программе объявляется в разделе TYPE по формату:

[имя] = [тип]

Система стандартных типов имеет разветвленную, иерархическую структуру.

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

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

Указатели формируются из простых видов и используются в программах для задания адресов.

Процедурные типы являются нововведением языка Turbo Pascal, и они позволяют обращаться к подпрограммам, как к переменным.

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

В языке Паскаль целые типы бывают 5 видов. Каждый из них характеризует диапазон принимаемых значений и занимаемым местом их в памяти.

При использовании целочисленных чисел следует руководствоваться вложенностью типов, т.е. типы с меньшим диапазоном могут быть вложены в типы с большим диапазоном. Тип Byte может быть вложен во все типы занимающие 2 и 4 байта. В тоже время тип Short Int, занимающий 1 байт не может быть вложен в тип Word, поскольку не имеет отрицательных значений.

Можно выделить 5 вещественных типов:

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

2358.8395

0.23588395*10 4

0.23588395*E 4

Особое положение в Паскаль занимает тип Comp, фактически это большое целое число со знаком. Этот тип совместен со всеми вещественными типами и может быть использован для большого целого числа. При представлении вещественных чисел с плавающей запятой десятичная точка, всегда подразумевается перед левой или старшей мантиссой, но при действии с числом сдвигается влево или вправо.

Порядковые типы

Порядковые типы объединяют в себе несколько простых типов. К ним относятся:

  • все целые типы;
  • символьный тип;
  • логический тип;
  • тип-диапазон;
  • перечисляемый тип.

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

К значениям порядкового типа может быть применена функция ODD(x), которая возвращает порядковый номер аргумента x.

Функция PRED(x) - возвращает предшествующее значение порядкового типа. PRED(A) = 5.

Функция SUCC (x) - возвращает следующее значение порядкового типа. SUCC(A) = 5.

Символьный тип

Значениям символьного типа является 256 символов из множества допустимых кодовой таблицей используемого компьютера. Начальная область этого множества, то есть диапазон от 0 до 127 соответствует множеству кодов ASCII, куда загружаются символы алфавита, арабских чисел и специальных символов. Символы начальной области всегда присутствуют на клавиатуре ПК. Старшая область называется альтернативной, она содержит символы национальных алфавитов и различные специальные символы, и символы псевдографики, не соответствующие коду ASCII.

Значение символьного типа занимает один байт в оперативной памяти. В программе значении заключаются в апострофы. Так же значения можно задавать в виде его ASCII-коде. В этом случае перед числом, обладающим код символа нужно поставить знак #.

C:= ’A’

Логический (булевский) тип

Имеются два значения булевского типа: Истина (True) и Ложь (False). Переменные данного типа задаются служебным словом BOOLEAN. Значение булевского типа занимают один байт в оперативной памяти. Значениям Истина и Ложь соответствуют числовые значения 1 и 0.

Тип-диапазон

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

[минимальное-значение]…[максимальное-значение]

Тип-диапазон можно задавать в разделе Type, как определенный тип, а можно непосредственно в разделе Var.

При определении тип-диапазона необходимо руководствоваться:

  • левая граница не должна превышать правую границу;
  • тип-диапазон наследует все свойства базового типа, но с ограничениями, связанными и с его меньшей мощностью.

Перечисляемый тип

Данный тип относится к порядковым типам и задается перечислением тех значений, которых он может перечислять. Каждое значение именуется неким идентификатором и располагается в списке обрамленным в круглых скобках. Перечисляемый тип задается в Type:

Peoples = (men, women);

Первое значение - 0, второе значение - 1 и т.д.

Максимальная мощность 65535 значений.

Строковый тип

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

В программе строковый тип объявляется, словом String. Поскольку String является базовым типом, он описан в языке и объявление переменной типа String осуществляется в Var. При объявлении переменной строкового типа за String в квадратных скобках целесообразно указывать длину строки. Для указания используется целое число от 0 до 255.

Fam: String;

Указание длины строки позволяет компилятору отвести под данную переменную указанное число байтов в ОЗУ. Если длина строки не указана, то в этом случае компилятор отведет под значение этой переменной максимальное возможное число байт (255).

Данные – это общее понятие для всего того, с чем оперирует ЭВМ.

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

Например, для хранения небольших чисел требуется меньше памяти, чем для хранения больших. Целые числа из диапазона 0-255 занимают лишь 1 байт памяти, тогда как бльшие числа требуют бльшего количества байт. Если по логике работы программы известно, что результат не превысит 255, то для его хранения достаточно использовать однобайтовую переменную.

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

Поэтому, если по логике работы алгоритма не требуется использование вещественных чисел, нет смысла задействовать громоздкую «плавающую» арифметику. Указав в программе, что данная переменная является целочисленной, программист фактически даёт инструкцию компилятору обрабатывать её быстрым АЛУ основного процессора, не задействуя без необходимости сопроцессор.

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

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

К простым типам относятся:

– логический

– целые типы

– вещественные типы

– символьный

1. Логический тип (тип boolean)

Логическое значение - это одно из двух значений истинности, которые обозначаются зарезервированными именами false и true .

Логический тип определен так, что false < true . Операции отношения всегда дают логический результат. Например, отношение



при x = 0, y = 0 дает false ; при x = 0, y = 10 – значение true .

2. Целые типы данных

Значениями переменных целого типа являются элементы ограниченного подмножества целых чисел; это подмножество определяется конкретной реализацией.

В стандартном Паскале определен только один целый тип данных – тип integer . Число типа integer занимает два байта памяти; при этом нулевой бит определяет знак числа.

В той реализации Паскаля, с которой мы будем работать, в переменных типа integer можно хранить целые числа в диапазоне от –32768 до +32767.

Кроме того, в Турбо-Паскале имеются дополнительные целые типы данных:

1) тип shortint – короткое целое длиной один байт со знаком (знак занимает нулевой бит), пределы изменения -128 .. 127;

2) тип byte – короткое целое длиной один байт без знака (все восемь бит - двоичные цифры), пределы изменения 0 .. 255;

3) тип word – целое длиной два байта (слово) без знака, пределы изменения 0 .. 65535;

4) тип longint – длинное целое длиной 4 байта со знаком, пределы изменения - 2 147 483 648 .. 2 147 483 647.

Для целых значений допустимы следующие арифметические операции:

Сложение;

– вычитание;

* умножение;

div деление нацело (обратите внимание, что традиционный знак деления «/» возвращает в Паскале дробное число, поэтому результат такой операции не может быть присвоен целочисленной переменной).

mod остаток от деления.

В арифметическом выражении не могут стоять рядом два знака операции. Например, нельзя писать a * -b. Здесь нужно писать a * (-b).

Старшинство операций :

1) выражения в скобках;

2) *, div, mod (мультипликативные операции);

3) +, – (аддитивные операции).

Операции одинакового старшинства выполняются слева направо.

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

Целый результат дают следующие предописанные функции:



1) abs(i) – абсолютное значение целого аргумента i;

2) sqr(i) – квадрат значения целого аргумента i;

3) trunc(R) – целое, получающееся в результате отбрасывания дробной части числа R;

4) round(R) – целое, получающееся путем округления R.

trunc(3.3) = 3; round(3.3) = 3;

trunc(3.5) = 3; round(3.5) = 4;

trunc(3.8) = 3; round(3.8) = 4;

trunc(-3.3) = -3; round(-3.3) = -3;

trunc(-3.8) = -3; round(-3.8) = -4.

3. Вещественные типы

Вещественные числа – это числа с плавающей запятой. Широкое их использование характерно для инженерно-технических задач.

При отсутствии сопроцессора реализуется только один вещественный тип – тип real ; при наличии сопроцессора реализуются также типы single , double , extended , comp . Вещественные типы отличаются друг от друга количеством разрядов, отводимых для представления мантиссы и порядка.

Для типа real определены четыре арифметических операции:

Сложение - вычитание

* умножение / деление

Результатом операций «+», «–», «*» является вещественное значение, если хотя бы один из операндов имеет тип real . Операция «/» дает вещественное значение и в том случае, когда оба ее операнда имеют целочисленный тип.

Стандартные функции abs(x) и sqr(x) дают вещественный результат, если их аргумент x имеет тип real . Вне зависимости от типа аргумента следующие стандартные функции всегда дают вещественный результат: sin(x), cos(x), ln(x), exp(x), arctan(x), sqrt(x) (корень квадратный).

Вещественный результат при вещественном аргументе дают также функции

Int(x) - целая часть вещественного значения x;

Frac(x) - дробная часть вещественного значения x.

4. Символьный тип данных (тип char)

Значениями переменных символьного типа являются элементы конечного и упорядоченного множества символов. Этот набор может быть неодинаков на различных ЭВМ.

Значение переменной символьного типа обозначается одним символом, заключенным в апострофы.

"A" "a" "8" """" (апостроф пишется дважды)

Вне зависимости от реализации для символьного типа справедливы следующие допущения.

1) Десятичные цифры от "0" до "9" упорядочены в соответствии с их значениями и записаны одна за другой.

2) Имеются все большие буквы латинского алфавита от "A" до "Z". Это множество упорядочено по алфавиту, но не обязательно связно. Следовательно, в любой реализации должно выполняться "I" < "J".

3) Могут быть малые буквы латинского алфавита от "a" до "z". Если это так, то это множество букв упорядочено по алфавиту, но не обязательно связно.

Для символьного типа определены две взаимно обратные функции преобразования ord и chr:

k = ord(ch) – порядковый номер символа ch;

ch = chr(k) – символ с порядковым номером k.

Для символьного типа определены все операции отношения.

Считается, что ch1 < ch2, если ord(ch1) < ord(ch2).

Структура Паскаль-программы

Паскаль-программа состоит из заголовка программы и некоторого блока:

Заголовок программы;

Блок.

Заголовок состоит из ключевого слова program и имени программы:

Program Example;

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

1. Раздел описания меток.

2. Раздел описания констант

3. Раздел описания типов

4. Раздел описания переменных.

5. Раздел описания процедур и функций.

6. Раздел операторов.

В блоке может отсутствовать любой из разделов кроме раздела операторов.

1. Раздел описания меток

Любой оператор в программе может быть промаркирован меткой. Метка ставится перед оператором и отделяется от него двоеточием. Все метки должны быть описаны в разделе описания меток.

Label 10, 20, Met15;

2. Раздел описания констант

Этот раздел определяет некоторые идентификаторы как синонимы констант.

TextString = "Нажмите клавишу Enter";

Константа pi является предописанной и равна

pi = 3.1415926536 .

Использование идентификаторов констант улучшает читаемость программы и облегчает ее модификацию.

3. Раздел описания типов

Типы данных real, integer, boolean, char являются предопределенными и используются в разделе описания переменных. Если программисту требуется ввести новый тип данных, то его нужно описать в разделе описания типов.

Подробнее об описании новых типов мы поговорим позднее.

4. Раздел описания переменных

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

Var i, j, k: integer;

5. Раздел описания процедур и функций

Назначение и структура раздела будут изложены при рассмотрении процедур и функций.

6. Раздел операторов

Раздел содержит в себе операторы, реализующие обработку информации в программе. Раздел операторов - это частный случай составного оператора, который включает в себя один или несколько операторов, заключенных в «операторные скобки» begin … end. Разделителем между операторами является точка с запятой. На последующих лекциях мы будем изучать основные операторы языка Паскаль.

Раздел №9 (2 часа)

Оператор присваивания. Ввод-вывод
в программах на Паскале

Оператор присваивания. Запись арифметических выражений

Процедуры ввода данных с клавиатуры

Процедуры вывода данных на экран