Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal_lectures_small.doc
Скачиваний:
13
Добавлен:
23.03.2015
Размер:
339.46 Кб
Скачать
    1. Стандартные функции

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

      1. Алгебраические функции

Обозначим x – любое выражение типа Real или Integer. Тип результата у функций Abs и Sqr – такой же, как у x. У остальных алгебраических функций тип результата – Real.

Функция Значение

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

Sqr(x) Квадрат от x, т.е., x2.

Sqrt(x) Квадратный корень из x.

Sin(x) Синус x, значение x – в радианах.

Cos(x) Косинус x, значение x – в радианах.

Arctan(x) Арктангенс x, результат – в радианах.

Exp(x) Экспонента, ex.

Ln(x) Натуральный логарифм от x.

      1. Логические функции

Обозначим i – выражение типа Integer, а f – файловая переменная. Результат выполнения функций – типа Boolean.

Функция Результат True, если

odd( i ) Значение выражения i нечетное.

eof(f) При вводе из файла, связанного с переменной f, достигнут конец файла.

eoln(f) При вводе из текстового файла, связанного с переменной f, достигнут конец текущей строки.

Примечание. Файлы, текстовые файлы и файловые переменные рассматриваются в следующем разделе.

      1. Функции преобразования

Обозначим r – выражение типа Real. Тип результата – Integer.

Функция Выполняемое действие

trunc(r) Отбрасывается дробная часть r.

round(R) Значение r округлятся по правилам арифметики до ближайшего целого.

Примечание. Если значение r по абсолютной величине превосходит максимально возможное значение целого типа, возникает ошибка.

      1. Ординальные функции

Обозначим d – выражение любого ординального типа, i – выражение целого типа.

Функция Тип и значение результата

ord(d) Результат типа Integer – порядковый номер значения d в списке значений ординального типа, к которому относится x.

chr( i ) Результат типа Char – символ, порядковый номер которого в кодовой таблицы символов компьютера равен значению i.

succ(x) Результат того же типа, что и x – ординальное значение, следующее за значением x.

pred(x) Результат того же типа, что и x – ординальное значение, предшествующее значению x.

    1. Стандартные процедуры

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

Dispose Pack Readln Unpack

Get Put Reset Write

New Read Rewrite Writeln

    1. Стандартный ввод-вывод

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

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

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

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

<процедура стандартного вывода>::=("Write"|"Writeln")["(" <элемент вывода> [<формат>] {","<элемент вывода> [<формат>]}")"].

Здесь элемент вывода – выражение типа Integer, Real, Char или Boolean, или диапазонного типа, определенного на типах Integer или Char, или строковая константа.

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

<формат>::= ":"<целое без знака>[":" <целое без знака>"]".

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

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

Если формат для вывода значения типа Real состоит только из одного числа, значение выводится в экспоненциальном (инженерном) формате, например, 1.52Е–002. При этом следует учитывать, что для вывода степенного показателя нужно резервировать от 4 до 6 позиций, в зависимости от реализации языка Паскаль. Если в формате указаны оба числа, значение типа Real выводится в арифметическом формате с десятичной точкой, например, 0.0152.

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

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

Разница между процедурами Write и Writeln состоит в том, что по окончании вывода списка процедурой Write указатель вывода (например, курсор на дисплее) остается в текущей строке, и следующая процедура продолжит вывод в этой же строке, тогда как процедура Writeln по окончании вывода переводит указатель вывода на следующую строку.

Если при выводе на дисплей не все элементы поместились на одной строке, происходит автоматический переход на следующую строку.

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

Например, для вывода степеней двойки от 21 до 210, можно написать такую программу:

Program PowersOf2;

Var i,j: Integer;

Begin

For i:=1 to 10 do write(i:5);

Writeln;

j:=2;

For i:=1 to 10 do begin

Write(j:5);

j:=j*2

end;

Writeln

End.

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

1 2 3 4 5 6 7 8 9 10

2 4 8 16 32 64 128 256 512 1024

Для стандартного ввода используется следующий синтаксис:

<процедура ввода>::=("Read"|"Readln) "("<элемент ввода> {"," <элемент ввода>}")".

Элемент ввода – это обязательно переменная типа Real, Integer, Char, или диапазонного типа на Integer или Char.

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

При вводе нескольких элементов данных типа Real или Integer в одной строке, каждый элемент должен отделяться от предыдущего одним пробелом. Данные типа Char не должны отделяться друг от друга.

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

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

При вводе с клавиатуры рекомендуется использовать процедуру Readln.

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

Program MaxNumber;

Var i,a,max: Integer;

Begin

write('Введите 1-е число >');

Readln(a);

max:=a;

For i:=2 to 5 do begin

write('Введите ',i,'-е число');

Readln(a);

If a>max then max:=a;

end;

Writeln('Наибольшее введенное число = ',max)

End.

Ниже показано, как будет выглядеть обмен информацией с этой программой на дисплее, при вводе, например, чисел 0, -2, 8, 1, 3. Данные, вводимые с клавиатуры, в примере подчеркнуты для отличия их от данных, выводимых программой.

Введите 1-е число >0

Введите 2-е число >-2

Введите 3-е число >8

Введите 4-е число >1

Введите 5-е число >3

Наибольшее введенное число = 8

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