ЛР 2 Типы данных и синтаксис CSharp
.pdfToInt64 |
64-х розрядного відповідно |
|
|
ToString |
Перетворення до типу string |
|
|
Приклади використання функцій перетворення:
string s = “1564”; // Рядок містить ціле число // Перетворюємо рядок у число
int a = Convert.ToInt16(s);
a = a +5; // Виконуємо обчислення
1.5 Коментарі
Коментарі в C#.NET, як й у будь-якій мові програмування, необов'язкові. Вони не обробляються компілятором і відповідно не займають місця у відкомпільованому коді. Головне призначення коментарів – це примітки для програміста. В C#.NET існує два варіанти оформлення коментарів: однорядковий та багаторядковий. У першому, більше розповсюдженому варіанті коментар починається з подвійного слешу і діє у межах одного рядку:
// Розрахувати значення int a = b + 5; Console.WriteLine(a);
У другому варіанті використовується конструкція /* */:
/*
*Приклад багаторядкового
*коментарю
*/
Багаторядковий коментар може займати будь яку кількість рядків у програмі.
Досить часто коментування застосовують для “закриття” декількох рядків. На панелі інструментів Visual Studio .NET присутня кно-
пка, що спрощує створення таких коментарів: – «закрити» комен-
тарем виділені рядки, – видалити коментарі у виділених рядках.
11
2 ОПЕРАЦІЇ У ПРОГРАМАХ C#
2.1 Математичні операції
У таблиці 2.1 наведені умовні позначення шести базових математичних операцій.
Результат стандартного ділення (/) завжди перетворюється до типу double, навіть у випадку ділення без залишку. Це означає, що при роботі з типами decimal й int Вам доведеться часто використовувати функції перетворення.
Таблиця 2.1 – Математичні операції
Оператор |
Операція |
|
|
|
|
+ |
Додавання |
|
|
|
|
- |
Вирахування (і позначення негативних чисел) |
|
|
|
|
/ |
Ділення (перетворення до double – не може ви- |
|
кликати виключення DivideByZero) |
||
|
||
|
|
|
% |
Залишок від ділення |
|
|
|
|
* |
Множення |
|
|
|
|
++ |
Інкремент (збільшення на одиницю) |
|
|
|
|
- - |
Декремент (зменшення на одиницю) |
|
|
|
Щоб краще розібратися в різних типах ділення, можна скористатися методом GetType. У командах виведення (таких як WriteLine) цей метод повертає ім'я типу у вигляді рядка. Розглянемо наступний оператор:
Console.WriteLine((4/3).GetType())
Після його виконання у консольному вікні буде виведено рядок:
System.Int32.
Нижче наведено приклад ситуації, у якій необхідно враховувати тип значення, що повертає оператор ділення. Перед нами версія програми, що перетворює температуру по Цельсію у температуру по Фаренгейту.
12
static void Main(string[] args)
{
decimal cdeg;
Console.WriteLine("Уведіть градуси за Цельсієм :"); cdeg= Convert.ToDecimal(Console.ReadLine()); decimal fdeg = (decimal) (((9/5) * cdeg) + 32); Console.WriteLine(Convert.ToString(cdeg) +
"= " + Convert.ToString(fdeg) +
"градусів за Фаренгейтом");
Console. ReadKey();
}
Оскільки результат ділення перетворено до типу decimal, результат теж буде типу decimal.
Операції інкременту та декременту є унарними (діють на один операнд) і мають деякі особливості. Їх дія залежить від того, де розміщено знак інкременту (++) або декременту (--). Якщо його розміщено перед операндом, така операція називається предінкремент (преддекремент), якщо після – відповідно постінкремент (постдекремент).
При виконанні операції предінкременту спочатку значення операнду збільшується на 1, а потім із ним виконується операція. При використанні постінкременту спочатку виконується операція із поточним значенням операнду, а потім його величина збільшується на 1.
Розглянемо приклади (табл.. 2.2).
Таблиця 2.2 – Операції інкременту і декременту
Оператор (операція) |
Значення змінних |
|
||
|
|
|
||
до |
після |
|||
|
||||
|
|
|
|
|
int a = 2, b = 3; |
|
a = 2 |
b = 3 |
|
int c = 5, d = 1; |
|
c = 5 |
d = 1 |
|
|
|
|
|
|
a++; |
a = 2 |
a = 3 |
|
|
|
|
|
|
|
b--; |
b = 3 |
b = 2 |
|
|
|
|
|
||
c += a++ + ++b; |
a = 2 b = 3 |
a = 3 b = 3 |
||
|
c = 5 |
c = 10 |
|
|
|
|
|
||
d = --c + --a – b++; |
a = 2 b = 3 |
a = 2 b = 4 |
||
|
c = 9 d = 1 |
c = 9 d = 8 |
||
|
|
|
|
13
2.2 Круглі дужки й пріоритет операцій
При обробці складних виражень послідовність виконання операцій задається двома способами. При використанні круглих дужок Вам не треба запам'ятовувати пріоритети різних операцій. У C#.NET операції мають пріоритет, який визначає послідовність їхнього виконання. Множення має більш високий пріоритет ніж додавання; отже, вираження 3+4*5 дорівнює 23, оскільки множення 4*5 виконується раніше, ніж додавання.
Нижче перераховані математичні операції в порядку убування пріоритету:
обчислення функцій;
унарний мінус (зміна знака числа);
множення й ділення;
цілочисельне ділення;
обчислення залишку від ділення (mod);
додавання й вирахування, інкремент і декремент .
Якщо дві операції мають однаковий пріоритет, порядок виконання визначається порядком їхнього проходження у вираженні (зліва направо).
Будь-які вираження мовою Visual C# записуються в один рядок. Надрядкові й підрядкові записи не допускаються.
При записі арифметичних виражень використовуйте наступні правила:
якщо чисельник і знаменник є багаточленами, помістіть їх у дужки:
a x (a x)/(c k) ; c k
якщо у знаменнику добуток декількох співмножників, помістіть його в дужки:
sinx
a cosax Math.Sin(x)/(a * Math.Cos(a * x)) ;
14
два знаки арифметичних операцій не повинні стояти один за одним:
aa/( b) ;
b
при зведенні значення функції в ступінь треба записати:
sin2 ax Math.Pow Math.Sin(a* x), 2 ;
добування кореню будь-якого ступеня, крім квадратного, слід замінити зведенням підкореневого вираження в дробовий ступінь,
тобто nx x 1n .
3a x (a x) 13 Math.Pow(a x,0.333d).
Для закріплення викладених вище правил розглянемо більш складні приклади:
|
|
|
|
|
|
|||
|
ln |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 cos 2 |
|||||||
|
|
|
(Math.Sqrt(a b) Math.Log(Math.Abs(a b)))/ Math.Pow Math.Pow(Math.Cos(a),2),0.2d
tg x sin 0,3 eax |
|||
|
|
|
|
cos3 2x2 |
|
|
|
a x |
(Math.Tan(x) Math.Sin(0.3* Math.PI)
Math.Exp(a * x)/(Math..Pow(Cos(2 * Math.Pow(x,2),3)* Math.Sqrt(a x))
3 f 1,7 10 3 |
esin a |
1 |
|
|
|
|||||
1 |
|
|
|
|
|
|
|
|
|
|
ln |
|
sin f1 |
|
|
|
|
|
|
||
|
|
|
|
2 3 |
a |
|||||
|
|
|
|
|
|
|
|
f1 |
(3 * f1 1.7E 3* Math.Exp(Sin(a) ))/Math.Log(Math.Abs (Sin(f1)))
1/(2 (Math.Pow(a/f1),0.33d)
15
Для спрощення запису операцій, що здійснюють передбачено спеціальні операції, які об'єднані із присвоюванням, в C#.NET передбачені скорочені позначення (табл. 2.3).
Таблиця 2.3 – Скорочений запис операцій із присвоюванням
Скорочений запис |
Еквівалент |
|
|
А*=В |
А = А*В |
|
|
А+=В |
А = А + В |
|
|
А/=В |
А = А/В |
|
|
А-=В |
А = В |
|
|
А&=В |
А = А & В |
|
|
A++; |
A = A +1; |
|
|
B- -; |
B = B – 1; |
|
|
2.3 Логічні операції та операції порівняння
Логічні операції здійснюються на змінними, які мають тип bool. Перелік логічних операцій подано у таблиці 2.4.
Таблиці 2.4 – Логічні операції C#
Позначення |
Операція |
! |
Логічне заперечення (НІ) |
&& |
Логічний добуток (ТАК) |
| | |
Логічне додавання (АБО) |
^ |
Така, що виключає АБО |
Результатом операції над логічними змінними є також логічна змінна. У таблиці 2.5 наведено результати виконання логічних операцій над двома змінними.
Таблиця 2.5 – Результати логічних операцій
|
Змінна |
|
Результат операції |
|
||
А |
|
В |
! A |
A && B |
A || B |
A ^ B |
false |
|
false |
true |
false |
false |
false |
false |
|
true |
true |
false |
true |
true |
true |
|
false |
false |
false |
true |
true |
true |
|
true |
false |
true |
true |
false |
16
Операції порівняння виконують порівняння операндів один із одним. Результат операції порівняння – логічний, тобто true або false.
Приклад.
double a = 3.0; b = 4.5; bool c = a > b;
Console.WriteLine(" a > b " + c); Console.WriteLine(" a < b " + (a < b)); Console.WriteLine(" a == b " + (a == b)); Console.WriteLine(" a >= b " + (a >= b)); Console.WriteLine(" a <= b " + (a <= b)); Console.WriteLine(" a != b " + (a != b));
Результат виведення на екран подано нижче. a > b False
a < b True
a == b False a >= b False a <= b True a != b True
Зверніть увагу на те, що у другому рядку програми ми оголосили змінну c логічного типу, значення якої вивели на екран.
2.4 Стандартні математичні функції класу Math
Основні математичні функції класу Math перераховані в таблиці 2.4. Всі ці функції оголошені загальними, тому вони належать класу Math у цілому, а не його окремим екземплярам.
17
Таблиця 2.4 – Основні математичні функції класу Math
Математична |
Опис |
|
функція |
||
|
||
|
|
|
Abs |
Повертає абсолютне значення (модуль) числа |
|
|
|
|
Acos |
Повертає кут, косинус якого дорівнює заданому |
|
|
числу |
|
|
|
|
Asin |
Повертає кут, синус якого дорівнює заданому |
|
|
числу |
|
|
|
|
Atan |
Повертає кут, тангенс якого дорівнює заданому |
|
|
числу |
|
|
|
|
Ceiling |
Повертає найменше ціле число, яке більше або |
|
|
дорівнює заданому числу |
|
|
|
|
Cos |
Повертає косинус заданого кута |
|
|
|
|
Cosh |
Повертає гіперболічний косинус заданого кута |
|
|
|
|
Exp |
Повертає число е (приблизно 2,71828182845905), |
|
|
зведене в заданий ступінь |
|
|
|
|
Floor |
Повертає найбільше ціле число, яке є більшим |
|
|
або таким, що дорівнює заданому числу |
|
|
|
|
Log |
Повертає натуральний логарифм |
|
|
|
|
Log10 |
Повертає десятковий логарифм |
|
|
|
|
Max |
Повертає більше із двох заданих чисел |
|
|
|
|
Min |
Повертає менше із двох заданих чисел |
|
|
|
|
Pow |
Функція зведення у ступінь |
|
|
|
|
Round |
Повертає найближче ціле число |
|
|
|
|
Sign |
Повертає величину, що визначає знак числа |
|
|
|
|
Sin |
Повертає синус заданого кута |
|
|
|
|
Sinh |
Повертає гіперболічний синус заданого кута |
|
|
|
|
Sqrt |
Повертає квадратний корінь |
|
|
|
|
Tan |
Повертає тангенс заданого кута |
|
|
|
|
Tanh |
Повертає гіперболічний тангенс заданого кута |
|
|
|
|
Truncate |
Повертає цілу частину речовинного числа |
|
|
|
18
Для обчислення функцій, не наведених у таблиці 2.4, використовуйте відповідні математичні формули.
3 ОПЕРАТОРИ ВИРАЖЕННЯ І БЛОКИ
Оператори служать основними «будівельними блоками» програми. Програма C#.NET складається з послідовності операторів з додаванням невеликої кількості знаків пунктуації. Оператор є закінченою інструкцією для комп'ютера. У C#.NET указівкою на присутність оператора служить символ ";", що розміщений наприкінці його.
3.1 Оператори вираження
Виконання оператора вираження полягає в обчисленні якогонебудь вираження. Говорячи «обчислення», ми будемо припускати не тільки арифметичні дії з числами, але й логічні операції, а також операції з рядками. Відзначимо для себе, що присвоювання і виклики функцій також є вираженнями.
Приклади a = b++;
cosinus = Math.Cos(5*a); sinus = Math.Sin(b);
tg = cosinus/sinus;
До операторів вираження можна також віднести порожній оператор ";". Він корисний там, де обов'язково повинний бути оператор, а робити нічого не потрібно.
3.2 Блоки
Блок у C#.NET – це послідовність оголошень, визначень і операторів, укладених у фігурні дужки. Існує два типи блоків:
1.Складений оператор, наприклад:
{
var1 = 2*var1/3/5; var2 = var1+Sin(var2);
}
19
2. Визначення функції, наприклад: void f1()
{
Console.WriteLine(“Результати обчислень”);
Console.WriteLine(Res);
}
Блоки можуть містити в собі інші блоки (вкладення блоків), але не можуть містити оголошення функції. Приклад вкладених блоків:
for (i = 1;i<10;i++)
{ |
// початок 1-го блоку |
k = i*3/6 + a; |
|
if |
(i = = 2) |
{k |
= 2*a; // початок 2-го блоку |
d |
=3; |
} |
// закінчення 2-го блоку |
} |
// закінчення 1-го блоку |
Основне призначення блоку – це виконання декількох операторів замість одного.
4 ОСНОВИ ВВЕДЕННЯ-ВИВЕДЕННЯ У ПРОГРАМАХ С#
5.1 Введення з клавіатури
Для введення з клавіатури використовують функції (методи) ReadKey і ReadLine класу Console. Перший метод дозволяє отримує один символ, який відповідає натиснутій користувачем клавіші, другий отримує рядок, що введений користувачем.
Формат запису такий:
ідентифікатор = Console.ReadKey().KeyChar; ідентифікатор = Console.ReadLine();
20