Основы программирования (947332), страница 63
Текст из файла (страница 63)
Основные стандартные процедуры и функцииОбъявлениеabs(x:integer):integerabs(x:real):realarctan(x:real):realchr(i:integer):charcos(x:real):realdec(var i [; didongint])exp(x:real):realfiac(x:real):rea[^^£(^911 [; dUongint])int(x:re^J)jreal_ОписаниеВозвращает модуль (абсолютное значение)аргументаВозвращает арктангенс аргументаВозвращает i-й символ таблищ>1 символовВозвращает косинус аргументаУменьшает значение i на di единицВозвращает дробную часть аргументаУвеличивает значение i на di единиц_^озвращает yejiyjo ч^асть apr^^возвращает старший байт слова аргументаJo(w:wqrd):byteВозвращает младший байт слова аргументаВозвращает In х (натуральный)ord(x):longintВозвращает^омер значения пор^дшвого_типаpi:realВозвращает значение р|Возвращает значение, предшествующее аргументу!pred(x):<тип х>Возвращает случайное число О < г < 1Jrandom:real__ __ Jrandom(i:mteger):mteger Возвращает случайное число О < п < iИнициализирует датчик ^^^^1randomiseОкругляет аргумент до ближайшего целого числа^|round(x:real):mtegerВозвращает sin х|sin(x:real):realsqr(x:real):realВозвращают х^sqr(i:inteRer):mtegerВозвращает корень квадратный из аргументаsqrt(x: real): realВозвращает значение, ел^yjouiee за аргументомtrunc(x:real):integerВозвращает целое, полученноеотбрасыванием дробной части384ПриложениеШ .
Р у с с к а я кодовая т а б л и ц а д л я M S D O S ( с т р а н и ц а 8 6 6 )x\yiо . 1 i 2 I 3T©Ii 0 I4V16 I • ^ ^32h48пробел!0!1 I 2%45D80 1 PTIQ i R ; SТb i сd112;aВ i СIf.Е8 I 9 ; 10; 1112-^ I • _|D ! о|В$ 'Л U U |<-J&;"б""1-A••$64 \ @'i§_196!6 ! 7-71иV I W XYеf.tUVI wгДЕЖ ! 3I 1441 PС; тI УФXЦЧ: 160бдe I ж3гIm ! пI УШ IЩizЙL _}лI ~млъьымПЭ I Ю Ян I оJ iP I стУфцчЁ \ ёGеъыушощ;_Li 1ГIIIгЪпптг208О.-V192!240!.о1 —^ !H мГТ^ '=^ ни II' 176:224|jИ I Й киL j M ; N\ i ] 'i•XК1g ' hБ ' в !в?8I i JS/-LF ! G i Н: 128: Aa; (.- -41--p13 [ 1 4 I 151Ыь№эюа ! •Примечания:1. Код символа = х + у .2.
Пробел имеет код 32. Символы с кодами О и 255 называют пустыми.3. При выводе символа с кодом 8 предусмотрен звуковой сигнал.4. При выводе символа с кодом 10 происходит переход на следующую строку.5. При выводе символа с кодом 13 происходит установка курсора на начало строки.385ПрилоэюениеПЗ. Расширенные scan-кодыКомбинации клавишРасширенный scan-код1Cntl + 2^Shift +ТаЬjAlt + Q..Alt + Р (верхний ряд букв)::::::::::^::i::"T""i15I1.71 Z7^^^-^^^^^Alt + A..Alt + L (средний ряд букв)30..38i1Alt + Z..Alt + М (нижний ряд)44..50:!F1..F1059..68i!__,1!._;;; ;;;;;;7;;;7"7iНотет;iPage up73'^ 75 "^"" ^->—End_._.\zii. I'jii' ' ^""1179"80Page down81jIns82\831Del..,Shift + Fl..Shift+ F10184..93!Ctrl + Fl..Ctrl + F101j94..
1031Alt + Fl..Alt+F10Ctrl + Print screenCtrl + <rCtrl + ->Ctrl + End~[04|Л13114_...^-1Ctrl + Home_.._|_._JJAlt+l..Alt + = (верхний ряд)Ctrl + Page up]"';;115Ctrl + Page down386-'~"~""],_//" ГГ ^^irzii^< -^"'" ' ii—"1161117_1118!119!120..131•132Прилоэюение2. С т р о к о в ы е т и п ы . Добавлены новые строковые типы, изменено значение String. В результате определены следующие типы строк:• ShortString = String Borland Pascal;• AnsiString - переменная, содержащая указатель на строку из символовAnsiChar размером до 2147483547 байт, завершающуюся нулем (#0), первыйсимвол расположен в элементе с номером 1;• WideString - переменная, содержащая указатель на строку из символовWideChar размером до 2147483547 байт, завершающуюся нулем (#0), первыйсимвол расположен в элементе с номером 1;• PChar - переменная, содержащая указатель на массив array[0..п] ofChar, которая завершается нулем (#0), первый символ расположен в элементе с номером 0;• String соответствует ShortString при {$Н-} и AnsiString при {$Н+}.Строки первых трех типов совместимы.
При присваивании строк любого типа строке PChar используют явное преобразование типа в тип PChar вида: PChar(<cтpoкoвaя переменная>).3. Ф а й л ы. Изменены имена нескольких стандартных процедур в связи с тем, что эти имена используются как имена методов визуальных компонентов: Assign -> AssignFile, Close -> CloseFile.4. И н и ц и а л и з а ц и я п е р е м е н н ы х . В качестве инициализированных переменных при {$J+} используют типизированные константы, какв Borland Pascal, а при {$J-} - инициализированные переменные:f^r <имя>:<тип>=<значение>; ...5. Ф у н к ц и и.
Функция может возвращать параметр любого типа, кроме файла. Внутри функции определена специальная переменная Result, типкоторой совпадает с типом возвращаемого значения. Этой переменной идолжно присваиваться значение результата. Допускается использовать старый вариант, при котором значение результата присваивается переменной,имя которой совпадает с именем функции.6. М о д у л и. При описании модуля можно указывать новые секции:Unit <имя>;Interface <интерфейсная секция>;Implementation <секция реализации>;Initialization <секция инициализации>;Finalization <секция завершения>end.Операции, определенные в секции инициализации, выполняются приподключении модуля, а операции, определенные в секции завершения - призавершении программы.388ПрилоэюениеП4.
Основные отличия Delphi Pascal от Borland Pascal 7.0Языком программирования для среды Delphi является Object Pascal более развитая версия Borland Pascal 7.0. Все отличия Object Pascal отбазовой версии языка разобьем на две группы: отличия средств процедурного программирования и отличие объектной модели.Средства процедурного программирования Delphi Pascal.1. К л а с с и ф и к а ц и я т и п о в д а н н ы х . В Delphi Pascal изменились диапазоны значений существовавших типов данных и появились новыетипы.
Обновленная классификация типов выглядит следующим образом.Целые:ТипShortintByteSmallintWordLongintIntegerCardinalДиапазон-128... 1270...255-32768...327670...65535-2147483648...2147483647То же0...2147483547ФорматзнаковыйбеззнаковыйзнаковыйбеззнаковыйзнаковыйзнаковыйбеззнаковыйРазмер, байт1122444Логические:ТипBooleanByteBoolWordBoolLongBoolРазмер, байт1124Примечаниеord(false)=0, ord(true)=lord(false)=0, ord(true)?tOTo жеРазмер, байтКодировкаКодировка AN^IКодировка UnicodeСимвольные:ТипAnsiChar = CharWideChar12Вещественные:ДиапазонЗначащих цифр Размер, байт ПримечаниеТип±2,9- 10"39... 1,7-10^8Не эффективен11...126Real±1,5- 10-45...3,4-10387...84Single±5.10-324...
1,7.1030815...168Double19...2010Extended ±3,4.10-4932.. J J . 10493219...20.263 .263-1Comp19...20ДенежныйCurrency ±922337203685477.5808387ПргшооюениеОбъектная модель Delphi Pascal. Основное отличие объектной моделизаключается в том, что она предполагает использование только динамических объектов-переменных. При конструировании таких объектов им необходимо выделять память, а при уничтожении - освобождать ее.
Эти функциивыполняют конструктор Create и деструктор Destroy класса TObject, от которого наследуются все классы Delphi. Следовательно, каждый объект при конструировании и уничтожении должен вызывать эти методы. Если класс определяет собственные конструкторы и деструкторы, то они должны включать вызов конструкторов и деструкторов родительского класса:Constructor <гшя класса>,Create;begininherited Create;end;Destructor <имя класса>,Destroy;begininherited Destroy;end;Обращение к объектам осуществляется по имени указателя без использования операции разыменования, что, к сожалению, заставляет забывать обих динамической природе:Borland Pascal 7.0:Delphi Pascal:Type pTNum = ^TNum;TNum = Objectn: integer;constructor Init (an:integer);end;Constructor TNum.Init;beginn;=an;end;TypeTNum = classpublic n; integer;constructor Create (an:integer);end;Constructor TNum.Create;begininherited Create;n:=an;end;Var p.pTNum;BeginNew(p, Init(5));WriteLn(p\n);Dispose(p);End.Var A:TNum;BeginA:=TNum.
Create (5);WriteLn(A.n);A. Destroy;End;...389ПрилоэюениеИзменился синтаксис описания класса, в Delphi Pascal он выглядит так:Туре <имя объявляемого класса> = class (<имя родителя>)private<скрытые элементы класса>protected<защищенные элементы класса>public<общедоступные элементы класса>published<опубликованные элементы класса>automated <элементы, реализующие ОЬЕ-механизм>end;Секция protected содержит объявление полей и методов, доступных впределах модуля и методам классов потомков.
Секция published используется для объявлений компонент, доступных через Инспектор объектов (см.приложение 6).Изменилось описание виртуальных методов: только самый первый виртуальный метод в иерархии описывается virtual, все методы, перекрывающиеего, описываются с директивой override. Если для некоторого класса объявляется деструктор, то он описывается с директивой override, так как деструктор класса TObject является виртуальным.Для описания абстрактных методов класса в объектной модели Delphiиспользуют специальную директиву abstruct, например:Туре TNumber=class(TObject)publicProcedure Print; virtual; abstruct;end;TIntNumber=class(TNumber)private i: integer;publicConstructor Createfai: integer);Procedure Print;override;end;Кроме этого в объектной модели Delphi Pascal появился целый ряд новых возможностей и средств:• динамические и абстрактные полиморфные методы;• свойства (простые, массивы, индексные);• средства реализации делегирования методов;• метаклассы;• перегрузка методов и т.п.Особенности их использования подробно рассмотрены в [5].390ПргтоэюениеП5.
Создание приложений Windows с использованием средыпрограммирования DelphiИнтегрированная среда программирования Delphi (рис. П5.1) предназначена для создания 32-разрядных приложений Windows. В отличие от программ, исполняемых в MS DOS, приложения Windows используют принципсобытийного программирования, согласно которому программа представляет собой совокупность подпрограмм - обработчиков событий, таких, как получение сигналов от клавиатуры, мыши, таймера и т.п.