ძირითადი მასალა
კურსი: კომპიუტერული პროგრამირება > თემა 1
გაკვეთილი 10: ლოგიკა და if დებულებები- If დებულება
- გამოწვევა: მხტუნავი ბურთი
- მეტი ინტერაქცია მაუსით
- გამოწვევა: თქვენი პირველი სახატავი აპლიკაცია
- ლოგიკური ტიპები (booleans)
- გამოწვევა: რიცხვის გაანალიზება
- ლოგიკური ოპერატორები
- გამოწვევა: თქვენი პირველი ღილაკი
- გამოწვევა: უფრო ჭკვიანი ღილაკი
- If/Else - ნაწილი 1
- გამოწვევა: ფერადი ბარათი
- If/Else - ნაწილი 2
- მიმოხილვა: ლოგიკა და if დებულება
- შემთხვევითი რიცხვები
- პროექტი: მაგიური ბურთი-8
© 2024 Khan Academyგამოყენების პირობებიკონფიდენციალურობის პოლიტიკაშენიშვნა ქუქი-ჩანაწერებზე
შემთხვევითი რიცხვები
ისწავლეთ შემთხვევითი რიცხვების დაგენერირება ProcessingJS-ში random() ფუნქციის გამოყენებით და შეამოწმეთ მათი მნიშვნელობები if პირობებით.
ჩვენ ვიყენებდით ჩვენს
if
პირობებს გარემოს შესახებ მნიშვნელობების შესამოწმებლად, როგორიცაა მომხმარებლის მაუსის მიმდინარე ადგილმდებარეობა, და გეგმიურად ვრეაგირებდით.მაგრამ რა ხდება იმ შემთხვევაში, როცა არაპროგნოზირებადობა გვინდა? რა ხდება მაშინ, როცა გვინდა, რომ ჩვენი პროგრამა ყოველ ჯერზე განსხვავებულად იქცეოდეს?
შემთხვევითობა გადაგვარჩენს!
შეგვიძლია, დავაგენერიროთ შემთხვევითი რიცხვები და გამოვიყენოთ
if
და else if
პირობები ჩვენი პროგრამის შემთხვევითი მნიშვნელობების მიხედვით ქცევის შესაცვლელად.მაგალითად:
var randNum = random(0, 10);
if (randNum < 5) {
text("Trick!", 200, 200);
} else {
text("Treat!", 200, 200);
}
შემთხვევების ნახევარში პროგრამას ეკრანზე გამოაქვს „Trick!", ხოლო მეორე ნახევარში - „Treat!".
როგორ მუშაობს:
randNum
ცვლადს ენიჭება შემთვევითი რიცხვი 0-იდან 10-მდე. დაბრუნებული მნიშვნელობები შეიძლება, იყოს 0, 0,2, 3,3, 4, 5,5, 6,9, 8, 9 ან 9,99, მაგრამ არა — 10.- პირობა ამოწმებს, არის თუ არა რიცხვი 5-ზე ნაკლები. თუ რიცხვი 5-ზე ნაკლებია, ეკრანზე გამოაქვს „Trick!", წინააღმდეგ შემთხვევაში — „Treat!".
ზოგჯერ უფრო ადვილია მთელ რიცხვებთან მუშაობა, ვიდრე მცურავ მძიმიან რიცხვებთან (ინგლ. floating point numbers), რათა ზუსტი მნიშვნელობები შევამოწმოთ. აი, რამდენიმე ფუნქცია, რომელიც მცურავ მძიმიან რიცხვებს მთელ რიცხვებად აქცევს:
round()
: ამრგვალებს რიცხვს მასზე ნაკლებ უდიდეს მთელ რიცხვამდე, თუკი ამ რიცხვის არამთელი ნაწილი 0.5-ზე ნაკლებია, და ამრგვალებს მას მასზე დიდ უმცირეს მთელ რიცხავმდე, თუკი ამ რიცხვის არამთელი ნაწილი 0.5-ზე მეტი ან ტოლია.ceil()
: ყოველთვის ამრგვალებს რიცხვს მის მომდევნო მთელ რიცხავმდე.floor()
: ყოველთვის ამრგვალებს რიცხვს მის წინა მთელ რიცხვამდე.
ზოგადად, ისეთი შემთხვევითი რიცხვების გენერირება გვინდა, რომლებიც დაახლოებით თანაბრადაა ამორჩეული. მაგალითად, თუ მონეტის აგდების სიმულაციას ვაკეთებთ, გვინდა, რომ „ავერსი" და „რევერსი" თანაბარი ალბათობით მოვიდეს.
ეს კოდი აღწევს ამ მიზანს:
var randFlip = floor(random(0, 2));
if (randFlip === 0) {
text("Heads", 200, 200);
} else {
text("Tails", 200, 200);
}
ცვლადი
randFlip
ყოველთვის არის 0 ან 1, რადგან ის იძახებს floor()
ფუნქციას random(0, 2)
-ის დაბრუნებულ მნიშვნელობაზე. იმისთვის, რომ ინტუიციურად გაგააზრებინოთ, ასე რატომ ხდება, აი,
floor()
-ის გამოძახების შედეგი random(0, 2)
-ის სხვადასხვა მნიშვნელობაზე:random(0, 2) | floor(result) |
---|---|
0,0 | 0 |
0,217… | 0 |
0,542… | 0 |
0,973… | 0 |
1,0 | 1 |
1,332… | 1 |
1,589… | 1 |
1,999… | 1 |
random()
-ის დაბრუნებული მნიშვნელობები შემთხვევითია, ამიტომ ისინი შეიძლება, ისე თანაბრად განაწილებული არ იყვნენ, როგორც ზემოთ მოცემულ ცხრიშია. თუ მონეტის აგდების კოდს გაუშვებთ 10-ჯერ, შეიძლება, ყველა „ავერსი" ან ყველა „რევერსი" მიიღოთ. მიუხედავად ამისა, თუ მას რამდენიმე ათასჯერ გაუშვებთ და თან დაითვლით, ნახავთ, რომ „ავერსიც" და „რევერსიც" შემთხვევების დაახლოებით 50%-ში მიიღეთ. ზოგადად, როცა ჩვენი მიზანია მთელი რიცხვების თანაბარი განაწილების მიღება, საუკეთესო ვარიანტია
floor()
-ის გამოყენება random()
-თან. random()
ფუნქცია თქვენი პროგრამისათვის მრავალფეროვნების შესამატებლად იდეალური ვარიანტია. მიუხედავად ამისა, ფრთხილად იყავით: გაარკვიეთ დიაპაზონი, რომელშიც რიცხვებს დააგენერირებთ, გადაწყვიტეთ, გჭირდებათ თუ არა რიცხვების დამრგვალება და შეამოწმეთ მნიშვნელობები შესაფერისად.ამის თქვენით ცდა შეგეძლებათ შემდეგ პროექტში!
გსურთ, შეუერთდეთ დისკუსიას?
პოსტები ჯერ არ არის.