Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
36
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

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

Функция odd используется для проверки четности или нечетности целого выражения.

odd(целое_выражение) – возвращает true, если параметр – нечетный, в противном случае возвращает false.

odd(3), odd(2), odd(0). Результат: true, false, false

odd(-3), odd(-2). Результат: true, false

odd(3.0). Результат: ошибка

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

eoln(имя_файла) – возвращает true, если была прочитана последняя литера текущей строки.

while not eoln do begin

read(i); {целый тип, пробелы пропускаются}

writeln(i:3)

end;

while not eoln do begin

read(a); {вещественный тип, пробелы пропускаются}

write(a:5:1)

end;

eof(имя_файла) – возвращает true, если была прочитана последняя литера файла (попытка дальнейшего чтения ведет к ошибке).

while not eof(f) do begin

while not eoln(f) do begin

read(ch); {тип char, пробелы учитываются}

write(ch)

end;

writeln

end;

while not eof(g) do begin

read(ch); {признак конца строки читается как пробел}

write(ch)

end;

Функции над дискретными типами Функция ord

Буквы от ‘A’ до ‘Z’ следуют в возрастающем порядке, иными словами, каждая буква имеет порядковое значение, соответствующее ее месту в алфавите. Это порядковое значение может быть получено посредством функции ord.

ord(выражение) – возвращает порядковый номер литеры или значения другого дискретного типа.

ord(‘I’), ord(‘J’). Результат: 73, 74 (код ASCII)

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

ord(‘A’) < ord(‘B’) < ord(‘C’) … < ord(‘Z’)

хотя ord(‘Z’) – ord(‘A’) и не обязательно равно 25. То же самое и со строчными буквами:

ord(‘a’) < ord(‘b’) < ord(‘c’) … < ord(‘z’)

Определенной связи между прописными и соответствующими строчными буквами нет, но можно без опасений полагаться на то, что ord(‘a’) – ord(‘A’) имеет то же значение, что и ord(‘z’) – ord(‘Z’).

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

ord(‘0’) < ord(‘1’) < ord(‘2’) … < ord(‘9’)

и, более того, порядковые значения соседних цифр отличаются на 1; так, ord(‘9’) – ord(‘0’) = 9. Отсюда следует, что численное значение цифры d (типа char) может быть получено так

value := ord(d) – ord(‘0’).

Паскаль поддерживает типы char, integer и т.д. В дополнение к ним программист вправе определить и другие типы путем перечисления последовательности констант. Например, тип, заданный перечислением:

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

Константы типа, заданного перечислением, имеют порядковые значения, отсчитываемые от нуля. Например, ord(mon) возвращает 0, ord(sun) возвращает 6; mon < sun.

Тип boolean – перечисляемый тип, который автоматически задается как

type boolean = (false, true);

следовательно, ord(false) дает 0, ord(true) дает 1; false < true.