>> [მუსიკის დაკვრა]
>> რობ Bowden: ეს ჩემთვის, რობ.
მოდით გავლა, თუ როგორ განახორციელოს Mario.
ასე რომ პირველი რაც უნდა გავაკეთოთ არის შეეკითხება მომხმარებელს ამისთვის შეყვანის.
>> ჩვენ უნდა ვთხოვოთ მათ, თუ როგორ მაღალი პირამიდის უნდა იყოს.
ასე რომ, აქ ჩვენ ვხედავთ, თუ რას ვაკეთებთ სიმაღლე = GetInt.
და გვახსოვდეს, რომ GetInt ფუნქცია ხორციელდება CS50
ბიბლიოთეკა, ასე up დაბრუნება, ჩვენ უნდა მახსოვს # მოიცავს cs50.h.
>> რატომ გვაქვს ამ გახვეული in do-ხოლო loop?
ისე, ჩვენ ასევე უნდა გვახსოვდეს, რომ მომხმარებლის შეყვანის უნდა იყოს სწორი.
რა არის არასწორი შეყვანის?
კარგად pset სპეც კონკრეტულად ამბობს რომ სიმაღლე ნაკლებია, ვიდრე 0 ან მეტი
მეტი 23 არასწორია.
>> ასე რომ, აქ ჩვენ ვხედავთ, რომ ჩვენ განსაზღვრავს მუდმივი მოუწოდა MAX_HEIGHT ერთად
ღირებულება 23.
ეს do-ხოლო loop გააგრძელებს, ხოლო სიმაღლე ნაკლებია, ვიდრე 0 ან MAX_HEIGHT არის
ნაკლებია, ვიდრე სიმაღლე, რაც იმას ნიშნავს, 23 ნაკლებია, ვიდრე სიმაღლე.
ასე რომ, თუ სიმაღლე არის 24 ან მეტი, ჩვენ გავაგრძელებთ looping.
გახსოვდეთ, რომ do-ხოლო მარყუჟების საკმაოდ გამოსადეგი, როდესაც ჩვენ გვინდა
მომხმარებლის შეყვანის და შემდეგ შეამოწმოს, რადგან ჩვენ აუცილებლად უნდა ვთხოვო მომხმარებელს at
თუნდაც ერთხელ, ღირებულება უნდათ.
>> ასე რომ ერთხელ ჩვენ მათი შეყვანის, ჩვენ ახლა შეგვიძლია ავაშენოთ პირამიდის.
ერთი tricks ამ პრობლემის მითითებული რომ ჩვენ უნდა დავიწყოთ ზედა
პირამიდის.
თქვენ არ შეგიძლიათ printf ბოლოში პირამიდის და შემდეგ ავაშენოთ თქვენი გზა მდე.
მოდით შევხედოთ მაგალითად საწყისი pset სპეც.
>> ჩვენ ვხედავთ, აქ რომ როდესაც ჩვენ შეიყვანოთ სიმაღლე 8, ძალიან ბოლოში
პირამიდის ბეჭდავს ცხრა ჰეშები.
ერთ დონეზე up, რომ ანაბეჭდები ერთ სივრცეში და რვა ჰეშები.
ერთ დონეზე up, რომ არის ორი ფართები და შვიდი ჰეშები, ყველა გზა, სანამ ჩვენ
მისაღებად ზევით პირამიდის, რომელიც რვა დონეზე up, რომელიც ბეჭდავს შვიდი
ფართები და ორი ჰეშები.
ასე მახსოვს, რომ ჩვენ ამისათვის მაღალი დონის პირველი.
>> აქ ჩვენ iterating საწყისი ზედა დონეზე, ზედიზედ 8, გრძელდება
სანამ ზედიზედ აღწევს 0.
ასე რომ, რამდენი ფართები არ გვჭირდება ბეჭდვა, რომ ყველაზე ზედიზედ?
ჩვენ იბეჭდება შვიდი ფართები და ორი ჰეშები.
ასე, რომ ნომერი ფართები ჩვენ გვინდა არის ზედიზედ რომ იყო მინუს 1.
>> თუ ზევით ზედიზედ 8, 8 minus 1 გვაძლევს შვიდი ფართები.
მაშინ ჩვენ გვაქვს ციკლი, რომელიც ბეჭდვა ყოველ სივრცეში ერთ დროს.
ასე რომ, როდესაც ფართები 7, ამ loop შვიდჯერ, ბეჭდვა
შვიდი ინდივიდუალური ფართები.
>> ასე რომ, ახლა ჩვენ უნდა ამობეჭდოთ ეს ჰეშები დასასრულს პირამიდის.
ასე რომ აქ, ჩვენ უნდა გამოვთვალოთ რაოდენობა ჰეშები.
ჩვენ ვხედავთ, რომ ვაკეთებთ სიმაღლე მინუს row plus 2.
ასე რომ, როგორ მივიღებთ, რომ?
>> გახსოვდეთ, რომ ზედა პირამიდის არის რიგი 8, და სიმაღლე 8.
და ჩვენ კიდევ იბეჭდება ორი ჰეშები.
ასე რომ, სულ ცოტა, 8 მინუს 8 პლუს 2 გვაძლევს სწორი პასუხი.
და შემდეგ განიხილავს ბოლოში პირამიდის, row 1.
სიმაღლე მინუს row მოგვცემს 7 და მაშინ plus 2 გვაძლევს ცხრა ჰეშები,
სწორედ რაოდენობა საქართველოს ჰეშები რომ ჩვენ დაბეჭდილი.
ასე რომ, ეს არის ფორმულა, ჩვენ გვინდა გამოიყენოთ გამოვთვალოთ ნომერი
ჰეშები თითოეული მწკრივი.
>> გამოყენებით, რომ ნომერი, ან, ჩვენ მაშინ კიდევ ერთი მარყუჟის, ძალიან გავს
მარყუჟი, რომ ჩვენ გამოიყენება ფართები, რომ iterates ნომერი ჰეშები ჯერ
ბეჭდვის ერთი hash ყოველ ჯერზე.
ზედა row, რომ ყველაფერს ბეჭდვა ორი ჰეშები.
ბოლოში row, რომ ყველაფერს ბეჭდვა ცხრა ჰეშები.
და ერთმანეთს row ბეჭდვა ყველა ნომერი ჰეშები შორის.
>> და შემდეგ ბოლომდე, ჩვენ უნდა ბეჭდვა ჩვენი ახალი ხაზი წასვლა მომდევნო
ზედიზედ პირამიდის.
და ბოლოს, ჩვენ უნდა ბეჭდვა ახალი ხაზი ბოლოს ზედიზედ, რათა
გაგრძელდება მომდევნო row პირამიდის.
და ბოლოს, ჩვენი პროგრამა, ჩვენ დაბრუნებას 0.
>> როგორც პოსტი pset Spec, დაბრუნების 0 არ არის მკაცრად აუცილებელია.
მაგრამ ეს იმას ნიშნავდეს, რომ მთავარი კეთდება.
ჩემი სახელი არის რობ, და ეს იყო Mario.
>> [მუსიკის დაკვრა]