Целый тип в паскале. Типы переменных в Паскале: описание, свойства, примеры

Наиболее важными элементами программы являются переменные. Именно они влияют на ход событий в программе во время ее выполнения. Например, если бы мы не указали значение переменной Name в , кому было бы адресовано приветствие, выведенное программой?

Переменные могут содержать совершенно различные данные. Например, в одной переменной может храниться чье-то имя, в другой – год рождения, в – третьей – рост и т.д. Такие разные данные и представляются компьютером по-разному. Имя – это строка символов, год рождения – целое число, рост – вещественное число (например, рост равен 1.72 м).

Способ представления данных компьютером определяется их типом . Кроме того, тип данных определяет, какие действия разрешается выполнять над этими данными.

Ниже перечислены основные стандартные типы данных языка Турбо-Паскаль:

  1. INTEGER – целочисленные данные в диапазоне от –32768 до 32767, в памяти занимают два байта;
  2. REAL – вещественные числа в диапазоне от 2.9´10 -39 (2.9E-39) до 1.7´10 38 (1.7E38), занимают шесть байт;
  3. CHAR – отдельный символ, один байт;
  4. STRING – строка символов, количество символов в строке (длина строки) ограничивается числом N в квадратных скобках, занимает N+1 байт (если число N не указано, то максимальная длина строки равна 255 символов);
  5. BOOLEAN – логический тип, имеет два значения: FALSE (ложь) и TRUE (истина), один байт.

Заметим, что типы INTEGER, CHAR, и BOOLEAN относятся к порядковым типам (ordinal types).

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

Пример описания переменных различных типов:

Delphi/Pascal

var a, b, c: integer; sum: real; Alpha, Beta: char; S: string; S_1: string; t: boolean;

a , b , c : integer ;

sum : real ;

Alpha , Beta : char ;

S : string [ 25 ] ;

S_1 : string ;

t : boolean ;

Заметьте, что переменная S_1 является строкой символов, но при ее описании не указывается длина. В таком случае компилятор сам устанавливает максимально возможную длину – 255 символов.

Для хранения целых и вещественных чисел существуют и другие предопределенные типы данных. Их характеристики приведены в таблицах ниже. Сравните эти типы с типами INTEGER и REAL, также приведенными в таблицах.

Диапазон

Размер в байтах

SHORTINT
INTEGER
LONGINT

2147483648 .. 2147483647

BYTE
WORD

Вещественные типы данных

Диапазон

Число значащих цифр

Размер в байтах

REAL

2.9´10 -39 .. 1.7´10 3 8

SINGLE

1.5´10 – 45 .. 3.4´10 3 8

DOUBLE

5.0´10 -3 24 .. 1.7´10 3 08

EXTENDED

3.4´10 -4932 .. 1.1´10 49 32

COMP

2 63 +1 .. 2 63 -1

Какой тип данных использовать

Столько разных типов, скажете Вы, и какой же из них использовать?
Это зависит от поставленной перед Вами задачи. Например, Вам нужна переменная, в которой Вы будете хранить рост некоторого человека (вещественное значение): в этом случае достаточно использовать тип SINGLE. Если какая-то переменная используется у Вас для подсчета количества определенных объектов (целое положительное значение), то прикиньте, может ли быть это число больше 255, если нет – используйте BYTE, если же может – Вам не обойтись без WORD, а в некоторых случаях может понадобиться и LONGINT.

Чтобы узнать о различных типах побольше, нажмите Shift+F1 в среде Турбо-Паскаль (появится окно индекса помощи), а затем выбирайте интересующий Вас объект (например, наберите ‘type’ или ‘real’).

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

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

В общем виде описание простой нетипизированной константы делается так:

Const имя_константы = выражение;

Типизированные константы описываются в виде:

Const имя_константы: тип = выражение;

В выражениях могут быть использованы:

· числа или набор символов в апострофах;

· математические операции;

· операции отношения и логические операции;

· функции abs(x), round(x),trunc(x);

· функции chr(x), ord(x), pred(x), succ(x) и другие.

Формат описания констант:

идентификатор=значение;

1. Целочисленные – определяются посредством чисел, записанных в десятичном или шестнадцатеричном формате, не содержащих десятичной точки.

2. Вещественные – определяются посредством чисел, записанных в десятичном формате данных.

3. Символьные – это любой символ персонального компьютера, заключенный в апострофы.

4. Строковые – определяются последовательностью произвольных символов, заключенных в апострофы.

5. Логические – это либо False, либо True.

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

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

Имя переменной – должно начинаться обязательно с буквы, не может содержать пробелы, и может содержать только:

· буквы латинского алфавита;

· знак подчеркивания.

Примеры: A, A_1, AА, i, j, x, y и т.п. Неверные имена: My 1, 1A. Длина имени переменной может быть до 126 символов, поэтому старайтесь подбирать осмысленные имена переменных. Однако, компилятор различает в именах первые 63 символов. Зато он не различает строчные и прописные буквы, как в именах переменных, так и в написании служебных идентификаторов.

Тип переменной – должен быть обязательно определён в блоке описания переменных VAR. Значением переменной является константа того же типа.

Каждая программа работает с данными. Данные – это в широком смысле слова объекты, которые обрабатывает программа. Тип данного – это его характеристика. От типа зависит:

· в каком виде будет храниться это данное,

· сколько ячеек памяти на его хранение будет отведено,

· какое минимальное и максимальное значение оно может принимать,

· какие операции с ним можно выполнять.

Некоторые простые типы данных Pascal:

1. Целые типы (ShortInt, Integer, LongInt, Byte, Word).

2. Вещественные типы (Real, Single, Double, Extended, Comp).

3. Логический (Boolean).

4. Символьный (Char).

5. Строковые типы (String, String [n]).

9. Безусловные операторы в Паскале. Описание и использование.

Вид оператора

goto <метка>;

Назначение – передача управления в программе на оператор, помеченный меткой <метка>. Меткой может выступать имя (написанное по правилам для имен языка) или целое число без знака, описанное в операторе описания метокLabel, и стоящее перед помеченным оператором, но только в одном месте программы. Метка отделяется от оператора символом «:».Переход на метку может встречаться в блоке несколько раз, но сама метка - только один раз. Если на какую-то метку нет передачи управления, ошибки не будет.

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

Отметим, что следующий за goto оператор должен быть также помечен другой меткой, (если goto не последний в группе операторов). В противном случае, на следующий заgoto оператор никак не попасть.

10. Операторы ветвления в Паскале. Описание и использование.

К операторам, позволяющим из нескольких возможных вариантов выполнения программы (ветвей) выбрать только один, относятся

Т.е. эти операторы позволяют изменить естественный порядок выполнения операторов программы.

if <условие> then < оператор 1 >

else <оператор 2> ;

if a>=b then Max:=a else Max:=b;

В операторе if по обеим ветвям (then и else) может выполняться только один оператор!

Пример задачи на операторы ветвления в паскале. Ввести два целых числа и вывести на экран наибольшее из них.

Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого.

Особенность: действия исполнителя зависят от некоторых условий (если … иначе …).

var a, b, max: integer;

writeln("Введите два целых числа");

if a > b then max:=a else max:=b;

writeln ("Наибольшее число ", max);

Сложные условия

Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических

операций:

Not – НЕ (отрицание, инверсия)

And – И (логическое умножение, конъюнкция,

одновременное выполнение условий)

Or – ИЛИ (логическое сложение, дизъюнкция,

выполнение хотя бы одного из условий)

Xor – исключающее ИЛИ (выполнение только

одного из двух условий, но не обоих)

Простые условия (отношения)

< <= > >= = <>

Порядок выполнения (приоритет = старшинство)

Выражения в скобках

<, <=, >, >=, =, <>

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

Оператор выбора case

Оператор case позволяет сделать выбор между несколькими вариантами.

Оператор варианта состоит

Øиз выражения, называемого селектором,

Øи списка операторов, каждый из которых отмечен константой того же типа, что и селектор.

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

Селектор может быть переменной или выражением.

Список констант может задаваться как явным перечислением, так и интервалом или их объединением. Повторение констант не

