Alisher navoiy nomidagi samarqand davlat universiteti mexanika-matematika fakulteti
IDENTIFIER, // identifikator
Download 1.68 Mb. Pdf ko'rish
|
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:
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
√3/6, 3-tashqi chizilgan aylananing radiusi 𝑅 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: |
ma'muriyatiga murojaat qiling