№ 1 тәжірибелік жұмыс
Тақырып: Сызықтық алгоритмдер, формулалар бойынша есептеу.
Тапсырма: Берілген формула бойынша есептеулерді орындайтын программа жазыңыздар.
Есеп беру:Программа мәтіні мен нәтижесі.
Ескерту:Төмендегі кестеде формулалар бойынша есептеу кезінде қажетті математикалық
функциялардың C# тілінде жазылуы берілген.
Математикалық
функциялар
C#
тілінде жазылуы
e
x
Exp(x)
sin x
Sin(x)
cos x
Cos(x)
tg x
Tan(x)
arctg x
ATan(x)
| x |
Abs(x)
ln x
Log(x)
lgx
Log10(x)
√x
Sqrt(x)
Математикалық функциялар —Math класы
Математикалық функциялар, мысалы, синус, косинус, дәрежелеу System атаулар
кеңістігінде анықталған Mathкласында орындалады. Осы класс тәсілдері арқылы мыналар
есептелінеді:
□
тригонометрииялық функциялар: Sin, Cos, Tan;
□
кері тригонометрииялық функциялар: ASin,ACos,ATan,ATan2;
□
гиперболалық функциялар: Tanh, Sinh, Cosh;
□
экспонента мен логарифмдікфункциялар: Exp,Log,Log10;
□
модуль (абсолюттік шама), квадрат түбір, таңбаны анықтау: Abs,Sqrt,Sign;
□
дөңгелектеу: Ceiling,Floor,Round;
□
минимум, максимум: Min, Max;
□
дәрежелеу, қалдық табу: Pow, IEEEReminder;
□
екі бүтін шаманың толық көбейтіндісі: BigMul;
□
бөлу және бөлгендегі қалдықты табу: DivRem.
Мұнан басқа кластың екі пайдалы өрістері бар: πсаны мене саны. Тәсілдер мен өрістер
сипаттамалары кестеде көрсетілген.
Math
класының негізгі өрістері мен статикалық функциялары
Аты
Сипатталуы
Нәтижесі
Түсініктемесі
Abs
Модуль
Перегружен
1
\
х\→ Abs(х)болып жазылады
Acos
Арккосинус
2
double
Acos(double x)
Asin
Арксинус
double
Asin(double x)
Atan
Арктангенс
double
Atan(double x)
Atan2
Арктангенс
double
Atan2(double x, double y) –
у-тіx-
ке бөлгенде шығатын тангенс
бұрышы
BigMul
Көбейту
long
BigMul (int x, int
у)
Ceiling
Үлкен бүтін санға қарай
дөңгелектеу
double
CeilingCdouble x)
1
Бұл мәліметтердің бірнеше типтеріне арналған нұсқалар бар екенін білдіреді.
2
Бұрыш радианмен беріледі
60
Cos
Косинус
double
Cos(doublex)
Cosh
Гиперболалықкосинус
double
Cosh(doublex)
DivRem
Бөлу мен қалдық табу
әртүрлі
DivRenKx
, у, rem)
Е
Натураллогарифм негізі (е
саны)
double
2,71828182845905
Аты
Сипатталуы
Нәтижесі
Түсініктемесі
Ехр
Экспонента
double
e
x
→ Ехр(х) болып жазылады
Floor
Кіші бүтін санға қарай
дөңгелектеу
double
Floor(doublex)
IEEE-
Remainder
Бөлгендегі қалдықты табу double
IEEERemainder(double x,
double
у)
Log
Натурал логарифм
double
log
e
х → Log(x) болып жазылады
Log10
Ондық логарифм
double
log
to
x → Log10(х)
Мах
Екі санның максимумы
әртүрлі
Мах(х, у)
Min
Екі санның минимумы
әртүрлі
M i n (x ,
у)
PI
πсанының мәні
double
3,14159265358979
Pow
Дәрежелеу
double
x
y
→Pow(x, у)
Round
Дөңгелектеу
Перегружен Round (3.1) нәтижесі 3,
Round (3.8)
нәтижесі 4 болады
Sign
Сан таңбасын анықтау
int
Аргументтер асыра жүктелген
Sin
Синус
double
Sin(doublex)
Sinn
Гиперболалықсинус
double
Sinh(double x)
Sqrt
Квадрат түбір
double
√х
→ Sqrt(x)
Tan
Тангенс
double
Tan(doublex)
Tanh
Гиперболалықтангенс
double
Tanh(double x)
Төмендегі программада Math класының екі тәсілі көрсетілген, қалғандары да солай
қолданылады.
Листинг. Math класының тәсілдері
using System;
namespace ConsoleApplication1
{ class Classl
{ static void Main()
{
Console.Write( " х engiz: " );
string buf = Console.ReadLine();
double x = double.Parse( buf );
Console.WriteLine( " sin mani: " + Math.Sin(x) );
Console.Wri
te( " у engiz: " );
buf = Console.ReadLine();
double у = double.Parse( buf );
Console.WriteLine( " Maximum : " + Math.Max(x, y) );
}
}
Тәжірибелік жұмысты қорғау сұрақтары:
6.
Оператор дегеніміз не?
7.
C#
тілінің алфавитіне қандай символдар кіреді?
8.
Мәндерді енгізу (шығару) үшін қандай функцияларды пайдаланамыз?
9.
Бүтін, нақты айнымалыларды сипаттап, оларды енгізетін операторларды жазыңыз.
61
10.
Меншіктеу операторы қалай жазылады?
Тапсырмалар варианттары:
1.
Кубтың қабырғаларының ұзындығы берілген. Оның көлемі мен қабырғасының бетінің
ауданын табыңдар.
2.Тікбұрышты үшбұрыштың катеттері берілген. Оның гипотенузасы мен ауданын
табыңдар.
3.
Теңбүйірлі үшбұрыштың жақтары берілген. Үшбұрыштың ауданын табыңдар.
4. x
1
, y
1
және x
2
, y
2
координаталарымен берілген нүктелердің ара қашықтығын табыңдар.
5.
Нақты x саны берілген. Тек көбейту, қосу және азайту амалдарын қолданып 2x
4
– 3x
3
+
4x
2
–
5x + 6 есептеңіз. 4 көбейту, 4 қосу және 4 азайту амалын қолдануға болады (Горнер
схемасын пайдалану керек).
6.
Нақты x саны берілген. Тек көбейту, қосу және азайту амалдарын қолданып 1 – 2x + 3x
2
– 4x
3
и 1 + 2x + 3x
2
+ 4x
3
есептеңіз. Тек 8 операция қолдануға болады (Горнер схемасын
пайдалану керек).
7. x, y, z
берілген. a, b есептеңіздер.
,
8. x, y, z
берілген. a және b есептеңіздер.
9. x, y, z
берілген. a және b есептеңіздер.
10. x, y, z
берілген. a және b есептеңіздер.
№ 2 тәжірибелік жұмыс
Тақырып:Тармақталу алгоритмдері. Шартты оператор.
Тапсырма:Қойылған есепті шешуге арналған алгоритм құрып, программа жазыңыздар.
Есеп беруі: Блок-схема және программа мәтіні, есептің шығарылған нәтижесі.
Тәжірибелік жұмысты қорғау сұрақтары:
5.
Тармақталу алгоритмдері.
6.
Шартты оператор.
7.
Құрама оператор.
8.
Логикалық операциялардың жазылуы.
9.
Тармақталу процестері бар алгоритмдерді ұйымдастыру үшін шартты және таңдау
операторлары пайдаланылады.
2 мысал.ах
2
+b
х+c = 0 теңдеуін шығару программасын құру керек.
62
using System;
namespace Proba2
{ class QuadrEquation
{static void Main()
{ double a = 0.5, b = -
2.7, с = 3.5, d;
if (Math.Abs(a) ==0) // a=0
екенін
тексеру
Console.WriteLine("x1 = x2 = " +(-
с/b));
// a=0
else
{ // a # 0
, яғни а нөлге тең емес
if ((d = b*b-
4*a*с)< 0.0)
{ // Комплексті түбірлер
d = 0.5*Math.Sqrt(-d)/a;
a = -0.5*b/a;
Console.WriteLine("x1 = "+a+"+i"+d+", x2 = "+a+"-i"+d);
}
else
{ // нақты түбірлер
d =0.5*Math.Sqrt(d)/a;
a = -0.5*b/a;
Console.WriteLine("x1 = "+(a+d)+", x2 = "+(a-d));
}
}
}
}
}
Программа жұмысы нәтижесі:
x1 = 3.23851648071345, x2 = 2.16148351928655
иә
жоқ
бсы
a,b,c
енгізу
a = 0 ?
x1= x2= –
с/b
???????????? = ????????????
2
− 4????????????????????????
d
<0
?
???????????? = 0.5√−????????????/????????????
???????????? = 0.5????????????/????????????
x1 = a + id
x2 = a– id
???????????? = 0.5√????????????/????????????
???????????? = −0.5????????????/????????????
x1 = a + d
x2 = a–d
соңы
иә
жоқ
63
Тапсырмалар варианттары:
1.
Нақты x, y ( x ≠ y ) берілген. Кішісін олардың жарты қосындысымен, ал үлкенін - екі
еселенген көбейтіндісімен алмастырыңыз.
2.
Үш нақты сан берілген. Теріс емес сандарды квадраттаңыздар.
3.
Егер берілген нақты x, y, z сандарының қосындысы 1-ден кем болса, онда бұл үш
санның ең кішісін қалған екі санның жарты қосындысымен алмастырыңыз, кері
жағдайда x және y-тің кішісін қалған екеуінің жарты қосындысымен алмастырыңыз.
4.
Нақтыa, b, c, d сандары берілген. Егерa<=b<=c<=d болса, онда әр санды ең үлкен
санмен алмастырыңыз, егер a>b>c>d болса, садарды өзгеріссіз қалдырыңыз, кері
жағдайда барлық сандарды олардың квадратымен алмастырыңыз.
5.
Нақты x, y, z сандары берілген. Егер x y-ке қалдықсыз бөлінсе және yz-ке қалдықсыз
бөлінсе, онда барлық сандарға 1-ді қосыңыз, кері жағдайда барлық сандарды нөлге
теңестіріңіз.
6.
Нақты а саны берілген. f(a) –ны есптеңіз.
7.
Нақты а саны берілген . f( a) –ны есптеңіз.
8.
Нақты а саны берілген. f(a) –ны есптеңіз.
9.
Нақты a, b, c сандары берілген ( a ≠ 0). ax
2
+bx+c=0
теңдеуінің нақты түбірлері бар
екенін тексеріңіз. Егер бар болса оларды есептеңіз, кері жағдайда экранда “нақты түбір
жоқ”деген мәлімдеме шығу керек.
10.
Нақты x, y сандары берілген. Егер x және y оң сан болса, онда оларды түбірден
шығарыңыз; егер тек біреуі оң болса, онда оларды квадраттаңыз. Егер x және y теріс
сан болса, онда олардың абсолют шамасын табыңыз.
№3 тәжірибелік жұмыс
Тәжірибелік жұмысқа берілген тапсырманы орындау нұсқасы
20
2
2
)
1
2
4
(
x
e
x
x
y
+
+
=
0 1
1
,
≤ ≤
x
15
x0=0,1; xk=1; n=15;
Бұл есепті шарты алдында тексерілетін цикл бойынша ( while) шығарамыз.
using
System;
namespace
Listing4_3
{
64
class
Classl
{
staticvoid
Main()
{
int
n = 15;
double
x0 = 0.1, xk = 1, dx, y;
dx = (xk - x0) / (n - 1);
Console
.WriteLine(
"| x | у |"
);
Console
.WriteLine(
"-------------------"
);
double
x = x0;
while
(x <= xk)
{
y = (x * x / 4 + x / 2 + 1) *
Math
.Exp(x / 2);
Console
.WriteLine(
"| {0,4:f2} | {1,4:f2} |"
, x, y);
x += dx;
}
Console
.WriteLine(
"-------------------"
);
}
}
}
3.3
Енді осы есепті арифметикалық цикл бойынша (for) табу программасы мен
алгоритм схемаcын келтірейік.
using
System;
namespace
Listing4_8
{
class
Class1
{
staticvoid
Main()
{
Басы
х
=x
0
жоқ
иә
x≤x
k
y=f(x)
x=x+dx
x, y
Соңы
x
0
,x
k
,nенгізу
d
х
=(xk-x
0
)/n
Шексіз қосындыны do while
арқылы есептеу алгоритмі
65
double
e = 1e-6;
Console
.Write(
"
Аргументенгiз: "
);
string
buf =
Console
.ReadLine();
double
x =
Convert
.ToDouble(buf);
double
ch = 1,
у = ch;
for
(
int
n = 0;
Math
.Abs(ch)> e; n++)
{
ch *= x * x / (2 * n + 1) / (2 * n + 2);
у += ch;
//
мүшеніқосындылау
}
Console
.WriteLine(
"
Косынды - "
+
у);
}
}
}
№ 4 тәжірибелік жұмыс
Тақырып:Бір өлшемді массивтермен жұмыс жасау.
Тапсырма: Берілген есепті шығарудың блок-схемасы мен программасын
жазыңыздар.
Есеп беру: Блок-схема және программа.
1.
Жұмысты орындаудың әдістемелік нұсқаулары
Массив деп бір атауменбелгіленіп, реттеліп біріктірілген бір типтегі
мәліметтертобын айтады. Мысалы, нақты сандардан құрылған төмендегі тізбекті
1.6,14.9,-5.0,8.5,0.46, 2.25, -9.85, 6.27, 5.7, -3.2
Шексіз қосындыны for
арқылы есептеу алгоритмі
n= 0, |ch| >
ε
, n++
сh=1;s =ch;
ε
, х
енгізу
басы
ch *=x
2
/(2n+1)/2n+2);
y += ch;
y
соңы
66
бір өлшемді массивдеп, оған А деп атау беруге болады. Массивтің әр элементі массивтің
атымен белгіленеді де, тік жақша ішіне оның индексі қойылады, яғни массивэлементтері
индекстері бойынша реттеліп жазылады.Массивтің кез келген элементін оның реттелген
нөмірін, яғни индексін көрсету жолымен пайдалана аламыз.Индекстер нақты типтен басқа
кез келген скалярлы (реттелген) тұрақты немесе өрнек күйінде бола береді.
Массивэлементтерінің саны оның индексінің мәнімен және олардың өзгеру аралығымен
анықталады. Массивті сипаттау үшін оны алдымен анықтап алу керек. Оның жазылу
форматы:
типі[ ] аты = new типі [ ] { инициалдау_тізімі };
int[ ] d = new int[ ] { 61, 2, 5, -9 };
Мысал. Алты бүтін саннан тұратын а жиымының теріс элементтерінің қосындысы мен
санын және ең үлкен элементін анықтайтын программа құру керек.
using System;
namespace Listing4_1
{ class Class1
{ static void Main()
{ const int n = 6;
int[ ] a = new int[n] { 3, 12, 5, -9, 8, -4 };
Console.WriteLine("Берілген жиым:" );
for ( int i = 0; i < n; ++i )
Console.Write( "\t" + a[i] );
Console.WriteLine( );
long sum = 0; // теріс элементтері қосындысы
int num = 0; // теріс элементтері саны
for ( int i =0; i < n; ++i )
if ( a[i] < 0 )
{ sum += a[i];
++num;
}
Console.WriteLine(" Теріс сандар қосындысы = " + sum );
Console.WriteLine(" Теріс сандар саны = " + num );
int max = a[0]; // максимал элемент
for ( int i = 1; i < n; ++i )
if ( a[i] > max ) max = a[i];
Console.WriteLine( "Максимал элементі = " + max );
}
}
}
2. Тапсырмалар варианттары:
1. А(10) массиві берілген. Ең бірінші нөлдік элементің алдындағы оң таңбалы
элементтердің қосындысы мен санын табыңыз.
2. А(20) массиві берілген. Массивтің ең үлкен және ең кіші элементтерін және
олар-
дың реттік нөмірін табыңыз.
3. А(15) массиві берілген. Массивтің тақ орындарында орналасқан элементтердің
67
ішінен ең кішісін табыңыз және ең бірінші кіші элементтен кейін орналасқан
нөлге тең емес элементтердің көбейтіндісі мен санын анықтаңыз.
4. А(30) массив берілген. Ең кіші және ең үлкен элементтердің аралығында орнала-
сқан оң таңбалы элементтердің қосындысы мен санын табыңыз.
5. Егер А(30) массивінде берілген В-ға тең элемент болса, Х айнымалысына ең
бірінші сондай элементтің алдындағы оң таңбалы жұп элементтердің
қосындысының мәнін, керісінше жағдайда нөл мәнін меншіктеп, нәтижені
экранға шығарыңыз.
6. Егер А(20) массивінде соңғы элементтің квадратына тең элемент бар болса,
содан кейінгі элементтерді квадраттау керек, керісінше жағдайда массив
өзгермейді.
7. Егер В(40) массивінің элементтері өсу реттілігімен орналасса, Х айнымалысын
1-
ге теңестіру керек, керісінше жағдайда ол нөлге тең.
8. А(10) массиві берілген. Массивтің ең үлкен элементін табу керек, содан кейінгі
элементтерді кему ретімен орналастырыңыз.
9. Берілген екі массивтер бойынша үшінші массив құрастырылады, оның басында
бірінші массивтің элементтері, аяғында екінші массивтің элементтері орналасуы
тиіс.
10. В(20) мен С(30) массив элементтерінен өсуі бойынша реттелген А(50) массивін
құру керек. В(20) мен С(30) алдын ала өсу бойынша реттелген болуы тиіс.
0> Достарыңызбен бөлісу: |