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 Коды управляющих последовательностей
Программа 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. Арифметические операции
Математические функции 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|