Alisher navoiy nomidagi samarqand davlat universiteti mexanika-matematika fakulteti


IDENTIFIER,                // identifikator


Download 1.68 Mb.
Pdf ko'rish
bet3/3
Sana30.11.2020
Hajmi1.68 Mb.
#156543
1   2   3
Bog'liq
c tili kompilyatorlari va ularning xususiyatlari


 

        IDENTIFIER,                // identifikator 

 

        OPERATOR,                  // operator 

 

        NUMLITERAL,                // sonli literal 

 

        STRINGLITERAL,             // matnli literal 

 

        WHITESPACE,               // bo’sh joylar 

 

        NEWLINE,                  // yangi qator 

 

        EOP                       // dastur oxirini belgilash uchun 

 

    } 

 

    public string Text;     // bo'lak matni 

 

    public TokenType Type;  // bo'lak turi 

 

    public int TextPos;     // bo'lakni dastur matnidagi pozisiyasi 

 

    public Token() 

    { 

 

        this.Text = ""; 

 

        this.TextPos = 0; 

 

        this.Type = TokenType.UNKNOWN ; 

 

    } 

 



 

public class Lexer 



 

    // konstantalar 

 

    const char CHAR_NULL = '\0'; 

 

    // o'zgaruvchilar 

 

    string text; 

 

    int position; 

 

    // konstruktor 

 

    public Lexer() 

    { 

 

        this.position= 0; 

 

        this.text= ""; 

 

    } 

 

    // konstruktor 

 

    public Lexer(string text) 

    { 

 

        this.text= text; 

 

        this.position= 0; 

 

    } 

 

    // dastur matnini berish/olish 

 

    public string Text 

    { 

 

        get { return this.text;  } 

 

        set { this.text = value; } 

 

    } 

 



Lexer klassiga kiruvchi matnni belgilab o’qishga yordam beruvchi 

funksiyalarni qo’shamiz: 

// jarayondagi joriy pozisiya 

 

public int Position 



 

    get { return this.position; } 

 



 

// joriy belgini aniqlash 

 

public char CurrentChar() 



 

    if (position < text.Length) 

 

        return Convert.ToChar (text.Substring(position, 1)); 

 

    else 

 

        return CHAR_NULL ; 

 



 

// joriy belgidan keyingi belgini aniqlash 

 

public char NextChar() 



 

    if (position 1 < text.Length) 

 

        return Convert.ToChar(text.Substring(position 1, 1)); 

 

    else 

 

        return CHAR_NULL; 

 



 

// joriy belgidan oldingi belgini aniqlash 

 

public char PrevChar() 



 

    if (position - 1 >= 0) 

 

        return Convert.ToChar(text.Substring(position - 1, 1)); 

 

1.3 CodeBlocks kompilyator imkonyatlari. 

 

 



Bugun  biz  sizlarga  dasturlash  tillaridan  biri  c++  ni  boshlaganlar  uchun  qisqacha 

malumot  bermoqchimiz.  Siz  dasturlashni  urgana  boshladingizmi  uni  matematika 



fanini  bilmasdan  turib  yaxshi  o'rgana  olmaysiz.  Mani  fikrimcha  xamma  xam 

boshida  matematik  misol  yechishdan  boshlasa  kerak.  Xamma  narsa  xam  oddiy 

narsalardan boshlanadi: 

 

#include  



using namespace std; 

int main () 



cout<<"KI.UZ saytiga xush kelibsiz"; 

return 0; 

 

 



Bu dastur konsol oynasida "KI.UZ saytiga xush kelibsiz" degan yozuvni chiqaradi. 

Endi ishlatilgan so'zlarga izoh bersak. include - kutubxonaga murojatni bildiradi 

iostream - kiritish va chiqarish funksiyalarini uzida jamlagan kutubxona using 

namespace std - ismlar fazosi standart nomlaridan foydalanishni anglatadi. int main 

- funksiyamizni tanasini bildiradi { } funskiyamiz bishlanishi va tugallanishini 

bildiradi cout - ekranga yozuv chiqarishni taminlaydi Sizga maslaxatim siz endi 

boshlayotgan bulsangiz xamda misol yechishni urnagayotgan bulsangiz dev c++ 

dasturidan foydalaning. chunki unda misol yechish uchun imkoniyatlar yetarli 

xamda boshlang'ichlar uchun kifoya qiladi. Eng asosiysi bepul tarqatiladi yani 

litsenziya shart emas. 



 

 

 

 

 

2.1 C++ Builder 6 dasturlar tuzish. 

Masala:  Tengtomoni  uchburchakning  elementlari  quyidagi  tartibda  nomerlangan. 

1-tomoni  a,  2-ichki  chizilgan  aylananing  radiusi 

