7. Чизиқли жараёнларни дастурлаш
Download 478.36 Kb.
|
С да дастурлаш 1 кисм 1 семестр
- Bu sahifa navigatsiya:
- Натижа : 3 – мисол
- Натижа : 10.3. Қиймат қайтармайдиган функциялар
- Натижа : 10.4. Функциянинг прототипи ва inline функциялар
1 – мисол: Икки сонни қўшиш учун функция яратинг.
#include using namespace std; int a,b; int add() { return a+b; } int main() { a = 5; b = 6; int c = add(); cout << c << endl; return 0; } Юқорида тузилган дастурда глобал ўзгарувчилар учун қўшиш функцияси яратилган, яъни бу функция фақатгина шу дастурнинг глабал ўзгарувчилари a ва b лар учун ўринли бўлади. Агар ўзгарувчиларнинг номлари бошқа ном билан аталса унда бу функция ҳеч қандай қиймат қайтармайди. Бу функциянинг ихтиёрий ўзгарувчилар учун қиймат қайтаришини таъминлаш учун функцияни параметрли қилиб эълон қилишимиз керак бўлди. 2 – мисол: Икки сонни қўшиш учун функция яратинг. #include using namespace std; int add(int x, int y) { return x+y; } int main() { int a, b; cout << "a ni kiriting: "; cin>>a; cout << "b ni kiriting: "; cin>>b; int c = add(a,b); cout << "Yiindi: " << c << endl; return 0; } Натижа_:__3_–_мисол'>Натижа: 3 – мисол: Берилган тўртта сондан энг каттасини топиш дастурини тузинг. #include using namespace std; int max(int x, int y) { return (x>y)?x:y; } int main() { int a, b, c, d, a1, b1, m; cout << "a ni kiriting: "; cin>>a; cout << "b ni kiriting: "; cin>>b; cout << "c ni kiriting: "; cin>>c; cout << "d ni kiriting: "; cin>>d; a1 = max(a,b); b1 = max(c,d); m = max(a1,b1); cout << "Eng kattasi: " << m << endl; return 0; } Натижа: 10.3. Қиймат қайтармайдиган функциялар Қиймат қайтармайдиган функциялар дастурлаш тилларида процедуралар деб аталади. C++ дастурлаш тилида процедура эълон қилиш учун функциядан фойдаланилади. Функция қиймат қайтармаслигини ифодалаш учун void ҳизматчи сўзидан фойдаланилади. 4 – мисол: 1 дан n гача бўлган сони квадратини ва кубини аниқловчи функция яратинг. #include using namespace std; void display(int x) { int i = 1; L1: printf("Son: %4i Kvadrati: %5i Kubi:%6i\n",i, i*i, i*i*i); i++; if (i <= x) goto L1; } int main() { int n; cout << "n ni kiriting: "; cin>>n; display(n); return 0; } Натижа: 10.4. Функциянинг прототипи ва inline функциялар Функциянинг прототипи нима? Функция прототипи бу дастурда ишлатиладиган функцияларни олдиндан эълон қилишни билдиради. Бунда функциялар бир – бирига мурожаатни хатоларсиз бажарилашини таъминлашга ёрдам беради. Функция прототипи эълон қилинганда функциянинг типи, функциянинг параметрлари типлари ҳам эълон қилинади. Аммо парамертларнинг номлари эълон қилиниши шарт эмас. 5 – мисол: Икки сон берилган уларнинг ўрнини алмаштириш функциясини яратиш. Бу дастурни яратишда биз ҳаволалар имкониятидан ҳам фойдаланамиз. #include using namespace std; void swap (int&, int&); // функция прототипи int main() { int a = 0,b = 0; cout << "a ni kiriting: "; cin>>a; cout << "b ni kiriting: "; cin>>b; cout << endl; printf("SWAPdan oldin: A = %i, B = %i\n",a,b); swap(a,b); printf("SWAPdan keyin: A = %i, B = %i\n",a,b); return 0; } void swap (int &x, int &y) { int c = x; x = y; y = c; } Натижа: Юқорида айтиб ўтилганидек функциялар дастур яратишда катта қулайликлар яратади. Яратилган функциялар компилятор ёрдамида ҳар сафар чақирилганда ва уни ишлатилгандаги қўшича иш бажаришга олиб келади. Регистрдаги ўзгарувчилар ўзгартирилади, локал ўзгарувчилар қурилади, параметр сифатида берилган аргументлар функция стекига ёзилади. Бунинг ҳаммаси қўшимча вақт талаб қилади. Умуман айтганда, ҳеч қандай функциясиз ёзилган дастур, яъни ҳамма амаллари асосий функцияда ёзилган монолит дастур, бир нечта функцияларга эга, айни шу ишни бажарувчи дастурга нисбатан тезроқ ишлайди. Функцияларнинг бу ноқулайлигини тузатиш учун inline сифатидаги функциялар қўлланилади. Бунда компилятор дастур ичида функциянинг номи келган вақтда, функциянинг номини ўрнига функциянинг танасини жойлаштиришга олиб келади ва бу усул ёрдамида дастур ишлаш жараёни тезлашади, лекин унинг ҳажми ортади. 6 – мисол: n! ни топувчи дастур яратинг. #include using namespace std; inline unsigned int fact(int n) { int p = 1; int i=1; L1: p *= i; i++; if (i <= n) goto L1; return p; } int main() { int n = 0; cout << "n ni kiriting: "; cin>>n; cout << "Factorial: "<< fact(n) << endl; return 0; } Download 478.36 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling