Biz s++ o'rganishni boshladik.
Tags: cpp, beginners, security, programming
Published: 2022-12-22 22:00:54

## 1-dars
Biz bugun dasturlashni boshlang'ich kursini boshladik.
Bu dasturlashda siz har xil kodlar bilan ishlashni va tog'ri yozishni organasiz.
Bu dastur judaham qiziq .
Bugun 1-darsda biz 

```cpp
#include <iostream>

int main() {
  std::cout << "Hello World!\n";
}
```
mana shunday kodlar yozib ularni ekranga qanday tog'ri chiqarishni o'rgandik.Bularni har birini o'zini manolari va bajaradigan ishi mavjud.
Masalan `#include <>`bu kodning bajaradigan ishi kutubhonani chaqirishdur yani `<iostream>`mana shu 
2ta uch burchakning ichidagi narsa bu `kutubhona`.
Endi savol tug'ulishi mumkun kutubhonani chaqirish nimaga kerak degan savol kutubhona bizga shu dasturlashda ishlatadigan kodlarimiz tog'ri ishlashi uchun kerak bundan tashqari hat xil kodlar mavjud biz hozir 1- darsda shu kutubhona haqida va uni tagidagi kodlar haqida gaplashamiz.
SHu kutubhona pastida turgan kodlarga kelsak `int main(){}`mana shu birgalikda tarjima qilinganda asosiy funksa deyiladi yani biz yozadigan kodlarimiz shu funksani ichida bo'lishi shart bo'lmasam ekranga chiqarganimizda hatolik ko'rsatadi va undan keyin pastda turgan `std::sout << "";` manashu Asosiy buyruq deyiladi yani tepada ko'zda tutgan kutubhonamizni ichidagi asosiy buyruqni bildiradi. Va bu ekranga chiqarish buyrug'i deyiladi.
1-darsdagi ohirgi chuntradigan narsam bu `\n` yani yangi qator ochish vazifasi bu 2 hil korinishda bo'ladi 2-usuli `<< endl;` mana shu ham yangi qator ochish uchun ishlatiladi bu ikkalasini vazifasi bir xil.


## 2-dars

Biz bugun darsda o'zgaruvchilar haqida otdik.

       

```cpp

      data tip nom = qiymat;

---------------o'zgaruvchini turlari------------
 int=> integer ya'ni faqat butun son saqlash; 4byte 
 string=> faqat tekstlani saqlash uchun; 4bayt  
 char=> faqat bitta belgi saqlash uchun;1bayt 
 float=> faqat kasr son saqlash  uchun;4bayt       
```
Shunday o'zgaruvchilar haqida o'rgandik.
Bular har bitasi o'zgaruvchi hisoblanadi bundan tashqari ham ancha o'garuvchilar bor ekan bugun biz faqat shularni o'tdik va har bitasi o'zi nima nima vazifani bajaradi va kampyuter hotrasidan qanday joy oladi shu haqda gaplashamiz.
Birinchi bo'lib `int`yani `integer` so'zini qisqartmasi bo'ladi bu o'zgaruvchi faqat o'z ichiga butun sonlarni sig'dira oladi masalan `2,22,34,86,352 ......` farqi yo'q qanday son bo'lishidan qatiy nazar butun son bo'lsa bo'ldi faqat butun son va bu o'zgaruvchi kampyuter hotrasidan o'ziga ` 4bayt ` ajratadi.
Endi 2- o'garuvchi haqida `string`degan o'zgaruvchi haqida gaplashadigan bo'sak bu o'zgaruvchi o'z ichiga faqat tekstlarni sig'dira oladi misol tariqasida 

```cpp
cout << "Hello world";

```
mana shunday yoki bundan boshqacha kataroq tekstlarniham sig'dira oladi va bu ham kampyuter hotrasidan  `4bayt` o'zi uchun ajratadi.

## 
 3-o'zgaruvchi haqida.
