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