Tizimli dasturiy ta’minot
A: float; Masalaning chekli avtomati loyihasi(diagrammaviy,jadvaliy ifodasi)
Download 251.71 Kb.
|
kurs ishi
- Bu sahifa navigatsiya:
- Masalaning diagrammasi(o’zaro bog’lanish).
- III. OLINGAN NATIJALAR. 3.1. Olingan natijalar tahlili.
- Foydalanilgan adabiyotlar ro’yxati.
A: float;
Masalaning chekli avtomati loyihasi(diagrammaviy,jadvaliy ifodasi). Regulyar grammatika tomonidan aniqlangan chekli avtomat deb quyidagi 5 likni tushunamiz. M(Q,V,δ,q0,F) Q-avtomat holatlariningchekli to’plami. V-avtomat qabul qiladigan kirish simvollarining chekli to’plami δ- o’tish funksiyasi. Kirish simvoli va holatlardan tashkil topgan juftlikka avtomatning bir yoki ko’proq holatini mos qo’yadi. q0- avtomatning boshlang’ich holati q0ЄQ q0 Q ning bir qismi F- yakuniy holatlar to’plami.
Chekli avtomatning o’tish funksiyasi diagrammasini qurishni boshlaymiz. Q0 Qe QL QD Qtip Qnv Chekli avtomatning jadvaliy ko’rinishini ifodalaymiz bu quyidagicha bo’ladi: M=M(Q,V,, Q0, F) Q=(Q0,Qerr, Qsp,Qw,Qh,Qi,Ql,Qe,Qqo,Qs,Qm,Qqy,Qb,Qo,Qd,Qy);
2.3 Pascal tilida o’zgaruvchi to’g’ri e’lon tekshiruvchi sintaksis tahlillovchining dasturi. (C++ dasturlash tilida) #include #include using namespace std; int vs=0; enum TState {Q0,Qv,Quz,Qin,Qi,Qn,Qt,Qe,Qg,Qsp,Qee,Qr,Qnv,Qerr}; char NextSymbol(string&S) { char ch=S[0]; S.erase(0,1); return ch; } ; TState NewState(TState Q,char ch) { TState newstate; switch(Q) { case Q0:if(ch>='A'&& ch<='Z') newstate=Quz; else if(ch==' ')newstate=Qsp; else newstate=Qerr; break;
case Qsp:if (ch=='i')newstate=Qi; else if (ch>='A'&& ch<='Z') {newstate=Quz;vs=0;} else if(ch==','){newstate=Qv;vs=1;} else if(ch==':'&&vs==0)newstate=Qin; else if(ch==' ') newstate=Qsp; else newstate=Qerr; break;
case Quz:if (ch==',') {newstate=Qv;vs=1;} else if (ch>='A'&& ch<='Z') {newstate=Quz;vs=0;} else if (ch==' ') newstate=Qsp; else if (ch==':'&&vs==0)newstate=Qin; else newstate =Qerr; break; case Qv: if (ch>='A'&& ch<='Z') {newstate=Quz;vs=0;} else if (ch==' ') newstate=Qsp; else newstate=Qerr; break;
case Qin: if(ch=='f')newstate=Qi; else if(ch==' ') newstate=Qin; else newstate=Qerr; break;
case Qi: if (ch=='l')newstate=Qn; else newstate=Qerr; break; case Qn: if(ch=='o') newstate=Qt; else newstate=Qerr; break ;
case Qt: if (ch=='a') newstate=Qe; else newstate=Qerr; break; case Qe:if (ch=='t')newstate=Qg; else newstate=Qerr; break;
case Qg: if (ch==';') newstate=Qnv; else newstate=Qerr; break; }
} bool TerminalState(TState Q) { return Q==Qnv; } int main() { string S; TState Q; char ch;
Q=Q0; cout< getline(cin,S);
while (S.length()>0) {
ch=NextSymbol(S); } if (TerminalState(Q)) cout< else
cout< cin>>k; return 0; }
Masalaning shartiga muvofiq zanjirni kiritamiz va tuzgan dasturimizning to’g’riligini analiz qilamiz. Xulosa Xulosa qilib shuni aytishimiz mumkinki bu kurs ishini bajarish davomida TDT fanidan olgan bilimlarimizni mustahkamladik. Qo’yilgan masalaga ko’ra gramatika, chekli avtomat va so’nggina dasturini tuzdim. Kurs davomida olgan bilimlarimizni umumlashtirib bilmaganlarimizni o’rganib oldik. Dastur tuzish jarayonida leksik analiz va sintaktik analiz ishi bilan tanishdim. Tuzilgan dastur sharti oldin tekshiriladigan sikl operatorining to’g’riligini tekshiradi. Natija olishda While kalit so’z va yakunlovchi qavsdan keyin probel tashlansa to’g’ri aks holda noto’g’ri javob qaytaradi. Kurs ishini bajarish davomida turli dastur operatorlari bilan ishlashni va kompilyator ishining tavsifini mazkur loyiha ishim orqali mukammal o’rgandim .
G.V. Galisev. Programirovaniye v srede Delfi 7.0. Samouchitel 246 ct. Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов. СПб: Питер, 2003.-396 с. Афанасьев А.Н. Формальные языки и грамматики.: Учебная школа: УлГТУ, 1997. – 84 с. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции -.: Мир, 1979.-487с. “Tizimli dasturiy ta’minot fanidan ma’ruzalar matni” Qayumova M. Toshkent 2011 Internet manbalari. http://www.ziyonet.uz http://www.tuit.uz http://www.adttuit.uz Download 251.71 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling