Видавництво пітер oтривок з книги програмування на delphi

Саме оператори виконують всі дії в програмі. У цьому розділі пояснюються оператори Delphi, а також деякі вбудовані функції.

5.1. оператор присвоювання

Оператор присвоювання в Delphi складається з знаків двокрапки і рівності, написаних один за іншим. Зліва від оператора присвоювання пишеться змінна, якій потрібно присвоїти значення, а праворуч - вираз, який потрібно обчислити.

При введенні виразів необхідно пам'ятати, що вони обов'язково повинні бути записані в один рядок. Операції виконуються зліва направо, але множення і ділення завжди до додавання і віднімання. Щоб змусити Delphi виконати, наприклад, складання раніше множення, потрібно поставити круглі дужки:

У першому випадку змінної a присвоїти значення 21. У другому спочатку виконається множення 2 на 3, і в підсумку вийде 11.

До речі, рядки теж можна складати за допомогою плюса, але віднімати з допомогою мінуса можна.

5.2. Оператори введення / виведення

Дуже важливі в Pascal оператори введення / виведення в Delphi не виглядають такими важливими. Адже висновок зараз здійснюється через компоненти на формі, та й зчитування даних теж.

Це все справедливо для додатків, що використовують вікна-форми. Якщо ви пишете консольний додаток (виглядає як вікно DOS), то в ньому можна використовувати Write, WriteLn, Read, ReadLn точно так же, як в Pascal.

Наприклад, n: = Read очікує введення з клавіатури значення, а потім поміщає це значення в змінну n.

Оператор ReadLn Новомосковскет з клавіатури рядок символів, а в іншому використовується як Read. Оператори Write і WriteLn застосовуються для виведення значень змінних.

Ці оператори можуть стати в нагоді і тоді, коли потрібно прочитати або записати файл. Робота з файлами розглянута в гл. 8, тому просто наведу приклади використання даних операторів.

Для читання з файлу використовуються оператори Read і ReadLn.

5.3. Оператор безумовного переходу

Оператор безумовного переходу goto застарів. Використовувати його не рекомендується, так як часто саме застосування цього оператора веде до помилок в програмі і плутанини, до того ж зараз існують інші, більш досконалі методи програмування. Але знати про це операторі безумовного переходу, безсумнівно, потрібно. Раптом за допомогою нього ви створите щось цікаве.

Оператор goto перекидає виконання програми в інше місце. Краще показати це на прикладі.

procedure TForm1.GotoExample;
label m;
begin
a: = 5;
b: = 25;
goto m;
a: = 3;
m:
end;

Тут процедура виконується до оператора goto, а потім перескакує відразу на мітку m. Рядок a: = 3; не виконується. Мітки повинні бути описані в розділі label.

5.4. Оператори умовного переходу

Щоб перевірити якесь умова і виконати ту чи іншу частину програми, існує оператор if. У найпростішому випадку він записується так:

if a = 5 then a: = a * 2;

Якщо умова a = 5 вірно (в даному випадку), то виконується дія, записане після then. Можна виконувати відразу кілька дій, вписавши їх в складовою оператор begin-end.

if a = 5 then begin a: = a * 2; b: = True; end; Таким чином, всі виконувані дії повинні бути записані між словами begin і end (складовою оператор). Зверніть увагу, що після begin не ставиться крапка з комою, так як це триває один оператор (до end). А між begin і end в кінці рядків крапки з комою ставляться.

Оператор if можна записати і так, як показано в лістингу 5.5.

Лістинг 5.5 if a = 5 then begin end else begin end; Тоді якщо a = 5, то виконується перший набір дій. Якщо ж a не дорівнює п'яти, то виконуються інші дії (записані після слова else).

Оператор вибору case

Іноді буває зручно використовувати не if, а оператор case, який перевіряє відразу багато значень.

Лістинг 5.6 case A of 1: s: = 'один'; 2: s: = 'два'; 4: s: = 'три'; 5: s: = 'чотири'; 6: s: = 'п'ять'; 8: s: = 'шість'; else s: = ''; end; // case В наведеному прикладі, оператор case звіряє значення змінної A з зазначеними варіантами. Якщо A = 1, то виконається перший рядок, якщо A = 4 - третя і т. Д. Якщо ж A не дорівнюватиме жодному зі значень, то виконається s: = '' після else (else вказувати необов'язково).

5.6. цикли

У Delphi, як і годиться пристойній мови програмування, можна зробити цикл з відомою кількістю повторень, цикл з передумовою і цикл з умовою поста.

Цикл з відомою кількістю повторень for

Циклом з відомою кількістю повторень є for. Ось його приклад:

for i: = 1 to 20 do s: = s + '';

У циклі for вказується початкове і кінцеве значення змінної (в нашому випадку для змінної i вони рівні 1 і 20 відповідно). Дії, які потрібно виконувати в циклі, вказуються після do. Після do, до речі, може бути і складовою оператор begin-end.

Цикл з передумовою while-do

Даний цикл дуже часто використовується, наприклад, при читанні і запису файлів.

Лістинг 5.7 s: = ''; i: = 0 while i<20 do begin s := s + ' '; i := i + 1; end; Цикл выполняется, пока выполняется условие (в данном случае i<20). Как видите, в теле цикла i каждый раз увеличивается на единицу, и как только перестанет выполняться условие i<20, цикл прекратится. К переменной s при каждом выполнении цикла прибавляется пробел. В итоге должно быть двадцать пробелов.

Можна зробити нескінченний цикл, якщо записати заголовок циклу наступним чином: while True do. Якщо запустити програму з таким циклом, то вона зависне. Тому подібні цикли зазвичай пишуть з виходом з тіла циклу.

Для виходу з циклу служить оператор Break. Оператор Continue використовується, коли потрібно перейти до початку циклу.

Цикл з умовою поста repeat-until

Цей цикл дуже схожий на, але умова ставиться не на початку, а в кінці циклу. Цикл виконується, поки умова помилкова (в загальному, якщо порівнювати з while-do, то все навпаки).

Лістинг 5.8 s: = ''; i: = 0; repeat s: = s + ''; i: = i + 1; until i> 19; У лістингу 5.8 приведений такий же цикл, як і той, який був реалізований через while-do (див. Лістинг 5.7). Зверніть увагу, що в цьому циклі не потрібно писати begin-end. Тілом циклу вважається те, що написано після repeat до until. Цикл виконується, поки умова i> 19 ложно.

Ще одна відмінність циклів while-do і repeat-until в тому, що перший може взагалі ні разу не виконатися, якщо його умова брехливо, а repeat-until хоча б раз обов'язково виконається.

5.7. Операції з числами

Операції з числами, типами та символами, а також їх результати наведені в табл. 5.1.

Таблиця 5.1. Операції з числами, типами та символами

Повертає випадкове число від нуля до (X-1). Перед запуском Random потрібно виконати Randomize. Останнє досить зробити один раз

Трохи про те, як користуватися Low, High, SizeOf. Потрібно оголосити змінну того типу, значення якого ви хочете дізнатися, і потім застосувати Low, High або SizeOf вже до цієї змінної.

Лістинг 5.9 var m: Integer; begin m: = Low (m); // в m буде мінімальне значення типу Integer end;

5.8. Основні математичні функції

Найпростіші математичні функції можна викликати, не підключаючи додаткові бібліотеки (досить стандартних SysUtils і System, які Delphi зазвичай оголошує автоматично при створенні нового проекту), але деякі функції вимагають підключення бібліотеки Math (uses Math).

Основні математичні функції наведені в табл. 5.2.

Таблиця 5.2. Деякі математичні (арифметичні, тригонометричні) функції