Читайте также:
|
|
STRINGGRID - таблица строк, используется для ввода/вывода данных в виде двумерной таблицы.
Каждый компонент получает свое имя (имя компонента и номер, например EDIT1 – первый однострочный редактор, размещенный на форме, EDIT2 - второй однострочный редактор, размещенный на форме и т.д.)
Доступ к компонентам осуществляется с помощью соответствующих свойств компонентов, причем для каждого компонента эти свойства могут быть разными.
Имя компонента Свойство для ввода/вывода
EDIT TEXT (в программе записывается EDIT1.TEXT)
MEMO TEXT (в программе записывается MEMO 1.TEXT)
LABEL CAPTION (только вывод) (LABEL1.CAPTION)
STATICTEXT CAPTION (только вывод) (STATICTEXT1.CAPTION)
STRINGGRID массив CELLS [номер столбца, номер строки] в программе записывается STRINGGRID1.CELLS[ j,i ]
Для компонента MEMO часто используется свойство «строка» LINES в сочетании с методом «добавить» ADD. (в программе записывается MEMO1.LINES.ADD ()).
Указанные свойства этих компонентов имеют строковый тип, т.е. тип STRING, поэтому при вводе числовых данных необходимо выполнить соответствующие преобразования данных: 1) при вводе надо перевести данные из строкового типа в числовой, а именно в целочисленный тип или вещественный тип с помощью функций STRTOINT () или STRTOFLOAT (); 2) при выводе данные надо перевести из целочисленного или вещественного типа в строковый с помощью функций INTTOSTR () или FLOATTOSTR ()
Для выполнения этих операций используется оператор присваивания «:=»языка Паскаль.
В левой части оператора записывается имя компонента и его свойство, разделителем является точка, а в правой части – соответствующее значение.
9. Логические операции и выражения Результатом логического выражения является логическоез начение True или False. Логические выражения чаще всего используются в условной инструкции и в инструкциях цикла и состоят из: 1) логических констант true, false; 2) логических переменных типа Boolean; 3) операций сравнения; 4) логических операций; 5) круглых скобок; Операции сравнения производятся после вычисления соответствующих выражений. Результатом операции сравнения является значение False, если соответствующее отношение не выполняется, и значение True, если отношение выполняется. Логические операции (с результатом типа boolean) при применении их к логическим выражениям (операндам логического типа) вырабатывают значения также логического типа. Логические операции And, Or и Xоr являются бинарными, операция Not — унарной. Напомним, что в языке Delphi есть одноименные побитовые (поразрядные) операции, выполняющие действия над битами (разрядами) целых чисел. 1. Отрицание: NOT ("не") Как понятно из названия, данная операция меняет значение логического выражения на противоположное: если была истина, то станет ложь, а если была ложь, то станет истина. Выражение, над которым будет произведена операция, указывается либо после слова NOT через пробел, либо в скобках. Примеры: k:=True; m:=not(k); n:=not m; p:=not(not(m)); Подразумевается, что все переменные описаны типом данных Boolean. Итак, разберём, что здесь происходит: 1.Сначала мы присваиваем переменной k значение True; 2.Далее, выполняя NOT для k получаем False: m становится равным False; 3.n становится противоположным m, т.е. True; 4.Над m делается двойное отрицание, т.е. значение p станет также False. 2. Логическое умножение (конъюнкция) - AND ("и") В отличие от рассмотренного выше NOT, оператор AND работает уже с двумя (и более) выражениями. Логическое умножение равно истине тогда и только тогда, когда все выражения, связанные этим оператором, истинны. Если хотя бы один является ложью, то весь результат будет также ложью. Поэтому, собственно, операция и называется умножением: если истину обозначить за 1, а ложь - за 0, а числа перемножить, то при наличии хотя бы одного нуля весь результат будет нулевым. Примеры: a:=True; b:=False; c:=True; d:=a and b; e:=a and c; f:=not(b) and c; Значение d будет False, т.к. один из операндов (операнды - выражения, которыми управляют операторы) равен False (b). Переменная e примет значение True, ведь и a и c истинны. Наконец, f тоже станет True, ведьnot(b) - это истина и c тоже истина. 3. Логическое сложение (дизъюнкция) - OR ("или") Как и AND, OR работает с несколькими операндами. Название "или" уже отвечает на вопрос "что будет в итоге": если хотя бы один из операндов - истина, то всё выражение будет истиной. Результат False будет только в случае, если все операнды будут ложными. a:=False; b:=True; c:=a or b; d:=not(b) or a; Значение переменной c станет True, а переменной d - False. 4. Исключающее "или" - XOR Данная операция выдат результат True, если один из операндов является истиной, а другой - ложью, т.е. выражения не должны быть одинаковыми. a:=True; b:=False; c:=a xor b; d:=not(a) xor b; e:=not(a) xor not(b); Переменная c станет истиной, ведь a и b различны, а d - ложью, т.к. под сравнение попадут два значения False. Наконец, e станет истиной. Итог Этих четырёх операций - NOT, AND, OR, XOR достаточно для построения логического выражения любой сложности. Эти операторы могут как угодно комбинироваться и можно составлять большие выражения. Однако следует заботиться и о скорости работы. Если выражение вычисляется один раз - всё в норме, но если оно будет вычисляться несколько тысяч раз (например, обработка информации из большой базы данных), то грамотность составленного выражения будет отражаться на скорости выполнения операции. Если в программе появились грмоздкие логические выражения, следует задуматься об их упрощении: одно условие всегда будет проверяться быстрее, чем два. 13.Данные типа указатель. Динамические переменные. Динамической переменной называется переменная, память для которой выделяется во время работы программы. Выделение памяти для динамической переменной осуществляется вызовом процедуры new. У процедуры new один параметр — указатель на переменную того типа, память для которой надо выделить. Например, если р является указателем на тип real, то в результате выполнения процедуры new(p); будет выделена память для переменной типа real (создана переменная типа real), и переменная-указатель р будет содержать адрес памяти, выделенной для этой переменной. У динамической переменной нет имени, поэтому обратиться к ней можно только при помощи указателя. Процедура, использующая динамические переменные, перед завершением своей работы должна освободить занимаемую этими переменными память или, как говорят программисты, уничтожить динамические переменные". Для освобождения памяти, занимаемой динамической переменной, используется процедура Dispose, которая имеет один параметр — указатель на динамическую переменную. Например, если р — указатель на динамическую переменную, память для которой выделена инструкцией new(p), то инструкция dispose (р) освобождает занимаемую динамической переменной память. Описание переменных - указателей Указатель описывается ключевым словомPointer. По первой букве ключевого слова принято называть переменные - указатели с первой буквы P: var PIndexer: Pointer; //нетипизированный указатель Ключевым словом Pointer задаётся так называемый нетипизированный указатель, по аналогии с нетипизированным файлом. Нетипизированный указатель содержит просто адреc некой ячейки памяти. Объект, располагающийся начиная с этой ячейки, соответственно может быть совершенно любого типа и размера. Также в Delphi существуют и типизированные указатели. Они могут указывать на объект соответствующего типа и размера. Именно "могут указывать", потому что это по прежнему адрес одной - первой ячейки области памяти, где располагается объект. И далее его использование в программе зависит от программиста! Итак, типизированный указатель описывается ключевым словом означающим данный тип, перед которым ставится значок ^: var PInteger: ^Integer; //указатель на переменную целого типа PText: ^String; //указатель на переменную типа String Также можно описать любой свой тип, и задать переменную-указатель данного типа: type TMyType = Record X: Integer; S: String; end; var PMyPointer: ^TMyType; Естественно, можно определить тип, для описания через него переменных - указателей. Делается это в том числе и потому, что, например, в процедурах и функциях в качестве параметров можно использовать только заранее описанный тип данных. Например, следующее описание задаёт функцию с параметром, являющимся указателем ранее описанного типа, результат которой также является указателем данного типа: type TPMyPointer = ^TMyType; function MyFunc(Point: TMyPointer): TMyPointer; 17.Обработка исключительных ситуаций в Delphi. Исключительные ситуации в Delphi встречаются постоянно. Исключительная ситуация это такая ситуация, в результате которой генерируется ошибка, и выполнение программы прерывается. Именно потому такая ситуация и называется исключительной. Например, деление на ноль - классический пример исключительной ситуации. Итак, для контроля исключительных ситуаций программист должен подготовить как основной вариант фрагмента, где возможна исключительная ситуация, так и его вариант, в котором она заведомо невозможна, или выводится информационное сообщение для пользователя. Вот как выглядит оператор контроля исключительных ситуаций: try основные операторы фрагмента; except альтернативный вариант фрагмента; end; Вначале производится попытка выполнить операторы секции try/except, содержащие основной вариант программы. При возникновении в каком-либо операторе этой секции исключительной ситуации остальные операторы секции пропускаются, и выполняется секция except/end. Если всё "проходит штатно", то секция except/end пропускается. Ещё один вариант оператора контроля исключительных ситуаций применяется, когда необходимо, чтобы определённый фрагмент кода выполнился в любом случае, возникла исключительная ситуация или нет: try операторы finally заключительные действия end; Основные операторы, находящиеся в секции try, могут пройти штатно, или вызвать исключительную ситуацию. Операторы заключительных действий, находящиеся в секции finally, будут выполнены в любом случае. Есть ещё один способ контроля исключительных ситуаций, касающийся ошибок операций ввода-вывода. Перед участком программы, где возможны ошибки ввода-вывода (а это, по сути, все операторы ввода-вывода), ставится директива {$I-}, заставляющая компилятор не включать в код автоконтроль ошибок ввода-вывода. Таким образом, в случае ошибки ввода или вывода программа не прерывается. В конце участка с операторами ввода-вывода ставится директива, включающая автоконтроль: {$I+}. Затем анализируется результат вызова функции IOResult. Если функция IOResult (вызывается без параметров) возвращает 0, значит ошибок ввода-вывода на данном участке не было. Особые ситуации с целыми числами EIntError - предок исключений, случающихся при выполнении целочисленных операций. EDivByZero - вызывается в случае деления на ноль, как результат RunTime Error 200. EIntOverflow - вызывается при попытке выполнения операций, приводящих к переполнению целых переменных, как результат RunTime Error 215 при включенной директиве {$Q+}. Особые ситуации с памятью EOutOfMemory- происходит в случае вызовов New(), GetMem() или конструкторов классов при невозможности распределения памяти. Соответствует RunTime Error 203. EInvalidPointer- происходит при попытке освобождения уже освобожденного или еще неинициализированного указателя, при вызове Dispose(), FreeMem() или деструктора класса. Особые ситуации с ввода/вывода EConvertError- происходит в случае возникновения ошибки при выполнении функций StrToInt и StrToFloat, когда конвертация строки в соответствующий числовой тип невозможна. Стандартные классы исключений EMathError- предок исключений, случающихся при выполнении операций с плавающей точкой. EInvalidOp- происходит, когда математическому сопроцессору передается ошибочная инструкция. Такое исключение не будет до конца обработано, пока Вы контролируете сопроцессор напрямую из ассемблерного кода. EOverflow- происходит как результат переполнения операций с плавающей точкой при слишком больших величинах. Соответствует RunTime Error 205. EUnderflow - происходит как результат переполнения операций с плавающей точкой при слишком малых величинах. Соответствует RunTime Error 206. EZeroDivide - вызывается в результате деления на ноль. 21.Подпрограммы функции. Функция — это подпрограмма, т. е. последовательность инструкций, имеющая имя. Процесс перехода к инструкциям функции называется вызовом функции или обращением к функции. Процесс перехода от инструкций функции к инструкциям программы, вызвавшей функцию, называется возвратом из функции. В общем виде инструкция обращения к функции выглядит так: Переменная:= Функция (Параметры); где: 1) переменная — имя переменной, которой надо присвоить значение, вычисляемое функцией; 2) Функция — имя функции, значение которой надо присвоить переменной; 3) Параметры ~ список формальных параметров, которые применяются для вычисления значения функции. В качестве параметров обычно используют переменные или константы. Следует обратить внимание на то, что: 1) каждая функция возвращает значение определенного типа, поэтому тип переменной, которой присваивается значение функции, должен соответствовать типу функции; 2) тип и количество параметров для каждой конкретной функции строго определены. Объявление функции в общем виде выгладит так: function Имя (параметр!: тяп1,..., параметр^: типК}: Тип; var // здесь объявления локальных переменных begin // злесь инструкции функции Имя:= Выражение; end; где: 1) function — зарезервированное слово языка Delphi, обозначающее, что далее следуют инструкции, реализующие функцию программиста; 2) Имя — имя функции. Используется для перехода из программы к инструкциям функции; 3) параметр — это переменная, значение которой используется для вычисления значения функции. Отличие параметра от обычной переменной состоит Б том, что он объявляется не в разделе объявления переменных, который начинается словом var, а в заголовке функции. Конкретное значение параметр получает во время работы программы в результате вызова функции из основной программы; 4) Тип ~ тип значения, которое функция возвращает в вызвавшую ее программу. 6. Арифметические операции и выражения Результатом арифметического выражения является число, тип которого зависит от типов операндов, составляющих это выражение. В арифметическом выражении можно использовать числовые типы (целочисленные и вещественные), арифметические операции и функции, возвращающие число. Тип значения арифметического выражения определяется типом операндов и производимыми операциями. Если в операции участвуют целочисленные операнды, то результат операции также будет целочисленного типа. Если хотя бы один из операндов принадлежит к вещественному типу, то результат также будет принадлежать к вещественному типу. Исключением является операция деления, которая всегда приводит к вещественному результату.Унарные арифметические операции + (сохранение знака) и — (отрицание знака) относятся к знаку числа и не изменяют тип числа. В модулях System, SysUtilsи Math содержится много функций для работы с числовыми данными, которые можно использовать в арифметических выражениях. Отметим следующие функции: Abs(х) — абсолютное значение х; Sqrt(x) — корень квадратный из х; Sqr(x) — возведение х в квадрат; Ln(x)—натуральный логарифм х; Exp(x) — возведение числа е в степень х; Sin(х) — синус угла х, заданного в радианах. Кроме функции Sin() есть много других тригонометрических функций, в том числе обратных, например, ArcSin().В качестве аргумента х функций может указываться число, переменная, константа или выражение. Например: 1. (х + 12.3) / 30 * sin(2 * alpha) 2. у + х 3. ехр(3) К целочисленным типам, кроме того, можно применять следующие арифметические операции: Div — целочисленное частное от деления двух чисел; Mod — целочисленный остаток от деления двух чисел. Для целочисленных типов определяются также следующие побитовые (поразрядные) операции: Shl — сдвиг влево; Shr — сдвиг вправо;And — побитовое умножение; Or — побитовое сложение; Xor — побитовое исключающее сложение; Not— побитовое отрицание. Особенностью побитовых операций является то, что они выполняются над операндами поразрядно. 10. Процедурные типы Delphi Для передачи имен функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям были созданы процедурные типы. То есть с помощью процедурного типа обычные процедуры и функции можно интерпретировать как некоторую разновидность переменных. Определение процедурного типа состоит из зарезервированного слова procedure или function, за которым следует полное описание параметров. Для функции доп. указывается тип рез-та. type TProc = procedure (X, Y: Integer); TFunc = function (X, Y: Integer): Boolean; Определив процедурный тип, можно непосредственно перейти к так называемым процедурным переменным. Они объявляются точно так же, как и обычные переменные. var P: TProc; F: TFunc; Директивы inline позволяют писать процедуры и функции, кот. преобразуются при каждом вызове в заданную последовательность инструкций, представляющих собой машинный код. После того как выполнение текущей программы прервано, процессор должен перейти к выполнению программной процедуры, связанной с этим событием – процедуры обработки прерывания. Для ее создания используется директива interrupt (директива - это почти то же самое, что и команда, только обозначает указание компилятору выполнить определенное действие. При помощи директивы END, например, помечается конец программы.) 14.Алфавит и зарезервированные слова Delphi.Алфавит языка Delphi
|
Зарезервированные слова:
and | File | not | then |
array | For | object | to |
asm | function | of | type |
begin | Goto | or | unit |
case | If | packed | until |
const | implementation | procedure | uses |
constructor | In | program | var |
destructor | inherited | record | while |
div | inline | repeat | with |
do | intenface | set | xor |
downto | Label | shl | |
else | Mod | shr | |
end | Nil | string |
Директивы:
Дата добавления: 2015-02-16; просмотров: 201 | Поможем написать вашу работу | Нарушение авторских прав |