допускается.

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

Case < выражение {селектор}> of

<список констант 1> : < оператор 1>;

< список констант K> : < оператор K>;

Выполнение оператора case происходит следующим образом:

1)вычисляется значение селектора;

2)полученный результат проверяется на принадлежность к тому или иному списку констант;

3)если такой список найден, то дальнейшие проверки уже не производятся, а выполняется оператор, соответствующий

выбранной ветви, после чего управление передается оператору, следующему за ключевым словом end, которое закрывает всю

конструкцию case;

4)если подходящего списка констант нет, то выполняется оператор, стоящий за ключевым словом else; если else-ветви нет,

то не выполняется ничего.

В операторе ветвления case по всем ветвям может выполняться только один оператор!

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

case Index mod 4 of

1: x:= y*y – 2*y;

11.Оператор варианта (выбора) в Паскале. Описание и использование.

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

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

Case – выбор, вариант;

S – селектор, выражение порядкового типа;

Ki – константы выбора, константа, тип которой совпадает с типом селектора;

OPi – любой оператор в том числе пустой;

Оператор выбора реализует следующую конструкцию:

Работа оператора выбора в Паскале: Вычисляется выражение селектора. Вычисленное значение последовательно сравнивается с константами альтернатив и передается управление оператору константа выбора, которого совпадает с вычисленным значением селектора. Выполняется оператор и передается управление за пределы оператора выбора. Если вычисленное значение селектора не совпадает ни с одной из констант, то управление передается на ветвь Else, наличие которой, не обязательно в этом случае управление передается за пределы оператора выбора.

Структурная схема оператора выбора.

Структуру оператора выбора можно реализовать с помощью вложенных условных операторов, но это ухудшает наглядность программы. Рекомендуется не более 2-3 уровней вложений.

12. Виды операторов цикла в Паскале, их назначение.

5. Алгоритмические конструкции циклов. Виды циклов.

Существует три типа циклических алгоритмов: цикл с параметром (который называют арифметическим циклом), цикл с предусловием и цикл с постусловием (их называют итерационными).

12.13 Арифметический цикл. В арифметическом цикле число его шагов (повторений) однозначно определяется правилом изменения параметра, которое задается с помощью начального (N) и конечного (К) значений параметра и шагом (h) его изменения. Т.е., на первом шаге цикла значение параметра равно N, на втором - N + h, на третьем - N + 2h и т.д. На последнем шаге цикла значение параметра не больше К, но такое, что дальнейшее его изменение приведет к значению, большему, чем К.

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

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

FOR <имя счетчика цикла> = <начальное значение> ТО <конечное значение> DO <оператор>;

FOR, TO, DO - зарезервированные слова (англ.: для, до, выполнить);

<счетчик (параметр) цикла> - переменная типа INTEGER, которая изменяется на отрезке от <начального значения>, увеличиваясь на единицу в конце каждого шага цикла;

<оператор> - любой (чаще составной) оператор.

Существует другая форма этого оператора:

FOR <имя счетчика цикла>:= <начальное значение> DOWNTO <конечное значение> DO <оператор> :

Замена ТО на DOWNTO (англ.: вниз до) означает, что шаг изменения параметра цикла равен - 1 , т. е. происходит пошаговое уменьшение счетчика на единицу.

12.14 Цикл с предусловием. Количество шагов цикла заранее не определено и зависит от входных данных задачи. В данной циклической структуре сначала проверяется значение условного выражения (условие) перед выполнением очередного шага цикла. Если значение условного выражения истинно, исполняется тело цикла. После чего управление вновь передается проверке условия и т.д. Эти действия повторяются до тех пор, пока условное выражение не примет значение ЛОЖЬ. При первом же несоблюдении условия цикл завершается.

Этот наиболее часто используемый оператор повторения имеет вид:

WHILE <условие> DO <оператор>;

WHILE, DO - резервированные слова (англ.: пока, делать);

<условие> - выражение логического типа;

<оператор> - произвольный (возможно составной) оператор.

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

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

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

Этот оператор имеет вид:

REPEAT <тело цикла> UNTIL <условие>:

REPEAT, UNTIL - резервированные слова (англ.: повторять, пока не);

<условие> - выражение логического типа, если его значение истинно, то происходит выход из цикла.

Следует отметить, что в данной конструкции последовательность операторов, определяющих тело цикла, не заключается в операторные скобки BEGIN ... END, поскольку ими служит пара REPEAT ... UNTIL.

Циклы с постусловием похожи на циклы с предусловием, но в них условие находится после тела цикла.

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

Один из операторов тела цикла должен влиять на значение условия выполнения цикла, иначе цикл будет повторяться бесконечное число раз.

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

16. Массив - это множество однотипных элементов, объединённых общим именем и занимающих в компьютере определённую область памяти. Количество элементов в массиве всегда конечно. В общем случае массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве. В качестве элементов массива можно использовать любой тип данных, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк, массивов и т.д.Элементами массива могут быть данные любого типа, включая структурированные.Тип элементов массива называется базовым. Особенностью языка Паскаль является то, что число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Доступ к каждому отдельному элементу осуществляется путем индексирования элементов массива. Индексы представляют собой выражения любого скалярного типа (чаще целого), кроме вещественного. Тип индекса определяет границы изменения значений индекса. Для описания массива предназначено словосочетание array of (массив из).

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

17. Одномерный массив – это фиксированное количество элементов одного типа, объединенных одним именем, причем каждый элемент имеет свой уникальный номер, и номера элементов идут подряд.

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

Тип массив описывается следующим образом:

Имя типа = Array [тип индекса (ов)] Of тип элементов;

Имя переменной: имя типа;

Переменную типа массив можно описать сразу в разделе описания переменных Var:

Var Имя переменной: array [тип индекса (ов)] Of тип элементов;

Array – служебное слово (в переводе с английского означает «массив»);

Of – служебное слово (в переводе с английского означает «из»).

Тип индекса – любой порядковый тип, кроме типов integer, longint.

Тип же самих элементов может быть любым, кроме файлового типа.

Количество элементов массива называется его размерностью. Несложно подсчитать, что при последнем способе описания множества индексов размерность массива равна: максимальное значение индекса – минимальное значение индекса + 1.

Например:

mas = array of real;

Массив Х – одномерный, состоящий из двадцати элементов вещественного типа. Элементы массива хранятся в памяти компьютера последовательно друг за другом.

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

Индексы элементов массива могут начинаться с любого целого числа, в том числе и отрицательного, например:

Type bb = Array [-5..3] Of Boolean;

Массивы данного типа будут содержать 9 логических переменных, пронумерованных от -5 до 3.

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

Рассмотрим двумерный массив Паскаля размерностью 3*3, то есть в ней будет три строки, а в каждой строке по три элемента:

Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a 21 – это элемент, стоящий во второй строке и в первом столбце.

Описание двумерного массива Паскаля.

Существует несколько способов объявления двумерного массива Паскаля.

Мы уже умеем описывать одномерные массивы, элементы которых могут иметь любой тип, а, следовательно, и сами элементы могут быть массивами. Рассмотрим следующее описание типов и переменных:

Основные действия с двумерными массивами Паскаля

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

matrix= array of integer;

то в ходе выполнения программы можно присвоить матрице a значение матрицы b (a:= b). Все остальные действия выполняются поэлементно, при этом над элементами можно выполнять все допустимые операции, которые определены для типа данных элементов массива. Это означает, что если массив состоит из целых чисел, то над его элементами можно выполнять операции, определенные для целых чисел, если же массив состоит из символов, то к ним применимы операции, определенные для работы с символами.

21.Технологии работы с текстовыми документами. Текстовые редакторы и процессоры: назначение и возможности.

олее совершенные текстовые редакторы (например, Microsoft Word и OpenOffice.org Writer), которые называют иногда текстовыми процессорами, имеют широкий спектр возможностей по созданию документов (вставка списков и таблиц, средства проверки орфографии, сохранение исправлений и др.).

Для подготовки к изданию книг, журналов и газет в процессе макетирования издания используются мощные программы обработки текста - настольные издательские системы (например, Adobe PageMaker, Microsoft Office Publisher).

