Professional Documents
Culture Documents
C# Osnovi Programuvannya
C# Osnovi Programuvannya
ОСНОВИ ПРОГРАМУВАННЯ У C#
Ужгород – 2014
2
Брила А.Ю., Антосяк П.П., Глебена М.І., Чупов С.В., Семйон І.В.
Основи програмування у C#. Методичні вказівки до лабораторних робіт для студентів І-го
курсу математичного факультету спеціальності "Прикладна математика". – Ужгород,
2014. – 60с.
Проміжкова мова
(IL)
JIT
CLR
компіляторкод
Машинний
Знак операції – це один або більше символів, які визначають дію над
операндами. Наприклад, у виразі a += b знак += є знаком операції, а a і b –
операндами. Символи, які утворюють знак операції, можуть бути як
спеціальними, наприклад, &&, | та <, так і буквеними, такими як as або new.
За кількістю операндів операції поділяють на унарні, бінарні та
тернарну. Один і той самий знак операції може інтерпретуватися по різному
в залежності від контексту. Всі знаки операцій, за винятком [ ], ( ) та ? :, є
окремими лексемами.
Розділові знаки служать для відокремлення однієї лексеми від іншої.
Ними є пробіл, табуляція, символ нового рядка, символ «;» та коментарі.
Нижче наведено всі знаки операцій та розділові знаки, які
використовуються у мові C#:
{ } [ ] ( ) . , : ; + - * / % & | ^ ! ~ =
< > ? ++ -- && || << >> == != <= => += -= *=
/= %= &= |= ^= <<= >>=
8
Літерал – це явно вказане значення декого типу. Розрізняють такі типи
літералів:
Тип літерала Опис Приклади
цілочисловий у десятковій системі числення –
звичне нам ціле число 125, -89, 108
у вісімковій системі числення –
починається з 0 023, 075, 0416
у шістнадцятковій системі
числення – починається з 0х або 0х4А, 0х6FE2, 0xABC
0Х
дійсного типу у форматі з фіксованою крапкою
– у записі числа є крапка, що 25.69, 2.0, 145.058, 1.2d, 1.2f
розділяє цілу і дробову частини
у форматі з плаваючою крапкою
– у записі використано символ
3.5е5, 3е12, 678е2
«е» або «Е», що розділяє мантису
від порядку
символьний заданий у явному вигляді –
символ записується у одинарних ‘Z’, ‘a’, ‘E’
лапках
прості ескейп-послідовності – \n - перехід на новий рядок,
службові символи починаються з \t - горизонтальна табуляція,
символу «\» \’ - апостроф, і т.д.
ескейп-послідовності Unicode –
символи «\u», за якими вказують
код символу з чотирьох цифр у ‘\u0123’, ‘\u3А58’
шістнадцятковій системі
числення
рядковий дослівний – починається із
символу «@», за яким у
подвійних лапках вказується
@”Я люблю \t С#”
рядок символів (при цьому
ескейп-послідовності
сприймаються як символи)
регулярний – у подвійних лапках
вказується рядок символів
”Я люблю \t С#”
(ескейп-послідовності
обробляються)
логічний може приймати два значення
true,
false
порожньої використовується у випадку,
адреси коли покажчик не містить жодної
null
(нульовий адреси
літерал)
9
Питання для самоконтролю
1. Що таке мова програмування?
2. Які три основні складові частини будь-якої мови програмування?
3. Що таке програма?
4. Назвіть основні різновиди лексем.
5. Для чого призначені службові слова?
6. Що таке ідентифікатор?
7. Для чого використовують у програмі коментарі?
8. Що таке літерал?
9. Назвіть основні типи літералів.
з початковою ініціалізацією
<тип змінної> <ідентифікатор змінної> = <значення>;
Приклади:
int a; // Без початкової ініціалізації.
int b=40; // Змінна b ініціалізовується значенням 40.
double s=3.67; // Змінна s ініціалізовується значенням 3.67.
Опис констант
Загальне правило опису:
const <тип константи> <ідентифікатор констати> = <значення>;
Приклади:
const int a = 10; // константа цілого типу
const float b = 2.5; // константа дійсного типу
12
3.4. Перетворення типів
В мові розрізняють два види перетворень (приведень) змінних – явне та
неявне.
Неявне перетворення типів використовується в тому випадку, коли
дане перетворення є «природним». Тобто, наприклад, перетворюється
величина типу float в величину типу double.
Приклад:
float f = 1.23;
double d = f; // Неявне перетворення
Таке перетворення є природним, оскільки обидва типи
використовуються для представлення дійсних типів, причому цільовий тип
має більший діапазон представлення і більшу точність. При такому
перетворення не відбувається втрата інформації. При проведенні неявного
перетворення немає необхідності вказувати цільовий тип (тип до якого
здійснюється перетворення).
Явне перетворення типів вимагає явного задання цільового типу, до
якого здійснюється перетворення. Цільовий тип вказується в дужках перед
значенням тип якого перетворюється.
Загальне правило явного перетворення:
<змінна> = (<цільовий тип>) <вираз>;
Приклад:
double d = 2.9;
float f = (float)d; // Явне перетворення
Для цільового типу повинно існувати неявне перетворення до типу
змінної, в якій буде збережено результат.
3.5. Переліковний тип
Переліковний тип це тип, який задається повним переліком своїх
значень. Значеннями переліковного типу можуть бути константи типів byte,
sbyte, short, ushort, int, uint, long, ulong. Якщо при описані
переліковного типу в явному вигляді не вказано тип його констант, то
вважається, що константи типу int. Всі константи повинні бути одного типу,
13
який називається базовим типом. Тип char не може використовуватися в
якості базового типу. В переліковному типі можна задавати довільну
кількість іменованих констант.
Загальне правило опису:
<атрибути> <модифікатори> enum <ім’я типу> [: <базовий тип>]
{
<атрибути> <конст.1> [= <знач.1>],
<атрибути> <конст.2> [= <знач.2>],
……………
<атрибути> <конст.N> [= <знач.N>]
}
Приклад:
enum Week : Byte
{
Monday, // =0
Tuesday, // =1
Wednesday, // =2
Thursday, // =3
Friday, // =4
Saturday, // =5
Sunday // =6
}
Всі константи переліковного типу ініціалізуються значеннями базового
типу. Ця ініціалізація може бути явною або неявною. За замовчуванням
застосовується неявна ініціалізація (дивись приклад вище), при цьому, перша
константа у переліку ініціалізується нулем, друга − одиницею, і т.д.
Також константи можуть бути проініціалізовані явно довільними
значеннями із базового типу або ж значенням іншої константи із цього ж
переліку. При цьому ініціалізація констант не обов’язково повинна
здійснюватися послідовними значеннями, не обов’язково ініціалізувати явно
всі константи та не обов’язково ініціалізувати константи унікальними
значеннями.
Приклад:
enum Week : Byte
{
Monday =2,
Tuesday =35,
14
Wednesday =2,
Thursday, // =3
Friday, // =4
Saturday, // =5
Sunday =1,
Sabbath =Saturday // =5
}
Ініціалізація змінної переліковного типу значенням здійснюється через
ім’я типу та оператор "." (крапка).
Приклад:
Week d = Week.Friday;
Також між змінними переліковного типу та змінними відповідного
базового типу існує явне перетворення типів.
Приклади:
Week d = Week.Monday;
byte b = (byte)d; // b = 2
byte i = 1;
Week s = (Week)i; // s = Week.Sunday
Операція Аналог
Постфіксна форма
i++ i=i+1
i-- i=i-1
Префіксна форма
++i i=i+1
--i i=i-1
Приклад На екрані
Console.WriteLine(“Hello!”); Hello!
21
Виведення числового значення
Загальний вигляд:
Console.WriteLine(<вираз>);
Приклад На екрані
int i=25; 25
Console.WriteLine(i);
Приклад На екрані
int i=25; i=25
Console.WriteLine(“i=”+i);
int j=3; d=2.8 j=3
double d=2.8;
Console.WriteLine("d="+d+" j="+j);
Приклади:
З використанням методу Parse З використанням класу Convert
int c; int c;
Console.Write("c="); Console.Write("c=");
c=int.Parse(Console.ReadLine()); c=Convert.ToInt16(Console.ReadLine());
double d; double d;
Console.Write("d="); Console.Write("d=");
d=double.Parse(Console.ReadLine()); d=Convert.ToDouble(Console.ReadLine());
s=6
- +
if (<умова>) умова if(x>y)
<оператор1>; max=x;
else else
<оператор2>; Оператор 2 Оператор 1 max=y;
Скорочена форма
Програмна
Аналог на мові блок-схем Приклад
структура
– +
if (<умова>) умова if(x!=0)
<оператор1>; z=1/x;
Оператор 1
належить
Гілки деякого розгалуження можуть містити інші розгалуження. У
цьому випадку виникає вкладеність умовних операторів.
Приклад. Скласти програму для обчислення значення функції
0, якщо x 0,
f ( x) x 2 x, якщо 0 x 1,
2
x sin x , якщо x 1.
2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// введення вихідних даних
28
Console.Write("x=");
double x = double.Parse(Console.ReadLine());
// реалізація алгоритму розв'язання задачі
double f;
if (x <= 0)
f = 0;
else
if (x <= 1)
f = x * x - x;
else
f = x * x - Math.Sin(Math.PI * x * x);
// вивід результату
Console.WriteLine("f={0}", f);
//
Console.ReadKey();
}
}
}
Результат роботи програми:
x=0,5
f=-0,25
– +
if (<умова>) умова if(x>0)
{ {
<оператор1>; Оператор1 z=1/x;
. . . . . . l=y/x;
<операторN>; ОператорN }
}
max=8 min=3
6.3. Умовний оператор (?:)
Якщо значення виразу може дорівнювати одному із двох значень в
залежності від виконання чи невиконання деякої умови, то можна
скористатися умовним оператором (?:).
Аналог з використанням
Загальний вигляд умовного оператора (?:)
умовного оператора if
if (<умова>)
<змінна>=<умова>?<значення1>:<значення2>; <змінна>=<значення1>;
else
<змінна>=<значення2>;
Приклад. Знайти максимальне із двох дійсних чисел.
З використанням умовного
З використанням умовного оператора (?:)
оператора if
if (x>y)
max = (x>y) ? x : y; max=x;
else
max=y;
6 Дано три дійсних числа: a, b, c . Знайти max a, b min b, c 2 .
7 Дано три дійсних числа: a, b, c . Знайти min a, b min b, c 2 .
8 Дано три дійсних числа: a, b, c . Знайти min a, b max b, c 2 .
9 Дано три дійсних числа: a, b, c . Знайти max a, b max a, b min b, c 2 .
10 Дано три дійсних числа: a, b, c . Знайти min a, b, c 2 .
11 Дано дійсні числа x, y, z. Обчислити max( x y z, xyz, xy z ) .
Дано два дійсних числа: x, y ( x y ) . Менше з них піднести до квадрату, а
12
більше замінити пів-сумою цих чисел.
13 Дано a, b, c R . Замінити найбільше значення нулем.
Визначити координатну чверть, в яку потрапляє точка із координатами x і y
14
(xy ≠ 0).
15 Дано дійсні числа a, b, c. Знайти суму тих з них, які належать інтервалу [x, y].
Дано трицифрове натуральне число n . Визначити суму двох деяких цифр цього
16
числа, яка є найбільшою.
Дано два двоцифрові натуральні числа n і m . Знайти суму найменшої цифри в
17
числі n та найбільшої цифри в числі m .
Перевірити, чи лежить коло x a 2 y b2 r 2 повністю в середині кола
18
x a1 2 y b1 2 r12 .
Дано числа b, c та x1 , x2 . Визначити, чи є числа b, c коефіцієнтами квадратного
19
рівняння x 2 bx c 0 , де x1 , x2 – розв’язки цього квадратного рівняння.
Дано три дійсних числа: a, b, c . Визначити, чи є вони членами арифметичної
20
прогресії.
Завдання 2
№ варіанту Умова № варіанту Умова
cos( A C N ), якщо A C N ,
cos( A C N ), якщо A C N , ln x n, якщо x n,
1 y 2 y ln x n, якщо x n,
cos(( A C ) N ), якщо A C N , cos( nx), якщо x n.
0, в інших випадках.
35
№ варіанту Умова № варіанту Умова
1, якщо a b c,
cos( x 2 ln( x)), якщо x 2 ln( x) 0 2, якщо a b c,
1
3 y , якщо x 2 ln( x), 4 y 3, якщо b a c,
( x ln( x))
2
4, якщо b a c,
cos( x), якщо x 2 ln( x).
0, в інших випадках.
1, якщо 0 x 5,
ye x , якщо y x, 2, якщо 5 x 8,
5 z y x, якщо y x, 6 y
x e y , якщо y x. 3, якщо x 0,
4, якщо x 8.
0, якщо 0 n 5,
1, якщо 2 x 2 x 3 0, 1, якщо 5 n 10,
7 y 2, якщо 2 x 2 x 3 0, 8 y
0, якщо 2 x 2 x 3 0. 2, якщо 10 n 15,
3, в інших випадках.
e t sin( t ), якщо t 0
y t ln x tg x ,1 x 3,
e cos(t ), якщо t 0
z tg x , 3 x 4,
9 10
cos( x), якщо x 2,
t 0,
ln( x), якщо x 2.
cos x n , якщо n 1, 0, якщо n 1,2,3,4,
n 1, якщо n 10,11,12,
x , якщо n 2,
11 y x 12 y
n , якщо n 3, 2, якщо n 15,19,
0, в інших випадках. 3, в інших випадках.
sin x n , якщо n 10,
1, якщо 2 x 3 0,
2
n
x , якщо n 22,
13 y 2 x, якщо 2 x 2 3 0, 14 z x
x, якщо 2 x 2 3 0. n , якщо n 3,
1, в інших випадках.
x 2 3x 8, якщо x 2 x 1, 4, якщо x 0,
15 y 1 16 y x 2 3x 4, якщо 0 x 1,
3 , якщо x 2 x 1. 2
x 3x 8 2
x 3x 4 1, якщо x 1.
0, якщо x 0, ax by, якщо ax by c, d ,
y x y, якщо ax by c,
17 y x 2 x, якщо 0 x 1, 18 1 x y, якщо ax by d .
2
x sin x , якщо x 1.
2
де a, b, c, d - відомі величини
y
arctg x , x 0, y 0,
e x3 1 , якщо x y 0, , x 0, y 0,
2
y
19 y x 2 y, якщо x y 0, 20 y arctg , x 0,
x
0, якщо x y 0.
3
2 , x 0, y 0,
2 arctg y , x 0, y 0
x
36
Завдання 3
№ варіанту Умова
Трикутник задається координатами своїх вершин на площині:
1 Ax1 , y1 , Bx2 , y2 , C x3 , y3 . Визначити, чи є цей трикутник виродженим.
Трикутник задається координатами своїх вершин на площині:
2 Ax1 , y1 , Bx2 , y2 , C x3 , y3 . Визначити, чи є цей трикутник прямокутним.
Трикутник задається координатами своїх вершин на площині:
3 Ax1 , y1 , Bx2 , y2 , C x3 , y3 . Визначити, чи є цей трикутник гострокутним.
Трикутник задається координатами своїх вершин на площині:
4 Ax1 , y1 , Bx2 , y2 , C x3 , y3 . Визначити, чи є цей трикутник тупокутним.
Трикутник задається координатами своїх вершин на площині:
5 Ax1 , y1 , Bx2 , y2 , C x3 , y3 . Визначити, чи є цей трикутник рівнобедреним.
Трикутник задається координатами своїх вершин на площині:
6 Ax1 , y1 , Bx2 , y2 , C x3 , y3 . Визначити, чи є цей трикутник рівностороннім.
Трикутник задається координатами своїх вершин на площині:
7 Ax1 , y1 , Bx2 , y2 , C x3 , y3 . Знайти периметр трикутника.
Трикутник задається координатами своїх вершин на площині:
8 Ax1 , y1 , Bx2 , y2 , C x3 , y3 . Знайти найбільшу сторону.
Дано чотири точки, що є вершинами чотирикутника Ax1 , y1 , Bx2 , y2 , C x3 , y3
9
Dx4 ; y4 . З’ясувати, чи можуть вони бути вершинами паралелограма.
Дано чотири точки, що є вершинами чотирикутника Ax1 , y1 , Bx2 , y2 , C x3 , y3
10
Dx4 ; y4 . З’ясувати, чи можуть вони бути вершинами ромба.
Дано чотири точки, що є вершинами чотирикутника
11 Ax1 ; y1 ; z1 , Bx2 ; y 2 ; z 2 , C x3 ; y3 ; z3 Dx4 ; y4 ; z 4 . З’ясувати, чи можуть вони
бути вершинами паралелограма.
Дано чотири точки, що є вершинами чотирикутника
12 Ax1 ; y1 ; z1 , Bx2 ; y 2 ; z 2 , C x3 ; y3 ; z3 Dx4 ; y4 ; z 4 . З’ясувати, чи можуть вони
бути вершинами ромба.
Дано чотири точки, що є вершинами чотирикутника
13 Ax1 ; y1 ; z1 , Bx2 ; y 2 ; z 2 , C x3 ; y3 ; z3 Dx4 ; y4 ; z 4 . З’ясувати, чи можуть вони
бути вершинами прямокутника.
Дано чотири точки, що є вершинами чотирикутника Ax1 , y1 , Bx2 , y2 , C x3 , y3
14
Dx4 ; y4 . З’ясувати, чи можуть вони бути вершинами трапеції
Дано три точки Ax1 , y1 , Bx2 , y 2 , C x3 , y3 . Визначити дві із трьох точок, які
15
можуть утворити прямокутник найбільшої площі.
Дано три числа. З’ясувати, чи можуть вони бути вершинами різностороннього
16
тупокутного трикутника.
Дано три числа. З’ясувати, чи можуть вони бути вершинами різностороннього
17
гострокутного трикутника.
Дано три числа. З’ясувати, чи можуть вони бути вершинами рівнобедреного
18
тупокутного трикутника.
Дано три числа. З’ясувати, чи можуть вони бути вершинами рівнобедреного
19
гострокутного трикутника.
Дано три точки Ax1 , y1 , Bx2 , y 2 , C x3 , y3 . З’ясувати, чи можуть вони бути
20
вершинами трикутника.
37
7. РЕАЛІЗАЦІЯ ЦИКЛІЧНИХ АЛГОРИТМІВ
7.1. Оператори циклу
Часто постає потреба виконати один і той самий оператор декілька разів.
для цього застосовують оператори циклів. Цикл складається із заголовка і
тіла. У заголовку циклу зазначається умова завершення циклу, а тіло циклу
являє собою оператор, який потрібно виконати декілька разів. Кожне
виконання оператора тіла циклу називається його ітерацією.
7.1.1. Оператор циклу while
Оператор while циклічно виконує своє тіло до тих пір, поки умова
виконується (логічний вираз приймає значення true).
Приклад.
Програмна Знайти суму
Аналог на мові блок-схем
структура перших n
натуральних чисел.
– +
умова
int sum=0;
while (<умова>) int i=1;
<оператор>; Оператор while(i<=n)
sum=sum+i++;
int sum=0;
– +
while (<умова>) умова int mult=1;
{ int i=1;
<оператор1>; Оператор1 while(i<=n)
. . . . . . {
<операторN>; ОператорN sum=sum+(i++);
} mult=mult*(i++);
}
38
7.1.2. Оператор циклу do-while
Оператор циклу do-while відрізняється від оператора while тим, що
перевірка умови виконується не до, а після виконання інструкції (оператора).
У операторі циклу do-while тіло циклу виконається принаймні один раз.
Програмна Приклад.
Аналог на мові блок-схем Знайти суму перших n
структура натуральних чисел.
int sum=0;
do Оператор int i=1;
{ do
<оператор>; – + {
} умова sum=sum+i++;
while (<умова>) }
while(i<=n)
Початкова ініціалізація
- Умова +
продовження
циклу
Оператор
Ітераційна частина
<оператор>;
39
Оператор for працює у відповідності до наступного алгоритму:
1. Обчислюється вираз ініціалізації. У цій частині допустима ініціалізація
декількох лічильників циклу.
2. Перевіряється умова продовження. Якщо умова невірна то робота
циклу завершується і передається управління наступному оператору.
3. Якщо умова істинна, виконується тіло даного оператора.
4. Виконується приріст одного або декількох лічильників циклу (або
виконується довільна інша операція).
5. Здійснюється перехід до кроку 2.
Приклад. Знайти суму перших n натуральних чисел.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n,sum=0;
Console.WriteLine("n=");
n=int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
sum = sum + i;
Console.ReadKey();
}
}
}
Проілюструємо випадок, коли частина ініціалізації та ітераційна частина
містять декілька виразів, розділених комою.
Приклад. Обчислити значення виразу
1 2 n
... .
0,3 0,4 0,3 0.1 * (n 1)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
40
class Program
{
static void Main(string[] args)
{
int n;
Console.WriteLine("n=");
n=int.Parse(Console.ReadLine());
double d;
int c;
double sum=0;
Console.WriteLine("sum={0:f3}",sum);
Console.ReadKey();
}
}
}
Кожна з частин оператора циклу може бути відсутньою, але розділові
знаки “;” є обов’язковими. Так нескінчений цикл може бути задано так:
for ( ; ; )
<оператор>;
Console.ReadKey();
}
}
}
Оператор break у циклах використовують для негайного виходу з того
циклу, в тілі якого він знаходиться.
Приклад. Знайти найменше значення факторіалу натурального числа,
що перевищує число K.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int K;
Console.Write("K=");
K=int.Parse(Console.ReadLine());
int fakt=1;
for (int i = 1; ; i++)
{
fakt *= i;
if (fakt > K) break;
}
Console.WriteLine("fakt={0}",fakt);
Console.ReadKey();
}
}
}
Приклад. Вивести на екран усі натуральні двоцифрові числа, у яких
друга цифра не перевищує першу.
При розв’язанні цього завдання використаємо оператор break , який
здійснює вихід тільки із вкладеного циклу (робота зовнішнього циклу
продовжується).
42
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
if (j > i) break;
Console.WriteLine("{0}{1}",i,j);
}
}
Console.ReadKey();
}
}
}
1 1 1
Дано a R , n N . Знайти ... .
a aa 1 aa 1...a n
2
Дано a R , n N . Знайти
1! 2! 3! 4!
3 4 5 ...
a a 1 a a 1 a 2 a a 1 a 22 a 3
3 2 2 3
a
n доданків
4 Дано дійсне число a і натуральне число n . Обчислити aa 1....a n 1 .
Дано дійсне число a і натуральне число n . Обчислити
5
ln | a n | ln | a n 1 | .... ln | a | .
6 Дано дійсне число a і натуральне число n . Обчислити a 2 a 12 ....a n 12 .
n
n
8 Дано натуральне число n . Обчислити s i i 1 .
i 1
9
Дано a0 4 . Обчислити a12 , якщо ai ai 1 cos a i / 12 .
Дано натуральне число n . Обчислити
10
s 22 42 ... 2n2 33 53 ... 2n 13 .
Дано натуральне число n і дійсне число x . Обчислити
11
cos x cos 2 x ... cos n x .
12 Дано x R, n N . Знайти sin x sin 2 x ... sin n x .
n i2
13 Дано натуральне число n . Обчислити .
i 1 i 1
n 1
14 Дано натуральне число n . Обчислити .
i 1 i!
Задано натуральне число n . Чи утворюють цифри цього числа зростаючу
15
послідовність.
16 Задано натуральне число n . Знайти кількість цифр числа n , які дорівнюють 1.
17 Задано натуральне число n . Знайти кількість цифр числа n .
18 Задано натуральне число n . Знайти суму цифр числа n .
19 Задано натуральне число n . Знайти кількість цифр числа n , які дорівнюють 1.
20 Задано натуральне число n . Знайти добуток парних цифр числа n .
Завдання 2
Обчислити з точністю 0 значення функції, заданої за допомогою ряду Тейлора у
деякій точці x .
44
№ варіанту Функція
x 1 1 1 1 1
1 ln 2 2 | x | 1
x 1 2n !
n 0 (2n 1) x x 3x 3 5 x 5
xn x2 x3 x4
2 ex 1 x ..., x
n 0 n! 2! 3! 4!
(1) n x n x2 x3 x4
3 e x 1 x | x |
n 0 n! 2! 3! 4!
(1) n x n 1 x2 x3 x4
4 ln( x 1) x | x | 1
n 0 n 1 2 3 4
1 x x 2 n ! x3 x5
5 ln 2 2 x | x | 1
1 x n 0 2n 1
3 5
xn x2 x4
6 ln( 1 x) x | x | 1
n 1 n 2 4
(1) n 1 x 2 n 1 x3 x5
7 arcctg x x | x | 1
2 n 0 2n 1 2 3 5
(1) n 1 1 1 1
8 arctg x x 1
2 n 1
n 0 ( 2n 1) x
3
2 2 x 3x 5x 5
(1) n 1 x 2 n 1
x3 x5
9 arctg x x | x | 1
n 0 2n 1 3 5
x 2n 1
x3 x5
10 Arth x x | x | 1
n 0 2n 1 3 5
1 1 1 1
11 Arth x x 1
2 n 1
n 0 ( 2n 1) x x 3x 3 5 x 5
(1) n 1 1 1 1
12 arctg x x 1
2 n 1
n 0 ( 2n 1) x
3
2 2 x 3x 5x 5
(1) n x 2 n x 4 x 6 x8
e x
2
13 1 x 2 | x |
n 0 n! 2! 3! 4!
(1) n x 2n x 2 x 4 x 6 x8
14 cos( x) 1 | x |
n 0 (2n)! 2! 4! 6! 8!
sin x
1 x 2 n 1 x 2 x 4 x 6 ..., x
n
15
x n 0 2n 1! 3! 5 ! 7 !
ln x 2
x 12 n 1 x 1 x 13
2
x 15 ..., x 0
16
n 0 2n 1 x 1 x 1 3 x 1 5 x 1
2 n 1 3 5
ln x
x 1n1 x 1 x 12 x 13 ..., x 1
17
n 0 n 1x
n 1
x 2x 2 3x 3 2
ln x
1 x 1 x 1 x 1 x 1 ..., 0 x 2
n n 1 2 3
18
n 0 n 1 2 3
1 32n 1 x 2 n 1
x 3
1 3 x 5 1 3 5 x 7 1 3 5 7 x 9
19 arcsin x x x ..., x 1
n 1 2 4 2n 2n 1 23 2 45 2 4 6 7 2 4 689
1 3 2n 1 x 2 n 1
x x 1 3 x 1 3 5 x ..., x 1
3 5 7
20 arccos x x
2 n 1 2 4 2n 2n 1
2 23 245 2467
45
8. СТРУКТУРНИЙ ПІДХІД ДО РОЗРОБКИ АЛГОРИТМІВ.
ФУНКЦІЇ
При розв’язанні складних задач застосовується структурний підхід до
розробки алгоритмів за методикою «зверху-вниз». Цей підхід полягає у
розбитті складної задачі на більш прості підзадачі.
8.1. Означення функції
У мові С# у рамках структурного підходу до розробки алгоритмів
підзадачі реалізовують у вигляді окремих функцій, які потім можуть бути
використані в основному методі програми Main. Під функцією будемо
розуміти окремо виділений програмний блок, що має власне ім’я та може
повертати результат у викликаючу програму.
int max2 = a;
if (2*b > max2)
max2 = 2*b; int max2 = Max(a, 2*b, c);
if (c > max1)
max2 = c;
Загальне правило:
return [<вираз того ж типу що й результат функції>];
Під час роботи функції: Під час роботи функції: Під час роботи функції:
(для змінної m виділяється нова (для змінної m нова пам’ять не (для змінної m нова пам’ять не
пам’ять) виділяється а викорстовується виділяється а викорстовується
пам’ять змінної n) пам’ять змінної n)
8.3. Рекурсія
Рекурсія − це такий спосіб організації обчислювального процесу, за
якого функція звертається сама до себе. Такі звернення називаються
рекурсивними викликами, а функція, що містить рекурсивні виклики, −
рекурсивною.
Рекурсію використовують у ситуаціях, коли легко звести вихідну задачу
до задачі того ж виду, але з іншими вихідними даними. Найпростішим
прикладом такої задачі може стати обчислення факторіала. Так обчислення
факторіала може бути здійснене у відповідності до наступного рекурентного
правила:
51
x
x x n1 , якщо n 0.
52
static double f(double x, int n)
{
if (n == 0)
return 1;
else
if (n < 0)
return 1 / f(x, Math.Abs(n));
else
return x * f(x, n - 1);
}
2 2 z 1
cos x sin y e , в інших випадках.
Обчислити значення виразу f 4 2 f a f b , де
0, x 23;
f x 1, x 23;
14
1, x 23.
Дано дійсні числа a, b, c, d . Обчислити y pa pb pc 2 p2d / 4 ,
де px 2 x 2 .
15 3
x
xi
10
16 Дано ціле число a . Визначити 3 f a / 2 5 f a 2 2 , де f x .
i 1 i
Дано дійсні числа х, у. Обчислити:
f ( y,2 x, x y 1.17) f (2.2, y, x 2 y 2 ) , де
17
2a b sin c
f (a, b, c) .
5 | c |
Дано дійсні числа х, у. Обчислити: g (1.2, x) g ( y, x) g (2 x 1, xy) , де
18
g (a, b) a 2ab 3b 4 .
Дано ціле число а. Визначити: 12.5 f (a / 2) 3.1 f (a 2 a 1) , де
19 5
f ( x) a i .
i 1
Дано дійсні числа х, у. Обчислити:
20 f ( f (1,2), x) f ( y, f ( x y, f (2 x,3 y ))) де
f (n, m) n 2 2nm 3m 2 n m .
Завдання 2
№ варіанту Умова
Використовуючи підпрограму для знаходження скалярного добутку,
1 обчислити значення виразу s=2<a,b>-3<a,c>, де a,b,c R n , <x,y> – скалярний
добуток векторів.
Використовуючи підпрограму наближеного знаходження визначеного
інтегралу за формулою лівих прямокутників, обчислити значення виразу
2 3 b
s 4 x sin x 3 dx 4 x sin x 3 dx
a a
Використовуючи підпрограму наближеного знаходження визначеного
інтегралу за формулою правих прямокутників, обчислити значення виразу
3 3 b
s 4 x sin x 3 dx 4 x sin x 3 dx
a a
55
№ варіанту Умова
Використовуючи підпрограми для додавання векторів та множення вектора на
4 число, знайти вектор
c=a-3*b+2*c, де a,b,c R n .
Використовуючи підпрограму визначення паралельності двох прямих на
5 площині, визначити, скільки взаємно паралельних пар прямих є серед
вказаних n прямих: Ai x Bi y Ci 0, i 1,2,..., n .
Використовуючи підпрограму визначення перпендикулярності двох прямих на
6 площині, визначити, скільки взаємно перпендикулярних пар прямих є серед
вказаних n прямих: Ai x Bi y Ci 0, i 1,2,..., n .
Два трикутники задано координатами вершин. Використовуючи підпрограму
7 визначення належності точки внутрішності трикутника, з’ясувати, чи лежить
один з трикутників у середині іншого.
Трикутник задано координатами своїх вершин на площині. Використовуючи
8 підпрограму для знаходження кута між векторами на площині, встановити тип
трикутника (гострокутний, прямокутний, тупокутний).
Дано послідовність натуральних чисел a1 , a2 ,..., an . Використовуючи
9 підпрограму, яка дозволяє встановити, чи є послідовність із чотирьох чисел
арифметичною прогресією, знайти кількість послідовно розміщених четвірок
чисел, які утворюють арифметичну прогресію.
Дано послідовність натуральних чисел a1 , a2 ,..., an . Використовуючи
10 підпрограму, яка дозволяє встановити, чи є послідовність із чотирьох чисел
геометричною прогресією, знайти кількість послідовно розміщених четвірок
чисел, які утворюють геометричну прогресію.
Використовуючи відповідні підпрограми, з’ясувати, що є більшим, середнє
11 арифметичне чи середнє геометричне чисел a1 , a2 ,..., an .
Дано послідовність натуральних чисел a1 , a2 ,..., an . Використовуючи
12 відповідні підпрограми знаходження суми та добутку цифр, знайти натуральне
число, у якого найменший добуток цифр.
Дано послідовність натуральних чисел a1 , a2 ,..., an . Використовуючи
13 підпрограму знаходження найбільшої та найменшої цифри, знайти число, яке
містить найбільшу цифру та число, яке містить найменшу цифру.
Дано послідовність з m натуральних чисел n1 , n2 ,..., nm . Обчислити суму цифр
14
всіх чисел.
Дано дійсні координати чотирьох точок на площині. Визначити, які трійки з
них утворюють трикутники, і обчислити площу більшого трикутника,
15
створивши для цього функції обчислення довжини відрізка та площі
трикутника.
Дано послідовність з m натуральних чисел n1 , n2 ,..., nm . Обчислити суму цифр
16
всіх чисел, які більші за 5.
Дано послідовність з m натуральних чисел n1 , n2 ,..., nm . Обчислити суму цифр,
17
які кратні 3.
Дано послідовність з m натуральних чисел n1 , n2 ,..., nm . Обчислити добуток
18
цифр всіх чисел.
Дано послідовність з m натуральних чисел n1 , n2 ,..., nm . Визначити число,
19
добуток цифр якого є найменшим.
56
№ варіанту Умова
Дано послідовність з m натуральних чисел n1 , n2 ,..., nm . Визначити число,
20
сума цифр якого є найбільшою.
Завдання 3
№ варіанту Умова
1
Використовуючи відповідну підпрограму знаходження g i , обчислити
2
значення виразу s g 7 g 9 , де g i sin( g i 1 cos( g i 2 ) ), g 0 9, g1 35 .
3 Нехай x0 1, xi xi 1 2i , де i 1,2,... . Визначити x10 .
4 Нехай x0 x1 1, xi xi 1 2 xi 2 , де i 2,3,... . Визначити xn .
5 Нехай x0 x1 1, xi xi 1 xi 2 . Визначити xn .
6 Нехай x0 0, x1 9, xi 2 xi 1 3xi 2 . Визначити xn .
7 Нехай x0 0, x1 x2 9, xi xi 1 xi 2 xi 3 . Визначити xn .
8 Нехай x0 0, x1 x2 9, xi xi 1 4 xi 3 . Визначити xn .
9 Нехай x0 0, x1 7, xi xi 1 1 xi 2 . Визначити xn .
x 1 xi 2 xi 3
10 Нехай x0 0, x1 x2 x3 7, xi i 1 . Визначити xn .
xi 4
x 4 xi 2 1 xi 2 xi 3
Нехай x0 0, x1 x2 x3 7, xi i 1 xi 4 .
11 xi 4
Визначити xn .
xi 2
Нехай x0 x1 1, xi sin xi 1 . Визначити xn .
cos xi 1
12
ОСНОВИ ПРОГРАМУВАННЯ У C#