Главная страница
Навигация по странице:

  • 2.4.4. Булевские операции

  • 2.4.5. Операции с битами

  • 2.4.6. Очередность выполнения операций

  • 2.5. Консольный ввод-вывод 2.5.1. Консольное приложение

  • File | Close All

  • 2.6. Структура программы

  • 2.6.1. Заголовок программы

  • 2.6.2. Подключение модулей

  • Учебное пособие для студентов Авторы А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько Содержание Содержание 1


    Скачать 2.61 Mb.
    НазваниеУчебное пособие для студентов Авторы А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько Содержание Содержание 1
    Дата15.01.2023
    Размер2.61 Mb.
    Формат файлаdoc
    Имя файлаlab_OOTP.doc
    ТипУчебное пособие
    #886736
    страница5 из 33
    1   2   3   4   5   6   7   8   9   ...   33
    2.4.3. Операции отношения

    Операции отношения выполняют сравнение двух операндов и определяют, истинно значение выражения или ложно (таблица 2.6). Сравниваемые величины могут принадлежать к любому порядковому типу данных. Результат всегда имеет булевский тип.

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

    Операция

    Действие

    Выражение

    Результат

    =

    Равно

    A = B

    True, если A = B

    <>

    Не равно

    A <> B

    True, если A < B или A > B

    <

    Меньше

    A < B

    True, если A < B

    >

    Больше

    A > B

    True, если A > B

    <=

    Меньше или равно

    A <= B

    True, если A < B или A = B

    >=

    Больше или равно

    A >= B

    True, если A > B или A = B

    Таблица 2.6. Операции отношения

    Типичные примеры операций отношения:

    Выражение

    Результат

    123 = 132

    False

    123 <> 132

    True

    17 <= 19

    True

    17 > 19

    False

    7 >= 7

    True

    2.4.4. Булевские операции

    Результатом выполнения логических (булевских) операций является логическое значение True или False (таблица 2.7). Операндами в логическом выражении служат данные типа Boolean.

    Операция

    Действие

    Выражение

    A

    B

    Результат

    Not

    Логическое отрицание

    not A

    True

    False




    False

    True

    and

    Логическое И

    A and B

    True

    True

    False

    False

    True

    False

    True

    False

    True

    False

    False

    False

    or

    Логическое ИЛИ

    A or B

    True

    True

    False

    False

    True

    False

    True

    False

    True

    True

    True

    False

    xor

    Исключающее ИЛИ

    A xor B

    True

    True

    False

    False

    True

    False

    True

    False

    False

    True

    True

    False

    Таблица 2.7. Логические операции

    Результаты выполнения типичных логических операций:

    Выражение

    Результат

    not (17 > 19)

    True

    (7 <= 8) or (3 < 2)

    True

    (7 <= 8) and (3 < 2)

    False

    (7 <= 8) xor (3 < 2)

    True

    2.4.5. Операции с битами

    Если операнды в булевской операции имеют целочисленный тип, то операция выполняется над битами операндов и называется побитовой. К побитовым операциям также относятся операции сдвига битов влево (shl) и вправо (shr).

    Операция

    Действие

    Тип операндов

    Тип результата

    not

    Побитовое отрицание

    Целый

    Целый

    and

    Побитовое И

    Целый

    Целый

    or

    Побитовое ИЛИ

    Целый

    Целый

    xor

    Побитовое исключающее ИЛИ

    Целый

    Целый

    shl

    Сдвиг влево

    Целый

    Целый

    shr

    Сдвиг вправо

    Целый

    Целый

    Таблица 2.8. Побитовые операции

    Примеры побитовых операций:

    Выражение

    Результат

    not $FF00

    $00FF

    $FF00 or $0FF0

    $FFF0

    $FF00 and $0FF0

    $0F00

    $FF00 xor $0FF0

    $F0F0

    $FF00 shl 4

    $F000

    $FF00 shr 4

    $0FF0

    2.4.6. Очередность выполнения операций

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

    20 + 40 / 2

    сначала произойдет деление (ибо скобок, меняющих естественный порядок выполнения операций, нет) и только потом — сложение. Выполнение каждой операции происходит с учетом ее приоритета. Не зная приоритета каждой операции, крайне трудно правильно записать даже самое простое выражение. Значения приоритетов для рассмотренных выше операций представлены в таблице 2.9.

    Операция

    Приоритет

    Описание

    –, not

    Первый

    Унарный минус, отрицаиие

    *, /, div, mod, and

    Второй

    Операции типа умножение

    +, –, or, xor

    Третий

    Операции типа сложение

    =, <>, <,>, <=, >=

    Четвертый

    Операции отношения

    Таблица 2.9. Приоритет операций

    Чем выше приоритет (первый — высший), тем раньше операция будет выполнена.

    2.5. Консольный ввод-вывод

    2.5.1. Консольное приложение

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

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

    Итак, давайте последовательно создадим консольное приложение:

    1. Запустите среду Delphi, выберите в главном меню команду File | Close All, а затем — команду File | New.

    2. Выберите “Console Application” и нажмите “OK” (рисунок 2.1).



    Рисунок 2.1. Окно среды Delphi для создания нового проекта

    1. В появившемся окне между ключевыми словами BEGIN и END введите следующие строчки (рисунок 2.2):

    Writeln('Press Enter to exit...');

    ReadLn;



    Рисунок 2.2. Текст простейшей консольной программы в окне редактора кода

    1. Скомпилируйте и выполните эту программу, щелкнув на пункте Run | Run главного меню среды Delphi. На экране появится черное окно (рисунок 2.3), в левом верхнем углу которого будет содержаться текст "Press ENTER to exit..." ("Нажмите клавишу Enter ...").



    Рисунок 2.3. Окно работающей консольной программы

    1. Нажмите в этом окне клавишу Enter — консольное приложение завершится.

    Теперь, когда есть основа для проверки изучаемого материала, рассмотрим операторы консольного ввода-вывода. К ним относятся Write, Writeln, Read, Readln.

    2.5.2. Консольный вывод

    Инструкции Write и Writeln служат для вывода чисел, символов, строк и булевских значений на экран. Они имеют следующий формат:

    Write(Y1, Y2, ... ,Yn);

    Writeln(Y1, Y2, ... ,Yn);

    где Y1, Y2,..., Yn — константы, переменные и результаты выражений. Инструкция Writeln аналогична Write, но после своего выполнения переводит курсор в начало следующей строки.

    Если инструкции Write и Writeln записаны без параметров:

    Write;

    Writeln;

    то это вызывает пропуск на экране соответственно одной позиции и одной строки.

    2.5.3. Консольный ввод

    Инструкции ввода обеспечивают ввод числовых данных, символов, строк для последующей обработки в программе. Формат их прост:

    Read(X1, X2, ... ,Xn);

    Readln(X1, X2, ... ,Xn);

    где X1, X2, ..., Xn — переменные, для которых осуществляется ввод значений. Пример:

    Read(A); // Вводится значение переменной A

    Readln(B); // Вводится значение переменной B

    Если одна инструкция вводит несколько значений:

    Read(A, B);

    то все эти значения надо набрать на клавиатуре, отделяя одно значение от другого пробелом, и нажать клавишу Enter.

    Если вводится одно значение:

    Read(C);

    то его следует набрать и нажать клавишу Enter. С этого момента программа может обрабатывать введенное значение в соответствии с алгоритмом решаемой задачи.

    Инструкция Readln отличается от Read только одним свойством: каждое выполнение инструкции Readln переводит курсор в начало новой строки, а после выполнения Read курсор остается в той же строке, где и был (потренеруйтесь — и вы быстро поймете разницу).

    В простейшем случае в инструкциях Read и Readln параметры можно вообще не указывать:

    Read;

    Readln;

    Оба этих оператора останавливают выполнение программы до нажатия клавиши Enter.

    2.6. Структура программы

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

    Заголовок программы program <имя программы>;

    Директивы компилятора {$<директивы>}
    Подключение модулей uses <имя>, ..., <имя>;
    Программный блок

    Константы const ...;

    Типы данных type ...;

    Переменные var ...;

    Процедуры procedure <имя>; begin ... end;

    Функции function <имя>; begin ... end;

    Тело программы begin

    <операторы>

    end.

    Любая секция в программном блоке кроме тела программы может отсутствовать. Секции описания констант, типов данных, переменных, процедур и функций могут встречаться в программе любое количество раз и следовать в произвольном порядке. Главное, чтобы все описания были сделаны до того, как они будут использованы (иначе компилятор просто не поймет того, что вы написали).

    2.6.1. Заголовок программы

    Заголовок программы должен совпадать с именем программного файла. Он формируется автоматически при сохранении файла на диске и его не следует изменять вручную. Например, заголовок программы в файле Console.dpr выглядит так:

    program Console;

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

    {****************************************************}

    { Демонстрационный пример }

    { A.Valvachev, K.Surkov, D.Surkov, Yu.Chetyrko }

    {****************************************************}

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

    {$APPTYPE CONSOLE}

    2.6.2. Подключение модулей

    Секция подключения модулей предназначена для встраивания в программу стандартных и разработанных вами библиотек подпрограмм и классов (о подпрограммах и классах читайте ниже). Эта секция состоит из зарезервированного слова uses и списка имен подключаемых библиотечных модулей. При написании программ, эмулирующих текстовый режим, подключается по крайней мере модуль SysUtils. В нем содержатся определения часто используемых типов данных и подпрограмм:

    uses

    SysUtils;

    С момента подключения все ресурсы модуля (типы данных, константы, переменные, процедуры и функции) становятся доступны программисту.

    2.6.3. Программный блок

    Важнейшим понятием в языке Delphi является так называемый блок. По своей сути блок — это программа в целом или логически обособленная часть программы, содержащая описательную и исполнительную части. В первом случае блок называется глобальным, во втором — локальным. Глобальный блок — это основная программа, он присутствует всегда; локальные блоки — это необязательные подпрограммы (они рассмотрены ниже). Локальные блоки могут содержать в себе другие локальные блоки (т.е. одни подпрограммы могут включать в себя другие подпрограммы). Объекты программы (типы, переменные и константы) называют глобальными или локальными в зависимости от того, в каком блоке они объявлены.

    С понятием блока тесно связано понятие области действия программных объектов. Область действия трактуется как допустимость использования объектов в том или ином месте программы. Правило здесь простое: объекты программы можно использовать в пределах блока, где они описаны, и во всех вложенных в него блоках. Отсюда следует вывод — с глобальными объектами можно работать в любом локальном блоке.

    Тело программы является исполнительной частью глобального блока. Именно из него вызываются для выполнения описанные выше процедуры и функции. Тело программы начинается зарезервированным словом
    1   2   3   4   5   6   7   8   9   ...   33


    написать администратору сайта