Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Thank you for the M character.




Отметим, что пользователь вводит символ М, а не соответствующий код символа 77. И программа также выводит символ М, а не код 77. Однако если "заглянуть" в память, то обнаружится, что в переменной ch хранится значение 77. Такое превращение связано не с данными типа Char, а с операторами ReadLn и WriteLn. Эти операторы выполняют преобразование самостоятельно. При вводе с клавиатуры символа М оператор ReadLn преобразует его в значение 77. При выводе данных WriteLn преобразует значение 77 в отображаемый символ М. "Образ действий" операторов ReadLn и WriteLn, определяется типом переменной. Если то же значение 77 присвоить переменной типа Integer, то оператор WriteLn отобразит его как 77 (двумя символами 7). Этот момент иллюстрируется в программе из листинга 2_6.

Программа 2_6

// сопоставление данных типа Char и Integer

program Project1;

{$APPTYPE CONSOLE}

Uses

SysUtils;

Var

c: Char;

i: Integer;

Begin

c:= 'M'; //переменной c присваивается ASCII-код символа M

i:= Integer(c); //тот же код сохраняется в переменной типа Integer

Writeln('The ASCII code for ', c, ' is ', i);

Writeln('Add one to the character code:');

Inc(c);

i:= Integer(c);

Writeln('The ASCII code for ', c, ' is ', i);

Readln;

end.

Результат:

The ASCII code for M is 77

Add one to the character code:

The ASCII code for N is 78

Запись 'М' представляет числовой код для символа М, поэтому инициализация переменной с типа Char с присвоением значения 'М' означает занесение в нее числа 77. Затем идентичное значение присваивается переменной i типа Integer. Теперь обе переменные — с и i — содержат число 77. Затем оператор WriteLn отображает переменную с как символ М и переменную i как число 77. Как уже упоминалось ранее, тип значения определяет образ действий оператора WriteLn, когда последний решает, каким образом отображать данное значение.

Поскольку переменная с в действительности содержит целое число, над ней можно выполнять операции для целых чисел, например прибавление единицы. В результате переменная с будет иметь значение 78. Затем это новое значение присваивается переменной i (можно было просто добавить 1 к переменной i). Оператор WriteLn снова отображает значение типа Char как символ и значение типа Integer как число.

Непечатаемые символы (управляющие последовательности)

В значение строковой константы можно включать как печатаемые, так и непечатаемые символы, указывая после символа «#» десятичное или шестнадцатеричное число от 0 до 255, соответствующее коду ASCII нужного символа. Например, обозначение #13 соответствует символу перевода строки. В записи константы можно чередовать записи в кавычках и записи с символом #. Например, константа

'строка 1'#13'строка 2'

соответствует двум строкам:

Строка 1

Строка 2

Коды управляющих последовательностей

Имя символа Десятичный кодASCII
Новая строка #10
Горизонтальная табуляция #9
Возврат на одну позицию #8
Перевод строки #13
Сигнал #7

 

 

Программа 2_7

// использование управляющих последовательностей

program Project1;

 

{$APPTYPE CONSOLE}

 

Uses

SysUtils;

Var

code: Integer;

Begin

Writeln(#7, '"Operation is now activated!"');

Write('Enter your agent code:________', #8#8#8#8#8#8#8#8);

Readln(code);

Writeln(#7, 'You entered ', code, '...');

Writeln(#7, 'Code verified! Proceed with Plan Z3!');

 

Readln;

end.

После запуска программа выводит на экран следующий текст:

"Operation is now activated!"

Enter your agent code:_______

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

"Operation is now activated!"

Enter your agent code: 42007007

You entered 42007007...

Code verified! Proceed with Plan Z3!

Тип данных Boolean

Переменная Boolean – это переменная, которая может принимать два значения: true (истина) или false (ложь). Также необходимо учитывать, что ненулевые значения интерпретируются как значения true, а нулевые значения – как значения false.

Тип данных с плавающей точкой

Предусмотрен тип данных с плавающей точкой: real.

Арифметические операции

Оператор Действие
+ Сложение
- Вычитание
* Умножение
/ Деление дробных чисел
DIV Деление нацело
MOD Вычисление остатка от деления

Математические функции

function Abs(X);

Возвращает модуль аргумента

r:= Abs(-2.3); { 2.3 }

i:= Abs(-157); { 157 }

function Ceil(const X: Extended):Integer;

Округление до наименьшего целого, превышающего или равного аргументу (модуль Math ).

Ceil(-2.8) = -2

Ceil(2.8) = 3

Ceil(-1.0) = -1

Procedure DivMod(Dividend: Integer, Divisor: Word, var Result, Remainder: Word)

Осуществляет целочисленное деление, возвращая результат и остаток (модуль Math ).

Процедура DivMod осуществляет целочисленное деление Dividend на Divisor, возвращая результат Result (целую часть) и остаток Remainder (разность между Dividend и Result * Divisor).

Например:

DivMod(11, 4, Result, Remainder);

возвращает Result = 2 и Remainder = 3.

function Floor(const X: Extended): Integer;

Округление до наибольшего целого, меньшего или равного аргументу(модуль Math ).

Floor(-2.8) = -3

Floor(2.8) = 2

Floor(-1.0) = -1

function Frac(X: Extended): Extended;

Дробная часть аргумента

R:= Frac(123.456); {0.456 }

R:= Frac(-123.456); {-0.456 }

function InRange(const AValue, AMin, AMax: Integer): Boolean; overload;

function InRange(const AValue, AMin, AMax: Int64): Boolean; overload;

function InRange(const AValue, AMin, AMax: Double): Boolean; overload;

Определяет, лежит ли AValue в диапазоне AMin - AMax. (модуль Math )

Описание

Перегруженные варианты функции InRange возвращают true, если число AValue лежит в диапазоне AMin — AMax, включая границы. Возвращается false, если AValue строго меньше AMin или строго больше АМах.

Например, операторы

L:= InRange(5, 1, 10);

L:= InRange(1, 1, 10);

L:= InRange(10, 1, 10);

зададут булевой переменной L значение true, а операторы

L:= InRange(11, 1, 10);

L:= InRange(0, 1, 10);

зададут L = false.

function Int(X: Extended): Extended;

Целая часть аргумента

R:= Int(123.456); {123.0}

R:= Int(-123.456); {-123.0}

function IntPower(const X: Extended; const X: Integer): Extended register;

Возведение Х в целую степень Е: XE (модуль Math )

function Max(A,B: Integer): Integer; overload;

function Max(A,B: Single): Single; overload;

Максимум двух чисел (модуль Math )

function Min(A,B: Integer): Integer; overload;

function Min(A,B: Single): Single; overload;

Минимум двух чисел (модуль Math )

function Round(X: Extended): Int64;

Ближайшее целое аргумента

Sign(X)

Определяет знак аргумента (модуль Math ). Они возвращают 0, если X = 0,-1, если X < 0, +1, если X > 0.

function Sqr(X: Extended): Extended;

function Sqr(X: Integer): Integer;

Квадрат аргумента: X * X.

function Sqrt(X: Extended): Extended;

Квадратный корень

ВОПРОСЫ ДЛЯ ПОВТОРЕНИЯ

1. Определите следующие переменные:

a. Типа Smallint со значением 80

b. Типа Cardinal со значением 42110

c. Целочисленного типа Integer со значением 3000000000

2. Эквивалентны ли следующие операторы

Var

grade: Char;

Begin

grade = #65;

grade = 'A';

End.

3. Как с помощью программы найти, какому символу соответствует код 88?

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...