-
ახლა ვისაუბრებთ იმაზე, რასაც უკვე
აქტიურად ვიყენებთ: ფუნქციებზე.
-
ისეთ ბრძანებებს გამოყენებისას, როგორებიცაა
მაგალითად, rect(), fill() ან text()
-
თქვენ ფუნქციებს იძახებთ. სწორედ ეს
ფუნქციები აკეთებენ იმას, რასაც ეუბნებით.
-
რა არის ფუნქცია?
-
ფუნქცია არის კოდის გაერთიანებული ნაწილი,
რომელსაც სახელი აქვს დარქმეული
-
რადგან მისი გამოყენება
ბევრჯერ გვინდა.
-
განვიხილოთ rect() ფუნქცია.
რას აკეთებს ის?
-
ის უბრალოდ ოთხ ხაზს ხატავს.
-
შევეძლო მხოლოდ line()-ს გამოყენებით
მიგვეღო მართკუთხედი
-
მაგრამ, თუ ბევრი მართკუთხედის
დახატვა გვინდა
-
მოუხერხებელი იქნებოდა ყოველი ხაზის
გასმისას იმის გამოთვლა
-
როგორ გავავლოთ ხაზი ერთი კუთხიდან მოერეში,
მეორედამ მესამეში და ა.შ.
-
ამის მაგივრად, უბრალოდ
შევქმენით ფუნქცია rect().
-
ეს ფუნქცია აკეთებს იმავეს,
რასაც კოდის ის ოთხი ხაზი
-
მაგრამ გაცილებით უფრო მოკლეა.
-
rect()-ი ერთ-ერთი იმ ფუნქციათაგანია,
-
რომელიც ხანის აკადემის ყველა
პროგრამაში არის ხელმისაწვდომი.
-
თქვენც შეგიძლიათ საკუთარი
ფუნქციების შექმნა
-
და შემდეგ მათი გამოყენება
თქვენს პროგრამებში.
-
მაგალითად, ვწერთ პროგრამას და მასში
ბევრჯერ გვინდა ვინსტონის დახატვა.
-
შეიძლება გვინდოდეს ვინსტონის
ცხოვრების ისტორია მოვყვეთ
-
და ვაჩვენოთ, როგორი იყო ის
სხვადასხვა ასაკში.
-
კოდი, რომელიც ვინსტონს დახატავდა,
ასე შეიძლება დავიწყოთ:
-
გვაქვს "faceX" და "faceY" ცვლადები,
რომლებიც სახის ცენტრს შეესაბამებიან
-
ამ ცენტრის მიმართ ვხატავთ
თვალებსა და პირს
-
ახლა პროგრამა ხედავს კოდს, რომელიც
არ არის ფუნქციაში
-
ამიტომაც ეს კოდი იშვება მხოლოდ ერთხელ.
-
მოდით ეს კოდი ფუნქციად გადავაკეთოდ.
-
ფუნქციის შექმნა ძალიან ჰგავს
ცვლადის გამოცხადებას
-
რადგან ჩვენ მართლა ცვლადს ვქმნით.
-
ვწერთ: var drawWinston.
-
სახელი კარგად უნდა აღწერდეს ფუნქციას.
-
შემდეგ ვწერთ ტოლობის ნიშანს("="),
მაგრამ სტრინგის ან რიცხვის მაგივრად
-
ვწერთ function
(მართლწერაში არ შეცდეთ)
-
ამის შემდეგ ვწერთ ცარიელ ფრჩხილებს "()",
და შემდეგ ვხსნით ფიგურულ ფრჩხილს "{"
-
შემდეგ, ვხურავთ ფიგურულ ფრჩხილს "}"
და ვწერთ წერტილ-მძიმეს ";".
-
ფიგურულ ფრჩხილებს შორის
ვათავსებთ ყველაფერს,
-
რაც გვინდა, რომ ფუნქციამ შეასრულოს.
-
ავიღოთ მთელი ეს კოდი, ჩავსვათ
ჩვენს ფუნქციაში
-
წავწიოთ ის წინ
-
და მზადაა!
-
ახლა ჩვენ გვაქვს ცვლადი,
რომელშიც შენახულია ფუნქცია.
-
კოდის ამ ბლოკს მივანიჭეთ სახელი,
რაც საშუალებას მოგვცემს
-
პროგრამას ნებისმიერ დროს ვუთხრათ იპოვოს
ეს ბლოკი და გაუშვას მასში მოქცეული კოდი.
-
კოდის ეს ნაწილი გახდა
მრავალჯერ გამოყენებადი.
-
ალბათ შეამჩნევთ, რომ ვინსტონი გაქრა.
-
ვინსტონი დავკარგეთ! სად წავიდა?
-
ასეთი რამ მოხდა: კოდის ეს ნაწილი
ფუნქციაში რომ ჩავწერეთ
-
პროგრამას ვუთხარით, რომ ეს არის კოდი,
რომლის გამოყენებაც მომავალში გვინდა
-
მაგრამ მხოლოდ მაშინ, როდესაც
მას ჩვენ გავუშვებთ.
-
ჩვენ უნდა ვუთხრათ პროგრამას,
რომ გაუშვას ეს კოდი
-
რაც იმას ნიშნავს, რომ ეს ფუნქცია
უნდა გამოვიძახოთ
-
ისევე როგორც ellipse(), rect() და line()
-
უბრალოდ ვწერთ ფუნქციის
სახელს (drawWinston)
-
ვუწერთ ცარიელ ფრჩხილებს "()"
და, რა თქმა უნდა, წერტილ-მძიმეს
-
ვინსტონიც გამოჩნდა!
-
შეიძლება გეგონოთ, რომ ეს უაზრობაა,
იმიტომ რომ პროგრამამ იგივე გააკეთა
-
რასაც ფუნქციის გარეშეც ვაკეთებდით.
-
ფუნქციის მთავარი ღირსება ისაა,
რომ მისი ხელახლა გამოყენება შეგვიძლია.
-
მოდით ახლავე გავაკეთოთ ეს.
-
შეგვიძლია ფუნქცია
ბერვჯერ დავაკოპიროთ,
-
მაგრამ გამოსახულება იგივე რჩება
-
ეს იმის ბრალია, რომ ვინსტონი ერთსა
და იმავე ადგილას იხატება
-
რენტგენული მხედველობა რომ გვქონოდა,
დავინახავდით სამ ვინსტონს.
-
მაგრამ ასეთი მხედველობა,
სამწუხაროდ, არ მაქვს.
-
სამაგიეროდ შეგვიძლია
ოდნავ შევცვალოთ ფუნქცია
-
და სამივე ვინსტონს დავინახავთ
-
ხედავთ, რომ faceX და faceY
ყოველთვის 202-სა და 208-ს უდრის?
-
შეგვიძლია ეს random() (შემთხვევითი
რიცხვების) ფუნქციის გამოყენებით შევცვალოთ
-
random() 50-დან 350-მდე
-
ის დააბრუნებს რიცხვს
ამ ორ რიცხვს შორის ინტერვალიდან
-
იგივე აქაც
-
ამ ფუნქციის ყოველ გამოძახებაზე
ის ახალ რიცხვებს აბრუნებს.
-
თუ restart-ს დავაჭერთ, ახალ
შემთხვევით ვინსტონებს მივიღებთ.
-
ფუნქცია რომ არ გვქონოდა, საკმაოდ
გრძელი კოდის წერა მოგვიწევდა
-
ის ამ კოდზე სამჯერ უფრო გრძელი იქნებოდა
-
მაგრამ ეს ფუნქცია ჯერ არ არის იმდენად
სასარგებლო, რამდენადაც შეიძლება იყოს.
-
ჩვენ არ გვჭირდება შემთხვევითი ვინსტონები.
-
ჩვენ გვინდა, რომ ვინსტონები ეკრანის
განსაზღვრულ ადგილებას გამოჩნდეს.
-
გააგრძელეთ ჩვენი ვიდეოების ყურება
-
შემდეგზე ვილაპარაკებთ იმაზე, თუ როგორ
გადავცეთ ჩვენ ფუნქციას პარამეტრები
-
იმისთვის, რომ ვინსტონი
კონკრეტულ ადგილას დავხატოთ.