𝑅

1

=a*



√3/6,  3-tashqi  chizilgan 

aylananing  radiusi 

𝑅

2

=2*



𝑅

1

,  4-yuzasi  S=



𝑎

2

√3/4.  Shu  elementlardan  bittasi 



berilganda qolganlarini topuvchi programma tuzilsin. 

 Ushbu oynaga biz misolni yechish uchun 2 button ,1 ta edit ,1 ta stringrid1,1 ta 

label 1 ta Memo1 ni  olamiz va uni oynaga quydagicha joylashtiramiz  

 

  



 

#include  

#include  

#include  

#pragma hdrstop 

#include "Unit1.h" 

#pragma package(smart_init) 

#pragma resource "*.dfm" 

TUmirzoqovAbror *UmirzoqovAbror; 

__fastcall TUmirzoqovAbror::TUmirzoqovAbror(TComponent* 

Owner) 

        : TForm(Owner) 





void __fastcall TUmirzoqovAbror::Button1Click(TObject *Sender) 



float a,r,R,s; 

if (RadioButton1->Checked ==true) 

{a=StrToFloat(Edit1->Text ); 

r=a*sqrt(3)/6; 

R=2*r; 

s=a*a*sqrt(3)/4; 

Memo1->Lines->Add("r="+FloatToStr(r)); 

Memo1->Lines->Add("R="+FloatToStr(R)); 

Memo1->Lines->Add("s="+FloatToStr(s)); 



if (RadioButton2->Checked ==true) 

{r=StrToFloat(Edit1->Text ); 

a=r*6/sqrt(3); 

R=2*r; 

s=a*a*sqrt(3)/4; 

Memo1->Lines->Add("a="+FloatToStr(a)); 

Memo1->Lines->Add("R="+FloatToStr(R)); 

Memo1->Lines->Add("s="+FloatToStr(s)); 



if (RadioButton3->Checked ==true) 

{R=StrToFloat(Edit1->Text ); 

r=R/2; 

a=r*6/sqrt(3); 

s=a*a*sqrt(3)/4; 

Memo1->Lines->Add("a="+FloatToStr(a)); 

Memo1->Lines->Add("r="+FloatToStr(r)); 

Memo1->Lines->Add("s="+FloatToStr(s)); 



if (RadioButton4->Checked ==true) 

{s=StrToFloat(Edit1->Text ); 

a=sqrt(4*s/sqrt(3)) ; 

r=a*sqrt(3)/6; 

R=2*r; 

Memo1->Lines->Add("a="+FloatToStr(a)); 

Memo1->Lines->Add("r="+FloatToStr(r)); 

Memo1->Lines->Add("R="+FloatToStr(R)); 



}  

Natija oynasi 

 

 

Masala:  parallipedning  uchta  tomoni  berilgan  parallipedning  yuzasi  va  tola  sirtini 



aniqlang  

V=a*b*c;  S=2*(a*b+b*c+a*c) 

Ushbu masalani yechish uchun 5 ta edit 5 ta label va 1 ta button olinadi. 

 

Dasturning kod oynasi quydagicha b 



 

void __fastcall TForm1::Button1Click(TObject *Sender) 

{int a,b,c,s,v; 

    a=StrToInt(Edit1->Text); 

b=StrToInt(Edit2->Text); 

c=StrToInt(Edit3->Text); 



s=2*(a*b+b*c+a*c); 

v=a*b*c; 

Edit4 ->Text =  IntToStr(s); 

Edit5 ->Text =  IntToStr(v); 

Natija oynasi quydagicha korinishda bo’ladi 

 

 



2.2  CodeBlocks kompilyator dasturlar tuzish. 

 

 



#include  

using namespace std; 

int main() 



    int a[1000],b[1000]; 

    int n,l,mx=0; 

    cin>>n>>l; 

    for (int i=0; i

        cin>>a[i]; 

    for (int i=0; i

    { 

        mx+=a[i]; 

        b[i]=a[i]; 

    } 

    for (int i=0; i

    { 

        int s=0; 

        for (int j=i; j

        { 

            s+=a[j];        } 

        if(mx

        {            mx=s; int k=0; 

            for (int j=i; j

            {                b[k]=a[j];                k++;            }        }    } 

    for (int i=0; i

        cout<

    return 0; 

 

 

#include  

using namespace std; 

int main() 

{ int a=5,b=5,c=8,d=5; 

if ((a==b)&&(b==c)) cout<<"4"; 

if ((a==b)&&(b==d)) cout<<"3"; 

if ((c==b)&&(b==c)) cout<<"1"; 

if ((a==c)&&(d==c)) cout<<"2"; 

    return 0;} 

0

 

 

 

 

 



Download 1.68 Mb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling