Якщо вираз містить кілька операцій, то пріоритет їхнього виконання наступний:
1. Спочатку виконуються арифметичні операції у такому порядку, як вони представлені у таблиці 2.2.
Таблиця 2.2. Пріоритет арифметичних операцій
3. Останні виконуються логічні операції в такому порядку, як вони представлені в таблиці 2.3.
Таблиця 2.3. Пріоритет логічних операцій
Опис операції | Позначення у VВА |
Логічне заперечення | Not |
Логічне "І" | And |
Логічне "АБО" | Or |
Якщо вираз містить кілька операцій однакового пріоритету, то порядок виконання зліва направо. Щоб змінити порядок дій у виразі, використовуються круглі дужки.
Вирази бувають арифметичні, стосунки та логічні.
Арифметичні виразизаписуються за допомогою операндів числових типів та арифметичних операцій, а результатом є числове значення. В арифметичному виразі можна використовувати стандартні математичні функції, які наведені у таблиці 2.4.
Таблиця 2.4. Стандартні математичні функції VBA
Математичний запис | Ім'я функції у VBA | Опис |
½Х½ | Abs(число) | Повертає значення, тип якого збігається з типом переданого аргументу, що дорівнює абсолютним значенням зазначеного числа. |
arctg X | Atn(число) | Повертає значення типу Double, що містить арктангенс числа. |
cos X | Cos(число) | Повертає значення типу Double, що містить косинус кута. |
]X[ | Int(число) | Повертає значення типу, що збігається з типом аргументу, який містить цілу частину числа. |
ln X | Log(число) | Повертає значення Double, що містить натуральний логарифм числа. |
e X | Exp(число) | Повертає значення типу Double, що містить результат зведення числа e(підстава натуральних логарифмів) у зазначений ступінь. |
Sign X | Sgn(число) | Повертає значення типу Variant (Integer), що відповідає знаку вказаного числа. |
sin X | Sin(число) | Повертає значення типу Double, що містить синус кута. |
Sqr(число) | Повертає значення типу Double, що містить квадратний коріньвказаного числа. | |
tg X | Tan(число) | Повертає значення Double, що містить тангенс кута. |
Вирази відношеннявизначають істинність чи хибність результату при порівнянні двох операндів. Порівнювати можна дані будь-якого однакового типу. Результат операції відношення лише логічний: True - "істина" або False - "брехня".
Логічні вирази.Результатом логічного висловлювання є логічне значення True чи False. Найпростішими видами логічних виразів є: логічна константа, логічна змінна, логічна функція, вираз відносин. Логічні операції виконуються лише над операндами логічного типу.
приклад . Записати 1£Х£5 та визначити значення виразу при Х=3.1
Вираз у VВА виглядатиме так:
X>=1 And X<=5
Результатом виразу буде True.
Щоб отримати перелік усіх математичних функцій, достатньо набрати ім'я будь-якої відомої математичної функції (наприклад, SIN), а потім натиснути клавішу F1 Математичні функції . В отриманому переліку можна отримати довідку про призначення будь-якої з вбудованих математичних функцій та її аргумент.
Щоб отримати перелік всіх похідних математичних функцій та правила їх формування, достатньо набрати ім'я будь-якої відомої математичної функції (наприклад, SIN), а потім натиснути клавішу F1та нижче опису обраної функції вибрати посилання на Похідні математичні функції .
Нижче в таблиці 2.5 наведено список функцій, які можуть бути отримані за допомогою вбудованих математичних функцій.
Таблиця 2.5. Похідні математичні функції
Математичний запис | Назва функції | Комбінація вбудованих функцій |
sc X | Секанс | 1/Cos(X) |
csc X | Косеканс | 1/Sin(X) |
ctg X | Котангенс | 1/Tan(X) |
arcsin X | Арксинус | Atn(X/Sqr(-X*X+1)) |
arccos X | Арккосінус | Atn(-X/Sqr(-X*X+1))+2*Atn(1) |
arcsc X | Арксеканс | Atn(X/Sqr(X*X-1))+Sgn((X)-1)*2*Atn(1) |
arccsc X | Арккосеканс | Atn(X/Sqr(X*X-1))+(Sgn(X)-1)*2*Atn(1) |
arcctg X | Арккотангенс | Atn(X)+2*Atn(1) |
sh X | Гіперболічний синус | (Exp(X)-Exp(-X))/2 |
ch X | Гіперболічний косинус | (Exp(X)+Exp(-X))/2 |
th X | Гіперболічний тангенс | (Exp(X)-Exp(-X))/(Exp(X)+Exp(-X)) |
sch X | Гіперболічний секанс | 2/(Exp(X)+Exp(-X)) |
csch X | Гіперболічний косеканс | 2/(Exp(X)-Exp(-X)) |
сth X | Гіперболічний котангенс | (Exp(X)+Exp(-X))/(Exp(X)-Exp(-X)) |
arsh X | Гіперболічний арксинус | Log(X+Sqr(X*X+1)) |
arch X | Гіперболічний арккосинус | Log(X+Sqr(X*X-1)) |
arth X | Гіперболічний арктангенс | Log((1+X)/(1-X))/2 |
arsch X | Гіперболічний арксеканс | Log((Sqr(-X*X+1)+1)/X) |
arcsch X | Гіперболічний арккосеканс | Log((Sgn(X)*Sqr(X*X+1)+1)/X) |
arcth X | Гіперболічний арккотангенс | Log((X+1)/(X-1))/2 |
log n X | Логарифм на підставі N | Log(X)/Log(N) |
Основні оператори мови VBA
3.1. Правила запису операторів
При записі операторів необхідно дотримуватись таких правил:
Кожен новий оператор записується з нового рядка.
Щоб записати кілька операторів на одному рядку, їх поділяють між собою двокрапкою (:).
Якщо оператор не міститься в одному рядку, то необхідно поставити в кінці рядка пробіл і знак підкреслення (_), а потім продовжити частину, що не помістилася, на наступному рядку.
3.2. Оператор присвоєння
Оператор присвоювання використовується, якщо якийсь змінної потрібно надати нове значення. Він має наступний синтаксис:
ІМ'Я_ЗМІННОЇ= ВИРАЗ
Спочатку обчислюється вираз у правій частині, а потім результат надається змінній, що стоїть у лівій частині.
Наприклад . Записати за допомогою оператора присвоєння наступний математичний вираз:
На VВА цей вираз можна записати у вигляді наступного оператора:
Y = a^(1/3)+(a^2+Exp(-b))/(Sin(a)^2-Log(b))
3.3. Оператори введення-виводу
3.3.1. Оператор та функція MsgBox
Оператор MsgBox здійснює виведення інформації в діалоговому вікні та встановлює режим очікування натискання кнопки користувачем.
Він має наступний синтаксис:
MsgBox Повідомлення[,Кнопки][, Заголовок]
Аргументи:
Повідомлення- обов'язковий аргумент, що задає у вікні інформаційне повідомлення. Може складатися з кількох текстових рядків, які об'єднані знаком &. Використання цього аргументу Chr(13) призводить до переходу на новий рядок при виведенні інформації.
Кнопки- значення цього аргументу визначає категорії кнопок, що з'являються у вікні. Від значення аргументу кнопки залежить також, чи з'являється у вікні будь-який значок. Якщо не вказано, які кнопки необхідно відображати у вікні повідомлень, використовується значення за промовчанням, яке відповідає кнопці ОК. У табл. 3.1 наведено можливі комбінації кнопок та значків у вікні повідомлень.
Заголовок- Задає заголовок вікна.
Функція MsgBox повертає значення типу Integer, яке вказує, яка кнопка була натиснута у діалоговому вікні.
Таблиця 3.1. Допустимі значення змінної кнопки
Відображення | Аргумент |
Кнопка ОК | VbOKOnly |
Кнопки ОК та Скасування | VbOKCancel |
Кнопки Так і Ні | VbYesNo |
Кнопки Так, Ні та Скасування | VbYesNoCancel |
Кнопки Припинити, Повторити та Ігнорувати | VbAbortRetryIgnore |
Кнопки Повторити та Скасувати. | VbRetryCancel |
Інформаційний знак | VbInformation |
Знак | VbCritical |
Знак питання | VbQuestion |
Знак оклику | VbExclamation |
Наприклад . Вивести повідомлення про поточну дату.
MsgBox "Сьогодні на календарі" & Date , "Увага"
В результаті буде виведено наступне вікно (рис.3.1).
Після натискання кнопки ОК вікно повідомлення закриється, і виконання програми відновиться з оператора, що стоїть безпосередньо за викликом MsgBox.
3.3.2. Функція InputBox
Функція InputBox здійснює введення значень змінних за допомогою вікна введення та має наступний синтаксис:
Ім'я_Змінної = InputBox( Повідомлення[, Заголовок])
Аргументи:
Повідомлення- Обов'язковий аргумент. Задає у вікні інформаційне повідомлення, що зазвичай пояснює зміст величини, що вводиться
Заголовок- Задає заголовок вікна.
Наприклад , Ввести значення змінної N з клавіатури, передбачивши значення за промовчанням 10.
Для цього можна використовувати наступний оператор:
N = InputBox("Введіть N", "Введення вихідних даних",10)
В результаті буде виведено наступне вікно для введення змінної значення N (рис.3.2).
Якщо значення за замовчуванням підходить користувачеві, то після натискання кнопки ОК вікно введення закриється, змінній N присвоюється значення 10 і виконання програми відновиться з оператора, що стоїть безпосередньо за викликом InputBox.
Якщо значення за замовчуванням не підходить користувачеві, то перед клацанням по кнопці ОК необхідно ввести потрібне значення змінної N.
3.4. Умовний оператор IF
Для реалізації обчислювального процесу, що розгалужується, в VBA використовується оператор If…Then…Else, який являє собою найпростішу форму перевірки умов. Він має наступний синтаксис:
If УМОВИ Then ОПЕРАТОР_1 Else ОПЕРАТОР_2
ОПЕРАТОР_1виконується, якщо УМОВИістинно, інакше виконується ОПЕРАТОР_2. При цьому оператор If ... Then ... Else записується в один рядок.
УМОВИ- Це вираз логічного типу. Результат виразу завжди має булевський тип. Вираз може бути простим та складним. При записі простих умов можуть використовуватися всі можливі операції відносини, зазначені у таблиці. 3.2.
Таблиця 3.2. Логічні відносини
Складні умови утворюються із простих шляхом застосування логічних операцій та круглих дужок. Список логічних операцій наведено у табл. 3.3.
Таблиця 3.3. Логічні операції
В умовному операторі допустиме використання блоку операторів замість кожного оператора. У цьому випадку умовний оператор має вигляд:
If УМОВИ Then
БЛОК_ОПЕРАТОРІВ_1
БЛОК_ОПЕРАТОРІВ_2
В умовному операторі може перевірятись декілька умов. У цьому випадку умовний оператор має вигляд:
If УМОВА_1 Then
БЛОК_ОПЕРАТОРІВ_1
ElseIf УМОВА_2 Then
БЛОК_ОПЕРАТОРІВ_2
Приклад 1 . Написати частину програми алгоритму на рис. 3.3.
приклад 2. Написати частину програми алгоритму на рис. 3.4.
3.5. Оператор вибору Select Case
Оператор Select Case зручно використовувати, коли в залежності від значення деякого виразу, що має кінцеву множину допустимих значень, необхідно виконати різні дії. Він також відноситься до умовних операторів, але має інший вигляд:
Select Case ПЕРЕВІРОВАНЕ_ВИРАЗ
Case ЗНАЧЕННЯ_1
ОПЕРАТОРИ_1
Case ЗНАЧЕННЯ_2
ОПЕРАТОРИ_2
Case ЗНАЧЕННЯ_N
ОПЕРАТОРИ_N
[ Case Else
Інакше_оператори]
ПЕРЕВІРОВАНЕ_ВИРАЗможе мати будь-який скалярний тип, крім речового. ЗНАЧЕННЯскладаються з довільної кількості значень або діапазонів, відокремлених один від одного комами.
Тип ЗНАЧЕНЬповинен збігатися з типом ПЕРЕВІРНОГО_ВИРАЗУ.
Спочатку обчислюється ПЕРЕВІРОВАНЕ_ВИРАЗ. Якщо його значення збігається з одним із значень ЗНАЧЕННЯ_I, то виконаються ОПЕРАТОРИ_Iта керування передається оператору, що стоїть після End Select. Якщо його значення не збігається з жодним із значень ЗНАЧЕННЯ_I, то виконаються Інакше_операторита керування передається оператору, що стоїть після End Select
Наприклад. Написати частину програми алгоритму на рис. 3.5, що визначає значення змінної S залежно від значення змінної n.
3.6. Оператори циклу
Для реалізації циклічного обчислювального процесу, тобто багаторазового виконання одного або декількох операторів, служить оператор циклу For…Next, який має наступний синтаксис:
For ЛІЧИЛЬНИК=НАЧ_ЗНАЧЕННЯТо КОН_ЗНАЧЕННЯ Step КРОК
БЛОК_ОПЕРАТОРІВ
БЛОК_ОПЕРАТОРІВ
Next ЛІЧИЛЬНИК
Цикл For…Next перебирає значення змінної ЛІЧИЛЬНИК, яка є параметром циклу, від початкового до кінцевого значення із зазначеним кроком зміни. При цьому забезпечується виконання блоку операторів тіла циклу при кожному новому значенні лічильника. Якщо Step КРОКу конструкції відсутня, то за умовчанням вважається, що крок дорівнює 1. За оператором Exit For можна вийти з оператора циклу до того, як ЛІЧИЛЬНИКдосягне останнього значення.
Для перебору об'єктів із групи подібних об'єктів, наприклад, осередків із діапазону або елементів масиву, зручно використовувати оператор циклу For… Each…Next.
For Each Елемент In Група
БЛОК_ОПЕРАТОРІВ
БЛОК_ОПЕРАТОРІВ
Next Елемент
У VBA для організації циклів з невідомим заздалегідь числом повторень використовуються інші оператори циклу:
цикли з передумовою - Do While ...
Do Until … Loop;
цикли з постумовою – Do … Loop While,
Do … Loop Until.
Нижче наведено синтаксис цих операторів циклу:
Цикл з передумовою Do While ... Loop
Do While УМОВИ
БЛОК_ОПЕРАТОРІВ
БЛОК_ОПЕРАТОРІВ
Цикл з передумовою Do Until ... Loop
Do Until УМОВИ
БЛОК_ОПЕРАТОРІВ
БЛОК_ОПЕРАТОРІВ
Цикл з постумовою Do … Loop While
БЛОК_ОПЕРАТОРІВ
БЛОК_ОПЕРАТОРІВ
Loop While УМОВИ
Цикл з постумовою Do … Loop Until
БЛОК_ОПЕРАТОРІВ
БЛОК_ОПЕРАТОРІВ
Loop Until УМОВИ
Оператор Do While…Loop забезпечує багаторазове повторення блоку операторів доти, доки УМОВИдотримується, а оператор Do Until ... Loop поки УМОВИне дотримується. Оператори Do…Loop While, Do…Loop Until відрізняються від перерахованих вище операторів тим, що спочатку блок операторів виконується принаймні один раз, а потім перевіряється УМОВИ.
Для уникнення зациклювання в тілі циклу повинен бути хоча б один оператор, який змінює значення змінних, що стоять у УМОВИ.
Оператор Exit Do забезпечує достроковий вихід із оператора циклу.
приклад 1. Скласти фрагмент програми алгоритму на рис. 3.6.
Приклад 2 . Скласти фрагмент програми алгоритму на рис. 3.7.
Приклад 3 . Скласти фрагмент програми, що відповідає алгоритму
Структура програми. Модулі, процедури та функції
Модуль являє собою текстовий файл ASCII з програмним кодом, що містить підпрограми, змінні і константи. Проект може складатися з багатьох програмних модулів. Для їх створення потрібно виконати команду Вставка Модуль. Робоче вікно модуля представлено на рис. 4.1.
Основу програм у VBA становлять процедури та функції.
Процедура Sub- це відокремлена сукупність операторів VBA, що виконує певні дії. В загальному випадку процедура приймає деякі параметри (змінні, які передаються процедурі як вихідні дані), виконує програму і може повертати результуючі значення, які присвоюються параметрам всередині процедури. Однак найчастіше використовуються процедури без параметрів. Наприклад, процедури, які виконуються при виникненні певних подій. Вкладеність процедур до інших процедур не допускається. Структура процедури така:
[ДОСТУП] Sub ІМ'Я_ПРОЦЕДУРИ([СПИСОК_ПАРАМЕТРІВ])
ТІЛО_ ПРОЦЕДУРИ
Ключове слово ДОСТУПє необов'язковим та визначає область видимості процедури. Public показує, що процедура доступна всім інших процедур в усіх модулях (глобальна). Private вказує, що процедура доступна для інших процедур лише модуля, в якому вона описана (локальна). СПИСОК_ПАРАМЕТРІВтакож є необов'язковим елементом і дозволяє передавати процедурі різні вихідні дані під час виклику, які називаються формальними параметрами. У цьому ключове слово Dim не вказується. ТІЛО_ПРОЦЕДУРИскладається з описової частини та блоку операторів, що виконуються один за одним. Якщо необхідно припинити виконання процедури в певному місці, це можна зробити за допомогою оператора Exit Sub. ІМ'Я_ПРОЦЕДУРИ– це будь-який ідентифікатор, визначений користувачем. Ідентифікатор – це послідовність літер, цифр та символу підкреслення, що починається з літери (пробіли всередині ідентифікатора неприпустимі). Ім'я процедури завжди визначається лише на рівні модуля. Для використання процедури в тексті програми (тобто для її виклику), необхідно вказати ім'я процедури та список фактичних параметрів, які мають за типом та порядком прямування співпадати з формальними параметрами.
Функція Function багато в чому схожа на процедуру, але, на відміну від неї, при викликі завжди повертає значення. Функція отримує параметри, які називають аргументами, і виконує з ними деякі дії, результат яких повертається функцією. Структура функції така:
[ДОСТУП] Function ІМ'Я_ФУНКЦІЇ(СПИСОК_АРГУМЕНТІВ) As ТИП
ТІЛО_ ФУНКЦІЇ
ІМ'Я_ФУНКЦІЇ = ВИРАЗ
ТИПвизначає тип даних результату, що повертається. У тілі функції обов'язково повинен бути присутнім, принаймні, один оператор, який надає імені функції значення виразу, що обчислюється. Дострокове завершення функції можливе за допомогою оператора Exit Function. У програмі виклик функції здійснюється за допомогою оператора присвоєння, у правій частині якого вказується ім'я функції з переліком фактичних параметрів, як будь-якої іншої вбудованої функції, наприклад, Sqr, Cos або Chr.
Процедури та функції, які не описані явно за допомогою ключових слів Public або Private, за промовчанням є спільними.
Для швидкого додавання до модуля підпрограм зручно скористатися командою Вставка Процедура. У вікні (рис. 4.2) потрібно вибрати необхідні опції.
У MS Excel з функціями, створеними користувачем, можна працювати за допомогою Майстра функцій так само, як і з вбудованими функціями робочого листа.
приклад. У MS Excel створити функцію користувача, математично визначену так:
y = sin(x) ∙ e -5x
Створимо модуль, як зазначено вище (рис 4.2), та введемо до нього текст наступної програми:
Public Function Y(x As Single) As Single
Y = Sin (x) * Exp (- 5 * x)
Для використання створеної функції на робочому аркуші MS Excel введемо до осередку А2 число 0.1. У комірці В2 обчислимо значення функції Y за x = 0.1. Для цього в комірку В2 достатньо ввести формулу Y(A2). Це можна зробити і за допомогою Майстра функцій, який міститиме функцію Y поряд з іншими вбудованими функціями MS Excel (рис 4.3).
Загальні принципи організації програм VBA у модулі такі. Зазвичай текст програми починається з опцій, що управляють описом змінних, способом порівняння рядків і т.д.
Потім слідує оголошення глобальних даного модуля змінних і констант, тобто. таких, що використовуються у всіх процедурах модуля.
Розділювачем операторів в одному рядку під час запису програми є символ “:”.
Для перенесення оператора на інший рядок використовується символ "_" (знак підкреслення).
Іноді всередині програми зручно розміщувати коментарі – пояснювальний текст, який ігнорується компілятором та може бути записаний у будь-якому місці програми. Коментарі також зручно використовувати при налагодженні програми для тимчасового відключення операторів. Кожен рядок коментарів починається зі знака апострофа.
Приклад організації модуля:
PI – глобальна константа
Const PI As Double = 3.14159
' x - глобальна змінна
‘ Функція Disc обчислює площу кола
Public Function Disc(R As Double) As Double
Disc = PI * R ^ 2
‘ Функція Rec обчислює площу трикутника
Public Function Rec(A As Double, As Double, As Double) As Double
p – локальна змінна
p = (a + b + c) / 2
Rec = Sqr (p * (p - a) * (p - b) * (p - c))
‘ Процедура Result викликає функції Disc та Rec та виводить результати
Public Sub Result ()
'R_1, R_2, a, b, c - локальні змінні
Dim R_1 As Double
Dim R_2 As Double
R_1 = Disc(2.5)
MsgBox " Площа кола = " & CStr(R_1) & ", x = " & CStr (x)
R_2 = Rec (a, b, c)
MsgBox " Площа трикутника = " & CStr(R_2)
Тут інструкція Option Explicit вказує на необхідність опису типів змінних, які використовуються на даному аркуші модуля.
Інструкція Option Base 1 вказує, що індексація елементів масиву розпочинатиметься з 1.
Функція Sqr обчислює квадратний корінь аргументу.
Функція CStr переводить числовий формат у рядковий.
Створення форм у VBA та включення їх до проектів
Завантажити без реєстрації новинки фільмів, музики, фільмів та інше. Наприклад скачати безкоштовно Створення форм у VBA та включення їх до проектів без реєстрації
Коментарі (0)
5.1. Створення форм. Властивості, події та методи форм
Форма - це головний об'єкт, що утворює візуальну основу програми. По суті форма є вікно, у якому можна розміщувати різні керуючі елементи під час створення додатків. Для створення форми потрібно виконати команду Вставка UserForm. У вікні Конструктора форм з'явиться форма, що має стандартний вигляд для Windows (рис. 5.1).
Як і будь-який інший об'єкт VBA форма має набір властивостей, основні з яких наведені у таблиці 5.1. Для отримання довідки з будь-якої властивості достатньо виділити його у вікні властивостей і натиснути F1.
Таблиця 5.1. Основні властивості форми
Властивості можна змінювати в режимі конструювання у вікні властивостей або програмно в режимі виконання. Наприклад, під час виконання програми можна змінити заголовок форми командою:
frmForm1.Caption = "Вітання"
Програми для комп'ютера в Windows керуються подіями. Щоразу, коли натискається кнопка, переміщається миша, змінюються розміри форми тощо, ОС генерує повідомлення. Повідомлення доставляється відповідному об'єкту, наприклад, формі, а та генерує відповідну подію. Отже, можна скласти фрагмент програми, у якому об'єкт реагуватиме на подію певним чином, тобто. будь-якій стандартній події відповідає певна процедура. Щоб переглянути події, пов'язані з формою, необхідно в режимі конструювання двічі клацнути на ній – з'явиться вікно програми, в якому клацнути у списку Процедура. У табл. 5.2 наведені найчастіше використовувані події.
Таблиця 5.2. Основні події форм
Наступний приклад змінює заголовок форми при активізації, і зменшує розмір форми після натискання лівою кнопкою миші на формі.
Private Sub UserForm_Activate()
frmForm1.Caption = "Клацання на формі зменшує її розміри"
Private Sub UserForm_Click()
frmForm1.Width = frmForm1.Width/2
frmForm1.Height = frmForm1.Height / 2
frmForm1.Caption = "Зроби це ще раз!"
Також форма має набір методів та інструкцій. Метод визначає дію, яка може бути виконана з об'єктом. Інструкція ініціює дію. Вона може виконати метод або функцію, табл. 5.3 і 5.4 наведені методи та інструкції для роботи формами, що найчастіше використовуються.
Таблиця 5.3. Основні методи форм
У наступному прикладі передбачається, що у проекті створено дві форми frmForms. При запуску проекту відбувається подія Initialize для форми frmForm1, форма frmForm2 завантажується та виводиться на екран. Коли за допомогою миші вибирається frmForm2, вона робиться невидимою і з'являється форма frm Form1. Якщо вибирається frmForm1, frmForm2 з'являється знову.
"Подія Initialize форми frmForm1.
Подія Click для форми frmForm2
Private Sub UserForm_Click()
Подія Click для форми frmForm1
Private Sub UserForm_Click()
5.2. Вибір та використання керуючих елементів
Створення керуючих елементів на формі виконується за допомогою панелі інструментів, яка виводиться на екран командою Вигляд панелі елементів (рис. 5.2).
За допомогою кнопок цієї панелі можна помістити у форму потрібний елемент керування. Для цього потрібно клацнути на значку елемента управління, далі при натиснутій лівій кнопці миші визначити розмір та місце розташування елемента у формі. Коли елемент на формі виділений (рамка об'єкта містить маленькі прямокутники) можна змінювати його розміри та переміщати за допомогою миші, а також переглядати та змінювати його властивості у вікні властивостей.
Кожен керуючий елемент (об'єкт) характеризується набором властивостей (які можна змінювати в режимах конструювання чи виконання), подій та методів.
Для кожного об'єкта проекту необхідно визначити його ім'я. Відповідно до загальноприйнятих угод про імена об'єктів перші три символи імені повинні відображати вид елемента, а інші символи - призначення. У табл. 5.5. представлені поєднання перших трьох символів для часто використовуваних елементів.
Командна кнопка є найпоширенішим елементом управління, і може використовуватися для організації виконання обчислень та інших дій, виклику процедур та функцій користувача, відкриття форм тощо. Основні властивості командної кнопки представлені у табл. 5.6. В якості Caption можна ставити символ & перед літерою, яка буде використовуватися в поєднанні з клавішею Alt для прискореного доступу до кнопки. Також можна перейти до кнопки Tab, а потім натиснути Enter.
Таблиця 5.6. Властивості командних кнопок
Основною подією кнопки є Click. Для написання програмного коду, який виконуватиметься при натисканні командної кнопки, достатньо двічі натиснути на ній лівою кнопкою миші в режимі конструювання проекту.
Найкориснішим методом командної кнопки є SetFocus, що дозволяє повернутися до кнопки (передати їй фокус). Наприклад, наступна команда дозволяє повернутися до стандартної кнопки після введення даних у текстове поле: cmdMyButtum.SetFocus
Текстове поле застосовується для введення чи виведення інформації. Основні властивості текстового поля представлені у табл. 5.7.
Таблиця 5.7. Властивості текстового поля
Наприклад, для очищення вмісту текстового поля під час виконання програми необхідно ввести в потрібному місці програмного коду команду:
txtResult.Text=" "
Основною подією текстового поля є Change, що відбувається під час введення або видалення символів. Наприклад, команду cmdMyButtum.SetFocus можна помістити у процедуру події Change текстового поля.
Напис застосовується як самостійно для виведення довідкової інформації, так і у вигляді підказок для текстового поля, списку або іншого елемента. Головна відмінність від текстового поля в тому, користувач не може змінити текст напису (хоча його можна змінити як властивість під час виконання програми). Основні властивості напису представлені у табл. 5.8.
Таблиця 5.8. Властивості напису
Список дозволяє працювати з переліком із кількох варіантів. Користувач може переглянути вміст списку та вибрати один із варіантів для подальшої обробки. Пряме редагування вмісту списку неможливе. Якщо в списку розміщуються не всі рядки, то автоматично додається вертикальна смуга прокручування. Основні властивості списку представлені у табл. 5.9.
Таблиця 5.9. Властивості списку
Для списку найчастіше використовуються події Click та DblClick (подвійне клацання лівою кнопкою миші на одному з рядків списку). У другому випадку користувач одночасно виділяє рядок і починає його обробку.
Робота зі списком починається з заповнення методом AddItem, який може викликатися кілька разів поспіль. Часто метод AddItem міститься в процедурі UserForm_Initialize(), щоб список заповнювався під час завантаження форми. Метод RemoveItem видаляє рядки зі списку. Метод Clear очищає одразу весь список. Наступний приклад показує, як працюють списки, при цьому передбачається, що у проекті створено форму з двома списками (List1 і List2). Подвійне клацання на будь-якому рядку одного списку переміщує її до іншого списку. Рядок включається до іншого списку, перш ніж його видалити з поточного.
Private Sub UserForm_Initialize()
List1.AddItem "Стіл"
List1.AddItem "Стілець"
List1.AddItem "Диван"
List1.AddItem "Крісло"
List1.AddItem "Ліжко"
Private Sub List1_DblClick()
List2.AddItem List1.Text
List1.RemoveItem
Private Sub List2_dblClick()
List1.AddItem List2.Text
List2.RemoveItem
Перемикачі дозволяють вибрати один варіант із групи. Зазвичай вони групуються в рамках (див. далі), проте їх можна розташовувати прямо на формі, якщо використовується лише одна група перемикачів. Основні властивості перемикача представлені у табл. 5.10.
Таблиця 5.10. Властивості перемикача
Найбільш важливим є властивість Value значення True (перемикач знаходиться у встановленому стані), якого в режимі конструювання задається тільки в одного перемикача групи. У режимі виконання ця властивість найчастіше перевіряється у процедурі події Click кнопки, натиснутої після встановлення потрібного перемикача, що дозволяє перевірити перед викликом наступної процедури певну умову. Однак певні дії можна виконувати відразу після вибору перемикача в процедурі його події Click.
Прапорець частково аналогічний перемикачу, але, на відміну від нього, може використовуватися як окремий самостійний елемент. Навіть об'єднані у групу прапорці працюють незалежно один від одного. Основні властивості прапорців такі ж, як у перемикача (див. табл. 5.10). Однак властивість Value може набувати трьох значень (прапорець знаходиться у встановленому стані, знятому або невизначеному).
Найчастіше використовуваною подією прапорців є Click, у процедурі якого можна перевіряти стан прапорця за якістю Value. Наступний приклад ілюструє роботу прапорців, у своїй передбачається, що у проекті створено форму з двома прапорцями (ChkBold і ChkInalic) і текстовим полем TxtExam (рис.5.3). Після введення символів у текстове поле за допомогою прапорців можна робити текст напівжирним або курсивом. Властивості FontBold і FontItalic текстового поля встановлюють способи написання тексту.
Мал. 5.3. Використання прапорців
Private Sub Chkbold_Click()
If ChkBold.Value = True Then
TxtExam.FontBold = True
TxtExam.FontBold = False
Private Sub ChkItalic_Click()
If ChkBold.Value = True Then
TxtExam.FontItalic = True
TxtExam.FontItalic = False
Рамка використовується для угруповання перемикачів або прапорців і поміщається на форму раніше елементів, що знаходяться всередині неї. Перемикачі, що знаходяться всередині рамки, працюють як самостійна група і не впливають на стан перемикачів в інших рамках. Основною властивістю рамки є Caption, яка задає текст, що визначає призначення елементів у рамці.
Малюнок використовується для найпростішого виведення зображення на формі. Він може відображати растрові файли (.BMP), значки (.ICO), метафайли (WMF), а також файли у форматі JPEG (.JPG) та GIF (.GIF). Основні властивості малюнка представлені у табл. 5.11.
Таблиця 5.11. Властивості малюнка
Події та методи рамок та малюнків практично не використовуються.
Вітаю вас, шановні читачі блог сайт! Минулого разу ми розглядали питання про вбудовану мову 1С:Підприємство 8. Сьогодні ми поговоримо про про пріоритети арифметичних операцій примітивних типів даних, а також розглянемо кілька підряд арифметичних операцій. Давайте подивимося!
З програми школи, ви знайомі з тим, що найвищим пріоритетом в арифметичних операціяхє круглі дужки "()".
Якщо вираз знаходиться у круглих дужках, то перш за все буде виконуватися саме воно. Наступним за пріоритетом йдуть унарні операції "+" і "-", унарна операція означає, що вказується операція та одне значення, наприклад "-5". Третіми виконуються операції множення і розподілу й у останню чергу додавання і віднімання. Давайте розглянемо як це працює:
99+15/5*8
У цьому випадку на початку 15 буде розділено на 5, отримане число помножено на 6 і третя операція: 99 додатись до отриманого числа. Далі такий простий вираз 10+5/2+1. Зрозуміло, що першим виконаються операція поділу, далі виконаються операція складання. Якщо використовувати дужки:
(90+30)/(7+5)
У цьому випадку на початку ми складемо 90 і 30 і поділимо все це на 7+5 і в цьому випадку вираз дорівнює 10. Розглянемо інші операції, які можливі в програмному коді 1С:Підприємство 8. Можливо, ви працювали в PHP, де можливий такий оператор i++;або i-;. Це інкремент чи декремент однією одиницю. Виконання таких операторів у 1С неможливе, але можливий оператор i++1;і j-1;. Давайте розберемо їх докладніше. Це цілком нормальний оператор. Відкриємо модуль будь-якого довідника у Конфігураторі:
Конфігурація -> Довідники -> Номенклатура, правою кнопкою миші викличемо пункт Відкрити модуль об'єкту.
Щоб не було помилки, оголосимо змінну в цьому програмному коді:
A=0; b=a++1;
Якщо перевірити на синтаксичні помилки, їх не буде. Навіть якщо вираз розмістити на різних рядках:
A=0; b = a + 1;
Взагалі, переклади рядків не впливають на виконання операторів. Як працюватиме такий оператор? Компілятор мови 1С спочатку виконає унарну операцію плюса, тобто +1 дасть 1 і потім до aдодасть одиницю. Це те саме що скласти a з одиницею. Так само можна написати:
A=0; b=a+-1;
Спочатку виконується унарна операція мінуса, виходить -1, потім складається мінус і плюс і виходить -1. Відповідно це те саме, що і i-1. Потрібно знати про такі специфічні операції та розуміти, як вони будуть виконуватися. Це допоможе правильно розставляти пріоритети арифметичних операцій відповідно до того порядку, про який ми говоримо.
Отже, ми з'ясували, що система спокійно відпрацьовує операцію, де зустрічаються дві поспіль арифметичні операції, наприклад ++, +-, -+, а що буде, якщо ми напишемо кілька арифметичних операцій поспіль? Це можна перевірити. Для цього відкриємо 1С:Підприємство з Конфігуратора в режимі налагодження, клавіша F5. Поставимо крапку зупинки, клавіша «F9», в кінці нашого виразу і введемо простий вираз у табло. У Конфігураторі відкриємо пункт меню Налагодження -> Табло.
Запишемо в табло вираз 3+++5, зверніть увагу, на виході у нас виходить помилка у виразі. Платформа такого перетворення зробити не може. Вираз 3++5 спрацьовує, тоді як із трьома плюсами система не розуміє, чого саме від неї хочуть. Але якщо поставити дужки 1++(+2) , все це буде виконано коректно. Як бачимо, щоб правильно організувати роботу арифметичних операцій необхідно добре розуміти пріоритети їх виконання. У наступній статті ми розглянемо.
Лекція 4 Кафедра прикладної математики М-703, тел. 362-79-62 К.т.н., професор Глаголєв Віктор Борисович, кімн. Ж-405б, тел. 362-73-28 http://glagvik.narod2.ru/index.htm Арифметичні операції Пріоритет арифметичних операцій Математичні функції Масиви Логічні операції Пріоритет операцій
Операції та функції VB має великий набор вбудованих функцій. Їх можна розділити на кілька категорій: Фінансово-математичні функції Математичні функції Функції обробки рядків Функції перетворення типів Інші функції
Ознайомитись з докладним описом функцій можна у довідковій системі VB. Далі ми розглянемо лише математичні функції VB. У таблиці наведено повний перелік операцій, які можуть бути застосовані до числових даних.
Арифметичні операції
Операції відносини
Пріоритет операцій Якщо у виразі використано декілька операцій, то в першу чергу виконуються операції, які мають найвищий пріоритет. Якщо пріоритет операцій однаковий, вони виконуються зліва направо. a + b/c + d (a + b)/(c + d) Приклади Вираз Код
Математичні функції
Кути виражаються у радіанах. У проекті необхідно виконати імпорт простору імен System.Math, додавши на початок вихідного коду (до оголошення першого модуля чи класу) рядок Imports System.Math. Інакше перед ім'ям кожної функції необхідно додавати назву класу, наприклад: Math.Sin(x)
Імпорт у проект простору імен System.Math
Функції Int та Fix повертають значення, що дорівнює цілій частині числа, тип якого збігається з типом аргументу. Синтаксис: Int(число) і Fix(число) Обов'язковий аргумент число – це будь-яке допустиме числове вираз.
Відмінність між функціями Int і Fix полягає в тому, що для негативного значення аргументу функція Int повертає найближче негативне ціле число, менше або рівне зазначеному, а Fix найближче негативне ціле число, більше або рівне зазначеному. Наприклад, функція Int перетворює -8.4 -9, а функція Fix перетворює -8,4 -8.
Функція Rnd повертає значення типу Single, що містить випадкове число, менше 1 і більше або 0. Перед першим викликом функції Rnd треба використовувати інструкцію Randomize () без аргументу для ініціалізації генератора випадкових чисел.
приклад. Гра «Вгадай число» Умова гри Комп'ютер загадує деяке випадкове ціле число k з діапазону 0 – 100. Слід вгадати загадане число, зробивши якнайменше спроб. Після кожної спроби комп'ютер повідомляє, що задумане число більше або менше запропонованого числа.
Таблиця даних
Блок-схема алгоритму Генерація випадкового числа k від 0 до 100 Введення k1 a
Інтерфейс
Значення властивостей
Програмний код
Масиви Масив - це група змінних, що містять елементи даних одного типу та з одним ім'ям. Під кожен елемент масиву відводиться окремий осередок пам'яті. Всі елементи масиву мають один і той самий тип. Можливі посилання окремі елементи масиву. Кожен окремий елемент масиву визначається ім'ям масиву та значеннями індексів.
Наприклад, посилання a(7) або a1(2, 9) означають, що: а – це ім'я одновимірного масиву (вектора) з одним індексом, елемент масиву має значення індексу 7. а1 це ім'я двовимірного масиву (матриці). Про це свідчить застосування двох індексів визначення елемента масиву.
Перший індекс двовимірного масиву трактується як номер рядка, де знаходиться елемент масиву, а другий індекс, як номер стовпця. Індексом може бути вираз цілого типу з невід'ємним значенням. Нижня межа індексу завжди дорівнює 0. Верхня межа кожного індексу масиву визначається при його оголошенні.
Ім'я масиву Індекс (номер позиції) елемента масиву km Приклад масиву c ім'ям km типу Integer показань лічильника кілометрів на спідометрі автомобіля на початку кожного місяця протягом року:
Як і прості змінні масиви оголошуються за допомогою інструкцій Dim, Static, Private або Public. Приклади оголошення масивів: Dim x() As Single Dim y(,) As Single
Оголошено одновимірний масив з ім'ям x та двовимірний масив y. Про це говорять дужки у оголошенні після імені кожного масиву. При оголошенні двомірного масиву між дужок має стояти кома. Оголошення верхніх меж індексів у прикладах відкладено потім (такі масиви називають динамічними). Одновимірний масив називають вектором. Двовимірний масив називають матрицею.
Для оголошення верхньої межі індексу та розміщення у пам'яті масивів слід помістити інструкцію: Redim x(10), y(4,5) Тут задані значення верхніх меж кожного індексу масивів.
Індекс масиву x може набувати значення в діапазоні від 0 до 10. Масив x має 11 елементів. Перший індекс масиву y може набувати значення в діапазоні від 0 до 4. Другий індекс масиву y може набувати значення в діапазоні від 0 до 5. Масив y має 30 елементів (твір числа рядків на число стовпців).
При оголошенні масиву можна виконати його ініціалізацію: Dim z() As Single = (1.3, -2.7, _ 14.6, -5) У цьому прикладі оголошено одновимірний масив z, що має 4 елементи, значення яких задані списком ініціалізації. Масив, при оголошенні якого верхні межі індексів були зазначені (динамічний масив), можна неодноразово переоголошувати з допомогою інструкції ReDim.
Серед інструкцій усередині процедури можна записати: ReDim y(5, 10) Далі цей масив може бути переоголошений: ReDim y(5, 20)
За допомогою інструкції ReDim можна змінювати лише верхні межі індексів. Розмір масиву (кількість індексів) можна задати один раз. Змінювати її не можна. Інструкцію ReDim можна застосовувати для зміни динамічного масиву стільки разів, скільки потрібно. Однак при кожному її застосуванні дані, що містяться в масиві, втрачаються.
Інструкція ReDim Preserve може збільшити розмір масиву, зберігаючи при цьому вміст. Наступний приклад показує, як можна збільшити розмір масиву a4 на 10 елементів без знищення поточних значень елементів масиву. Нехай був оголошений масив: Dim a4() As Integer Потім у програмі встановлено розмір цього масиву: ReDim a4(n)
Якщо при оголошенні масиву задаються верхні межі індексів, такий масив називається фіксованим. Приклад Dim s(10) As Single Dim b(4, 5) As Integer До фіксованих масивів інструкція ReDim не застосовується.
Є можливість присвоїти вміст одного масиву іншому так само, як це робиться для простих змінних. Але ці масиви повинні мати однакову розмірність та однакову кількість елементів.
Якщо ж лівої частини оператора присвоєння стоїть динамічний масив, то збіг числа елементів необов'язково. Число елементів масиву в лівій частині оператора присвоєння за потреби зміниться.
приклад. Dim a() As Integer = (1, 2, 3, 4), _ b(), i As Integer b = a For i = 0 To 3 MsgBox(b(i)) Next Послідовно на екрані у вікні функції MsgBox буде виведено: 1, 2, 3, 4.
Приклад 1 Обчислити середнє арифметичне k заданих чисел.
Вихідні дані: k – змінна цілого типу, число заданих величин; a() – масив типу Single, значення заданих величин. Результати: s – змінна типу Single, значення середнього арифметичного.
Проміжні: Сума – змінна типу Single, значення суми перших елементів масиву k; i – змінна цілого типу, значення індексу елемента масиву a.
Блок-схема алгоритму (1) (2) 1
(3) (4) (5) (6) (7) (8) 1 2 Ні
Подивимося на цю блок-схему з погляду базових структур, що до неї входять. Блоки 1 – 2 становлять послідовну структуру (слідування), що ми назвемо Структура 1. Блоки 3 – 8 ставляться до циклу. Цю структуру ми назвемо Структура 2. Блоки 9 і 10 – це послідовна структура, яку ми назвемо Структура 3.
Структура 1, Структура 2 і Структура 3, що розглядаються в сукупності є структурою слідування. У блок-схемі будь-якого структурованого алгоритму можна ясно побачити базові структури, у тому числі будується алгоритм.
Інтерфейс проекту Текстове поле призначене для виведення результатів обчислень. Натискання кнопки призведе до запуску обчислень.
Інтерфейс проекту
Код проекту При створенні проекту система автоматично створює наведену нижче заготівлю коду, пов'язаного з формою Form1, яка є оголошенням класу Form1. Весь код, пов'язаний з формою, повинен знаходитись усередині цієї заготовки.
Виконання проекту має розпочатися з клацання на кнопці BtnПуск. Отже, у код проекту повинна входити підпрограма BtnПуск_Click, виконання якої запускається подією Click, що сталася з кнопкою BtnПуск (клацанням на цій кнопці).
Наступним кроком створення коду проекту має бути включення в код проекту заготівлі підпрограми BtnПуск_Click, яка створюється системою, якщо зробити, наприклад, подвійне клацання на кнопці BtnПуск.
Нижче наведено код, який вийде після створення заготівлі підпрограми BtnПуск_Click.
Після запуску проекту виконання програмний код почне виконуватися лише після натискання на кнопки BtnПуск. У цьому випадку для цієї кнопки відбувається подія Click, що призводить до виконання подійної процедури BtnПуск_Click. Результати рішення
У рядках з 1 до 5 тіла цієї процедури оголошуються дані. У рядку 6 виконується очищення текстового поля. Для цього застосовується метод Clear. Якщо цього не зробити, то при багаторазових запусках проекту інформація, що виводиться в текстовому полі при черговому запуску, додаватиметься до інформації, виведеної в ньому під час попередніх запусків.
У рядку 7 забезпечується введення значення змінної k. Правильність виконання введення даних рекомендується завжди контролювати. Саме з цією метою у рядку 8 значення змінної k виводиться у текстовому полі. У рядку 9 виконується розміщення масиву a пам'яті.
У рядках з 10 до 12 виконується введення значень елементів масиву a. Значення елемента a(0) у своїй не вводиться. Наявність цього елементу ми ігноруватимемо. Він ніде не застосовуватиметься. У рядках з 13 до 16 значення введених елементів масиву a виводяться для контролю в текстовому полі.
У рядках з 17 до 20 виконується обчислення значення змінної s. І, нарешті, у рядку 21 забезпечується виведення значення змінної s текстовому полі.
Зверніть увагу, що в програмі немає інструкції i = 1, а також інструкції i = i + 1, незважаючи на те, що ці інструкції є в блок-схемі. Немає також перевірки умови i<= k. Выполнение всех этих действий обеспечивает инструкция цикла For … Next.
Зверніть увагу, що в програмі також немає інструкції sum = 0. Значення 0 змінна sum отримала в результаті її оголошення. Ви можете видалити інструкцію Dim i As Integer. Інструкція циклу For … Next є блоком. Змінна i всередині блоку отримає тип Integer автоматично (за типом початкового та кінцевого значень параметра), але діятиме лише всередині блоку.
Логічні операції У VB.NET визначено логічні операції: And (логічне множення), Or (логічне додавання), Not (логічне заперечення), а також Xor (логічне виняткове додавання). Операція Not має наступний синтаксис: Not Операнд
Операнд, що має логічний тип, - це відношення, змінна або функція логічного типу або результат логічної операції. Результат логічного заперечення має протилежне значення її операнда, що показує наведена далі таблиця.
Операція Not Not Операнд
Операція And має два операнди: Операнд 1 And Операнд 2 Результат операції And визначає таблиця:
Операція And має значення True тільки тоді, коли обидва операнди мають значення True. Приклад Нерівність a? x? b слід записати: a<= x And x <= b Неправильно написать: a <= x <= b
Операція Or також має два операнди: Операнд 1 Or Операнд 2 Результат операції Or дано в таблиці:
Операція Or має значення True, якщо хоча б один операнд (і обидва разом) мають значення True. Приклад: Умову «х не належить відрізку» слід записати: x< a Or x >b або Not(a<= x And x <= b)
Xor (логічне виняткове додавання) Результат операції Xor наведено в таблиці: Операція Xor має значення True, якщо один з операндів (але не обидва разом) мають значення True.
У VB.NET визначено також логічні операції: AndAlso та OrElse. Операція AndAlso дуже схожа на операцію And. Вона також виконує логічне множення для двох логічних операндів (Boolean).
Основною відмінністю між AndAlso та And є те, що AndAlso допускає скорочене, неповне обчислення операндів. Якщо для першого операнда AndAlso обчислюється значення False, другий операнд не обчислюється і повертається значення False операції AndAlso.
Аналогічно, операція OrElse дуже схожа на операцію Or. Вона виконує скорочене логічне додавання двох логічних операндів. Якщо перший операнд у виразі OrElse дорівнює True, другий операнд не обчислюється та повертається True для операції OrElse.
Порядок виконання операцій при обчисленні значення виразу визначається розташуванням знаків операцій, круглих дужокі пріоритетом операцій . Операції з найвищим пріоритетом виконуються насамперед. Якщо у виразі міститься кілька операцій одного пріоритету одному й тому рівні, їх обробка проводиться відповідно до порядком виконання – справа наліво чи зліва направо. Якщо необхідно змінити порядок виконання операцій у виразі, слід використовувати круглі дужки, наприклад (x + y) * z .
Пріоритет операції команижче, ніж у решти операцій.
У наведеній нижче таблиці операції мови C++ наведено у порядку зменшення пріоритету. Операції з різними пріоритетами розділені межею.
Таблиця пріоритетів операцій
Знаки операцій |
Назви операцій |
Порядок виконання |
підвищення пріоритету постфіксний інкремент постфіксний декремент |
зліва направо |
|
sizeof (тип ) вираз та тип (вираз) |
розмір операнда в байтах префіксний інкремент префіксний декремент порозрядне НЕ логічне НЕ унарні мінус, плюс перетворення типу |
справаліворуч |
множення залишок від поділу цілих |
зліва направо |
|
додавання віднімання |
зліва направо |
|
зрушення вліво зрушення вправо |
зліва направо |
|
менше або дорівнює більше або дорівнює |
зліва направо |
|
зліва направо |
||
порозрядне І |
зліва направо |
|
порозрядне виключне АБО |
зліва направо |
|
порозрядне АБО |
зліва направо |
|
логічне І |
зліва направо |
|
логічне АБО |
зліва направо |
|
? : |
умовна |
справаліворуч |
*= , /= , %= += , - = <<= , >>= &= , |= , ^= |
присвоєння (просте та складова) |
справаліворуч |
операція кома |
зліва направо |
Приведення (перетворення) типу
Мова програмування С++, будучи типізованим мовою, дозволяє дуже вільно поводитися з висловлюваннями, оперуючими різними типами даних. І тут операнди висловлювання наводяться до деякого загального типу.
Автоматично виробляються лише перетворення, які перетворюють операнди з меншим діапазоном значень операнди з великим діапазоном значень, оскільки це відбувається без втрати інформації. Наприклад, якщо у виразі ival + fvalзмінна ival типу int , а змінна fval– типу float , то при виконанні операції(+ ) значення змінної ivalбуде наведено до типу float .
Вирази, в яких могла б губитися інформація, наприклад, при присвоєнні довгих цілих більш коротким або речовим цілим можуть викликати попередження (Warning), але вони допустимі (див. операцію присвоювання).
Для будь-якого виразу можна явно вказати перетворення його типу, використовуючи унарну операцію, яка називається приведенням (перетворенням) типу . Операція може бути записана у двох форматах:
(тип) вираз
тип(вираз)
Операндом операціїприведення типує вираз, що перетворюється. Пріоритет операції приведення типутакий самий, як і в інших унарних операцій. Наприклад: (longdouble) 5; (int) f ; (double) a/2 .
Якщо вираз, що розглядається, має досить складний вигляд, бажано брати його в дужки, щоб переконатися, що тип буде змінений у результату всього виразу, а не у його частини. Наприклад,
(int) x + b * c
(int) (x + b * c )
У першому випадку перетворення відноситься до змінної x , у другому – до всього виразу x+ b * c.