Дата регистрации 28 Февраль 2024
15 Продаж 
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                            ![x1 = x2;
  y1 = y2;
 };
 // katakcha bo'sh joyi saqlab qolinadi
 ex = x1;
 ey = y1;
}
void __fastcall TForm1::ShowPole()
{
 int x,y; // katakcha yuqorida chapda burchakda
 for (int i = 0; i < 4; i++)
  for (int j = 0; j < 4; j++)
  {
   x = j * HC;
   y = i * WC;
   if (pole[i][j] != 16 ) {
    Canvas->Brush->Color = clBtnFace;
    Canvas->Rectangle(x,y, x+WC-1, y+HC-1);
    Canvas->TextOutA(x+15,y+10, IntToStr(pole[i][j]));
   }
   else {
    Canvas->Brush->Color = clBtnHighlight;
    Canvas->Rectangle(x,y, x+WC-1, y+HC-1);
   }
  }
}
bool Finish(); // to'g'ri tekshirilgan katakcha o'lchami
41](https://docx.uz/documents/9ce2efde-2198-4ca6-a705-b966f7f332d4/page_41.png?v=3) 
                                                                             
                                                                             
                                                                             
                                                                            ![II. Nazariy qisim
C++ algoritmik tilining alifbosi quyidagilardan iborat :
 katta va kichik lotin harflari; 
 0 dan 9 gacha raqamlari; 
 maxsus belgilar (+,-,*,/,=,>,<,{,},[,],’)  ni o’z ichiga oladi. 
C++ tilida  so’z  deb bir nechta belgilar ketma – ketligi tushuniladi. Xizmatchi so’z
deb C++ tilidagi standart nom tushuniladi. Bu nom maxsus ma’noni anglatadi va uni
ma’lumotlarga berib bo’lmaydi. Masalan:  int, float, for, while  va hokazo.
C++   tilida   ma’lumotlarning   elementlari   bo’lib   o’zgaruvchilar,   o’zgarmaslar,   izohlar
xizmat qiladi.
O’zgaruvchi   - x otiraning nomlangan qismi bolib, o’zida ma’lum bir toifadagi
qiymatlarni   saqlaydi.   O’zgaruvchining   nomi   va   qiymati   bo’ladi.   O’zgaruvchining
nomi   orqali   qiymat   saqlanayotgan   xotira   qismiga   murojaat   qilinadi.   Dastur   ishlashi
jarayonida   o’zgaruvchining   qiymatini   o’zgartirish   mumkin.   Har   qanday
o’zgaruvchini ishlatishdan oldin, uni e’lon qilish lozim. 
Quyida   butun   sonlardan   foydalanish   uchun   b,   haqiqiy   sonlardan   foydalanish
uchun h o’zgaruvchisi e’lon qilingan:
int b;
float h; 
O’zgarmaslar   ( const )   hisoblash   jarayonida   qiymatini   o’zgartirmaydigan
kattaliklarga aytiladi.  float const  pi =  3.14;
Izohlar - dasturning ma’lum qismini tavsiflash uchun ishlatiladi va bu qatorda
hech qanday amal bajarilmaydi, ya’ni dasturning biror qismini yaxshiroq tushuntirish
uchun xizmat qiladi. Izoh "/*" va "*/" simvollari orasida beriladi. 
/* Bu yerga izoh yoziladi. */
Bundan tashqari bir satrli izohlardan ham foydalanish mumkin. Buning uchun
izoh boshiga "//" belgisi qo’yiladi. 
4](https://docx.uz/documents/9ce2efde-2198-4ca6-a705-b966f7f332d4/page_4.png?v=3) 
                                                                             
                                                                             
                                                                            ![// katakchani chertish
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton 
Button,
  TShiftState Shift, int X, int Y)
{
 int cx,cy; // katakcha joyi
 cx = X / WC;
 cy = Y / HC;
 // bo'sh katakchalarni tanlab yonidagiga yuborish
 if ( ( abs(cx - ex) == 1 && cy-ey == 0 ) ||
   ( abs(cy - ey) == 1 && cx-ex == 0 ) )
 {
  // fishkani yuborish (cx,cy) в (ex,ey)
  pole[ey][ex] = pole[cy][cx];
  pole[cy][cx] = 16;
  ex = cx;
  ey = cy;
  ShowPole();
  if ( Finish () )
  {
   ShowPole();
   int r = MessageDlg ("urunmoq yana bir bor?",
        mtInformation, TMsgDlgButtons() << mbYes << mbNo, 0);
   if ( r == mrNo )
    Form1->Close(); // programma ishini tugatish
   else
   {
42](https://docx.uz/documents/9ce2efde-2198-4ca6-a705-b966f7f332d4/page_42.png?v=3) 
                                                                             
                                                                             
                                                                             
                                                                            ![Operator -   t ilning   yakunlangan   jumlasi   hisoblanadi   va   ma’lumolar   taxlilining
tugallangan   bosqichini   ifodalaydi.   Operatorlar   nuqtali   vergul   “;”   bilan   ajratiladi.
Ya’ni   “;”   operatorning   tugallanganligini   bildiradi.   C++   da   operatorlar   progammada
keltirilgan ketma - ketlikda bajariladi. 
Identifikator   - dasturchi   tomonidan   dastur   elementlari   (funksiya,
o’zgaruvchilar, o’zgarmaslar …) uchun ixtiyoriy tanlangan nom.
Identifikator tanlaganda quyidagilarga ahamiyat berish kerak:
 Identifikator lotin harflaridan boshlanishi shart; 
 Ikkinchi simvoldan boshlab raqamlardan foydalanish mumkin; 
 C++ da katta kichik harflar farq qiladi. Ya’ni quyidagilarning har biri alohida
identifikator hisoblanadi: KATTA, katta, KaTTa, kAttA, Katta, KattA, ... 
 Probel   C++   da   so’zlarni   ajratish   uchun   ishlatiladi.   Shuning   uchun
identifikatorda probeldan foydalanib bo’lmaydi; 
 Xizmatchi   ( int,   float,   for,   while   kabi)   so’zlardan   identifikator   sifatida
foydalanib bo’lmaydi; 
 
Dasturning tuzilishi
C++   da   dastur   funksiya   yoki   funksiyalardan   tashkil   topadi.   Agar   dastur   bir
nechta funksiyadan iborat bo’lsa, bir funksiyaning nomi   main   bo’lishi shart. Dastur
aynan main funksiyasining birinchi operatoridan boshlab bajariladi.
Funksiyaning aniqlashishi quyidagicha bo’ladi:
qaytariluvchi_qiymat_toifasi   funksiya_nomi  (  [parametrlar]  ) 
{
 funksiya tanasini tashkil qiluvchi operatorlar 
}
Qoida   bo’yicha   funksiya   qandaydir   bir   qiymatni   hisoblash   uchun   ishlatiladi.
Shuning uchun funksiya nomi oldidan, funksiya qaytaradigan qiymat toifasi yoziladi.
Agar   funksiya   hech   qanday   qiymat   qaytarmaydigan   bo’lsa,   void   toifasi   yoziladi.
5](https://docx.uz/documents/9ce2efde-2198-4ca6-a705-b966f7f332d4/page_5.png?v=3) 
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                            ![NewGame();
    ShowPole();
   }
  }
 }
}
/* tozalangan katakcha surati tekshiriladi */
bool Finish()
{
 bool result;
 int row, col;
 int k = 1;
 result = true; // tozalangan joyga fishka o'tkaziladi
 for (row = 0; row < 4; row++)
 {
  for (col = 0; col < 4; col++)
   if ( pole[row][col] == k )
    k++;
   else {
    result = false;
    break;
   }
  if ( ! result ) break;
 }
  return (result);
};
// Paintdan taxrirlash uchun o'tkaziladi
43](https://docx.uz/documents/9ce2efde-2198-4ca6-a705-b966f7f332d4/page_43.png?v=3) 
                                                                             
                                                                             
                                                                             
                                                                            ![funt = StrToFloat(Edit1->Text);
 kg = funt * 0.4995;
 Label2->Caption = FloatToStrF(funt,ffGeneral,5,2) +
      " Funt. - bu- " +
      FloatToStrF(kg,ffGeneral,5,2) + " kilogram";
} 
2-Dastur kodi:
/*
 O'yin "15"
*/
#include <vcl.h>
#pragma hdrstop
#include "g15frm.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
#include "math.hpp" // Kirish joyi tasodifiy
// Katakchalar O'lchami 48х48
#define WC 48
#define HC 48
byte pole[4][4]; // O'yin maydoni
38](https://docx.uz/documents/9ce2efde-2198-4ca6-a705-b966f7f332d4/page_38.png?v=3) 
                                                                             
                                                                            ![// Aralashgan fishka
void __fastcall TForm1::Mixer()
{
 int x1,y1; // bo'sh katakcha
 int x2,y2; // bo'shini bunga o'tkazmoq
 int d;  // bo'sh joyga berilgan yo'llanma
 Randomize();
 x1 = 3; y1 = 3; // см. yozilgan massiv stp
 for ( int i = 0; i < 150; i++) // кол-во yangilanmoq
 {
  do {
   x2 = x1;
   y2 = y1;
   /* bo'sh joy o'rniga fishkani o'tkazmoq */
   d = RandomRange(1,5);
   switch ( d ) {
    case 1: x2--; break;
    case 2: x2++; break;
    case 3: y2--; break;
    case 4: y2++; break;
   }
  } while ((x2 < 0) || (x2 >= 4) || (y2 < 0) || (y2 >= 4));
  /* katakcha bo'sh joy o'rniga o'tkaziladi va
     fishka bilan joy almashadi */
  pole[y1][x1] = pole[y2][x2];
  pole[y2][x2] = 16;
40](https://docx.uz/documents/9ce2efde-2198-4ca6-a705-b966f7f332d4/page_40.png?v=3) 
                                                                             
                                                                            ![byte ex,ey;  // Yurish uchun bo'sh joy
__fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner)
{
 Form1->Font->Size = 12;
}
// programma ishining boshlanishi
void __fastcall TForm1::FormShow(TObject *Sender)
{
 NewGame();
}
// Yangi o'yin
void __fastcall TForm1::NewGame()
{
 // shakl o'lchamini o'rnatish
 ClientWidth = WC * 4;
 ClientHeight = HC * 4;
 // Asosiy qilib berilgan (to'g'ri) tanlangan Fishka
 int k = 1;
 for (int i = 0; i < 4; i++)
  for (int j = 0; j < 4; j++)
   pole[i][j] = k++;
 Mixer();  // Aralashgan fishka
 ShowPole(); // O'yin shakli namunasi
}
39](https://docx.uz/documents/9ce2efde-2198-4ca6-a705-b966f7f332d4/page_39.png?v=3) 
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                    C++ algoritmik tilining asosiy tushunchalari