`char`nomli o'zgaruvchimiz haqida gaplashsak.
Bu o'zgaruvchi o'z ichiga faqat belgi sig'dira oladi holos faqat 1 donagina misol keltiraman`a,` `B` `#` `5` `@` `?` `,`hokazo nima bolishidan qatiy nazar faqat 1ta bo'di bu o'garuvchi kampyuter hotrasidan faqatgina  `1bayt` o'zi uchun ajratadi holos.

## 4-o'zgaruvchimiz 
`float `degan o'zgaruvchi.Bu o'zgaruvchi o'z ichiga faqat kasir sonlarni saqlay oladi masalan `2.24, 10.392`albatta bu misol tariqasida edi va shunga o'xshash kasr sonlarni ham o'z ichiga oladi bu o'zgaruvchizi egzagiham mavjud `float` o'zi uncha katta bo'lmagan kasr sonlarni saqlaydi agar biz kiritmohchi bolgan kasr son katta bolsachi unda uni qaysi o'zgaruvchiga saqlash kerak degan savollar bo'lishi mumkin bu o'zgaruvchini egzagi `double`bu ham o'zgaruvchi va bu o'zgaruvci o'z ichiga `float`sig'dira olmaydigan darajada katta bo'gan kasr sonlarni o'z ichiga oladi 
ummuman olganda ikkalasini ham bajaradigan ishi 1ta kasr son saqlash va bu o'zgaruvchilar o'zi uchun kampyuter hotrasidan 4baytni oladi.

```cpp
#include <iostream>
using namespace std;

int main (){

int son;
cout << "sonni kiriting:";
cin >> son;
cout << "siz kiritgan son:" << son;

  return 0;
  }
```
Bu o'garuvchilar shu tarzda ishlatiladi 1-navbatta u o'garuvchini elon qilib va unga nom beriladi va `cin >>`buyrug'i orqali o'qiladi.Biz bu o'zgaruvchilarga bu joyda faqatgina nom berdik holos bu o'zgaruvchini ichidagi soni biz `RUN` tugmasini bosib ekranga chiqarganimizda soni kiritamiz va biz ishlagan va biz kutgan biz hohlagan narsani chiqarishi kerak boladi .

yana bir narsani chuntirib ketay agar ilg'agan bo'sangiz bu funksalarni ichida yangi qo'shilagnlari ham mavjud ularni ham chuntirib ketsam `using namespace std;` bu narsani pragramistlar o'ylab topgan o'zlari uchun bu narsani vazifasi biz  har safar kod yozganimizda `std::`mana shu narsani yozmaslik uchungina ishlatiladi biz bu narsani yozib qoyganimizdan keyin  `std::` ni yozmasak ham bo'ladi agar biz shu `using namespace std;`ni yozmasak hama ko'dlarni `std::`bilan yozishimizga tog'ri keladi va bu judaham hyin tasavur qiling judda katta bo'gan kodlarni yozmoqchisiz va bu narsalarni har bir qatorga yozish odamni charchatvoradi ushan uchun pragramistlar shu ko'dni o'ylab topib ishga tushurushgan. Va yana bir narsani chuntirishim kerak `return 0;` bu `main`ni tugashi yani `funksya`ni tigashini bildiradi 
biz bu ko'dan keyin narsa yosak noto'ri narsani ishlagan bo'lamiz ushan uchun ko'dlarni `main`va`return 0;`ni ikkalasini orasiga yozishimiz zarur ana shunda biz ishlagan narsalar to'g'ri bo'ladi.

## 4-dars
`setprecision() fixed 
setw() va setfill()
bool haqida bugun gaplashamiz.`
  
`setprecision() fixed` ozi nima bu ikkalasi biz ishlagan matematik masalani yoki boshqa narsani bizga 2ta aniqlikda ekramga chiqarish uchun kerak boladi .Bazida shunday masalalar uchraydiki ularni shrtida shunday yozilgan boladi bita o'zgaruvchi elon qilib unga uni sin qilib  bitta son o'qing va uni ekranga 2ta aniqlikda chiqaring degan va boshqacha masalalar ham uchrab turadi ana shunda biz shu kodni kiritganimizda bizga biz kiritgan missolni 2ta aniqlikda ekranga chop etib beradi. Bu koddan foydalanishimiz uchun biz boshqa kutubhona yani `#include <iomanip>`kutubhonasini chaqirib qo'yishimiz kerak.

