Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика

..pdf
Скачиваний:
9
Добавлен:
15.11.2022
Размер:
1.24 Mб
Скачать

Например:

const

 

 

max

=

5000;

b =

10.554;

err

=

'Ошибка';

2.3. Имена, ключевые слова и знаки операций

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

идентификаторами.

Имена дает программист, при этом следует соблюдать следующие правила:

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

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

ицифры;

3)прописные и строчные буквы не различаются;

4)длина имени практически не ограничена.

Например, правильными именами будут z12, b, x_1, _y, а неправильными – 2y, 145. Имена даются элементам программы, к которым требуется обращаться: переменным, константам, процедурам, функциям, меткам и т.д.

Ключевые (зарезервированные) слова – это идентификаторы,

имеющие специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Например, для оператора перехода определено ключевое слово goto, а для описания переменных – var. Имена, создаваемые программистом, не должны совпадать с ключевыми словами.

Знак операции – это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Например, операция сравнения «меньше или равно» обозначается <=, а целочисленное деление записывается как div. Операции делятся на унарные (с одним операндом) и

бинарные (с двумя).

31

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

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

Тип данных однозначно определяет:

1)внутреннее представление данных, а следовательно, и множество их возможных значений;

2)допустимыедействиянад данными(операцииифункции). Например, целые и вещественные числа, даже если они за-

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

Паскаль характеризуется разветвленной классификацией типов данных:

1.Простые типы.

1)порядковые:

целые;

логический;

символьный;

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

интервальный;

2)вещественные.

2.Структурированные типы.

1)массивы;

2)строки;

3)множества;

4)записи;

5)файлы.

3.Указатели.

32

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

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

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

Вданной лабораторной работе подробнее рассмотрим целые

ивещественные типы данных. Эти типы данных являются стандартными.

2.5. Целые типы

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

 

 

 

 

Таблица 1

 

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

 

 

 

 

 

Тип

Название

Размер

Знак

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

integer

Целое

2 байта

Есть

–32 768–32 767 (–215–(215–1))

shortint

Короткое

1 байт

Есть

–128–127 (–27–(27–1))

 

целое

 

 

 

byte

Байт

1 байт

Нет

0–255 (0–(28–1))

word

Слово

2 байта

Нет

0–65 535 (0–(216–1))

longint

Длинное

4 байта

Есть

–2 147 483 648–2 147 483 647

 

целое

 

 

(–231–(231–1))

В стандарте Паскаля из целых типов определен только тип integer.

33

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

Вещественные типы данных хранятся в памяти компьютера иначе, чем целые. Внутреннее представление вещественного числа состоит из двух частей – мантиссы и порядка, и каждая часть имеет знак. Например, число 0,031 представляется в виде 0,31·10–1 и в памяти хранится мантисса 31 и порядок –1 (для наглядности мы пренебрегли тем, что данные на самом деле представляются в двоичнойсистеме счисленияи несколькосложнее).

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

 

 

 

 

 

Таблица 2

 

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

 

 

 

 

 

 

Тип

 

Название

Размер

Значащие

Диапазон

 

 

 

 

десятичные

значений

 

 

 

 

цифры

 

real

 

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

6 байт

11–12

(2.9e – 39)–

 

 

 

 

 

–(1.7e + 38)

single

 

Одинарной

4 байта

7–8

(1.5e – 45)–

 

 

точности

 

 

–(3.4e + 38)

double

 

Двойной

8 байт

15–16

(5.0e – 324)–

 

 

точности

 

 

–(1.7e + 308)

extended

Расширенный

10 байт

19–20

(3.4e – 4932)–

 

 

 

 

 

–(1.1e + 4923)

В стандарте Паскаля из вещественных типов определен только тип real.

2.7. Переменные

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

34

var number : integer;

х, y : real;

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

Тип переменных выбирается исходя из диапазона и требуемой точности представления данных.

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

const n : integer = 25;

y : real = 1.42;

По умолчанию все переменные, описанные в главной программе, обнуляются.

2.8.Арифметические операции, функции, выражения.

Арифметический оператор присваивания

К арифметическим типам данных относятся группы вещественных и целых типов. К ним применимы арифметические операции и операции отношений.

Операции над данными бывают унарными (применимые к одному операнду) и бинарными (применимые к двум операндам). Унарная арифметическая операция – одна. Это операция изменения знака. Ее формат:

- <величина> Например:

-w

Бинарные арифметические операции стандартного Паскаля описаны в табл. 3. В ней I обозначает целые типы, R – вещественные типы.

35

Таблица 3 Бинарные арифметические операции стандартного Паскаля

Знак

Выражение

Типы

Тип

Операция

 

 

операндов

результатов

 

+

A+B

R, R

R

Сложение

 

 

I, I

I

 

 

 

I, R R,I

R

 

-

A-B

R, R

R

Вычитание

 

 

I, I

I

 

 

 

I, R R,I

R

 

*

A*B

