Sual: 10000 (bu ədəd istənilən ola bilər, lakin 100 saniyəni keçmir) millisaniyə ərzində tam ədədləri toplamalıyam (i:=0; dövr: i:=i+1), bunu dövr operatoru ilə məncə, etmək mümkün deyil, çünki, bu zaman dövrün şərtinə nəsə yazmaq lazımdır, hər komputerdə bilirəm ki, fərqli nəticələr alınacaq, mənə isə bu fərq lazımdır…
Sualın izahatı: Auditoriya… İçəridə müxtəlif yaş qruplarından olan şagirdlər və hər şagirdin qarşısında kağız var. 7 yaş, 8 yaş, 10, 12 və 14 yaş… Onların bilikləri yoxlanılmalıdır və bunun üçün onlara sadə bir sual verilir:
5 dəq.lik vaxt bitənə kimi natural ədədləri toplasınlar, yəni 1+2+3+…+n. Kim çox toplaya bilsə, o qalibdir.
5 dəq. ərzində hər şagird özünəməxsus bir ədədə kimi toplaya biləcək, məs; 7 yaşlı şagird 1dən 70ə kimi, 8 yaşlı şagird 1dən 80a kimi, 10 yaşlı şagird 1dən 100ə kimi, 12 yaşlı şagird 1dən 120ə kimi və 14 yaşlı şagird isə 1dən 140a kimi toplaya biləcək, çünki, zehinləri bundan artığına icazə vermir. Aydındır ki, 14 yaşlı şagirdin qalib olma şansı böyükdür.
Aydındır ki, proqramda dövr qurmalıyam, bəs hansı operatordan istifadə etməli? For … to … do … ? Yox, məncə bu operator mənə əl verməyəcək, çünki, bu operator sonlu sayda addım var. Məlumdur ki, misalımızdan aydındır ki, dövrümüzün sonu məlum deyil. Ümid while … to … do … -dur, yəni while (10000 millisaniyə bitənə kimi) do i:=i+1;
Əgər bu operatordan istifadə etsəm, bəs onda mötərizənin içərisindəki məntiqi ifadəni necə verəcəm, necə verim ki, 10000 millisaniyə bitən kimi dövrdən çıxsın, yəni proqram 10 san. işləsin?! Bəs hansı operator?!
(Mehman Elxanoglu)
Sual verin
Cavab verin