Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ushebnoe_pasobie.doc
Скачиваний:
25
Добавлен:
17.03.2016
Размер:
2 Мб
Скачать
☆

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

Длина,

байт

Название

Диапазон десятичного порядка

Количество значащих цифр

4

single

от -45до+38

от 7до8

6

real

от -39до+38

от 11до12

8

double

от -324до+308

от 15до16

10

extended

от -4951до+4932

от 19до20

8

comp

от до

от 19до20

В табл.5 приведены встроенные функции и процедуры для обработки данных вещественного типа.

Таблица 5

Встроенные функции для обработки данных вещественного типа

Обращение

Реализуемое действие

abs(x)

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

arctan(x)

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

frac(x)

Дробная часть числа

int(x)

Целая часть числа

ln(x)

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

pi

=3.14159...

random

Псевдослучайное число, принадлежащее интервалу[0,1]

randomize

Инициализация датчика псевдослучайных чисел

sqrt(x)

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

sqr(x)

Квадрат аргумента

sin(x)

Синус(радианы)

сos(x)

Косинус(радианы)

exp(x)

Экспонента

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

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

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

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

var

x,y : integer;

a,b : real;

то можно записать операторы присваивания

x:=x+5;

y:=x;

a:=b;

b:=5.33*x+y/2;

Как уже говорилось, тип переменной позволяет не только устанавливать длину ее внутреннего представления, но и контролировать те действия, которые осуществляются над ней в программе. Контроль за использованием переменных еще на этапе компиляции программы –важное преимущество Турбо-Паскаля, повышающее его надежность. В Турбо-Паскале почти не возможны автоматические преобразования типов. Исключение сделано только в отношении констант и переменных типаinteger,которые можно использовать и в выражениях типаreal, т.е. для описанных выше переменных операторx:=aбудет неверным из-за невозможности преобразования вещественного типа к целому. В то же время, операторa:=x будет верным.

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

      1. Процедуры ввода и вывода

Ввод/вывод связан с обменом информацией между оперативной памятью и внешними устройствами. Здесь рассмотрены процедуры ввода/вывода: read, readln, write,writeln, использующие стандартные файлы ввода/вывода. Стандартным файлом ввода является клавиатура, а вывода–экран. Для ввода данных с клавиатуры применяются процедуры:

read (<список ввода>);

readln (<список ввода>);

Список ввода –это последовательность из одной или более переменных типаchar, string, а также любого целого или вещественного типа. При вводе числовых переменных процедураread вначале выделяет подстроку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строки пропускаются, выделяется первый значащий символ, признаком конца подстроки является любой из вышеперечисленных символов или символ конец файла. Выделенная таким образом подстрока рассматривается как символьное представление числовой константы, которое преобразуется в соответствии с типом переменной, и полученное значение присваивается переменной. Если значащих символов в строке нет, а список ввода еще не исчерпан, то автоматически осуществляется переход к новой строке. Процедураreadlnидентична процедуреreadза исключением того, что после считывания последней переменной, оставшаяся часть строки пропускается, так что следующее обращение кreadилиreadlnначнется с первого символа новой строки. Кроме того, процедуруreadlnможно вызывать без параметров, что приведет к пропуску всех символов текущей строки. Рассмотрим следующий фрагмент программы:

var a,b,c,d:real;

begin ... read(a,b,c,d); ... end.

Пусть, требуется ввести числа 1,3;13,3;76,8;125,0. Информация набирается в виде:

1.3 13.3 76.8 125.0

на одной или нескольких строках. В результате выполнения процедуры readпеременнойаприсвоится значение1.3, переменнойb–значение13.3, с – 76.8, d – 125.0. Если же ввод производится с помощью двух процедур:

readln(a,b,c);read(d);

числа, соответствующие a,b,c,набираются на одной строке, а число, соответствующееd,–на другой.

Для вывода данных на экран используются процедуры:

writeln(<список ввода>);

write(<список ввода>);

Список вывода может содержать одно или несколько выражений типа char, string, boolean, а также любого целого или вещественного типа. Отличие процедурыwritelnотwriteсостоит лишь в том, что в процедуреwriteкурсор остается на той же строке экрана за последним выведенным символом, а вwritelnкурсор переходит на начало следующей строки. Предположим, что переменныеa,b,cописаны как целые и имеют соответственно значения132, 25, -37. После выполнения процедур

writeln(a,b);write(c);

aиbбудут напечатаны на одной строке, асна другой:

13225

-37

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

writeln(a:3,b:5,c:4);

В этом случае при печати под значение переменной a отводится3 позиции,b–5позиций, подс–4позиции, т.е. будет выведено132 25 -37.

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

writeln('a=',a:1,'b=',b:2,'c=',c:3);

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

a=132b=25c= -37

Пусть переменные d, e, fописаны как вещественные и имеют соответственно значения13,13;123,45;-987,654. Результатом работы оператора

writeln('d=',d:5:2,'e=',e:8:3,'f=',f:8:2);

будет строка

d=13.13e= 123.450f= -987.65

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

writeln('d=',d:10,' e=',e:9,' f=',f);

d= 1.313E+01 e= 1.23Е+02 f=-9.8765000000E+02

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]