Для подготовки к публикации в Интернете Web-страниц и Web-сайтов используются специализированные приложения (например, Microsoft FrontPage).

Текстовые редакторы - это программы для создания, редактирования, форматирования, сохранения и печати документов. Современный документ может содержать, кроме текста, и другие объекты (таблицы, диаграммы, рисунки и т. д.).

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

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

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

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

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

Форматирование бумажных и электронных документов может существенно различаться. Для бумажных документов принято так называемое абсолютное форматирование. Печатный документ всегда форматируется под печатный лист известного размера (формата). Например, ширина строки документа зависит от ширины листа бумаги. Если документ был оформлен для печати на листах большого формата, то его нельзя напечатать на маленьких листочках - часть документа на них не поместится. Одним словом, форматирование печатного документа всегда требует предварительного выбора листа бумаги с последующей привязкой к этому листу. Для печатного документа всегда можно точно назвать (в любых единицах измерения) размеры шрифтов, полей, расстояний между строками или абзацами и т. п.

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

Автор электронного документа не знает также, какие шрифты имеются на компьютере будущего читателя, и потому не может жестко указать, каким шрифтом должны изображаться текст и заголовки. Но он может задать такое форматирование, при котором на любом компьютере заголовки будут выглядеть крупнее, чем текст.

Относительное форматирование используют для создания электронных документов Интернета (так называемых Web-страниц), а абсолютное - для создания печатных документов в текстовых процессорах.

22.Основные структурные элементы текстового документа. Шрифты, стили, форматы.

Форматирование шрифта (символов).

Символы – это буквы, цифры, пробелы, знаки пунктуации, специальные символы. Символы можно форматировать (изменять их внешний вид). Среди основных свойств символов можно выделить следующие: шрифт, размер, начертание и цвет.

Шрифт – это полный набор символов определенного начертания. Каждый шрифт имеет своё название, например Times New Roman, Arial, Comic Sans MS. Единицей измерения шрифта является пункт (1 пт = 0,367 мм). Размеры шрифтов можно изменять в больших пределах. Кроме нормального (обычного) начертания символов обычно применяют полужирное, курсивное, полужирное курсивное.

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

В векторных шрифтах символы описываются математическими формулами и возможно произвольное их масштабирование. Среди векторных шрифтов наибольшее распространение получили шрифты типа TrueType.

Можно также установить дополнительные параметры форматирования символов: подчеркивание символов различными типами линий, изменение вида символов (верхний и нижний индекс, зачеркнутый), изменение расстояний между символами.

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

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

24. База данных - это информационная модель, позволяющая упорядоченно хранить данные о группе объектов, обладающих одинаковым набором свойств.

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

Табличные базы данных.

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

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

Главное достоинство таблиц - в их понятности. С табличной информацией мы имеем дело практически каждый день. Загляните, например, в свой дневник: расписание занятий там представлено в виде таблицы. Когда мы приходим на вокзал, смотрим расписание электричек. Какой вид оно имеет? Это таблица! А еще есть таблица футбольного чемпионата. И журнал учителя, куда он выставляет вам оценки, - тоже таблица.

Кратко особенности реляционной базы данных можно сформулировать следующим образом:

1.Данные хранятся в таблицах, состоящих из столбцов («атрибутов», «полей») и строк («записей»);

2.На пересечении каждого столбца и строчки стоит в точности одно значение;

3.У каждого столбца есть своё имя, которое служит его названием, и все значения в одном столбце имеют один тип.

4.Запросы к базе данных возвращают результат в виде таблиц, которые тоже могут выступать как объект запросов.

5.Строки в реляционной базе данных неупорядочены - упорядочивание производится в момент формирования ответа на запрос.

6.Обычно информация в базах данных хранится не в одной таблице, а в нескольких взаимосвязанных.

В реляционных БД строка таблицы называется записью , а столбец - полем . Каждое поле таблицы имеет имя.

Поля - это различные характеристики (иногда говорят – атрибуты) объекта. Значения полей в одной строке относятся к одному объекту.

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

С каждым полем связано еще одно очень важное свойство – тип поля . Тип поля определяет множество значений, которые может принимать данное поле в различных записях.

В реляционных базах данных используются четыре основных типа поля:

Числовой;

Символьный;

Логический.

25. Системы управления базами данных и принципы работы с ними. Поиск, удаление и сортировка данных в БД. Условия поиска (логические выражения); порядок и ключи сортировки.

Системы управления базами данных (СУБД).

Для создания баз данных, а также выполнения операции поиска и сортировки данных предназначены специальные программы - системы управления базами данных (СУБД).

Таким образом, необходимо различать собственно базы данных (БД) - упорядоченные наборы данных, и системы управления базами данных (СУБД) - программы, управляющие хранением и обработкой данных. Например, приложение Access, входящее в офисный пакет программ Microsoft Office, является СУБД, позволяющей пользователю создавать и обрабатывать табличные базы данных.

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

Работа с СУБД начинается с создания структуры базы данных, т. е. с определения:

количества столбцов;

названий столбцов;

типов столбцов (текст/число/дата);

ширины столбцов.

Основные функции СУБД:

Управление данными во внешней памяти (на дисках);

Управление данными в оперативной памяти;

Журнализация изменений и восстановление базы данных после сбоев;

Поддержание языков БД (язык определения данных, язык манипулирования данными).

В командах СУБД условие выбора записывается в форме логического выражения.

Логическое выражение, подобно математическому выражению, выполняется (вычисляется), но в результате получается не число, а логическое значение: истина (true) или ложь (false).

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

Часто встречаются задачи, в которых используются не отдельные условия, а совокупность связанных между собой условий (отношений). Например, нужно выбрать учеников у которых вес больше 60 и рост меньше 168.

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

Объединение двух (или нескольких) высказываний в одно с помощью союза «и» называется операцией логического умножения или конъюнкцией.

В результате логического умножения (конъюнкции) получается истина, если истинны все логические выражения.

Объединение двух (или нескольких) высказываний с по мощью союза «или» называется операцией логического сложения или дизъюнкцией.

В результате логического сложения (дизъюнкции) получается истина, если истинно хотя бы одно логическое выражения.

Присоединение частицы «не» к высказыванию называется операцией логического отрицания или инверсией.

27. Электронные таблицы, назначение и основные функции.

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

Электронная таблица состоит из столбцов и строк. Заголовки столбцов обозначаются буквами или сочетаниями букв (A, G, АВ и т. п.), заголовки строк - числами (1, 16, 278 и т. п.). Ячейка - место пересечения столбца и строки.

Каждая ячейка таблицы имеет свой собственный адрес. Адрес ячейки электронной таблицы составляется из заголовка столбца и заголовка строки, например: А1, F123, R1. Ячейка, с которой производятся какие-то действия, выделяется рамкой и называется активной.

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

Числа в электронных таблицах Excel могут быть записаны в обычном числовом или экспоненциальном формате, например: 195,2 или 1,952Е + 02. По умолчанию числа выравниваются в ячейке по правому краю. Это объясняется тем, что при размещении чисел друг под другом (в столбце таблицы) удобно иметь выравнивание по разрядам (единицы под единицами, десятки под десятками и т. д.).

Формула должна начинаться со знака равенства и может включать в себя числа, имена ячеек, функции (Математические, Статистические, Финансовые, Дата и время и т. д.) и знаки математических операций. Например, формула «=А1+B2» обеспечивает сложение чисел, хранящихся в ячейках А1 и B2, а формула «=А1*B» - умножение числа, хранящегося в ячейке А1, на 5. При вводе формулы в ячейке отображается не сама формула, а результат вычислений по этой формуле. При изменении исходных значений, входящих в формулу, результат пересчитывается немедленно.

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

Относительная ссылка в формуле используется для указания адреса ячейки, вычисляемого относительно ячейки, в которой находится формула. При перемещении или копировании формулы из активной ячейки относительные ссылки автоматически обновляются в зависимости от нового положения формулы. Относительные ссылки имеют следующий вид: А1, BЗ.

