Բացի այդ պրոցեսորի տակտերի օգտագործման տեսանկյունից ավելի օպտիմալ է համարվում: Վախտին կոմպերը այսքան արագագործ չէին
Ըստ էության For I:=M to N Do Begn .... End; կոնստրուկցիան իրենից ներկայացնում է հետևյալ կոնստրուկտիվ հաջորդականությունը.
I:=M
Repeat
Begin
....
I:=I+1
End;
Until I<=N;
Սա էլ իր հերթին կառուցված է մոտավորապես այսպե
I:=M
Label: 10 If I < =N Then
Begin
....
I:=I+1
GoTo 10;
End;
Այս վերջին տարբերակն էլ հենց համարվում է ալգորիթմի դասական նկարագրությունը: Սակայն ծրագրավորման մեջ ձևավորված է մի ավանդույթ` անպայման անցման հրամաններից անհրաժեշտ է հնարավորինս խուսափել:
Լոխ մունք ենք, մնացածը` լոխ են...
MrKaren (28.12.2011)
Ճիշտն ասած՝ չգիտեի որ For-ը ավելի դանդաղ է աշխատում, քան նախապայմանով կամ հետպայմանով ցիկլը: Ճիշտն ասած էս վերջերս մի քիչ "քթի մազ" եմ դառել էդ արագության հարցով, միշտ ամեն մի խնդիր գրելիս առաջնային պայմաններից ա արագագործությունը (ծավալը երկրորդային ա): Վատը էն ա, որ շատ գործողությունների արագություններ (որը որից է արագ) չկան ոչ մի տեղ նշված (համենայն դեպս ես չեմ հանդիպել):
Այ էդ անցման հրամաններից խուսափելու ավանդույթը ըտենց էլ չսիրեցի, շատ տեղեր կա, որ կարաս շատ հեշտ goto-ով անես, բայց դա "թույլատրված չէ":
Ասում են, մթոմ դժվար գտնելու հետ է կապված, բայց դե ես չեմ կարծում, որ խնդիրը դրանում լինի:
Հա, FOR-ը ավելի դանդաղ է աշխատում` չափումներ ենք արել
Արագ-դանդաղ կատարվելը կարելի է որոշել` ASSEMBLER-ի կոդը բացում ես ու որքան ավելի շատ տողեր կան մեջը, այդքան ավելի շատ գործողություններ են ատարվում` ավելի շատ պրոցեսորի տակտեր է օգտագործվում:
Իրոք` ոչ մի տեղ գրված չի, քանի որ դա կախված է կոնկրետ կոմպիլյատորից ու մենակ դրա հեղինակը կիմանա:
Շատ տեղեր կա, որ առանց GoTO ուղղակի անհնար է:
Խնդիրը կայանում էր հետևյալում.
յուրաքանչյուր ծրագրի համար համակարգչի հիշողությունում բացվում է ստեկ, որի մեջ էլ գրանցվում են փոփոխականները, կատարվող գործողությունները և այլն: GoTo-ի պարագայում լինում էին դեպքեր, որ ուղղակի կատարվող կոդի հատվածը դուրս էր մնում ստեկից ու կախվում էր: Հիմա այլևս տենց բա չկա: Սա տեխնիկական մասն է, բայց կա նաև մաթեմատիկական մասը: Եթե օգտագործել ես անպայման անցման հրամանը, ապա դա նշանակում է, որ օգտագործածդ ալգորիթմը մեծ հավանականությամբ վերանայման կարիք ունի` ինչ որ պայմանով կարելի էր բավարարվել:
Դե դժվար գտնելն էլ զուտ սուբեկտիվ գործոններից է` եթե label-ից GoTo հատվածը երկար է, եթե ծրագրի կոդում կան բազմաթիվ ցիկլեր: Պատկերացնում ես քանի հատ Label պիտի գրվի? ու եթե ասենք նախոր label-ը մի 1500 տող վերևում է, ապա դրա համարը հանկարծ չկրկնելու համար ստիպված ես լինում բարձրանալ վերև ու նայել![]()
Լոխ մունք ենք, մնացածը` լոխ են...
Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)
Էջանիշներ