Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ЯП (Кузьмин) ч.2_new (Паскаль).docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
3.97 Mб
Скачать
  1. while (логическое_выражение) do тело_цикла;

  2. Repeat тело_цикла until (логическое_выражение);

  3. b:= логическое_выражение

  4. if (логическое_выражение)

then...действие_если_истина..

else действие_если_ложь.;

Пример более сложного логического выражения:

((x + 1 < y) and not (x > 5)) or ((y > 0) and true)

Вычислим значение этого выражения при x = 5, y = 5:

((6 < 1) and not (5 > 5)) or ((5 > 0) and true) ===>

( false and not false ) or ( true and true )

( false and true ) or ( true and true )

false or true

true

Переменные логического типа часто используются в качестве «флажков», которые взводятся (устанавливаются в true) в случае наступления во время выполнения программы определенных событий (выход значения переменной за определенный диапазон, считывание из входной последовательности символов определенного символа и т.д.). Значение флажка обычно используется в качестве признака (обычно единственного) описания ситуации выхода из бесконечного цикла (ожидания наступления определенного события). Пример см. в документе «Основы алгоритмизации» там, где рассматривается обработка текста восходящим и нисходящим методами. Там использовалась логическая переменная конец_обработки.

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

  • Odd(аргумент – целый) возвращает True, когда аргумент нечетный, и возвращает False, когда аргумент четный.

  • Eoln(аргумент – текстовый файл) возвращает True, если текущим символом строки является символ конца строки.

  • Eof(аргумент – файл) возвращает True, если текущий указатель файла установлен на конец файла .

6.4.3 Целые типы Выделяют целые типы ------------- со знаком – shortint, integer, longint)

------------- без знака - byte, word.

Shortint - занимает 1 байт в памяти со знаком. Диапазон значений: от -128 до +127.

Byte - однобайтовый тип. Данные этого типа только положительные. Диапазон значений: от 0 до 255.

Integer - 2 байта со знаком. Диапазон значений: от -32768 (-215) до +32767 (215-1). Имеется предопределенная константа MaxInt, равная 32767 и определяющая максимальное значение целого числа типа integer.

Word - 2 байта без знака. Диапазон значений: от 0 до 65535.

Longint - занимает 4 байта со знаком. Диапазон значений: - 2 147 483 648 (-231) .. 2 147 483 647 (231-1) .

В Турбо-Паскале предопределены константы MaxLongint, равная 2 147 483 647, и MaxInt, равная 32767.

Для каждого значения этих типов нужно различать:

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

б) представление этого значения в виде двоичного кода

в) внутреннее представление (побайтное расположение) этого двоичного (многобайтового) кода в памяти ЭВМ

Рассмотрим пример на то, чем отличаются а) и б) для типов данных shortint и byte.

7 6 5 4 3 2 1 0 -------номера разрядов

26 25 24 23 22 21 20--------веса разрядов

S Shortint

Знаковый разряд (не участвует в выработке значения)

7 6 5 4 3 2 1 0 -------номера разрядов

27 26 25 24 23 22 21 20--------веса разрядов

Byte

старший разряд значения

Для типа shortint знак записывается в самом старшем разряде. А для типа byte этот разряд является частью значения. Поэтому для этих типов в одних тех же 8 битах одно и то же представление в двоичном коде будет соответствовать разным значениям:

Для shortint 11111111 = -1

1 1 1 1 1 1 1 1

Для byte 11111111 = +255

-1 для (shortint) получена потому, что 1 в знаковом разряде соответствует отрицательному числу. Отрицательные (и положительные тоже) числа хранятся в так называемом дополнительном коде. Он получается в 2 приема:

- абсолютное значение числа надо записать в виде двоичного кода и проинвертировать все разряды (0 → 1 1 → 0)

- далее к младшему разряду прибавляется единица. Полученное изображение и будет дополнительным кодом числа (знаковый разряд содержит 0 или 1 и говорит о знаке числа).

Рассмотрим теперь пример на то, чем в) отличается от б). Значения многобайтовых типов (Integer, Word и Longint) хранятся в памяти не так, как пишутся. Они размещаются в памяти, начиная с младших байтов.

Пусть запись целой многобайтовой константы имеет вид:

$ 12 34 - здесь 2 байта.

старший младший

байт байт

Этой записи числа в дампе памяти в отладчике будет соответствовать следующий код: 34 12

возрастания адресов слева направо

(совпадает с направлением просмотра)

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