Если символ доллара стоит перед буквой (например: $A1), то координата столбца абсолютная, а строки - относительная. Если символ доллара стоит перед числом (например, А$1), то, наоборот, координата столбца относительная, а строки - абсолютная. Такие ссылки называются смешанными.

Пусть, например, в ячейке С1 записана формула =A$1+$J31, которая при копировании в ячейку D2 приобретает вид =В$1+$B2. Относительные ссылки при копировании изменились, а абсолютные - нет.

Сортировка и поиск данных. Электронные таблицы позволяют осуществлять сортировку данных. Данные в электронных таблицах сортируются по возрастанию или убыванию. При сортировке данные выстраивают - ся в определенном порядке. Можно проводить вложенные сортировки, т. е. сортировать данные по нескольким столбцам, при этом назначается последовательность сортировки столбцов.

В электронных таблицах возможен поиск данных в соответствии с указанными условиями - фильтрами. Фильтры определяются с помощью условий поиска (больше, меньше, равно и т. д.) и значений (100, 10 и т. д.). Например, больше 100. В результате поиска будут найдены те ячейки, в которых содержатся данные, удовлетворяющие заданному фильтру.

Построение диаграмм и графиков. Электронные таблицы позволяют представлять числовые данные в виде диаграмм или графиков. Диаграммы бывают различных типов (столбчатые, круговые и т. д.); выбор типа диаграммы зависит от характера данных.

28. Технология обработки информации в электронных таблицах (ЭТ). Структура электронной таблицы.

Электронная таблица - это программа обработки числовых данных, хранящая и обрабатывающая данные в прямоугольных таблицах. Электронная таблица состоит из столбцов и строк. Заголовки столбцов обозначаются буквами или сочетаниями букв (A, G, АВ и т. п.), заголовки строк - числами (1, 16, 278 и т. п.). Ячейка - место пересечения столбца и строки. Каждая ячейка таблицы имеет свой собственный адрес. Адрес ячейки электронной таблицы составляется из заголовка столбца и заголовка строки, например: Al, B5, E7. Ячейка, с которой производятся какие-то действия, выделяется рамкой и называется активной. Электронные таблицы, с которыми работает пользователь в приложении, называются рабочими листами. Можно вводить и изменять данные одновременно на нескольких рабочих листах, а также выполнять вычисления на основе данных из нескольких листов. Документы электронных таблиц могут включать несколько рабочих листов и называются рабочими книгами.

29. Типы данных в электронных таблицах (ЭТ): числа, формулы, текст. Правила записи формул.

Типы данных.

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

Числа в электронных таблицах Excel могут быть записаны в обычном числовом или экспоненциальном формате, например: 195,2 или 1.952Ё + 02. По умолчанию числа выравниваются в ячейке по правому краю. Это объясняется тем, что при размещении чисел друг под другом (в столбце таблицы) удобно иметь выравнивание по разрядам (единицы под единицами, десятки под десятками и т. д.).

Текстом в электронных таблицах Excel является последовательность символов, состоящая из букв, цифр и пробелов, например запись «32 Мбайт» является текстовой. По умолчанию текст выравнивается в ячейке по левому краю. Это объясняется традиционным способом письма (слева направо).

Формула должна начинаться со знака равенства и может включать в себя числа, Имена ячеек, функции (Математические, Статистические, Финансовые, Дата и время и т.д.) и знаки математических: операций. Например, формула «=А1+В2» обеспечивает сложение чисел, хранящихся в ячейках А1 и В2, а формула «=А1*5» - умножение числа, хранящегося в ячейке А1, на 5. При вводе формулы в ячейке отображается не сама формула, а результат вычислений по этой формуле. При изменении исходных значений, входящих в формулу, результат пересчитывается немедленно.

Правила записи формул в электронных таблицах

1. Формулы содержат числа, имена ячеек, знаки операций, круглые скобки, имена функций

2. Арифметические операции и их знаки:

Название операции Знак Комбинация клавиш

сложение + {Shift + +=}или {+} на дополнительной клавиатуре

вычитание – {-}

умножение * {Shift + 8} или {*}на дополнительной клавиатуре

деление / {Shift + | \} или {/}на дополнительной клавиатуре

возведение в степень ^ {Shift + 6} на английском

3. Формула пишется в строку, символы последовательно выстраиваются друг за другом, проставляются все знаки операций; используются круглые скобки.

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

1. возведение в степень

2. умножение, деление

3. сложение, вычитание

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

5. Формулы можно вводить в режиме отображения расчетов, т.е. запись формулы в текущую ячейку пользователь начинает со знака = и в ячейке после нажатия клавиши Enter отображается результат вычисления по формуле.

6. Формулы можно вводить в режиме отображения формул, т.е. пользователь в текущую ячейку записывает формулу без знака = и в ячейке после нажатия клавиши Enter отображается формула.

30.Основные встроенные функции. Абсолютные и относительные ссылки в элект-ронных таблицах (ЭТ).

Относительная ссылка в формуле используется для указания адреса ячейки, вычисляемого относительно ячейки, в которой находится формула. При перемещении или копировании формулы из активной ячейки относительные ссылки автоматически обновляются в зависимости от нового положения формулы. Относительные ссылки имеют следующий вид: А1, ВЗ.

Абсолютная ссылка в формуле используется для указания фиксированного адреса ячейки. При перемещении или копировании формулы абсолютные ссылки не изменяются. В абсолютных ссылках перед неизменяемым значением адреса ячейки ставится знак доллара (например, $А$1).

Если символ доллара стоит перед буквой (например: $А1), то координата столбца абсолютная, а строки - относительная. Если символ доллара стоит перед числом (например, А$1), то, наоборот, координата столбца относительная, а строки - абсолютная. Такие ссылки называются смешанными. Пусть, например, в ячейке С1 записана формула =А$1+$В1, которая при копировании в ячейку D2 приобретает вид =В$1+$В2. Относительные ссылки при копировании изменились, а абсолютные - нет.

Типы данных языка Паскаль

Любые данные (константы, переменные, значения функций или выражения) в Турбо Паскале характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Тип также определяет формат внутреннего представления данных в памяти компьютера.

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

1) Простые типы:

– вещественные;

– символьные;

– булевские (логические);

– перечисляемые;

– ограниченные (диапазонные).

2) Составные (структурированные) типы:

– регулярные (массивы);

– комбинированные (записи);

– файловые;

– множественные;

– строковые;

– объекты.

3) Ссылочные типы (типизированные и нетипизированные указатели).

4) Процедурные типы.

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

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

Таблица 6

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

Целые переменные описываются с использованием указанных выше зарезервированных слов:

i, j, k: integer;

Данные целого типа хранятся в памяти точно. Например, переменные типа integer занимают в памяти 2 байта (16 бит), которые распределяются следующим образом: 1 бит отводится для хранения знака числа (0, если число положительное, и 1, если число отрицательное) и 15 бит для хранения числа в двоичной системе счисления. Максимальное десятичное число, которое можно записать как двоичное в 15 бит – это 32767.

При использовании процедур и функций с целочисленными параметрами следует руководствоваться «вложенностью» типов, т.е. везде где используется word, допускается использование byte (но не наоборот), в longint «входит» integer, который, в свою очередь, включает в себя shortint.

Для целого типа определены пять основных операций, результатом которых также является целое число: +, -,*, div, mod (сложение, вычитание, умножение, целочисленное деление и остаток от целочисленного деления). В арифметических выражениях операции *, div, mod имеют более высокий приоритет по сравнению с операциями +, -. Примеры записи выражений:

Перечень процедур и функций, применимых к целочисленным типам, приведен в табл. 7. Буквами b, s, w, i, l обозначены выражения соответственно типа byte, shortint, word, integer, и longint; x – выражение любого из этих типов; идентификаторы vb, vs, vw, vi, vl, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.

Таблица 7

Стандартные процедуры и функции, применимые к целым типам

