- •1.1 Общие положения
- •1.2 Количественные оценки
- •1.3 Устройство ПК
- •1.4 Программное обеспечение
- •1.5 Автоматизированные и информационные системы
- •1.6 Разное
- •1.7 Алгоритм
- •2. PASCAL
- •2.1 Алфавит
- •2.2 Типы данных
- •2.3 Переменные
- •2.4 Константы
- •2.5 Стандартные функции
- •2.6 Выражения
- •2.7 Операторы
- •2.7.1 Оператор присваивания
- •2.7.2 Составной оператор
- •2.7.3 Условный оператор IF
- •2.7.4 Условный оператор CASE
- •2.7.5 Оператор цикла FOR
- •2.7.6 Оператор цикла REPEAT
- •2.7.7 Оператор цикла WHILE
- •2.8 Одномерные массивы
- •2.9 Многомерные массивы
- •2.10 Строки
- •2.11 Записи
- •2.12 Множества
- •2.13 Пользовательские типы
- •2.14 Файлы
- •2.15 Перечисляемый тип
- •2.16 Тип-диапазон
- •2.17 Функции и процедуры
- •2.18 Локализация имен
- •2.19 Модули
- •2.20 Операторы прерывания
- •2.21 Комментарии
- •2.22 Указатели
- •2.23 Динамические массивы Delphi
- •3. ОСНОВНЫЕ ПОЛОЖЕНИЯ ООП
- •4. БАЗОВЫЕ КЛАССЫ DELPHI
- •4.1 TObject
- •4.2 Exception
- •4.3 TList
- •4.4 TPersistent
- •4.5 TCollection
- •4.6 TCollectionItem
- •4.7 TStrings
- •4.8 TStringList
- •4.9 TGraphicsObject
- •4.10 TPen
- •4.11 TBrush
- •4.12 TCanvas
- •4.13 TGraphics
- •4.14 TPicture
- •4.15 TComponent
- •4.16 TControl
- •4.17 TWinControl
- •4.18 TGraphicControl
- •4.19 TTimer
- •4.20 TThread
- •4.21 TTreeView
- •4.22 TTreeNodes
- •4.23 TTreeNode
- •4.24 TForm
- •4.25 TMainMenu
- •4.26 TMenuItem
- •4.27 TStatusBar
- •4.28 TStatusPanels
- •4.29 TStatusPanel
- •4.30 TToolBar
- •4.31 TToolButton
- •4.32 TActionList
- •4.33 TAction
15
• логические операции: not
X |
Y |
and |
or |
xor |
False |
False |
False |
False |
False |
False |
True |
False |
True |
True |
True |
False |
False |
True |
True |
True |
True |
True |
True |
False |
• операции отношений: =, <>, <, >, <=, >=;
• круглые скобки.
Порядок вычисления выражений приведен ниже в таблице.
Группа |
Операции или элементы |
1 |
() |
2 |
функции |
3 |
@, not, унарные операции |
4 |
*, /, div, mod, and |
5 |
+, -, or, xor |
6 |
=, <>, <, >, <=, >=, in |
2.7 Операторы
2.7.1 Оператор присваивания
Оператор присваивания выполняет присвоение переменной результата выражения и записывается в виде :=.
Пример:
a := b*10; {целая или вещественная в зависимости от b} a := a+1; {целая или вещественная}
a := sqr(sin(b)); { вещественная} a := b<c; {логическая}
Переменная, которой присваивается результат выражения, должна быть одного с ним типа, или типа большего разряда.
2.7.2 Составной оператор
Необходим в тех случаях, когда оператор требует после себя только один оператор, а необходимо выполнить несколько (begin … end).
2.7.3 Условный оператор IF
Оператор IF реализует алгоритмическую конструкцию “развилка” и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Форматы оператора:
16
if <условия> then <выполнять если истина>;
if <условия> then <выполнять если истина> else <выполнять если ложь>;
Требует один оператор, поэтому часто применяется составной оператор. Пример (сравнение двух чисел):
procedure TForm1.Button1Click(Sender : TObject); var
a,b : integer; begin
a := StrToInt(AEdit.Text);
b := StrToInt(BEdit.Text); if a>b then
ResEdit.Text := 'А больше В' else
if a<b then
ResEdit.Text := 'А меньше B' else
ResEdit.Text := 'А и В равны';
end;
2.7.4 Условный оператор CASE
Данный оператор целесообразно использовать для реализации разветвляющегося алгоритма, когда возможно несколько (более 2) вариантов решения. Формат описания данного оператора:
case <выражение> of <значение1> : <оператор1>; <значение2> : <оператор2>;
…
<значениеN> : <операторN>; else <оператор>;
end;
<выражение> должно быть любого порядкового типа, <значение?> – любое значение из диапазона данного типа, <оператор?> – выполняемые операторы. Оператор else является необязательным.
Пример (определение дня недели по номеру):
procedure TForm1.Button1Click(Sender: TObject); var
DayOfWeek : integer; begin
DayOfWeek := StrToInt(DayEdit.Text); case DayOfWeek of
1 : ResEdit.Text := 'Это понедельник';
17
2: ResEdit.Text := 'Это вторник';
3: ResEdit.Text := 'Это среда';
4: ResEdit.Text := 'Это четверг';
5: ResEdit.Text := 'Это пятница';
6: ResEdit.Text := 'Это суббота';
7: ResEdit.Text := 'Это воскресенье';
else ResEdit.Text := 'Вы неправильно ввели номер дня недели'; end;
end;
2.7.5 Оператор цикла FOR
Данный оператор служит для реализации алгоритмов итерационной структуры при заранее известном числе итераций. Формат оператора:
for <параметр цикла> := <начальное значение> to <конечное значение> do <оператор>;
for <параметр цикла> := <конечное значение> downto <начальное значение> do <оператор>;
<параметр цикла>, <начальное значение>, <конечное значение>
должны быть порядкового типа. При этом <начальное значение> должно быть меньше или равным <конечное значение>, иначе цикл не выполнится ни разу. Первый вид оператора организует перебор <параметр цикла> с увеличением на 1, второй – с уменьшением на 1.
Пример (вычисление факториала):
procedure TForm1.Button1Click(Sender: TObject); var
i,N,F : integer; begin
N := StrToInt(NEdit.Text); F := 1;
for i := 2 to N do F := F*i;
ResEdit.Text := IntToStr(F); end;
2.7.6 Оператор цикла REPEAT
Позволяет организовать итерационный алгоритм в случае, когда заранее неизвестно число повторений. Формат оператора:
18
repeat <операторы>
until <условие>;
Особенностями данного цикла являются:
•тело цикла выполняется как минимум один раз;
•выход из цикла происходит в случае, если условие выполнено, т.е. цикл можно трактовать как “пока не выполнится <условие> выполнять тело цикла”;
•между ключевыми словами repeat … until нет необходимости вставлять составной оператор;
•в цикле нет “параметра цикла”;
•в теле цикла должно быть изменение величин, входящих в условие, иначе
может получиться “вечный цикл”. Пример (xk/k < a {поиск k}):
var
k : integer; x,a,p : real;
begin
a := StrToFloat(AEdit.Text); x := StrToFloat(XEdit.Text); k := 0;
p := 1; repeat
inc(k); p := p*x;
until p/k<a;
KEdit.Text := IntToStr(k); end;
2.7.7 Оператор цикла WHILE
Позволяет организовать итерационный алгоритм в случае, когда заранее неизвестно число повторений. Формат оператора:
while <условие> do <оператор>;
Особенностями данного цикла являются:
•тело цикла может не выполняться ни разу;
•выход из цикла происходит в случае, если условие не выполнено, т.е. цикл можно трактовать как “пока выполняется <условие> выполнять тело цикла”;
•в качестве тела цикла выступает один оператор, поэтому при необходимости выполнения нескольких действий требуется использование составного оператора;
•в цикле нет “параметра цикла”;