Видавництво пітер 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. Деякі математичні (арифметичні, тригонометричні) функції