Обращение Тип результата Действие
Abs (x) x Возвращает модуль x
Chr (b) Char Возвращает символ по его коду
Dec (vx [, i]) - Уменьшает значение vx на i, а при отсутствии i – на 1
Inc (vx [, i]) - Увеличивает значение vx на i, а при отсутствии i – на 1
Hi (i) Byte Возвращает старший байт аргумента
Hi (i) Byte То же
Lo (i) Byte Возвращает младший байт аргумента
Lo (w) Byte То же
Odd (l) Byte Возвращает true, если аргумент – нечетное число
Random (w) Как у параметра Возвращает псевдослучайное число, равномерно распределенное в диапазоне 0…(w-1)
Sqr (x) x Возвращает квадрат аргумента
Swap (i) Integer
Swap (w) Word Меняет местами байты в слове
Succ(x) Как у параметра Возвращает следующее целое значение, т.е. x+1
Pred(x) Как у параметра Возвращает предшествующее целое значение, т.е. x-1

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

Вещественный тип. Значения вещественных типов определяют произвольное число с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа. В Турбо-Паскале существуют пять вещественных типов (табл. 8).

Таблица 8

Вещественные типы данных

Вещественные переменные описываются с использованием указанных выше зарезервированных слов:

Вещественное число в памяти компьютера состоит из 3-х частей:

Знаковый разряд числа;

Экспоненциальная часть;

Мантисса числа.

Мантисса имеет длину от 23 (Single) до 63 (Extended) двоичных разрядов, что и обеспечивает точность 7-8 для Single и 19-20 для Extended десятичных цифр. Десятичная точка (запятая) подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом ее положение сдвигается влево или вправо в соответствии с двоичным порядком числа, хранящимся в экспоненциальной части, поэтому действия над вещественными числами называют арифметикой с плавающей точкой (запятой).

Доступ к типам Single, Double и Extended осуществляется только при особых режимах компиляции. Для включения данных режимов следует выбрать пункт меню Options , Compiler… и включить опцию 8087/80287 в группе Numeric processing .

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



Вещественные числа задаются в десятичной системе счисления в одной из двух форм .

В форме с фиксированной точкой запись состоит из целой и дробной частей, отделенных друг от друга точкой, например:

0.087 4.0 23.5 0.6

В форме с плавающей точкой запись содержит букву Е, которая означает «умножить на десять в степени», причем степень является целым числом, например:

7Е3 6.9Е-8 0.98Е-02 45Е+04

Над объектами вещественного типа определены следующие операции: +, -, *, /.

Операции «*» и «/» имеют более высокий приоритет по сравнению с операциями «+» и «-».

Если хотя бы один операнд вещественный, то операции +, -, *, / приводят к вещественному результату. Операция деления / приводит к вещественному результату и в случае двух целых операндов, например: 9/3 = 3.0.

Для работы с вещественными данными могут использоваться стандартные математические функции, представленные в табл. 9. Результат работы этих функций также является вещественным.

Таблица 9

Математические функции, работающие с вещественными данными

Переменные и константы типа REAL запрещается использовать:

– в функциях pred(x), succ(x), ord(x);

– в качестве индексов массивов;

– в качестве меток в операторах передачи управления;

– в качестве управляющих переменных (параметров цикла).

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

trunc(x) – целая часть х (х – вещественное);

round(x) – округление до ближайшего целого (х- вещественное).

Символьный тип. Символьные переменные описываются с помощью зарезервированного слова char:

Значения этого типа выбираются из упорядоченного множества символов (из множества ASCII), состоящего из 256 символов. Каждому символу приписывается целое число из диапазона 0..255. Например, прописные буквы латинского алфавита A..Z имеют коды 65..90, а строчные буквы – коды 97..122.

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

‘F’ ‘8’ ‘*’

Символьные переменные можно сравнивать между собой, при этом сравниваются коды символов.

Существуют функции, которые устанавливают соответствие между символом и его кодом:

ord(с) – выдает номер символа с;

chr(i) – выдает символ с номером i.

Эти функции являются обратными по отношению друг к другу.

Логический тип . Логические переменные описываются с помощью зарезервированного слова boolean:

p1, p2: boolean;

Переменные логического типа принимают два значения: true (истина), false (ложь).

Эти величины упорядочены следующим образом: false < true. false имеет порядковый номер 0, true имеет порядковый номер 1.

Переменным логического типа можно либо присвоить значение непосредственно, либо использовать логическое выражение. Например,

a, d, g, b: boolean;

Операции отношения (<, <=, >, >=, =, <>), применяемые к целым, вещественным и символьным переменным, дают логический результат.

Логические операции над операндами логического типа также дают логический результат (операции приведены в порядке убывания приоритета) (подробнее см. табл. 3 и 5):

not – отрицание (операция НЕ);

and – логическое умножение (операция И);

or – логическое сложение (операция ИЛИ);

xor – исключающее ИЛИ.

Выражение (not a) имеет значение, противоположное значению а.

Выражение (a and b) дает значение true, если только и а и b имеют значение true, в остальных случаях значение этого выражения есть false.

Выражение (a or b) дает значение false, если только и а и b имеют значение false, во всех остальных случаях результат true.

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

x = (w1, w2, …, wn);

где х – имя типа, w1, w2,…, wn – значения, которые может принимать переменная типа х.

Эти значения являются упорядоченными w1

К аргументу w перечисляемого типа применимы следующие стандартные функции:

succ(w), pred(w), ord(w).

color=(red, black, yellow, green)

ww=(left, up, right, down);

f: array of ww;

succ(d) = yellow;

Переменные а и в имеют тип w. они могут принимать одно из трех значений, причем on

К величинам перечисляемого типа применимы операции отношения: =, <>, <=, >=, <, >.

Допускается указывать константы перечисляемого типа непосредственно в разделе var без использования раздела type , например

c,d: (red, black, yellow, green);

Диапазонный (ограниченный) тип . При определении ограниченного типа указывают начальное и конечное значения, которые может принимать переменная диапазонного типа. Значения разделяют двумя точками.

Описание ограниченного типа имеет вид

Здесь а – имя типа, min, max – константы.

При задании ограниченного типа должны выполняться следующие правила:

– обе граничные константы min и max должны быть одинакового типа;

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

col = red.. yellow;

letter = ‘a’..’f’;

– переменные ограниченного типа можно описать в разделе var, не обращаясь к разделу type:

– ограниченный тип наследует все свойства базового типа, из которого он создается;

– граница min всегда должна быть меньше границы max.

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

a: array of t2;

где а – имя массива, array , of – служебные слова (означают «массив из…»), t1 – тип индексов; t2 – тип компонент (базовый тип).

Количество индексов определяет размерность массива. Индексы могут быть целого (кроме longint), символьного, логического, перечисляемого и диапазонного типов. Индексы разделяются запятыми и заключаются в квадратные скобки. Компоненты массива могут быть любого типа, кроме файлового.

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

4.6 6.23 12 -4.8 0.7

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

c: array of real;

По конкретному значению индекса можно выбрать определенную компоненту массива (например, C означает третий элемент массива С, т.е. число 12).

Пример 2. Рассмотрим двумерный массив В (матрицу В), значением которого является таблица из целых чисел:

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

b of integer;

Здесь b – имя массива, первый индекс является номером строки и принимает значения от 1 до 2, второй – номер столбца и принимает значения от 1 до 4. По конкретным значениям индексов можно выбрать определенную компоненту массива (например, b означает элемент таблицы, стоящий в первой строке и третьем столбце, т.е. число -4).

Индексы могут быть произвольными выражениями, соответствующими типу индексов из описания массива:

a: array of real;

a[(i+1)*2] := 24;

Набор операций над элементами массива полностью определяется типом этих элементов.

Строковый тип . Строковый тип – множество символьных цепочек произвольной длины (от нуля до заданного числа). Переменные строкового типа описываются с помощью служебного слова string :

b: string ;

Особенности:

– значение строковой переменной может быть введено с помощью клавиатуры, присвоено в операторе присваивания, прочитано из файла. При этом длина введенной строки может быть любой (меньше указанного размера, равна размеру или больше, в последнем случае, лишние символы отбрасываются); a:= ‘Результаты’;

– допускается использовать операцию конкатенации в операторе присваивания, так как строки могут динамически изменять свою длину: а:= a + ‘ вычислений’;

