Shart operatori:
Shart operatori boshqarishni qaysi tarmoqqa uzatishni ta’minlaydi. Shart operatorining ikki xil ko’rinishi mavjud. Operatorning umumiy ko’rinishi va qisqa ko’rinishi.
Shart operatorining umumiy ko’rinishi:
if ()
;
else
;
if agar, else aks holda ma’nolarini anglatadi.
Shart operatorining qisqa ko’rinishi:
if ()
;
<shart> tekshirilishi lozim bo’lgan mantiqiy ifoda
<operator 1> Agar shart rost (true) qiymatga ega bo’lsa bajarilishi lozim bo’lgan operator.
<operator 2> Agar shart yolg’on (false) qiymatga ega bo’lsa bajarilishi lozim bo’lgan operator
Shart operatori tarkibida ixtiyoriy operatordan foydalanish mumkin. Shu o’rinda shart operatoridan ham.
Misol: Berilgan a sonini juft yoki toqligini aniqlovchi dastur.
#include
using namespace std;
int main()
{
int a;
cin >> a;
if (a % 2 == 0)
cout << «juft»;
else
cout << «toq»;
return 0;
TOPSHIRIQ.
Masala:
a1,b1,c1, a2,b2,c2 koeffisientlar bilan berilgan, quyidagi ko’rinishga ega bo’lgan
chiziqli tenglamalar sistemasining yechimi hisoblansin
namespace Chiziqli_tenglamalar_sistemasi
{
public static class Program
{
public static void Main()
{double c,a1,a2,a3,b1,b2,b3,x,y,k;
a1=double.Parse(Console.ReadLine());
a2=double.Parse(Console.ReadLine());
a3=double.Parse(Console.ReadLine());
b1=double.Parse(Console.ReadLine());
b2=double.Parse(Console.ReadLine());
b3=double.Parse(Console.ReadLine());
k=a1/b1;
c=a3-(k*b3);
y=c/(a2-k*b2);
x=(a3-a2*y)/a1;
Console.WriteLine("x= {0},y= {1}",x,y);
}
}
}
21.06.2022
2-mavzu SHart operatorlari.Switch operatorlari.
While sikl operatori:
C# tilidagi yana bir sikl ifodasi while ifodasidir. Quyida ushbu operatorning umumiy shakli keltirilgan:
while (shart) operator;
bu erda operator bitta operator yoki operatorlar bloki bo'lib, shart siklni boshqarish uchun maxsus shartni bildiradi va har qanday mantiqiy ifoda bo'lishi mumkin. Bu siklda, shart rost bo'lsa, operator bajariladi. Shart yolg’on bo'lishi bilan dasturni boshqarish sikldan keyin darxol kod qatoriga o'tkaziladi. Quyida butun sonning necha xonali ekanligini hisoblash uchun while siklidan foydalanadigan oddiy dastur misoli keltirilgan.
using System;
class WhileDemo
{
static void Main()
{
int num;
int mag;
num = 435679;
mag = 0;
Console.WriteLine("Son: " + num);
while (num > 0)
{
mag++;
num = num / 10;
};
Console.WriteLine("Son: " + mag + " xonali");
}
}
Dastur natijasi:
Son: 435679
Son: 6 xonal
Yuqoridagi while sikli quyidagicha ishlaydi. Birinchidan, num o'zgaruvchisining qiymati tekshiriladi. Agar u noldan katta bo'lsa, u holda mag o'zgaruvchisi bittaga ortadi va num o'zgaruvchisining qiymati 10 ga bo'linadi. Num o'zgaruvchisining qiymati noldan kichik bo'lgunga qadar sikl takrorlanadi. U nolga teng bo'lishi bilanoq, sikl tugaydi va mag qiymatining oxirgi qiymati o'zgaruvchida qoladi. For siklida bo'lgani kabi, while sikli ham sikl boshida ko'rsatilgan shartli ifodani tekshiradi. Bu shuni anglatadiki, siklning tanasidagi kod umuman bajarilmasligi mumkin, shuningdek, siklning o'zidan oldin alohida tekshirishni amalga oshirish zaruriyatini yo'q qiladi. while siklining bu xossasi 2 ning 0 dan 9 gacha bo‘lgan butun son darajasini hisoblovchi quyidagi dastur misolida ko‘rsatilgan.
using System;
class Power
{
static void Main()
{
int e;
int result;
for (int i = 0; i < 10; i++)
{
result = 1; e = i;
while (e > 0)
{
result *= 2; e--;
}
Console.WriteLine("2 darajasi " + i + " = " + result);
}
}
}
Dastur natijasi:
2 darajasi 0 = 1
2darajasi 1 = 2
2 darajasi 2 = 4
2 darajasi 3 = 8
2 darajasi 4 = 16
2 darajasi 5 = 32
2 darajasi 6 = 64
2 darajasi 7 = 128
2 darajasi 8 = 256
2 darajasi 9 = 512
Esda tutingki, while sikli faqat e noldan katta bo'lsa ishlaydi. Va nolga teng bo'lganda, for siklining birinchi bosqichida bo'lgani kabi, while sikli o'tkazib yuboriladi va sikl tugallanadi. Do-while sikl operatori C# tilidagi uchinchi sikl operatori do-while operatoridir. Shart sikl boshida tekshirilgan for va while operatorlaridan farqli o'laroq, do-while operatorida siklning bajarilishi sharti eng oxirida tekshiriladi. Bu shuni anglatadiki, do-while sikli har doim kamida bir marta bajariladi. Quyida do-while sikl operatorining umumiy shakli keltirilgan. do { operatorlar; } while (shart); Agar faqat bitta operator bo'lsa, bu belgida sistemali qavslar ixtiyoriy. Biroq, ular ko'pincha do-while konstruktsiyasini while sikli konstruktsiyasi bilan adashtirmaslik qavslarni qo’yib ishlatiladi. Do-while sikli shartli ifoda yolg’on boʻlguncha ishlaydi. Quyidagi namunaviy dastur butun sonning alohida raqamlarini teskari aylantirish uchun do-while siklidan foydalanadi.
using System;
class DoWhileDemo
{
static void Main()
{
int num;
int nextdigit;
num = 198;
Console.WriteLine("Son: " + num);
Console.Write("Sonni teskari tartibda tartiblash: ");
do
{
nextdigit = num % 10;
Console.Write(nextdigit);
num = num / 10;
} while (num > 0);
Console.WriteLine();
}
}
Dastur natijasi:
Son: 198
Sonni teskari tartibda tartiblash: 891
Yuqoridagi sikl shunday ishlaydi. Har bir qadamda eng oxirgi raqami butun sonni (num o'zgaruvchisining qiymati) 10 ga bo'lishning qolgan qismini hisoblash yo'li bilan olinadi. Natijada paydo bo'lgan raqam ko'rsatiladi. Bundan tashqari, num o'zgaruvchisining qiymati 10 ga bo'linadi. Va bu butun son bo'linmasi bo'lgani uchun, natijada eng oxirgi raqam o'chiriladi. Bu jarayon num o'zgaruvchisining qiymati nolga yetguncha takrorlanadi
Quyida switch operatoridan foydalanishni ko'rsatadigan namunaviy dastur keltirilgan.
// switch operatoridan foydalanish
using System;
class SwitchDemo
{
static void Main()
{
int i;
i = int.Parse(Console.ReadLine());
switch (i)
{
case 0:
Console.WriteLine("i nolga teng");
break;
case 1:
Console.WriteLine("i birga teng");
break;
case 2:
Console.WriteLine("i ikkiga teng");
break;
case 3:
Console.WriteLine("i uchga teng");
break;
case 4:
Console.WriteLine("i to'rtga teng");
break;
default:
Console.WriteLine("i beshdan katta yoki teng");
break;
}
Console.ReadKey();
}
}
Ushbu dasturni ishga tushirish natijasi shunday ko'rinadi.
4
Topshiriq
Masala:
tenglamaning haqiqiy ildizlarini topadigan yoki ildizi yo'qligi haqida ma'lumot beradigan dastur tuzilsin
namespace Kvadrat_tenglama
{
public static class Program
{
public static void Main()
{double a,b,c,x,x1,x2,D;
a=double.Parse(Console.ReadLine());
b=double.Parse(Console.ReadLine());
c=double.Parse(Console.ReadLine());
D=b*b-4*a*c;
if (a==0)
{
x=Math.Sqrt((c/b));
Console.WriteLine("siz kiritgan tenglamada yagona ildiz: "+x+" -"+x);
}
else if(D<0)
Console.WriteLine("ushbu tenglama ildizga ega emas");
else if(D==0)
{
x=(-b)/(2*a);
Console.WriteLine("siz kiritgan tenglamada yagona ildiz: "+x+" -"+x);
}
else
{
x1=((-b)+Math.Sqrt(D))/(2*a);
x2=((-b)-Math.Sqrt(D))/(2*a);
Console.WriteLine("x1= {0},x2= {1},x3={2},x4={3}",x1,-x1,x2,-x2);
}
22.06.2022
Mavzu: Takrorlash operatorlari: for operatorlari, while, do-while, if-goto operatorlari
For sikli:
For sikli o`ziga tegishli instruksiyaning bir necha marta takroran bajarilishini ta`minlaydi. Bitta instruksiya uchun uning yozilishi quyidagicha: for (e`lon qilish; shart; iterasiya) instruksiya; Agar for sikli dastur bloki (bir nechta instruksiya ketma-ketligi)ni takroran bajarishi kerak bo`lsa, u holda for siklining ko`rinishi quyidagicha bo`ladi:
for (e`lon qilish; shart; iterasiya)
{ instruksiyalar ketma-ketligi }
E`lon qilish qismi qiymat o`zlashtirishdan iborat. Bu qismda siklni boshqaruvchi o`zgaruvchining boshlang`ich qiymati beriladi. Bu o`zgaruvchi hisoblagish vazifasini bajaradi, siklni boshqaradi. Shart qismi bool tipiga tegishli bo`lib, unda siklni boshqaruvchi o`zgaruvchi qiymati tekshiriladi. Shartning natijasi siklning yana bir bor bajarilishi yoki bajarilmasligini bildiradi. iteratsiya ifoda bo`lib, u har bir sikldan so`ng siklni boshqaruvchi o`zgaruvchining qiymati qanday o`zgarishini ko`rsatadi. for sikli toki shart “true” qiymatga ega ekan bajarilaveradi. Shart false qiymatga ega bo`lgandan keyin for siklidan keyingi instruksiya bajariladi.
Misol:
using System;
class DecrFor
{
public static void Main()
{
int x;
for (x = 100; x > -100; x -= 5)
Console.WriteLine(x);
Console.ReadKey();
}
}
Shart hamma vaqt for sikli bajarilishidan oldin tekshiriladi. Ya’ni agar shartni birinchi tekshirishdanoq false qiymat qabul qilsa, sikl umuman bajarilmaydi.
Misol:
for (x = 10; x < 5; x++)
Console.WriteLine(x); // bu instruksiya hech qachon bajarilmaydi.
for sikli odatda takrorlanishlar soni aniq bo`lgan holda ishlatiladi.
Masalan
Quyidagi misolda 2 dan 20 gacha sonlar orasidan murakkab sonlar bo`lsa, sonning bo`luvchilarini chiqariladi:
using System;
class FindPrimes
{
public static void Main()
{
int num;
int i;
int factor; bool isprime;
for (num = 2; num < 20; num++)
{
isprime = true; factor = 0; // num ning i ga qoldiqsiz bo`linishini aniqlaymiz.
for (i = 2; i <= num / 2; i++)
{
if ((num % i) == 0)
{
// agar num i ga qoldiqsiz bo`linsa, demak num murakkab son
isprime = false;
factor = i;
if (isprime)
Console.WriteLine(num + " - tub son");
Else
Console.WriteLine(num + " ning bo'luvchisi " + factor);
}
}
}
Console.ReadKey();
}
}
Natija:
4 ning bo'luvchisi 2
6 ning bo'luvchisi 2
6 ning bo'luvchisi 3
8 ning bo'luvchisi 2
8 ning bo'luvchisi 4
9 ning bo'luvchisi 3
10 ning bo'luvchisi 2
10 ning bo'luvchisi 5
12 ning bo'luvchisi 2
12 ning bo'luvchisi 3
12 ning bo'luvchisi 4
12 ning bo'luvchisi 6
14 ning bo'luvchisi 2
14 ning bo'luvchisi 7
15 ning bo'luvchisi 3
15 ning bo'luvchisi 5
16 ning bo'luvchisi 2
16 ning bo'luvchisi 4
16 ning bo'luvchisi 8
18 ning bo'luvchisi 2
18 ning bo'luvchisi 3
18 ning bo'luvchisi 6
18 ning bo'luvchisi 9
Shartli ifoda for siklidagi shartli ifoda bool tipidagi qiymat qaytaradigan har qanday ifoda bo`lishi mumkin. Quyidagi dasturda shartli ifoda sifatida done o`zgaruvchisi ishlatilmoqda:
using System;
class forDemo
{
public static void Main()
{
int i, j;
bool done = false;
for (i = 0, j = 100; !done; i++, j—)
{
if (i * i >= j) done = true;
Console.WriteLine("i, j : " + i + " " + j);
}
Console.ReadKey();
}
}
Natija:
i, j : 0 100
i, j : 1 99
i, j : 2 98
i, j : 3 97
i, j : 4 96
i, j : 5 95
i, j : 6 94
i, j : 7 93
i, j : 8 92
i, j : 9 91
i, j : 10 90
Bu misolda done o`zgaruvchisi true qiymatga ega bo`lgandan keyin sikl ishini tugatadi. Agar i ning qiymati kvadrati j qiymatidan katta yoki teng bo`lsa, siklning ichida done o`zgaruvchiga true qiymat o`zlashtiriladi.
Tanasiz sikl
C# da for sikli tanasiz yani unga bog`liq instruksiyalarsiz ham bo`lishi mumkin. Ba`zan bunday sikllar juda qo`l keladi. Quyidagi misolda 1 dan 5 gacha sonlarning yig`indisini hisoblash uchun tanasiz sikldan foydalangan:
using System;
class Empty3
{
public static void Main()
{
int i;
int sum = 0;
// 1 dan 5 gacha sonlarni qo`shish
for (i = 1; i <= 5; sum += i++) ;
Console.WriteLine("Yig'indi: " + sum);
Console.ReadKey();
}
}
Natija:
Yigindi: 15
For siklidagi boshqaruvchi o`zgaruvchini e`lon qilish Agar siklni boshqaruvchi o`zgaruvchi faqat shu sikl uchun kerak bo`lsa va sikl tanasidan tashqarida ishlatilmasa, u holda boshqaruvchi o`zgaruvchini quyidagicha e`lon qilinadi. Quyidagi misol 1 dan 5 gacha sonlarning ham yig`indisini ham faktorialni hisoblaydi:
using System;
class ForVar
{
public static void Main()
{
int sum = 0;
int fact = 1;
// 1 dan 5 gacha sonlarning ham yig`indisini ham faktorialni hisoblaymiz
for (int i = 1; i <= 5; i++)
{
sum += i; // i faqat sikl tanasida aniqlangan
fact *= i;
}
// bu erda i o`zgaruvchi noma`lum
Console.WriteLine("yig'indi: " + sum);
Console.WriteLine("faktorial: " + fact);
Console.ReadKey();
}
}
Quyida dasturning joylashtirilgan qismidan chiqish uchun goto operatoridan foydalanishning foydali misollaridan biri keltirilgan.
using System;
class Use_goto
{
static void Main()
{
int i = 0, j = 0, k = 0;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
for (k = 0; k < 10; k++)
{
Console.WriteLine("i, j, k: " + i + " " + j + " " + k);
if (k == 3) goto stop;
}
}
}
stop:
Console.WriteLine("To'xtatish! i, j, k: " + i + ", " + j + " " + k);
}
}
Dastur natijasi.
i, j, k: 0 0 0
i, j, k: 0 0 1
i, j, k: 0 0 2
i, j, k: 0 0 3
To’xtatish! i, j, k: 0, 0 3
Topshiriq:
Masala:
Do'stlaringiz bilan baham: |