დავუბრუნდით ჩვენს პროგრამას
რომელიც იყენებს ფუნქციას, რათა ვინსტონი ოთხჯერ დახატოს
მე შეცვალე ეს ფუნქცია
ახლა ის აჩვენებს, რა ასაკისაა ვინსტონი ცხოვრების ამა თუ იმ მომენტში
მალე ნახავთ რატომაც
მაგრამ მანამდე რაღაც უნდა გითხრათ ვინსტონზე
ვინსტონი ზედმეტად უყვარს დონატები
ის ყოველდღე სამ ცალს ჭამს.
ამიტომაც ამხელა ყვითელი სახე აქვს
იმისთვის, რომ გავაფრთხილო, რამდენად მავნეა მისი ეს ჩვევა
მე მინდა შევცალო პროგრამა ისე, რომ მან აჩვენოს
რამდენი დონატი ექნება მას ნაჭამი ცხოვრების რაღაც მომენტისთვის.
მაგალითად, როცა ის ორი წლისაა
მას ნაჭამი ექნება 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 დონატი, საკმაოდ ნორმალურია
როგორც ხედავთ, ფუნქციებისა და დასაბრუნებელი მნიშვნელობების გამოყენებით
საწერი კოდის რაოდენობაც და ვინსტონის წონაც შევამცირეთ