– максимальная длина строковой переменной 255 символов, это указание длины может быть опущено:

a: string ;

a1: string ;

Переменные а и а1 – одинаковы (эквивалентное описание).

– память под переменные строкового типа отводится по максимуму, но используется лишь часть памяти, реально занятая символами строки в данный момент. Для описания строковой переменной длины n используется n+1 байт памяти: n байтов - для хранения символов строки, n+1 –й байт – для хранения текущей длины.

– над значениями строковых типов определены операции сравнения: < <= > >= = <>. Короткая строка всегда меньше длинной. Если строки имеют одинаковую длину, то сравниваются коды символов.

– возможен доступ к отдельным элементам строки аналогично доступу к элементам массива: а, a. В квадратных скобках указывается номер элемента строки.

Процедуры и функции, ориентированные на работу со строками.

concat (s1, s2,…) – функция слияния строк, s1, s2, …- строки, число строк может быть произвольным. Результатом работы функции является строка. Если длина результирующей строки больше 255 символов, то строка усекается до 255 символов.

copy (s, index, count) – функция выделения строки из исходной строки s длиной count символов, начиная с символа под номером index .

delete (s, index, count) – процедура удаления из строки s подстроки длиной count символов, начиная с символа с номером index .

insert (s1, s2, index) – процедура вставки строки s1 в строку s2 , начиная с символа с номером index .

length(s) – функция определения текущей длины строки, возвращает число равное текущей длине строки.

pos(s1, s2) – функция поиска в строке s2 подстроки s1 . выдает номер позиции первого символа подстроки s1 в строке s2 (или 0, если этой строки нет).

val (st, x, code) – процедура преобразования строки s в целую или вещественную переменную x . Параметр code содержит 0, если преобразование прошло успешно (и в x помещается результат преобразования), или номер позиции строки, где обнаружен ошибочный символ (в таком случае значение x не меняется).

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

Два типа считаются совместимыми, если:

– оба они есть один и тот же тип;

– оба вещественные;

– оба целые;

– один тип есть тип-диапазон второго типа;

– оба являются типами диапазонами одного и того же базового типа;

– оба являются множествами, составленными из элементов одного и того же базового типа;

– оба являются упакованными строками (определены с предшествующим словом packed) одинаковой максимальной длины;

– один есть тип-строка, а другой – тип-строка или символ;

– один тип есть любой указатель, а другой – указатель на родственный ему объект;

– оба есть процедурные типы с одинаковым типом результата (для типа-функции), количеством параметров и типом взаимно соответствующих параметров.

Совместимость типов приобретает особое значение в операторах присваивания. Пусть t1 – тип переменной, а t2 – тип выражения, то есть выполняется присваивание t1:=t2. Это присваивание возможно в следующих случаях:

– t1 и t2 есть один и тот же тип, и этот тип не относится к файлам, массивам файлов, записям, содержащим поля-файлы, или массивам таких записей;

– t1 и t2 являются совместимыми порядковыми типами, и значение t2 лежит в диапазоне возможных значений t1;

– t1 и t2 являются вещественными типами, и значение t2 лежит в диапазоне возможных значений t1;

– t1 – вещественный тип и t2 – целый тип;

– t1 – строка и t2 – символ;

– t1 – строка и t2 – упакованная строка;

– t1 и t2 – совместимые упакованные строки;

– t1 и t2 – совместимые множества и все члены t2 принадлежат множеству возможных значений t1;

– t1 и t2 – совместимые указатели;

– t1 и t2 – совместимые процедурные типы;

– t1 – объект и t2 – его потомок.

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

При явном преобразовании типов вызываются специальные функции преобразования, аргументы которых принадлежат одному типу, а значения – другому. Пример – уже рассмотренные функции ord, trunc, round, chr.

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

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

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

На занятии рассматриваются основные стандартные типы данных в Паскаль, понятие переменной и константы; объясняется, как работать с арифметическими операциями

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

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

Рассмотрим наиболее распространенные в Pascal типы данных.

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

Тип Диапазон Требуемая память (байт)
byte 0..255 1
shortint -128..127 1
integer -32768.. 32767 2
word 0..65535 2
longint -2147483648..2147483647 4

Нужно иметь в виду, что при написании программ в паскале integer (в переводе с англ. целое) является наиболее часто используемым, так как диапазон значений наиболее востребуем. Если необходим более широкий диапазон, используется longint (long integer, в переводе с англ. длинное целое). Тип byte в Паскале используется, когда нет необходимости работать с отрицательными значениями, то же самое касается и типа word (только диапазон значений здесь значительно больше).

Примеры того, как описываются (объявляются) переменные в Паскале:

program a1; var x,y:integer; {целочисленный тип} myname:string; {строковый тип} begin x:=1; y:=x+16; myname:="Петр"; writeln ("имя: ",myname, ", возраст: ", y) end.

Результат:
имя: Петр, возраст: 17

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

Обратите внимание на то, как используются комментарии в Паскале . В примере комментарии, т.е. служебный текст, который «не видим» для компилятора, заключаются в фигурные скобки. Обычно комментарии делаются программистами с целью пояснения фрагментов кода.

Задача 3. Население Москвы равняется а=9000000 жителей. Население Нью-Васюков равняется b=1000 жителей. Напишите программу, которая определяет разницу в числе жителей между двумя городами. Используйте переменные величины

Вещественные типы данных в Паскаль

Вещественные числа в Паскале и вообще в программировании — это название дробных чисел.

Тип Диапазон Требуемая память (байт)
real 2.9 * 10E-39 .. 1.7 * 10E38 6
single 1.5 * 10 E-45 .. 3.4 * 10E38 4
double 5 * 10E-324 .. 1.7 * 10E308 8
extended 1.9 * 10E-4951 .. 1.1 * 10E4932 10

Тип real в Паскале — наиболее часто используемый из вещественных типов.

Выше были представлены простые типы данных в Паскаль, к которым относятся:

  • Порядковые
  • Целые
  • Логические
  • Символьные
  • Перечисляемые
  • Интервальные
  • Вещественные

