Програмування в
ІТ профілі
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Воскресенье, 28.04.2024, 07:20
    Приветствую Вас Гость | RSS
    Главная | Регистрация | Вход
    Вирази в Delphi

    Вирази

    Вираз — вираз, значення якого привласнюється змінній, ім'я якої було вказано зліва від символу інструкції привласнення.

    Наприклад:

     

    Speed:=road / time;
    Speed:=100;

     

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

     

     

    Оператор

    Дія

    +

    Додавання

    -

    Віднімання

    *

    Множення

    /

    Ділення

    DIV

    Ділення без остачі

    MOD

    Обчислення остачі від ділення

     

    При записі виразів між операндом і оператором, за винятком операторів 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).

    В таблиці приведені правила визначення типу виразу залежно від типу операндів і виду оператора. 

     

    Тип операндів

    Тип виразу

    * +, -

    Хоча б один з операндів real

    real

    * +, -

    Обидва операнди integer

    integer

    /

    real або integer

    Завжди real

    DIV, MOD

    Завжди integer

    Завжди integer

     

    Виконання інструкції присвоєння

    Інструкція присвоєння виконується таким чином:

    1. Спочатку обчислюється значення виразу, який знаходиться праворуч від символу інструкції привласнення.

    2. Потім обчислене значення записується в змінну, ім'я якої стоїть зліва від символу інструкції привласнення.

    Наприклад, в результаті виконання інструкцій:

    i:=0; — значення змінної стає рівним нулю;

    а:=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) Задайте формі потрібних розмірів та  назву «Калькулятор»

    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.

     

    Кузбит І.М.

    Куликівська ЗОШ І-ІІІ ст. © 2024
    Сделать бесплатный сайт с uCoz