R, R

R

Умножение

 

 

I, I

I

 

 

 

I, R R,I

R

 

/

A/B

R, R

R

Вещественное

 

 

I, I

R

деление

 

 

I, R R,I

R

 

div

A div B

I, I

I

Целое деление

mod

A mod B

I, I

I

Остаток от целого

 

 

 

 

деления

Детальнее остановимся на операциях div и mod. Деление c остатком – это арифметическая операция, вид

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

Разделить целое число a на натуральное число 0 < b < a с остатком означает представить его в виде

a = bq + r, 0 r < b (q Ζ,r Z ) .

При этом q называется неполным частным, а r – остатком

от деления a на b . Рассмотрим примеры:

1. При делении с остатком положительного числа a = 55 на b = 22 получаем неполное частное q = 2 и остаток r = 11 . Про-

верка: 55 = 22 2 + 11 .

36

На языке Паскаль выражение для получения неполного частного будет записано как 55 div 22, а выражение для получения остатка от деления – как 55 mod 22.

2. При делении с остатком положительного числа a =12 на b = 23 получаем неполное частное q = 0 и остаток r =12 . Про-

верка: 12 = 23 0 +12 .

На языке Паскаль выражение для получения неполного частного будет записано как 12 div 23, а выражение для получения остатка от деления – как 12 mod 23.

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

 

 

 

Таблица 4

Математические стандартные функции Турбо-Паскаля

 

 

 

 

Обращение

Тип

Тип

Функция

 

аргумента

результата

 

Pi

R

Число π

abs(x)

I, R

I, R

Модуль аргумента

arctan(x)

I, R

R

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

cos(x)

I, R

R

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

exp(x)

I, R

R

ex – экспонента

frac(x)

I, R

R

Дробная часть x

int(x)

I, R

R

Целая часть x

ln(x)

I, R

R

Натуральный логарифм

random

R

Псевдослучайное число

 

 

 

в интервале [0, 1]

random(x)

I

I

Псевдослучайное число

 

 

 

в интервале [0, x]

round(x)

R

I

Округление

 

 

 

до ближайшего целого

 

 

 

37

 

 

 

Окончание табл. 4

Обращение

Тип

Тип

Функция

 

аргумента

результата

 

sin(x)

I, R

R

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

sqr(x)

I, R

I, R

Квадрат x

sqrt(x)

I, R

R

Корень квадратный

trunc(x)

R

I

Ближайшее целое,

 

 

 

не превышающее x по модулю

Приведем примеры использования некоторых стандартных функций:

1. Функция round(x) выполняет округление до ближайшего целого. Например, round(5.2) даст в результате 5,

аround(5.9) даст в результате 6.

2.Функция trunc(x) вычисляет ближайшее целое, не превышающее x по модулю. Например, trunc(5.2) даст в результате 5, а trunc(5.9) также даст в результате 5.

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

Одна константа или одна переменная – простейшая форма арифметического выражения.

Например, запишем по правилам Паскаля следующее математическое выражение:

2a + 0,5sin(x + y) . 0,2c ln(x y)

На Паскале это выглядит так (a, c, x и y – некоторые переменные целого либо вещественного типа):

38

(2*A + Sqrt(0.5 * sin(X + Y))) / / (0.2 * C – Ln(X – Y))

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

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

1)все символы пишутся в строчку на одном уровне. Проставляются все знаки операций (нельзя пропускать *);

2)не допускаются два следующих подряд знака операций.

Например, нельзя записывать A + – B, но можно A + (-B); 3) операции с более высоким приоритетом выполняются раньше операций с меньшим приоритетом. Порядок убывания

приоритетов:

а) вычисление функции; б) унарная операция смены знака (-);

в) *, /, div, mod;

г) +, –;

4)несколько записанных подряд операций одинакового приоритета выполняются последовательно слева направо;

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

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

В Паскале нет операции или стандартной функции возведе-

ния числа в произвольную степень. Для вычисления xy рекомендуется поступать следующим образом:

1) если y – целое значение, то степень вычисляется через умножение, а также при использовании стандартной функции sqr(x). Например, x3 следует записать на Паскале как x*x*x

39

или, используя стандартную функцию, sqr(x)*x. Большие степени следует вычислять умножением в цикле (циклы будут изучены в следующих лабораторных работах);

2) если y – вещественное значение, то используется следующая математическая формула:

xy = ey ln( x) .

На Паскале это будет выглядеть так:

Exp(Y * Ln(x))

Очевидно, при вещественном y не допускается нулевое или отрицательное значение x . Для целого y такогоограничения нет.

1

Например, 3 a +1 = (a +1)3 . На Паскале это будет записано так:

Exp(1/3 * Ln(A+1))

2.9. Оператор присваивания

Присваивание – это занесение значения в память. В общем виде оператор присваивания записывается так:

переменная := выражение

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

Примеры операторов присваивания: x := 46;

b := a;

a := (b + c)/2;

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

40