Для вывода значений переменных вещественного типа обычно используется форматированный вывод:

  • в формате используется либо одно число, означающее число позиций, отводимых на это число в экспоненциальной форме;
  • p:=1234.6789; Writeln(p:6:2); {1234.68}

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

    Константы в Паскале

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

    Объявление константы в Паскале происходит до объявления переменных (до служебного слова var) и выглядит следующим образом:

    Пример описания константы в Паскале:

    1 2 3 4 5 6 const x= 17 ; var myname: string ; begin myname: = "Петр" ; writeln ("имя: " , myname, ", возраст: " , х) end .

    const x=17; var myname:string; begin myname:="Петр"; writeln ("имя: ",myname, ", возраст: ", х) end.

    «Красивый» вывод целых и вещественных чисел

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


    Арифметические операции в Паскале

    Порядок выполнения операций

    1. вычисление выражений в скобках;
    2. умножение, деление, div, mod слева направо;
    3. сложение и вычитание слева направо.

    Стандартные арифметические процедуры и функции Pascal

    Здесь стоит более подробно остановиться на некоторых арифметических операциях.

    • Операция inc в Паскале, произносимая как инкремент, это стандартная процедура pascal, которая обозначает увеличение на единицу.
    • Пример операции inc:

      x:=1; inc(x); {Увеличивает x на 1, т.е. x=2} writeln (х)

      Более сложное использование процедуры inc:
      Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.

    • Аналогично работает процедура Dec в Паскале: Dec(x) — уменьшает x на 1 (декремент) или Dec(x,n) — уменьшает x на n.
    • Оператор abs представляет собой модуль числа. Работает следующим образом:
    • a: =- 9 ; b: = abs (a) ; { b = 9}

      a:=-9; b:=abs(a); { b = 9}

    • Оператор div в паскале является часто используемым, так как целый ряд задач связан с действием деление нацело.
    • Остаток от деления или оператор mod в pascal тоже незаменим при решении ряда задач.
    • Заслуживающей внимания является стандартная функция odd Паскаля, которая определяет, является ли целое число нечетным. Т. е. возвращает true (истина) для нечетных чисел, false (ложь) для четных чисел.
    • Пример использования функции odd:

      var x:integer; begin x:=3; writeln(sqr(x)); {ответ 9} end.

    • Операция возведение в степень в Паскале отсутствует как таковая. Но для того чтобы возвести в степень число можно использовать функцию exp .
    • Формула такая: exp(ln(a)*n) , где а — число, n — степень (а>0).

      Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:

      var x:integer; begin x:=9; writeln(sqrt(x)); {ответ 3} end.

    Задача 4. Известны размеры спичечной коробки: высота — 12.41 см., ширина — 8 см., толщина — 5 см. Вычислить площадь основания коробки и ее объем
    (S=ширина * толщина, V=площадь*высота)

    Задача 5. В зоопарке три слона и довольно много кроликов, причем количество кроликов часто меняется. Слону положено съедать в сутки сто морковок, а кролику — две. Каждое утро служитель зоопарка сообщает компьютеру количество кроликов. Компьютер в ответ на это должен сообщить служителю общее количество морковок, которые сегодня нужно скормить кроликам и слонам.

    Задача 6. Известно, что x кг конфет стоит a рублей. Определите, сколько стоит y кг этих конфет, а также, сколько килограмм конфет можно купить на k рублей. Все значения вводит пользователь.

    ЛЕКЦИЯ 2

    Основы программирования.

    Введение в Pascal. Типы данных. Операции.

    Алфавит языка Pascal

    Любой естественный язык состоит из таких элементов, как символы, слова, словосочетания, предложения. В языке программирования также есть аналогичные элементы: символы, слова, выражения (словосочетания), операторы (предложения).

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

    Алфавит языка Pascal состоит из:

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

    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - прописные буквы;

    A b c d e f g h i j k l m n o p q r s t u v w x y z - строчные буквы;

    2. десятичные арабские цифры: 0 1 2 3 4 5 6 7 8 9;

    3. шестнадцатеричные цифры (строятся из десятичных цифр и букв от A до F);

    4. 32 прописные и строчные буквы русского алфавита;

    5. специальные символы:

    Комбинации специальных символов могут образовывать составные символы:

    : = присваивание;

    < > не равно;

    >= больше или равно;

    <= меньше или равно;

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

    (* *) или { }- комментарий.

    Структура Pascal-программы

    Для того чтобы Pasсal-компилятор правильно понял, какие именно действия от него ожидаются, ваша программа должна быть оформлена в полном соответствии с синтаксисом (правилами построения программ) этого языка.

    Любая Pascal-программа может состоять из следующих блоков (квадратными скобками здесь и далее помечены необязательные части):

    program <имя_программы>;

    [ uses <имена_подключаемых_модулей>;]

    [ label <список_меток>;]

    [ const <имя_константы> = <значение_константы>;]

    [ type <имя_типа> = <определение_типа>;]

    [ var <имя_переменной> : <тип_переменной>;]

    [ procedure <имя_процедуры> <описание_процедуры>;]

    [ function <имя_функции> <описание_функции>;]

    begin {начало основного тела программы}

    <операторы>

    end. (* конец основного тела программы *)

    Поздние версии компиляторов языка Pascal уже не требуют указывать название программы, то есть строку program <имя_программы>; можно опустить. Но это возможно только в том случае, если вся программа содержится в одном модуле-файле. Если же программа состоит из нескольких самостоятельных кусков - модулей, то каждый из них должен иметь заголовок (program или unit).

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

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

    Директивы компилятора

    Строка, начинающаяся символами {$, является не комментарием, а директивой компилятора - специальной командой, от которой зависит процесс компиляции и выполнения программы. Директивы мы будем рассматривать в тех разделах, к которым они относятся "по смыслу".

    Например, строка {$I-,Q+} отключает контроль правильности ввода-вывода, но включает контроль переполнения при вычислениях.

    Идентификаторы

    Имена, даваемые программным объектам (константам, типам, переменным, функциям и процедурам, да и всей программе целиком) называются идентификаторами. Они могут состоять только из цифр, латинских букв и знака "_" (подчеркивание). Однако цифра не может начинать имя. Идентификаторы могут иметь любую длину, но если у двух имен первые 63 символа совпадают, то такие имена считаются идентичными.

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

    Приведем список наиболее часто встречающихся зарезервированных слов:

    array implementation shl

    case interface string

    const label then

    file pointer uses

    far procedure var

    for program while

    forward record with

    function repeat xor

    Переменные и типы данных

    Переменная - это программный объект, значение которого может изменяться в процессе работы программы.

    Тип данных - это характеристика диапазона значений, которые могут принимать переменные, относящиеся к этому типу данных.

    Все используемые в программе переменные должны быть описаны в специальном разделе var по следующему шаблону:

    var <имя_переменной_1> [, <имя_переменной_2, _>] : <имя_типа_1>;

    <имя_переменной_3> [, <имя_переменной_4, _>] : <имя_типа_2>;

    Язык Pascal обладает большим набором разнообразных типов данных, однако сейчас мы укажем лишь некоторые из них. Обо всех же типах данных мы поговорим далее.

    Константы

    Константа - это объект, значение которого известно еще до начала работы программы.

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

    В языке Pascal существует три вида констант:

    Неименованные константы (цифры и числа, символы и строки, множества);

    Именованные нетипизированные константы;

    Именованные типизированные константы.

    Неименованные константы

    Неименованные константы не имеют имен, и потому их не нужно описывать.

    Тип неименованной константы определяется автоматически, по умолчанию:

    Любая последовательность цифр (возможно, предваряемая знаком "-" или "+" или разбиваемая одной точкой) воспринимается компилятором как неименованная константа - число (целое или вещественное);

    Любая последовательность символов, заключенная в апострофы, воспринимается как неименованная константа - строка;

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

    Кроме того, существуют две специальные константы true и false, относящиеся к логическому типу данных.

    Примерами использования неименованных констант могут послужить следующие операторы:

    real2:= 12.075 + х;

    string4:= "abc" + string44;

    set5:= * set55;

    boolean6:= true;

    Нетипизированные константы

    Именованные константы, как следует из их названия, должны иметь имя. Стало быть, эти имена необходимо сообщить компилятору, то есть описать в специальном разделе const.

    Если не указывать тип константы, то по ее внешнему виду компилятор сам определит, к какому (базовому) типу ее отнести. Любую уже описанную константу можно использовать при объявлении других констант, переменных и типов данных. Вот несколько примеров описания нетипизированных именованных констант:

    Типизированные константы

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

    Описание типизированных констант производится по следующему шаблону:

    const <имя_константы> : <тип_константы> = <начальное_значение>;

    Из приведенных ниже примеров видно, как это сделать:

    const n: integer = -10;

    b: boolean = true;

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

    Типы данных языка Pascal

    Компиляторы языка Pascal требуют, чтобы сведения об объеме памяти, необходимой для работы программы, были предоставлены до начала ее работы. Для этого в разделе описания переменных (var) нужно перечислить все переменные, используемые в программе. Кроме того, необходимо также сообщить компилятору, сколько памяти каждая из этих переменных будет занимать.

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

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

    Разделение на базовые и конструируемые типы данных в языке Pascal показано в таблице:

    Порядковые(дискретные) типы данных

    Адресные типы данных

    Структурированные типы данных

    Арифметические типы данных

    Базовые типы данных

    Логический

    Символьный

    Вещественные

    Нетипизи

    рованный указатель

    Конструируемые типы

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

    week = (su, mo, tu, we, th, fr,sa);

    Типизированный указатель

    Массив array

    Строка string

    Запись record

    Процедурный

    Объектный

    Интервал (диапазон)

    Типы данных, конструируемые программистом

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

    Среди базовых типов данных особо выделяются порядковые типы. Такое название можно обосновать двояко:

    1. Каждому элементу порядкового типа может быть сопоставлен уникальный (порядковый) номер. Нумерация значений начинается с нуля. Исключение - типы данных shortint, integer и longint. Их нумерация совпадает со значениями элементов.

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

    Стандартные подпрограммы, обрабатывающие порядковые типы данных

    Только для величин порядковых типов определены следующие функции и процедуры:

    1.Функция ord(x) возвращает порядковый номер значения переменной x (относительно того типа, к которому принадлежит переменная х).

    2.Функция pred(x) возвращает значение, предшествующее х (к первому элементу типа неприменима).

    3.Функция succ(x) возвращает значение, следующее за х (к последнему элементу типа неприменима).

    4.Процедура inc(x) возвращает значение, следующее за х (для арифметических типов данных это эквивалентно оператору x:=x+1).

    5.Процедура inc(x,k) возвращает k-е значение, следующее за х (для арифметических типов данных это эквивалентно оператору x:=x+k).

    6.Процедура dec(x) возвращает значение, предшествующее х (для арифметических типов данных это эквивалентно оператору x:=x-1).

    7.Процедура dec(x,k) возвращает k-e значение, предшествующее х (для арифметических типов данных это эквивалентно оператору x:=x-k).

    На первый взгляд кажется, будто результат применения процедуры inc(x) полностью совпадает с результатом применения функции succ(x). Однако разница между ними проявляется на границах допустимого диапазона. Функция succ(x) неприменима к максимальному элементу типа, а вот процедура inc(x) не выдаст никакой ошибки, но, действуя по правилам машинного сложения, прибавит очередную единицу к номеру элемента. Номер, конечно же, выйдет за пределы диапазона и за счет усечения превратится в номер минимального значения диапазона. Получается, что процедуры inc() и dec() воспринимают любой порядковый тип словно бы "замкнутым в кольцо": сразу после последнего вновь идет первое значение.

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

    type sixteen = 0..15;

    попытка прибавить 1 к числу 15 приведет к следующему результату:

    Начальная единица будет отсечена, и потому получится, что inc(15)=0.

    Аналогичная ситуация на нижней границе допустимого диапазона произвольного порядкового типа данных наблюдается для процедуры dec(x) и функции pred(x):

    dec(min_element)= max_element

    Типы данных, относящиеся к порядковым

    1. Логический тип boolean имеет два значения: false и true, и для них выполняются следующие равенства:

    ord(false)=0, ord(true)=1, false

    pred(true)=false, succ(false)=true,

    inc(true)=false, inc(false)=true,

    dec(true)=false, dec(false)=true.

    2. В символьный тип char входит 256 символов расширенной таблицы ASCII (например, "a", "b", "я", "7", "#"). Номер символа, возвращаемый функцией ord(), совпадает с номером этого символа в таблице ASCII.

    3. Целочисленные типы данных сведем в таблицу:

    Тип данных

    Количество байтов

    Диапазон

    2147483648..2147483647

    4. Перечисляемые типы данных задаются в разделе type явным перечислением их элементов. Например:

    type week =(sun,mon,tue,wed,thu,fri,sat)

    Напомним, что для этого типа данных:

    inc(sat) = sun, dec(sun) = sat.

    5. Интервальные типы данных задаются только границами своего диапазона. Например:

    type month = 1..12;

    budni = mon..fri;

    6. Типы данных, конструируемые программистом, описываются в разделе type по следующему шаблону:

    type <имя_типа> = <описание_типа>;

    Например:

    type lat_bukvy = "a".."z","A".."Z";

    Базовые типы данных являются стандартными, поэтому нет нужды описывать их в разделе type. Однако при желании это тоже можно сделать, например, дав длинным определениям короткие имена. Скажем, введя новый тип данных

    type int = integer;

    можно немного сократить текст программы.

    Вещественные типы данных

    Напомним, что эти типы данных являются арифметическими, но не порядковыми.

    Тип данных

    Количество байтов

    Диапазон (абсолютной величины)

    1.5*10-45..3.4*1038

    2.9*10-39..1.7*1038

    5.0*10-324..1.7*10308

    3.4*10-4932..1.1*104932

    Конструируемые типы данных

    Эти типы данных (вместе с определенными для них операциями) мы будем рассматривать далее на протяжении нескольких лекций.

    Операции и выражения

    Арифметические операции

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

    Замечание: Все перечисленные ниже операции (за исключением унарных "-" и not) требуют двух операндов.

    1. Логические операции (and – логическое И, or – логическое ИЛИ, not – логическое НЕ, xor – исключающее ИЛИ) применимы только к значениям типа boolean. Их результатом также служат величины типа boolean. Приведем таблицы значений для этих операций:

    true false true

    false false false

    true false false

    2. Операции сравнения (=, <>, >, <, <=, >=) применимы ко всем базовым типам. Их результатами также являются значения типа boolean.

    3. Операции целочисленной арифметики применимы только к целым типам. Их результат - целое число, тип которого зависит от типов операндов.

    a div b - деление а на b нацело (не нужно, наверное, напоминать, что деление на 0 запрещено, поэтому в таких случаях операция выдает ошибку). Результат будет принадлежать к типу данных, общему для тех типов, к которым принадлежат операнды.

    Например, (shortint div byte = integer). Пояснить это можно так: integer - это минимальный тип, подмножествами которого являются одновременно и byte, и shortint.

    a mod b - взятие остатка при делении а на b нацело. Тип результата, как и в предыдущем случае, определяется типами операндов, а 0 является запрещенным значением для b. В отличие от математической операции mod, результатом которой всегда является неотрицательное число, знак результата "программистской" операции mod определяется знаком ее первого операнда. Таким образом, если в математике (-2 mod 5)=3, то у нас (-2 mod 5)= -2.

    a shl k - сдвиг значения а на k битов влево (это эквивалентно умножению значения переменной а на 2k). Результат операции будет иметь тот же тип, что и первый ее операнд (а).

    a shr k - сдвиг значения а на k битов вправо (это эквивалентно делению значения переменной а на 2k нацело). Результат операции будет иметь тот же тип, что и первый ее операнд (а).

    and,or,not,xor - операции двоичной арифметики, работающие с битами двоичного представления целых чисел, по тем же правилам, что и соответствующие им логические операции.

    4. Операции общей арифметики (+, -, *, /) применимы ко всем арифметическим типам. Их результат принадлежит к типу данных, общему для обоих операндов (исключение составляет только операция дробного деления /, результат которой всегда относится к вещественному типу данных).

    Другие операции

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

    #, in, +, *, : см. лекцию 5 «Символы. Строки. Множества»

    @, ^ : см. лекцию 7 «Адреса и указатели»

    Стандартные арифметические функции

    К арифметическим операциям примыкают и стандартные арифметические функции. Их список с кратким описанием мы приводим в таблице.

    Функция

    Описание

    Тип аргумента

    Тип результата

    Абсолютное значение (модуль) числа

    Арифметический

    Совпадает с типом аргумента

    Арктангенс (в радианах)

    Арифметический

    Вещественный

    Косинус (в радианах)

    Арифметический

    Вещественный

    Экспонента (ex)

    Арифметический

    Вещественный

    Взятие дробной части числа

    Арифметический

    Вещественный

    Взятие целой части числа

    Арифметический

    Вещественный

    Натуральный логарифм (по основанию e)

    Арифметический

    Вещественный

    Проверка нечетности числа

    Значение числа

    Вещественный

    Округление к ближайшему целому

    Арифметический

    Округление "вниз" - к ближайшему меньшему целому

    Арифметический

    Синус (в радианах)

    Арифметический

    Вещественный

    Возведение в квадрат

    Арифметический

    Вещественный

    Извлечение квадратного корня

    Арифметический

    Вещественный

    Арифметические выражения

    Все арифметические операции можно сочетать друг с другом - конечно, с учетом допустимых для их операндов типов данных.

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

    Примеры арифметических выражений:

    (x<0) and (y>0) - выражение, результат которого принадлежит к типу boolean;

    z shl abs(k) - вторым операндом является вызов стандартной функции;

    (x mod k) + min(a,b) + trunc(z) - сочетание арифметических операций и вызовов функций;

    odd(round(x/abs(x))) - "многоэтажное" выражение.

    Порядок вычислений

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

    Таблица 2.1. Приоритеты (для всех) операций языка Pascal