აი სად გავჩერდით წინა coin-flipping თამაშზე.
დავიწყეთ შემთხვევითი ციფრის წარმოქმნით ნულსა და ერთს შორის,
შემდეგ ვამრგვალებდით უახლოს ცვლად რიცხვამდე.
ეს გვაძლევდა რიცხვს რომელიც იყო ნული ან ერთი.
შემდეგ მოვახდინეთ ამის ილუსტრაცია რეალური მონეტით, ამ ellipse ფუნქციით,
რომელიც იყო იასამნისფერი ან ყვითელი, იმის და მიხედვით რა ციფრი წარმოიქმნდებოდა.
აგერ კოდი რითაც გავაკეთეთ ეს.
თუ integer უდრის ნულს შევსების კოდი იყოს იასამნისფერი,
წინააღმდეგ შემთხვევაში იყოს ყვითელი.
შემდეგ დავწერეთ მონეტა აქ.
მაგრამ ეხლა გადავწყვიტე, რომ ჩემ მონეტას აქვს სამი მხარე.
დიახ, სამ-გვერდიანი მონეტა.
მოდით დავამატოთ ეს მესამე მხარე.
დავიწყებ რიცხვის შექმნით ნულიდან ორამდე,
მას შემდეგ რაც დავამრგვალებთ, მომცემს ცვლადს რომელიც იქნება 0, 1 ან 2.
მაგრამ თუ შევხედავ ჩვენ დაწერილ კოდს, ჩვენ მხოლოდ ორ შემთხვევას განვიხილავთ აქ.
თუ integer არის ნული, იყოს იასამნისფერი, წინააღმდეგ შემთხვევაში იყოს ყვითელი.
მაგრამ ახლა, წინააღდეგი შემთხვევა შეიძლება იყოს 1 ან 2.
მოიცადეთ, რა იქნებოდა რომ გამეკეთებინა იგივე რაც წინაზე,
მაგრამ ამ else ბლოკში. მე უბრალოდ დავწერ:
თუ intiger უდრის ერთს, მაშინ ფერი იყოს ყვითელი, როგორც იყო წინაზე,
წინააღმდეგ შემთხვევაში, ფერი იყოს წითელი. წითელი საკმაოდ კარგია.
ეს ნიშნავს რომ, თუ integer უდრის ნულს, ფერი იყოს იასამნისფერი,
წინააღმდეგ შემთხვევაში, თუ არის ერთი, იქნება ყვითელი;
წინააღმდეგ შემთხევაში, რაც ნიშნავს რომ, თუ არც ნულია და არც ერთი,
მაშინ იქნება ორი, და ფერი იყოს წითელი.
ვაჭერ განახლებას რამოდენიმეჯერ. მუშაობს!
შემდეგ თუ მინდა დავამატო კიდევ რამოდენიმე მხარე ჩემ მონეტას,
მივალ აქ, გავხდი ნულიდან სამამდე, შემდეგ გადავალ else ბლოკში
და დავამატებ მეტ if-else ფუნქციებს და ა.შ.
სანამ არ მექნება უამრავი ბლოკი.
და მხოლოდ მაშინ მივხვდები, რომ ეს კოდი არის საშინელი! უაზრო!
კოდი უნდა იყოს მარტივი წასაკითხი და ლამაზი, და არა უშნო.
აი რას გავაკეთებთ ეხლა ჩვენ:
როცა გაქვთ ერთი if ბრძანება ან if-else ბრძანება else ბლოკში,
რაც ნიშნავს რომ ამ ბლოკებს გარეთ არაფერ არ ვაკეთებთ,
აღარ ვანიჭებთ მეტ ფერებს, აღარ გვაქვს მეტი if ბრძანებები.
გვაქვს მხოლოდ ერთი if ბრძანება, და შეიძლება მოყვება else ბლოკი.
შემდეგ ჩვენ შეგვიძლია შევაერთოთ ეს პირობა წინა ხაზით და დავწეროთ:
else if integer უდრის ერთს, ფერი იყოს ყვითელი.
შემდეგ ეს უკანასკნელი else ბლოკი არ ზის არსად, გვხვდება სულ ბოლოში.
კარგია! ეს ნიშნავს რომ, თუ integer უდრის ნულს, ფერი იყოს იასამნისფერი,
წინააღმდეგ შემთხვევაში, თუ integer უდრის ერთს, იყოს ყვითელი
წინააღმდეგ შემთხვევაში, თუ ეს ორივე მცდარია, ფერი იყოს წითელი.
ვაჭერ განახლებას რამოდენიმეჯერ და მაინც მუშაობს.
კარგია! მაგარი ის არის რომ, შეგვიძლია გვქონდეს იმდენი else-if რამდენიც გვინდა,
რაც ძალიან მიმარტივებს მხარეების დამატებას ჩემს მონეტაზე.
მოდით ეხლა ეს ვცადოთ. მე შევქმნი რიცხვს ნულიდან სამამდე,
შემდეგ უბრალოდ დავამტებ კიდევ ერთ else ბლოკს,
რომელიც ამბობს else if intiger უდრის ორს,
ჩვენ დავაყენბთ ფერს... წინაზე იყო წითელი და დავტოვოთ წითელი.
შემდეგ ეს უკანასკნელი ბლოკი იქნება, როცა integer უდრის სამს,
ფერი იყოს ლურჯი. კარგია!
ძალიან კარგი. ეს რომ გააკეთოთ, ყოველთვის უნდა დაიწყოთ if ბრძანებით,
შემდეგ შეგიძლიათ გქონდეთ რამდენი else-if ფუნქციაც გინდათ,
და ეს ბოლო არის სურვილისამბრ.
შეგვიძლია მის გარეშეც, მაგრამ შემდეგ შეიძლება ყველა ეს გამოვიდეს მცდარი,
და არც ერთი ბლოკი არ შესრულდება.
მაგრამ სანამ ეს გვაქვს აქ, ზუსტად ერთ-ერთი ბლოკი გაეშვება.
მაგარია? ეს არის შემთხვევა სადაც არ აქვს მნიშვნელობა
თუ დაწერთ if else-if else-if else,
ან უბრალოდ გამოიყენებთ ძველ if ბრძანებას რომელიც გვქონდა დასაწყისში,
თუ integer უდრის სამს.
ეს იმიტომ რომ, შეუძლებელია integer უდრიდეს ნულს და შემდეგ ასევე ერთს, ორს ან სამს.
კარგია. ეს პირობები არის ურთიერთ გამომრიცხავი.
მხოლოდ ერთ-ერთი ბლოკი გაეშვება მაინც.
მაგრამ ეს ყველა შემთხვევა არ არის.
რა იქნება თუ თამაშს ავაწყობთ ცვლადის დამრგვალების გარეშე?
მოვაშორებ დამრგვალების ფუნქციას,
და შემდეგ მეორე ნაწილს სადაც ვხატავთ ეკრანზე.
მოდით ახალი წესები მოვიგონოთ ამ თამაშში.
მე კლავ წარმოვქმნი რიცხვს ნულიდან სამამდე,
დავადოთ რამოდენიმე ნიშანი ჩვენ რიცხვებს.
თუ რიცხვი იქნება ნულიდან ერთამდე, გავაფერადოთ იასამნისფრად.
ეს სულაც არ გამოიყურება როგორც ისამნსიფერი, მაგრამ ხომ მიხვდით.
შემდეთ თუ არის ერთიდან ორამდე, გავაფერადოთ ყვითლად.
თუ არის ორიდან სამამდე, იყოს წითელი.
კარგია. მოდით ვნახოთ როგორ გამოვა if და else-if ფუნქციების გამოყენებით.
შემიძლია დავიწყო ასე, if რიცხვი ნაკლებია ერთზე,
ანუ თუ ნაკლებია ერთზე, და ვიცი რომ ეს ნულსა და სამს შორის არის,
რაც ნიშნავს რომ ამ მონაკვეთშია, დავაყენებ ფერს იასამნისფერზე.
წინააღმდეგ შემთხვევაში, თუ რიცხვი 2-ზე ნაკლებია, დავაყანებ ყვითელ ფერს... 255...
და წინააღმდეგ შემთხვევაში, ფერი დავაყენოთ წითელი.
კარგია! და მუშაობს როგორც გვქონდა ჩაფიქრებული.
თუ რიცხვი იქნებოდა ერთზე ნაკლები, იქნებოდა ამ მონაკვეთში.
წინააღდეგ შემთხვევაში, მეტია ან უდრის ერთს, მაგრამ ასევე ნაკლებია ორზე,
და ამიტომ ხვდება ამ მონაკვეთში და ვანიჭებთ ყვითელ ფერს.
წინააღმდეგ შემთხვევაში, უნდა იყოს მეტი ან ტოლი ორის, და აღმოჩნდებოდა ამ მონაკვეთში.
აგერ შემთხვევა, როცა ჩვენ ვერ ვიტყოდით რომ თუ რიცხვი ნაკლები 2-ზე,
და ნაკლებია სამზე,
იმიტომ რომ თუ რიცხვი ნაკლებია 1-ზე, მაშინ ყველა ვარიანტში ნაკლებია 2-ზე
და ასევე ნაკლებია 3-ზე.
ჩვენი მონატა კი ყოველთვის გამოვა წითელი.
ამიტომაც ასეთ შემთხვევაში, ძალიან გამოსადეგია else-if ფუნქცია.