-
დავუბრუნდით ჩვენს პროგრამას
-
რომელიც იყენებს ფუნქციას,
რათა ვინსტონი ოთხჯერ დახატოს
-
მე შეცვალე ეს ფუნქცია
-
ახლა ის აჩვენებს, რა ასაკისაა ვინსტონი
ცხოვრების ამა თუ იმ მომენტში
-
მალე ნახავთ რატომაც
-
მაგრამ მანამდე
რაღაც უნდა გითხრათ ვინსტონზე
-
ვინსტონი ზედმეტად უყვარს დონატები
-
ის ყოველდღე სამ ცალს ჭამს.
-
ამიტომაც ამხელა ყვითელი სახე აქვს
-
იმისთვის, რომ გავაფრთხილო,
რამდენად მავნეა მისი ეს ჩვევა
-
მე მინდა შევცალო პროგრამა ისე,
რომ მან აჩვენოს
-
რამდენი დონატი ექნება მას ნაჭამი
ცხოვრების რაღაც მომენტისთვის.
-
მაგალითად, როცა ის ორი წლისაა
-
მას ნაჭამი ექნება
3-ჯერ 365 გამრავლებული 2-ზე
-
სამი დონატი დღეში, წელიწადში 365 დღეა,
და ასე ორი წლის განმავლობაში
-
ამ რიცხვს
გამოვაჩენთ სათაურის ქვეშ
-
ორი ათასი დონატი!
ძალიან ბევრია ორწლიანისთვის.
-
ახლა ვნახოთ, რამდენს შეჭამს ის
14 წლის ასაკში, ანუ 3-ჯერ 365 14-ზე
-
გამოვიდა 15000 დონატი
-
შემეძლო გამეგრძელებინა გამოთვლები,
მაგრამ კანონზომიერებას ვამჩნევ
-
გამოთვლები მეორდება
-
და ყოველ ჯერზე
მხოლოდ წლების რაოდენობა იცვლება
-
როდესაც კოდის ასეთ გამეორებას ვხედავ,
ვფიქრობ "შემიძლია აქ ფუნქცია დავწერო?"
-
კი, ნაღდად შემიძლია.
დავწეროთ ეს ფუნქცია
-
ფუნქციას აი აქ განვსაზღვრავ
-
დავარქვათ მას calcTotalDonuts
(დათვალე დონატების საერთო რაოდენობა)
-
მას გადაეცემა ერთადერთი პარამეტრი -
წლების რაოდენობა
-
იმიტომ რომ ეს ერთადერთი ცვლადი რამეა
ჩვენს გამოთვლებში
-
აქ, შიგნით, გამოვითვლით მნიშვნელობას
და შევინახავთ მას ცვლადში
-
ეს იქნება 3-ჯერ 365 გამრავლებული
წლების რაოდენობაზე
-
კარგი. ფუნქცია მზადაა
-
ამ გამოსახულებას აქ
calcTotalDonuts-ით შევცვლი
-
გამოვიძახებ ამ ფუნქციას და გადავცემ ორიანს
-
ახლა საერთო რაოდენობა აღარ ჩანს
-
რა მოხდა?
-
ჩვენმა ფუნქციამ
გამოთვალა მნიშვნელობა აი აქ
-
მაგრამ საერთო
რაოდენობა არავის ამცნო
-
ეს იგივეა, რაც მასწავლებელმა რომ
გამოგიძახოთ გაკვეთილზე, დაგისვათ კითხვა
-
და თქვენ მიხვდეთ პასუხს
-
მაგრამ მოგერიდოთ მისი ხმამაღლა თქმა.
-
თქვენ შეასრულეთ დავალება,
მაგრამ მასწავლებელი ამას არასდროს გაიგებს
-
თუ გვინდა, რომ ფუნქციამ
გადასცეს მნიშვნელობა იმას, ვინც გამოიძახა
-
ფუნქციამ უნდა დააბრუნოს მნიშვნელობა
-
ამისთვის უნდა დავწეროთ: return
(დააბრუნე)
-
და ის, რაც გვინდა დავაბრუნებინოთ
-
ეს შეიძლება იყოს ცვლადი,
მნიშვნელობა ან გამოსახულება
-
აქ დავწერთ:
return totalDonuts
-
ახლა ის, ვინც
გამოიძახებს ამ ფუნქციას, მიიღევს პასუხს
-
და ჩვენი მნიშვნელობაც გამოჩნდა!
-
შეგვიძლია ჩვენი ფუნქცია შევამოკლოთ
-
არ გვჭირდება ცვლადში
მნიშვნელობის დამახსოვრება
-
შეგვიძლია მთელი გამოსახულება
return-ის მერე დავსვათ
-
და გამოგვივა ერთხაზიანი ფუნქცია.
-
კარგი, ახლა შეგვიძლია დავთვალოთ
-
რამდენი დონატი შეჭამა ვინსტონმა
ცხოვრების ამა თუ იმ მომენტში
-
უბრალოდ გამოვიძახოთ ეს ფუნქცია
და გადავცეთ წლების რაოდენობა
-
კარგი, აქ გვაქვს calcTotalDonuts(25)
-
სწორ ადგილას დავწეროთ
-
calcTotalDonuts(65)
-
გამოდის, რომ 65 წლის ვინსტონს
70000 დონატი ექნება ნაჭამი!
-
ეს მართლაც ძალიან ბევრია
-
არა მგონია ვინსტონმა ამდენს გაუმკლავდეს.
-
ახლა, რაც გამოთვლები ფუნქციაში გვაქვს
-
გაგვიმარტივდება მისი ნაწილები შევცვალოთ
-
მაგალითად, ვინსტონმა
ეს რომ ნახოს და თქვას
-
"ო, ეს ზედმეტია. იქნებ დღეში ერთი ვჭამო?"
-
ჩვენ აქ გადავალთ და შევცვლით რიცხვს
-
და ყველაფერი შეიცვლება
-
გამოვიდა 23000. ისევ ძალიან ბევრია.
-
ახლა ვინსტონმა შეიძლება თქვას:
"კარგი, იქნებ კვირაში ერთი ვჭამო?"
-
ეს ნორმალურია
-
365-ს შევცვლით 50-ით
-
იმიტომ რომ წელიწადში დაახლოებით 50 კვირაა
-
გაცილებით უკეთესია.
3000 დონატი, საკმაოდ ნორმალურია
-
როგორც ხედავთ, ფუნქციებისა და
დასაბრუნებელი მნიშვნელობების გამოყენებით
-
საწერი კოდის რაოდენობაც
და ვინსტონის წონაც შევამცირეთ