Keyingisi `setw() va setfill()` bular ni vazifasi matematik masalalar ishlaganimzda juda kerak bo'ladi buni kodni vazifaasi biz yozgan misolni oldidagi bo'sh joylarni 0 yoki boshqa sonlar bilan to'ldiriladi buni vazifasi shunchaki bo'sh qolgan  kataklarni to;dirish shu kodni  qanday ishlatishni hozir o'zim ishlagan masaladan namuna ko'rsataman 

```cpp


#include <iostream> 
using namespace std;
int main  (){

int oy, kun;
  cin >> oy >> kun;

  cout  << "Birthday is " << setw(2) << setfill('0') << oy << '-' ;
  cout  << setw(2) << setfill('0') <<  kun<<'.';
```
Bu joyda `oj.ilmhub.com `saytidagi masalalardan birini ishlaganman bu masalani nomi tug'ulgan kun masalasi 
bu joyda man hichqanaqa son kiritmaganman 
shunchaki 1ta o'zgaruvchi elon qilib unga nom berganman va uni sin qilib o'qiganman va `RUN`tugmasini bosib ekranga chiqarganman va 2ta luboy sonni kiritganman va ekranda man kiritgan 2 ta ketmaket kiritganman va ularni oldini 0 bilan to'ldirib bergan.Buni vazifasi shu bo'kataklarni to'dirish.
Keyingisi `bool`haqida `bool`o'zi nima bool o'z ichiga faqat `true` yoki `false` yani to'g'ri va noto'g'ri degan narsani kiritadi holos dasturlashda boshqacha usulda keladi `1` to'g'ri degani dasturlashda `0`esa noto'g'ri degani bo'lib keladi.Buni vazifasi o'zi nima biz har doim matematik masala ishlaganimiszda va uni to'g'ri yoki noto'g'riligini bilishimizda uni katta hissasi tegib qolishi mumkun agar unda foydalangan bolsangiz albata manfati bo'ladi biz misol  ishlab uni erkranga chiqarganimizda to'g'ri bo'sa 1ni noto'g'ri bo'lsa 0sonini ekranga chiqarib beradi va biz shundan hulosa qilamizki biz ishlagan misollarimiz tog'rimi yoki noto'g'rimi shundan bilsak bo'ladi.
yana man ishlagan masaladan misol tariqasida ko'rsataman

```cpp
 #include <iostream>
#include <iomanip>
  int main(){
   bool A = true ;
  cout << (10 > 5);
  
  return 0;
}
```
 
mana shunday yoki boshqacha misollar uchun ham bo'ladi faqat misol ishlashdan oldin `bool`elon qilishimiz kerak.

## 5-dars
BU darsda biz `round`nomli ko'd haqida o'tamiz .
`round`bu ko'dni vazifasi biz kasr sonlar bilan ishlagan matematik masalalarda as qotadi biz ishlagan misollarni ayrimlarida kasr sonlarni kiritib butlaberishimiz kerak bo'ladi shunda biz shu ko'ddan foydalansak bizga biz kiritgan kasr sonni butlab yahlitlab beradi misol uchun

```cpp


int main22(){
 float a;
  cin >> a;

  cout << round(a) ;
 // cout << round()bu  kasr sonlarni yahlitlash;


  return 0;
}
```
manashu misoldan ko'rishimiz mumkun .Bu misolda man bitta o'zgaruvchi elon qilganman va uni cin>> qilib o'qiganman 
va uni round orqali ekranga chiqarib 1ta 4.5 degan kasr son kiritganman va round manga bu kasr sonni yahlitlab 5 sonini ekranga chiqarib bergan.Ha yana 1ta narsa qopketmasin round faqat luboy bitta kasr sonilani yarimidan kota bo'gan kasrlani tepaga yahlitlidi yarimidan pastlani esa pastga yahlitlab beradi misol uchun `4.5 ni 5 qiliberadi` `4.4 dan boshlanadi pastga qarab bulani 4 qilib yahlitlab beradi`

