Вирази в Delphi |
Написав kims | ||||||||||||||||||||||||||||||||||
П'ятниця, 04 січня 2013 18:12 Переглядів: 12809
|
||||||||||||||||||||||||||||||||||
Вирази Вираз — вираз, значення якого привласнюється змінній, ім'я якої було вказано зліва від символу інструкції привласнення. Наприклад: Вираз складається з операндів і операторів. Оператори знаходяться між операндами і позначають дії, які виконуються над операндами. Як операнди виразу можна використовувати: змінну, константу, функцію або інший вираз. Основні оператори алгебри приведені в таблиці нижче.
При записі виразів між операндом і оператором, за винятком операторів DIV і MOD, пропуск можна не ставити. Результат вживання операторів +, - * і / очевидний. Оператор DIV дозволяє отримати цілу частину результату ділення одного числа на інше. Наприклад, значення виразу 5 DIV 2 рівно 2. Оператор MOD, ділення по модулю, дозволяє отримати залишок від ділення одного числа на інший. Наприклад, значення виразу 15 MOD 7 рівно 1. В найпростішому випадку вираз може бути константою або змінною. Приклади виразів: 123 0.001 i+1 А + В/С; Summa*0.75; (В1+ВЗ+ВЗ)/3; Cina MOD 100 При обчисленні значень виразів слід враховувати, що оператори мають різний пріоритет. Так у операторів * /, DIV, MOD більш високий пріоритет, ніж у операторів + і -. Пріоритет операторів впливає на порядок їх виконання. При обчисленні значення виразу в першу чергу виконуються оператори з більш високим пріоритетом. Якщо пріоритет операторів у виразі однаковий, то спочатку виконується той оператор, який знаходиться лівіше. Для завдання потрібного порядку виконання операцій у виразі можна використовувати дужки, наприклад: (r1+r2+r3)/(r1*r2*r3) Вираз, укладений в дужки, трактується як один операнд. Це означає, що операції над операндами в дужках виконуватимуться в звичайному порядку, але раніше, ніж операції над операндами, що знаходяться за дужками. При записі виразів, що містять дужки, повинна дотримуватися парність дужок, тобто число відкриваючих дужок повинне бути рівний числу закриваючих дужок. Порушення парності дужок — найпоширеніша помилка при записі виразів.
Тип виразу Тип виразу визначається типом операндів, що входять у вираз, і залежить від операцій, виконуваних над ними. Наприклад, якщо обидва операнди, над якими виконується операція додавання цілі, то очевидно, що результат теж є цілим. А якщо хоча б один з операндів дробовий, то тип результату дробовий, навіть в тому випадку, якщо дробова частина значення виразу рівна нулю. Важливо уміти визначати тип виразу. При визначенні типу виразу слід мати на увазі, що тип константи визначається її виглядом, а тип змінної задається в інструкції оголошення. Наприклад, константи 1 і -512 — цілого типу (integer), а константи 1.0, 0.0 і 3.2Е-05 — дійсного типу (real). В таблиці приведені правила визначення типу виразу залежно від типу операндів і виду оператора.
Виконання інструкції присвоєння Інструкція присвоєння виконується таким чином: 1. Спочатку обчислюється значення виразу, який знаходиться праворуч від символу інструкції привласнення. 2. Потім обчислене значення записується в змінну, ім'я якої стоїть зліва від символу інструкції привласнення. Наприклад, в результаті виконання інструкцій: i:=0; — значення змінної i стає рівним нулю; а:=b+с; — значенням змінної а буде число, рівне сумі значень змінних b і c; j :=j+1; — значення змінної j збільшується на одиницю. Інструкція присвоєння вважається вірною, якщо тип виразу відповідає або може бути приведений до типу змінної, одержуючої значення. Наприклад, змінній типу real можна привласнити значення виразу, тип якого real або integer, а змінній типу integer можна привласнити значення виразу тільки типу integer. Так, наприклад, якщо змінні i і n мають тип integer, а змінна d — тип real, то інструкції i:=n/10; i:=1.0; неправильні, а інструкція d:=i+1; правильна. Під час компіляції виконується перевірка відповідності типу виразу типу змінної. Якщо тип виразу не відповідає типу змінної, то компілятор виводить повідомлення про помилку: Incompatible types ... and ... де замість трьох крапок вказується тип виразу і змінної. Наприклад, якщо змінна n цілого типу, то інструкція n: = m/2 невірна, тому під час компіляції буде виведено повідомлення : Incompatible types 'Integer' and.'Extended'.
Розглянемо проект в якому можна знаходити суму двох введених чисел, різницю, добуток та частку. Це допоможе краще засвоїти матеріал. 1) Задайте формі потрібних розмірів та назву «Калькулятор» p> 2) Розмістіть на формі потрібні компоненти за зразком, а саме два компоненти Edit, Label, чотири кнопки Button для математичних дій та кнопки : Очистка та Вихід. 3) Для того, щоб Label не змінювала свої розміри під час роботи проекту, слід присвоїти їй властивості Autosize значення False. Для поля краще вибрати білий колір – властивість Color. 4) Переходимо у вікно коду та оголошуємо змінні після слів var Form1: TForm1; a, b, r: Real; 5) Для кожної з кнопок створюємо відповідні процедури, текст яких буде виглядати так:
procedure TForm1.Button1Click(Sender: TObject);// очистка begin Edit1.Clear; Edit2.Clear; Label1.Caption:=''; end; procedure TForm1.Button3Click(Sender: TObject);//сума begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); r:=a+b; Label1.Caption:=FloatToStr(r); end; procedure TForm1.Button4Click(Sender: TObject);// різниця begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); r:=a-b; Label1.Caption:=FloatToStr(r); end; procedure TForm1.Button5Click(Sender: TObject);//добуток begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); r:=a*b; Label1.Caption:=FloatToStr(r); end; procedure TForm1.Button6Click(Sender: TObject);//частка begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); r:=a/b; Label1.Caption:=FloatToStr(r); end; Для переведення рядкових величин в дійсні числа при читанні чисел з Edit1 та Edit2 використано функцію перетворення StrToFloat. Для переведення чисел в рядок використано функцію FloatToStr. Дані функції розглянемо в наступних статтях.
Ця стаття входить в курс уроків по Delphi. Зміст курсу лекцій та практичних занять по Delphi.
Кузбит І.М. ( 10 Проголосувало ) Новіші матеріали:
Старіші матеріали:
3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |