Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
osnovy_programmirovanija_v_srede_lazarus.pdf
Скачиваний:
185
Добавлен:
18.03.2015
Размер:
6.53 Mб
Скачать

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

гом, его могли в этот момент чем-то отвлечь, он мог просто не обратить внима-

ния на ваше предупреждение или забыть о нем. В конце концов, он мог нажать не на ту клавишу! Например, цифра 9 на клавиатуре расположена рядом с циф-

рой 0. И, наконец, обязательно найдутся такие пользователи, которые захотят посмотреть, а что будет, если я все-таки введу ноль!

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

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

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

Таким образом, контроль за такими "не предусмотренными" действиями пользователя лежит на программисте! Есть такое понятие в программировании

– писать программы, рассчитанные на "дурака" (fool-tolerance).

Поэтому любите своего пользователя, уважайте его, заботьтесь о том, что-

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

можных" действий пользователя.

Чаще всего такого рода ошибки возникают при вводе пользователем ка-

ких-то данных. Со способами защиты своей программы от таких непреднаме-

ренных действий пользователя мы познакомимся позже (см. раздел 2.1.25. и

6.3.7.). Здесь я просто заострил ваше внимание на этой проблеме, чтобы вы все-

гда помнили об этом в процессе написания своих программ.

2.1.16 Стандартные функции с целыми аргументами

Рассмотрим программу:

program functions;

{$mode objfpc}{$H+}

99

2.1 Основные элементы языка

____________________________________________________________________

uses

CRT, FileUtil;

var

a, b, c: integer;

begin

a:=-2;

b:= abs(a);

writeln(UTF8ToConsole('Абсолютная величина числа a= '), b);

c:= sqr(b);

writeln(UTF8ToConsole('Квадрат числа b= '), c);

c:= sqr(b + b);

writeln(UTF8ToConsole('Квадрат числа (b + b)= '), c); writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

Оператор b:= abs(a); присваивает переменной b абсолютное значе-

ние числа a.

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

abs(-2)= 2

abs(-10)= 10

abs(5)= 5

Оператор c:= sqr(b)- присваивает переменной c квадрат числа b, т.е. c b2 , sqr (от английского square – квадрат). Число в скобках называется ар-

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

b2 4ac запишется на Паскале следующим образом: sqrt(sqr(b) 4 * a * c);

100

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

Как уже отмечалось, в операторах write и writeln можно использо-

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

writeln('Квадрат числа (b + b)= ', sqr(b + b));

2.1.17Операции с вещественными числами (тип real).

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

program real_numbers; {$mode objfpc}{$H+} uses

CRT, FileUtil; var

a, b, c: real; begin

a:= 17.3; b:= 3.4; c:= a * b;

writeln(UTF8ToConsole('Умножение вещественных чисел c = '), c);

c:= a / b;

writeln(UTF8ToConsole('Деление вещественных чисел c = '), c);

c:= a + b;

writeln(UTF8ToConsole('Сложение вещественных чисел c = '), c);

c:= a - b;

writeln(UTF8ToConsole('Вычитание вещественных чисел c = '), c); writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

101

2.1 Основные элементы языка

____________________________________________________________________

2.1.18 Форматирование вывода

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

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

write(переменная_1:w:d, … переменная_n:w:d);

writeln(переменная_1:w:d, … переменная_n:w:d);

где w – общая ширина поля вывода, d – количество знаков после запя-

той, т.е. дробной части числа. w и d должны быть константами или выраже-

ниями целого типа. Для того чтобы общая ширина поля вывода определялась автоматически, указывайте w = 0. Например:

writeln('a * b = ', c:0:2);

В этом случае на экран будет выведено

a * b = 58.82

вместо

a* b = 5.882000000000000Е+001

2.1.19Одновременное использование вещественных и целых чисел.

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

program int_real; {$mode objfpc}{$H+} uses

CRT, FileUtil; var

102

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

n, k: integer;

a, b: real;

begin

a:= 3.6;

n:= 4;

b:= n;

writeln(UTF8ToConsole('Вещественная переменная b= '), b);

n:= trunc(a);

writeln(UTF8ToConsole('Операция truncate n= '), n);

k:= round(a);

writeln(UTF8ToConsole('Операция round k= '), k); writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

В программе мы видим запись b:= n; где вещественной переменной b

присваивается значение целой переменной n. Кроме того, в таких записях как b:= n + 4.6; или b:= 3 * 7.2 + n; встречаются вещественные и це-

лые числа, стоящие в правой части выражения. Такие записи разрешены. Ком-

пилятор автоматически преобразует выражение в правой части оператора при-

сваивания к вещественному типу. И наоборот, присвоение вещественных зна-

чений целым переменным просто запрещены. Т.е. если написать оператор при-

сваивания

n:= 3.14;

компилятор выдаст ошибку.

Для этого используются стандартные функции trunc и round. С помо-

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

103

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