## 
6-dars
Biz bugungi darsda aperato'rlar haqida gaaplashdik
biz o'rgangan aperato'rlar `-,+,*,/,%;`mana shular aperatorlar deb ataladi.
bular huddi matematika fanida qanday ishlatilsa dasturlashda ham shunday ishlatiladi faqat ayrimlarini ko'rinishi boshqacha halos.
 `+`dan keyin turgan `*`manabu belgi ko'paytrish belgisi bo'ladi.
shu belgidan keyin turgan 2ta `/`va `%` manashu belgilar vazifasi bir hil faqat 1tasi soni songa bo'lib asosiy butun qismini oladi 
narigisi foizli bo'lish deb ataladi u esa soni songa bo'lib asosiy qismini olmasdan qoldiq qismini chiqarib beradi.

```cpp


int main1() {
  int N;
  cin >> N ;

  cout << " Sun Mon Tue Wed Thu Fri Sat" << endl;
  cout << setw(3) << N;
  N = N % 31 + 1;
  cout << setw(4) << N;
  N = N % 31 + 1;
  cout << setw(4) << N;
  N = N % 31 + 1;
  cout << setw(4) << N;
  N = N % 31 + 1;
  cout << setw(4) << N;
  N = N % 31 + 1;
  cout << setw(4) << N;
  N = N % 31 + 1;
  cout << setw(4) << N;
  N = N % 31 + 1;
  

 

  return 0;
}
```
bu esa masalalarda hafta kunlari degan masala va bunda ko'rsela bo'ladi foizli bo'lishdan foydalanganman.

```cpp
#include <iostream>
#include <iomanip>
using namespace std;

int main (){

  int son;
  cin >> son;

 cout << son/ 100;

  return  0;
}
```
mana bu masalada esa oddiy bo'lishdan foydalanganman.Qolgani esa huddi matematikada qanday ishlasa bundaham shunday ishlaydi.



  

#### 
9-dars
Biz bugungi darsda `compound assignment operator`lar haqida o'tdik.
Biz bu darsda qanday qilib o'gartiruvchini ichidagi qiymatini pastroqda o'zgartirishni o'rgandik yani biz biror bir masala ishladik va u masalada 1ta o'zgaruvchi elon qildik va unga nom va qiymat berdik va o'sha qiymatni pastroqda o'zgartirdik shuni o'rgandik va yana matematik masalalarni qanday qilib qisqartirib yozishni organdik.1
Masalan 

```cpp
int main2() {

  int a = 10;
  string ism = "abdulaziz";

  cout << a << endl;
  cout << ism << endl;

  a = 20;
  ism = "kimsan";
  cout << a << endl;
  cout << ism;

  return 0;
}
```
 mana bu yerda biz boya tepada aytganimdek 1ta masala ishladik va masalani boshida 2ta o'zgaruvchi elon qildik va unga nom va qiymat berdik. Va keyingi qatorda uni ekranga chiqarish buyrug'idan foydalanib uni ekranga chiqardik va ekranda `10 
                                            Abdulaziz` shu narsa chiqdi va biz bu 2ta o'zgaruvchini  pastroqda 

```cpp
  a = 20;
  ism = "kimsan";
  cout << a << endl;
  cout << ism;

  return 0;
}
```
mana shunday qilib ichidagi qiymatini o'zgartirdik va biz ekranga chiqarganimzda `10`

            `Abdulaziz`
               `20`
            `kimsan`
degan javobni ekranga chiqarib beradi.Va qanday qilib matematik misollarni qisqartirib yozishniham o'rgandik 
masalan

```cpp

#include <iostream>
#include <cmath>
using namespace std;

int main (){

int a = 5;
int b = 6;

  b = b + a ; // b +=a;
  a = a + 10;// a +=10;

  b*=3;// b = b * 3;
  a/=b;// a = a / b;

  cout << b ;
  
  return 0;
}
```
mana shunday qilib qisqartirib onsonroq qilib yozishni o'rgandik.




@dawroun