[Powered by Google Translate] დევიდ ჯ Malan: ყველა უფლება.
ეს არის CS50, და ეს არის ბოლომდე კვირაში ორი.
თუ თქვენ მოველით, რომ იყოს მშიერი გარშემო ამ დროს ხვალ, ვიცი, რომ ჩვენ ვაპირებთ
მოიწვიოს როგორც მცირე ჯგუფი ხვალ, ხუთშაბათი, 1:15 PM.
არსებობს ამ URL აქ თუ გსურთ Rsvp.
ფართი არის შეზღუდული, ასე რომ გთხოვთ აპატიებს თუ ფორმა შევსებული მიერ დროის
შეავსოთ ამ გარეთ.
კიდევ ერთი URL თუმცა ეს შეიძლება ინტერესთა ეს.
>> ასე რომ, მხოლოდ თვეში, რა თქმა უნდა, იქნება ხელმისაწვდომი
ყველა უფრო ფართოდ მეშვეობით EDX გავლით რომელიც FOLKS ინტერნეტში იქნება
შეუძლია დაიცვას გასწვრივ, ჩაერთონ თქმა საკმაოდ აქტიურად, ფაქტობრივად.
ისინი გექნებათ გამოყენებით CS50 ელექტრო და CS50 განიხილოს და ყველაზე მეტად
სხვადასხვა პროგრამული ინსტრუმენტების, რომ ჩვენ უკვე იყენებს ამ სემესტრში.
და ერთ ინიციატივების მინდა იღებს როგორც ექსპერიმენტი ამ წელიწადში
, ვნახოთ, თუ რაოდენ ბევრის კონტენტი შეგვიძლია გარდაქმნა სხვა ლაპარაკობენ და
წერილობითი ენებზე.
ასე რომ, თუ თქვენ შეიძლება ჰქონდეს ინტერესი ამ პროექტში მონაწილეობდა, რომლის დროსაც
ჩვენ ვუზრუნველყოფთ English ტრანსკრიპცია და სუბტიტრები კურსის
ლექციები და შორტები და სემინარები და სექციები და მოსწონს -
თუ საუბარი თავისუფლად ან ჩაწერის თავისუფლად ზოგიერთი სხვა ენაზე, გვინდა
მიყვარს აწარმოონ თქვენ ამ პროექტში, რომლის დროსაც თქვენ იღებს ერთი ან მეტი
ვიდეოები, თარგმნა მათთვის ენა იცნობენ.
გადმოგცეთ გრძნობა ინტერფეისი, არსებობს ამ ვებ დაფუძნებული ინტერფეისი
რომ ჩვენ უნდა გამოყენებით რომ შევქმნით არსებითად UI მოსწონს ეს.
ეს იყო ჩემთვის სწავლების ზოგიერთი ჰელოუინი წინ.
და მარჯვენა მხარეს შავ შემდეგი ამ დროს შტამპები,
თქვენ ნახავთ სხვადასხვა რამ, რომ გამოვიდა ჩემი პირით, რომ დღეს.
და მერე ქვემოთ, მასში თქვენ გექნებათ გარდაქმნა ზოგიერთი სხვა ენაზე.
ზუსტად რა არის რუკების შორის, ამ შემთხვევაში, ინგლისური
და, ვთქვათ, ესპანური.
ასე რომ, რეალურად ძალიან მოსახერხებელი ინსტრუმენტი.
შეგიძლიათ გადახვევა და სწრაფი წინ ძალიან ადვილად ერთად კლავიშთა.
ასე რომ, თუ გსურთ, მონაწილეობა მიიღოს ამ ექსპერიმენტი და აქვს თქვენი სიტყვა
უნახავს და წაიკითხეს პოტენციურად ათასობით FOLKS out არსებობს, გთხოვთ გრძნობენ
უფასო მონაწილეობის.
>> ახლა ერთი სიტყვით kitten ორშაბათიდან, მცირეოდენ ჩვენ გაგზავნილი ზედმეტად
საშინელი გაგზავნა.
Do გააცნობიეროს, რომ როგორც ოფისში საათის ვარაუდობენ და როგორც სექციები ვარაუდობენ,
დიზაინი რა თქმა უნდა, ძალიან ბევრი რამ არ სტუდენტები თანამშრომლობს და
საუბარი მუშაობას მეშვეობით პრობლემა კომპლექტი და პრობლემები ერთად.
და რეალურად ხაზი უბრალოდ მოდის ქვემოთ, კიდევ ერთხელ, სამუშაო თქვენ საბოლოოდ
უნდა წარმოადგინოს უნდა იყოს თქვენი საკუთარი.
და ამიტომ, საკმაოდ პატიოსნად - ოფისის საათი, ეს სრულიად ნორმალურია -
ეს სრულიად უნდა მოსალოდნელია, თუნდაც - უნდა chatting ზოგიერთ
მეგობრები შემდეგი თქვენ.
თუ იგი ბრძოლა ზოგიერთი თემა, და თქვენ, როგორიცაა, OH, ასევე ნება
ჩემთვის გაძლევთ glimpse ზოგიერთი ხაზი კოდი, რომ დავწერე.
სწორედ ჯარიმა.
ეს მოხდება.
და ეს ძალიან ხელს, ვფიქრობ, ერთად პროცესში სწავლისა.
სად ხაზი, ერთხელ, იღებს გადმოკვეთა არის, როცა ხელმძღვანელი არის ერთგვარი tilted მეტი
აქ ძალიან ბევრი წამი ან წუთი რომ მართლაც ჰქონდეს მხოლოდ
იყო ბლოკის მოხსნა შესაძლებლობა თქვენი მეგობარი.
და რა თქმა უნდა, როდესაც რამ მისაღებად გაცვალეს ელექტრონული ფოსტის მეშვეობით და Dropbox და
მოსწონს, იქაც არის ხაზზე.
ასე რომ ყველა საშუალებით, კომფორტისთვის და გრძნობს წახალისება ესაუბროთ მეგობრები
და თანაკლასელები შესახებ psets და სხვა.
და მხოლოდ გააცნობიეროს, რომ ის, რაც თქვენ საბოლოოდ წარუდგინოს უნდა იყოს ნამდვილად
პროდუქტი თქვენი შექმნა და არა ვინმე სხვა.
>> ასე რომ, იგივე ვენების of Cuddly არსებები, თქვენ გელით
იცით ამ ბიჭს აქ.
ასე რომ, ეს horrifically გაკოცე ფილმისთვის წლის წინ.
ვინმეს აქ ჩანს Spaceballs?
ყველა უფლება.
ასე რომ კარგი ნომერი აქ.
ასე რომ, ეს არის ჩვენი შესანიშნავად აკადემიური გზა შემოღების დღეს საბოლოოდ
ცნება კრიპტოგრაფიის.
და ა.შ. ერთი domain კონკრეტული პრობლემებს pset 2, რომელიც მოვა
დაგვიანებით ხვალ, არის ჩაყვინთვის შევიდა სამყაროში კრიპტოგრაფიის, რომელიც
არის ხელოვნების encrypting ან scrambling ინფორმაციას.
და ეს საბოლოო ჯამში ეხება სამყაროს უსაფრთხოებას.
>> ახლა უსაფრთხოების საუკეთესო us მოდის სახით საკმაოდ mundane მექანიზმები.
ყველა ჩვენგანს აქვს სახელისა და პაროლის.
და ყველას უნდა გვქონდეს ძალიან ცუდი სახელისა და პაროლის, სავარაუდოდ.
თუ თქვენი პაროლი არის იგივე სხვადასხვა საიტებზე, რომ ალბათ არ
საუკეთესო იდეა, როგორც ჩვენ განვიხილავთ მიმართ სემესტრის ბოლოს.
თუ თქვენი პაროლი აწერია შენიშვნათა - არ ხუმრობა - თქვენი
მონიტორი, რომ ძალიან არ არის აუცილებლად საუკეთესო დიზაინის მაგრამ საკმაოდ გავრცელებული
მოვლენაა.
და თუ თქვენ არ იყენებთ კრიპტოგრაფიის დაშიფვრა თქვენი პაროლები, ისინი
განსაკუთრებით დაუცველი.
ასე რომ, თუ თქვენ ფიქრობთ, თქვენ მიმდინარეობს სუპერ ჭკვიანი მიერ მქონე ფარული Word
დოკუმენტურად სადმე თქვენს ხისტ დისკზე, რომელსაც აქვს ყველა თქვენი პაროლები, მაგრამ
ეს საქაღალდეში, რომ არავინ აპირებს გამოიყურებოდეს წელს, რომ ძალიან არ არის ძალიან
უსაფრთხო მექანიზმი.
და მერე რა pset 2 გააცნობს არის ამ ხელოვნებას კრიპტოგრაფიის და
scrambling ინფორმაცია ისე, რომ რამ, როგორიცაა პაროლები
ყველა უფრო უსაფრთხო.
რათა მოტივაცია სწორედ ამ რეალურ სამყაროს პრობლემა ძალიან არასამთავრობო რეალურ სამყაროში
სცენარი, ნება მომეცით წარმოგიდგინოთ ერთი ჩვენი საყვარელი კლიპები აქ ამ
ფილმის, Spaceballs.
>> [ვიდეო აღწარმოების]
-მუზარადი, თქვენ ჯოჯოხეთის განსახიერება, რა ხდება?
რას აკეთებთ რომ ჩემი ქალიშვილი?
-ნებართვა ჩემთვის წარმოგიდგინოთ ბრწყინვალე ახალგაზრდა პლასტიკური ქირურგი, დოქტორი ფილიპ
Schlotkin, უდიდესი ცხვირი სამუშაო ადამიანი მთელი
სამყაროს და ბევერლი.
-შენი highness.
-Nose სამსახური?
მე არ მესმის.
ის უკვე ჰქონდა ცხვირი სამუშაო.
ეს იყო Sweet 16 დღემდე.
-არა, ეს არ არის რაც ფიქრობთ.
ეს ბევრად, ბევრად უარესი.
თუ არ მომეცი კომბინაცია, რათა საჰაერო ფარი, დოქტორ Schlotkin იქნება
მისცეს თქვენი ქალიშვილი უკან თავის ძველ ცხვირი.
-არა!
სად კიდევ რომ?
-ყველა უფლება.
გეტყვით.
-არა, Daddy, არ.
თქვენ უნდა არა.
-You're უფლება, ჩემო.
მე მენატრება შენი ახალი ცხვირი.
მაგრამ მე არ ვუთხრა კომბინაცია არ აქვს მნიშვნელობა რა.
-ძალიან კარგად.
დოქტორ Schlotkin, თქვენი ყველაზე ცუდი.
-ჩემი სიამოვნება.
-არა!
დაველოდოთ, დაველოდოთ.
გეტყვით.
-ვიცოდი ეს იმუშავებს.
ყველა უფლება, მისცეს მას ჩემთვის.
-კომბინაციის ერთი.
-One.
ორი.
სამი
სამი.
ოთხი.
-ხუთი
-ხუთი.
-So კომბინაციის ერთი, ორი, სამი, ოთხი, ხუთი.
სწორედ stupidest კომბინაცია მე ოდესმე მოისმინა ჩემს ცხოვრებაში.
სწორედ ამგვარი რამ იდიოტი იქნებოდა მისი ბარგის.
-გმადლობთ, თქვენი highness.
-რა ვქნათ?
-I გამორთულია კედელი.
-არა, თქვენ არ.
თქვენ გამორთულია მთელი ფილმის.
-I უნდა დაპრესილი არასწორი ღილაკს.
-Well, დაუსვან მას უკან.
განათავსეთ ფილმის უკან.
-დიახ, სერ.
დიახ, სერ.
-მოდი, ერნა.
მოდი, Gretchen.
რა თქმა უნდა, იცით, მე მაინც აქვს, რომ ანგარიშსწორება თქვენ ამ.
-Well, საერთოდ მუშაობს იგი?
სად არის კარიბჭე?
-ის მუშაობდა, სერ.
ჩვენ გვყავს მოედანზე.
-დიდი.
ახლა ჩვენ შეუძლია მიიღოს ყველა ბოლო სუნთქვას სუფთა ჰაერი საწყისი პლანეტის Druidia.
რა კომბინაცია?
-ერთი, ორი, სამი, ოთხი, ხუთი.
-ერთი, ორი, სამი, ოთხი, ხუთი?
-დიახ.
-სწორედ საოცარი.
მაქვს იგივე ერთობლიობა ჩემი ბარგი.
მომზადება Spaceball 1 დაუყოვნებლივ გამგზავრების.
-დიახ, სერ.
და შეცვალოს ერთობლიობა ჩემი ბარგი.
-Ow!
[END ვიდეო აღწარმოების]
>> დევიდ ჯ Malan: საოცარი ფილმი თქვენ უნდა ყველა ვხედავთ.
ამიტომ კონტექსტში აქ არის, რომ არასაიმედო მონაცემები მოდის საშუალება
გაშიფრავს ეს და scramble ეს.
და ამიტომ ეს, მაგალითად, არის მაგალითი დაშიფრული გაგზავნა.
ეს რეალურად ამბობს რაღაც ინგლისურ ენაზე.
მაგრამ ეს აშკარად არ მთლიანად აშკარაა.
და ჩვენ მოდის სრული წრე დღეს აჯავრებენ გარდა რა ამ საიდუმლო
გაგზავნა აქ არის.
მაგრამ რეალურ ცხოვრებაში კომპიუტერების, რამ არც კი ჰგავს მათ, შესაძლოა,
ინგლისური ფრაზები.
მაგალითად, ეს არის ის, რაც თქვენ შეიძლება on სტანდარტული Linux ან Mac ან
Unix კომპიუტერი ფაილი, რომელიც იყო ერთხელ მოუწოდა დაგავიწყდათ ფაილი.
დღესდღეობით, მისთვის გადავიდა სხვა ადგილებში.
მაგრამ თუ გადავხედავთ სწორი ადგილი სისტემა, თქვენ ნახავთ არა მარტო თქვენი
სახელი ან რომ სხვა ადამიანების სისტემა, მაგრამ თქვენ ნახავთ
დაშიფრული ვერსია მათი პაროლი.
მართლაც, სიტყვის საძვალე იქ ვარაუდობს, რომ შემდეგი პერსონალი არის დაშიფრული.
და ამ სერიაში ერთი შეხედვით შემთხვევითი წერილები და პერსონაჟები და ნომრები და
ა.შ. შეიძლება გაშიფრავთ მხოლოდ ზოგადად იცის ზოგიერთი საიდუმლო -
საიდუმლო სიტყვა, ფარული ნომერი.
და ა.შ. რა თქმა უნდა, ხელოვნების კრიპტოგრაფიის საბოლოოდ boils ქვემოთ ენდობა ზოგიერთი
დალაგება და რაღაცის ცოდნა, რომ ვინმე არ.
ჩვენ შეისწავლონ ეს ცოტა უფრო დეტალურად დღესაც და pset მოვა.
>> და ახლა სიტყვა უღელტეხილზე / Fail.
ასე რომ განსაკუთრებით, როგორც ზოგიერთი თქვენგანი არ dived შევიდა pset 1, ელექტრო მოწყობილობების, და
ძალიან ახალი მსოფლიო თავს, მიხვდა, რომ იმედგაცრუებები და
დაბნეულობა და მხოლოდ ტექნიკური სირთულეების უნდა ველოდოთ.
განსაკუთრებით პირველი pset, სადაც უბრალოდ იმდენად ახალი, უბრალოდ მიღების
იცნობს ls და CD და ყველა ამ arcane ბრძანებები ახალ გარემოში.
და ეს ცალკე ფაქტობრივი მასალა და პროგრამირების თავად.
ასე რომ გააცნობიეროს, ძალიან, რომ არსებობს ნამდვილად საათებში, რომ არსებობს, როგორც
მხარდაჭერა სტრუქტურა.
სექცია იწყება ამ მოდის კვირა.
მაგრამ რაც მთავარია, თუ თქვენ შეგრძნება მხოლოდ, რომ ეს არ არის
მსოფლიოს თქვენთვის, გააცნობიეროს, რომ ის მართლაც ამჯამად მხოლოდ დრო სჭირდება.
და იყო არა ეს შესაძლებლობა წლის წინ ჩემთვის აღების კლასის
მიღება / ვერ, პატიოსნად, მე არასოდეს იქნებოდა კიდევ დადგენილი ფეხით საკლასო ოთახში.
თქვენ შეგიძლიათ შეცვალოთ ეს წლამდე, ვთქვათ, მეხუთე ორშაბათს კურსის.
ასე რომ, თუ თქვენ ზღვარზე ახლა, გააცნობიეროს, რომ ვიდრე უფროსი შევიდა ზოგიერთი სხვა
წყლების საერთოდ, რა თქმა უნდა განიხილოს მხოლოდ იცვლება მიღება / ჩავარდება.
ისევ და ისევ, იქ ნამდვილად არ ამ კულტურის აქ ჰარვარდის აღების რამ
მიღება / ვერ წლიდან ყველას ნამდვილად სურს მიაღწიოს ან overachieve.
მაგრამ გულწრფელად ვამბობ, რომ ეს არის შესანიშნავი გზა ცდილობს რაღაც, რომ შეიძლება არ
იყოს ნაცნობი თქვენ.
და თქვენ დასრულდება up აკეთებს ხშირ შემთხვევაში საკმაოდ ჯარიმა, ალბათ
ბევრი თქვენი სიურპრიზი.
და უფრო კონკრეტული ვადები, რას ვფიქრობ გაივლის / ვერ აკეთებს საერთოდ,
განსაკუთრებით, როგორც თქვენ ალბათ გამოცდილი ერთად pset 0, თუ თქვენ დააყენა
წელს 10 საათი, 15 საათი, 25 საათი შევიდა ზოგიერთი pset - და თქვენ მხოლოდ ამ banging
თქვენი უფროსი წინააღმდეგ კედელი,
და ეს მიღების super გვიან ღამით,
მაგრამ თქვენ გადაღებული pset მოსწონს 90% გზა,
თქვენ იცით უბრალოდ ვერ გაერკვნენ ერთი რამ -
მიღება / ვერ იღებს ნამდვილად პირას გამორთვა კლასის მოსწონს, სადაც თქვენ შეგიძლიათ დაალაგოთ
საქართველოს სიხარულით ამბობენ okay, მე ვიცი, რომ ეს არ არის სრულყოფილი.
მაგრამ მე ვმუშაობდი ჩემი ass off ამ.
მე საკმაოდ კმაყოფილი სადაც ეს დასრულდა.
და რომ შეხვდება მოლოდინი უღელტეხილზე / ჩავარდება.
ასე რომ შევინარჩუნოთ, რომ გონება.
>> ყველა უფლება.
ასე რომ იმ, ვინც არ იბრძვის გამოიყენოთ ჰარვარდის უნივერსიტეტი Wi-Fi ვიცი
რომ არსებობს CS50 SSID, Wi-Fi კავშირი მცურავი გარშემო, რომ თქვენ
შეიძლება უკეთესი გისურვებთ ამისთვის.
ეს პატარა ირონიული, რომ დაგავიწყდათ ამ - თუ სურს, რომ შეეცდებიან
დამაკავშირებელი ამ უკეთესი სიჩქარეზე და გვაცნობოთ თუ უკეთესი არ -
არის ერთი, ორი, სამი, ოთხი, ხუთი, ყველა გზა რვა რადგან რვა არის
უფრო უსაფრთხო, ვიდრე ხუთი.
ასე რომ, თუ თქვენ უნდა Wi-Fi დაგავიწყდათ, დაუკავშირდეთ CS50 wirelessly აქ.
ერთი, ორი, სამი, ოთხი, ხუთი, ექვსი, შვიდი, რვა.
და პოსტ on CS50 იმსჯელებს თუ გაგიჩნდებათ რაიმე წყვეტილი კავშირი საკითხები,
და ჩვენ ნება ძალებს, უნდა იცოდეს, ამ სივრცეში.
>> ყველა უფლება.
ამიტომ სწრაფი teaser, განსაკუთრებით იმ თქვენ, რომლებიც გულშემატკივართა ბიჭები ან გოგონების
ყველაფერი Apple.
რა მე გათხრილი მდე რამდენიმე წლის იყო ამ ფაილის აქ, ilock.c, მხოლოდ
სახის უფრო კონკრეტული და უფრო რთული ზოგიერთი უფრო საბაზისო C
პროგრამების ჩვენ წერილობით.
ამიტომ გავხსენი ეს ფაილი, ilock.c.
ეს შესაძლებელი ლექციები გვერდზე დღეს.
On მარცხენა მხარეს, თქვენ ხედავთ გრძელ სიას ფუნქციები.
ასე რომ თანამემამულე ვინ დაწერა ეს დაწერა up ბევრი ფუნქციები,
მეტი, ვიდრე უბრალოდ ძირითადი.
მან გამოიყენა მთელი bunch ბიბლიოთეკების აქ.
და თუ ჩვენ დავიწყებთ სენსორული მეშვეობით, რაც ამ ფაქტობრივად არის ძალიან
პირველი, მე მჯერა, ბზარი ამისთვის ორიგინალური iPhone.
როდესაც თქვენ სურდა jailbreak ორიგინალური iPhone, რაც იმას ნიშნავს, untether
იგი AT & T და ფაქტობრივად დააყენოთ სპეციალური პროგრამული მასზე და გავაკეთოთ რამ
რომ Apple არ სურს ხალხს უნდა გააკეთოს -
კარგად, ვიღაცამ აიღო დრო უნდა გაერკვნენ, თუ როგორ ზუსტად მათ შეეძლოთ გამოეყენებინათ
პროგრამული ხარვეზები, შეცდომები, შეცდომები, წელს Apple-ის პროგრამული უზრუნველყოფა.
და ამგვარად დაიბადა ilock.c.
რომ თუ თქვენ შედგენილი ეს კომპიუტერი და დამონტაჟებული მას გადატანა iPhone რომ
იყო დაკავშირებული თქვენს კომპიუტერში მეშვეობით, ვთქვათ, USB კაბელი, ეს მოგცემთ
ადმინისტრაციულ ან root პრივილეგიებით თქვენს iPhone და მოდით თქვენ აკეთებთ საკმაოდ ბევრი
რაც გაგიხარდებათ.
>> და ასე რომ უკვე ამ მომხიბლავი კატა და მაუსი თამაშის შორის Apple და
დანარჩენი მსოფლიო კერძოდ, როგორც ისინი, ისევე როგორც ბევრი კომპანია, ცდილობენ ჩაკეტვა
მათი პერსონალის ქვემოთ ასე რომ თქვენ შეგიძლიათ მხოლოდ შუაში იყო, რაც მათ განზრახული.
მაგრამ წყალობით ადამიანს მოსწონს ეს და მათი გაგება დაბალი დონის
დეტალები და, ამ შემთხვევაში, C პროგრამირების და ბევრი ნაცნობი აშენებს
რომ დავიწყეთ თამაში, თქვენ შეგიძლიათ რეალურად ბერკეტები
ტექნიკის წესით ხედავთ fit და არ ემთხვეოდეს ზოგიერთი კორპორატიული პირი.
ასე მაგალითად, მე არ ვიცი, რა ყველა ამ აკეთებს.
მაგრამ GetVersion ხმები საკმაოდ მარტივია.
და როგორც ჩანს, ეს ფუნქცია, რომ ეს ადამიანი წერს.
მიიღეთ გარკვეული რიცხვი, როგორც არგუმენტი, არ დააბრუნებს არაფერი, მაგრამ
როგორც ჩანს, მარყუჟის რეჟიმში ამისთვის loop აქ და თუ მდგომარეობა, თუ მდგომარეობა,
შესვენების და როგორღაც ეხება ვერსია ნომრები.
თუ ჩვენ გადახვევა Down -
მიუხედავად იმისა, რომ ბევრი ამ სიტყვებით ვაპირებთ იყოს ახალი და იქ
მთელი ბევრი ფუნქციები აქ ჩვენ მინახავს და შეიძლება არ ოდესმე ვხედავ მეტი
კურსი სემესტრის -
დასასრულს დღეს, იგი შემდეგნაირად იგივე წესების და ლოგიკა, რომ ჩვენ
თამაშში ჯერჯერობით.
ასე რომ, ეს არის ზედმეტად მოხუცი ბზარი თქვენი iPhone 3S ან 4S ან მალე 5S, ამ დღეებში,
მაგრამ ვიცით, რომ ეს ყველაფერი ძალიან გამომდინარეობს ამ მსოფლიოს, რომ ჩვენ
dived შევიდა.
>> მოდით შევხედოთ ცოტა უფრო მარტივი მაგალითი.
ეს ერთი, უბრალოდ მისაღებად warmed რაიმე სინტაქსი და ასევე ზოგიერთი სხვა მონაცემები
ტიპი რომ ჩვენ ვისაუბრეთ, მაგრამ არ ნამდვილად ჩანს C. ასე რომ, ეს
ფაილი სახელად positive1.c.
და თითო კომენტარები ზედა, ეს მხოლოდ მოითხოვს, რომ მომხმარებლის უზრუნველყოფენ
დადებითი რიცხვი.
ასე რომ მაგალითი do-ხოლო loop, რომელიც ლამაზი მომხმარებლის-ინტერაქტიული
პროგრამების სადაც თქვენ უნდა ვუთხრა მომხმარებელს რაღაც.
და თუ ისინი არ თანამშრომლობენ, თქვენ დაწეროთ მათ ან უარყოს მათი შეყვანის.
მაგალითია, მე აპირებს ხაზები 19 გზით 24 ცოტა ხნის როგორც მომხმარებელს აქვს
არ მომცა დადებითი რიცხვი.
ახლა ეს დეტალურად აქ on line 18, რატომ ვაცხადებ N ზემოთ ეს მთელი
looping შენება როგორც ეწინააღმდეგებოდა უფლება მომდევნო ხაზი 22, სადაც მე
რეალურად ზრუნვა მისაღებად N?
ჰო?
[INAUDIBLE]
>> დევიდ ჯ Malan: ჰო, ამიტომ ეს საკითხი ფარგლებს.
და ერისკაცად წარმოგვიდგება უფლებამოსილების ვადა, რას ფარგლებს ეხება?
ჰო?
[INAUDIBLE]
დევიდ ჯ Malan: იქნებ ცოტა louder?
დინამიკები 1: სად შეგიძლიათ კონკრეტული ცვლადი.
დევიდ ჯ Malan: Perfect.
სად შეგიძლიათ კონკრეტული ცვლადი.
და საერთოდ, უზენაესობის ცერის დღემდე არის, რომ ფარგლებს ზოგიერთი
ცვლადი განისაზღვრება უახლესი Curly braces რომ თქვენ ვხედავთ.
და ა.შ. ამ შემთხვევაში, თუ დაუშვა შეცდომა, გამოცხადების N on line 22,
რომ ხაზი იმუშავებს.
მინდა კიდევ int, და მე მისთვის შეიძლება შევიდა, რომ ცვლადი N სტრიქონში 22.
მაგრამ ხაზი კოდი, რომ ახლა არ ვიცი რა მე ვსაუბრობ?
ასე რომ 25 და თურმე 24, ასევე, რადგან ამ შემთხვევაში, მას ეკისრება გარეთ
of Curly braces.
ასე რომ მხოლოდ ცოტა უსიამოვნოა, მაგრამ ძალიან ადვილად მოგვარდება უბრალოდ გამოცხადების
ცვლადი გარეთ ფუნქცია თავად.
>> ახლა ვნახავთ, დღესვე შეგიძლიათ ერთი ნაბიჯი შემდგომი.
და თქვენ შეიძლება კი ცოტა ზარმაცი -
და ეს არ უნდა იყოს რეკომენდირებული, ზოგადად -
მაგრამ თქვენ შეიძლება კი ეზარება და ამით ცვლადი გლობალურად, ასე ვთქვათ, არ
შიგნით ფუნქცია, არ შიგნით მარყუჟი, მაგრამ ფაილი თავად გარეთ
ყველა ფუნქციების თქვენ წერილობითი, როგორც მე აქ ხაზი 15.
მაგრამ ეს ზოგადად frowned საფუძველზე.
მაგრამ გააცნობიეროს ეს გადაწყვეტა ხან სხვა პრობლემებს, როგორც ჩვენ გამოგიგზავნით
საბოლოოდ ვხედავთ.
ასე რომ ახლა, ჩვენ დავტოვებთ მას მოსწონს ეს.
მაგრამ ვნახოთ, შევძლებთ თუ გადაწერას ამ უბრალოდ უნდა დაიწყოს გამოხატავს საკუთარ თავს
ცოტა განსხვავებულად.
>> ასე რომ, ეს პროგრამა, უბრალოდ უნდა იყოს მკაფიო, არის positive1.
ნება მომეცით წავიდეთ წინ აქ და ჩემი ტერმინალის ფანჯარაში მიიღოს positive1, შეიყვანეთ.
კომპილაციისას okay.
მე ვაპირებ აწარმოებს positive1, დააჭიროთ.
მე მოვითხოვ რომ თქვენ მაძლევს დადებითი მთელი რიცხვი.
მე ვთქვა -1.
რომ არ მუშაობდა.
0, 99, რომელიც, როგორც ჩანს მუშაობა.
იქნებ არ საუკეთესო მკაცრი გამოცდა.
მაგრამ მაინც კარგია, საღი აზრის გამშვები რომ ჩვენ სწორ გზაზე.
ახლა ნება მომეცით წავიდეთ წინ და გახსნა ვერსია ორი ამ.
და რით განსხვავდება უკვე?
იგი ახორციელებს იგივე.
ახლა კი რა jumping, როგორც ნათლად სხვადასხვა ამ დროს?
ჰო, ისე ამ bool მწვანე.
Gedit უკვე მონიშნულია მწვანე ამ სიტყვით ცნობილია როგორც bool,
რაც მონაცემები ტიპის.
იგი არ მოდის აგებული ყველა ვერსიები C. თქვენ უნდა შეიცავდეს
კონკრეტული ბიბლიოთეკაში.
ჩვენს შემთხვევაში, მე მოიცავდა CS50 ბიბლიოთეკაში ისე, რომ ჩვენ
ხელი მიუწვდება bool.
მაგრამ ხაზი 18, ჩვენ, როგორც ჩანს, აქვს ლოგიკური მნიშვნელობა მოუწოდა მადლობელი.
ასე რომ შეეძლო უწოდა არაფერი.
მაგრამ მე მას მადლობას მხოლოდ იმიტომ, რომ სახის გადმოცემა გარკვეული სემანტიკური მნიშვნელობა.
ასე რომ თავდაპირველად on line 18, მე აშკარად არ მადლობელი რადგან
ლოგიკური ღირებულება მადლობელი ინიციალიზდება მცდარია, შეესაბამება 18.
და შემდეგ, როგორც ჩანს, რაც მე ვაკეთებ აქ ხაზები 21 გზით 23 არის მე უბრალოდ
სახის გადაწერილი ჩემი ლოგიკა.
ასე რომ არ ფუნქციურად განსხვავებული.
მაგრამ ხაზი 22 ახლა, მე შეამოწმოს თუ int მომხმარებლის უზრუნველყო მეტია
0, მაშინ მე უბრალოდ შეცვლის ღირებულება მადლობას უხდის ჭეშმარიტი.
და რატომაა ასე?
რადგან ხაზი 25, სავარაუდოდ, მე ვაპირებ შეამოწმოს მდგომარეობა.
გააკეთეთ მარყუჟი ხოლო მადლობელი სიცრუეა.
>> ამიტომ მე ვთავაზობ, ამ როგორც ალტერნატივა ვერსია ერთი იმიტომ რომ სულ ცოტა
ცოტა უფრო ინტუიტიური, ალბათ.
ეს ცოტა უფრო საფუძვლიანი ინგლისურ ენაზე.
ასე რომ შემდეგი, ხოლო თქვენ არ მადლობელი ან ხოლო მადლობელი სიცრუეა.
და ამ დროს, ძალიან, მე აშკარად არ მაინტერესებს უნდა გვახსოვდეს, რა მომხმარებლის აკრეფილი
, რადგან გაფრთხილების არ ცვლადი n.
ასე რომ, რეალურად, მე -
პატარა თეთრი ტყუილი არსებობს.
ფუნქციურად პროგრამის ოდნავ განსხვავებული ერთხელ მივიღებთ, რათა ბოლოში
რადგან მე არ დამახსოვრების რა N არის.
მაგრამ მსურდა დემონსტრირება აქაც რომ მიუხედავად იმისა, რომ ჩვენ ვნახეთ GetInt და
GetString გამოიყენება on მარჯვენა მხარეს თანაბარი ნიშანი ჯერჯერობით, ისე, რომ
ჩვენ გვახსოვს ღირებულება, ტექნიკურად, ეს არ არის მკაცრად აუცილებელია.
თუ სხვადსხვა მიზეზის გამო უბრალოდ არ მაინტერესებს გადარჩენა ღირებულება, უბრალოდ მინდა
შესამოწმებლად ღირებულება შეამჩნევთ, რომ ჩვენ შეგვიძლია უბრალოდ წერენ ეს GetInt ღია
PAREN, მჭიდრო PAREN.
რომ ფუნქციის დაბრუნებას აპირებს ღირებულება, როგორც ჩვენ ვამბობდით.
იგი აპირებს მოგცემთ უკან int.
და ასე თუ ფსიქიკურად ვფიქრობ ამ ხდება, როდესაც მე აკრიფოთ 99, GetInt
დააბრუნებს ნომერი 99.
და ასე კონცეპტუალურად, ეს თითქოს ჩემი კოდი იყო რეალურად ამ.
ასე რომ, თუ 99 მართლაც მეტია 0, მაშინ მადლობელი ხდება.
შემდეგ ხაზი 25 აცნობიერებს Ooh, ჩვენ გავაკეთეთ, რადგან მე ახლა მადლობელი.
და სტრიქონში 26, ჩვენ უბრალოდ ამბობენ, მადლობა დადებითი მთელი რიცხვი, რაც არ
მოხდა იყოს.
>> ახლა მოდით უმნიშვნელო სინტაქსური შაქარი აქ, ასე ვთქვათ.
მოდით ვნახოთ, თუ შევძლებთ გაწმენდა ამ ხაზის 25 ამ მესამე და საბოლოო ეწინააღმდეგება
წელს positive3.
ასე რომ შეამჩნია განსხვავება მხოლოდ ახლა რა ხაზი კოდი?
ჰო, ასე 25.
და ჩვენ ნამდვილად არ მინახავს ეს ხრიკი მხოლოდ ამჟამად.
მაგრამ ჩვენ მოვაწერეთ ვხედავ ძახილის წერტილი ორშაბათს, რომელიც აღნიშნავს, თუ რა?
ასე რომ არა, ან უარყოფა.
ასე რომ მიიღოს ლოგიკური მნიშვნელობა და Flip მისი ღირებულება.
True ხდება ყალბი.
ყალბი ხდება.
ასე რომ, ეს, მინდა შესთავაზოს, არის კიდევ უფრო ინტუიციური of გზა
წერა კოდი, რადგან მე მაინც ინიციალიზაცია მადლობას უხდის ყალბი.
მე მაინც გავაკეთებ შემდეგ.
მე მითითებული მადლობას უხდის ჭეშმარიტი, როცა დრო მოდის.
მაგრამ ახლა შეგიძლიათ ნამდვილად უბრალოდ თარგმნოს ეს კოდი სიტყვიერი მარცხნიდან მარჯვნივ,
ხოლო არ მადლობელი.
რადგან bang, ან ძახილის წერტილი, ნიშნავს ცნება არ, ასე ხოლო
არ მადლობელი.
>> ასე რომ კიდევ ერთხელ, ჩვენ არ გააცნო ნებისმიერი ახალი კონცეფციების თავისთავად.
ჩვენ ვისაუბრეთ Booleans უკან, როდესაც ჩვენ ითამაშა, რომელზეც ნაკაწრი.
მაგრამ რეალიზება ახლა შეგვიძლია დავიწყო წერა ჩვენი კოდი
ბევრი სხვადასხვა გზა.
ამიტომ განსაკუთრებით pset1, თუ თქვენ სახის ცდილობს გაერკვნენ გზა
წერენ ზოგიერთი პროგრამა, შანსი თქვენ გისურვებთ რადგან იქნება ნებისმიერი
პუნქტების გადაწყვეტილებები, რომ თქვენ შეიძლება მოხდეს საფუძველზე.
მაგალითად, ეს მხოლოდ სამი კი მარტივი პროგრამების.
ყველა უფლება.
და ახლა გავიხსენოთ ორშაბათს, ჩვენ დაუტოვებიათ ამ აღვნიშნავთ დაბრუნების ღირებულებებს.
ასე რომ ძალიან პირველად, ჩვენ წერდა პროგრამა, რომელიც ჯერ არ აქვს მხოლოდ ძირითადი,
მას ასევე გააჩნია საკუთარი საბაჟო ფუნქცია რომ დავწერე აქ.
ასე რომ ხაზის მეშვეობით 31 34, მე განხორციელებული კუბი ფუნქცია.
ეს არ არის კომპლექსი.
უბრალოდ ჯერ ჯერ, ამ შემთხვევაში.
მაგრამ რა მნიშვნელოვანია ამის შესახებ არის ის, რომ მე აღების შეყვანის სახით და
მე დაბრუნების გამომავალი სახით ჯერ ჯერ.
>> ახლა მაქვს უნარი, ჰგავს მე ერთად printf მარტო დარეკვა
ამ ფუნქციის დარეკვით კუბი ფუნქცია.
და კუბი ფუნქცია იღებს გარკვეულ შეყვანის.
და კუბი ფუნქცია დააბრუნებს ზოგიერთი გამომუშავება.
და ა.შ. პირიქით, printf უბრალოდ გააკეთა რაღაც.
ეს არ დაუბრუნებია არაფერი რომ ჩვენ ზრუნავდა - მიუხედავად იმისა, რომ, როგორც
განზე, ის არ დაბრუნდნენ ღირებულება.
თქვენ უბრალოდ ზოგადად იგნორირება მოვახდინოთ.
Printf უბრალოდ გააკეთა რაღაც.
მას ჰქონდა გვერდითი ეფექტი დაბეჭდვის რომ ეკრანზე.
ამის საპირისპიროდ, ჩვენ გვყავს კუბი ფუნქცია, რომელიც
რეალურად ბრუნდება რაღაც.
>> ასე რომ, ეს არის ზოგადად -
მათთვის, ვინც იცნობს ამ, ეს საკმაოდ მარტივია იდეა.
მაგრამ მათთვის ნაკლებად იცნობს ამ იდეას გადადის საშუალებებით და მიღების
უკან შედეგები, მოდით ვცდილობთ უბრალოდ რაღაც სუპერ მარტივი.
არის ვინმე კომფორტული ახლოვდება სცენაზე მოკლედ?
თქვენ უნდა იყოს კომფორტულად კამერა თქვენ, ისევე.
Yeah.
Okay, რა გქვია?
KEN: კენ.
დევიდ ჯ Malan: კენ.
ყველა უფლება, კენ.
Come on up.
ამიტომ კენ იქნება ფუნქცია ჯიშები აქ.
და მოდით წავიდეთ წინ და ამის გაკეთება.
მოდით კიდევ პატარა ლამაზი.
კარგია თქვენთან შეხვედრა.
კეთილი იყოს ცენტრი ეტაპზე.
ყველა უფლება.
მოდით მოხვდა ამ ღილაკს აქ.
ყველა უფლება.
ასე რომ აქ თქვენ გაქვთ თანამედროვე chalkboard.
და რა ვარ არის მთავარი ფუნქცია, მაგალითად.
და მე არ მაქვს iPad ჩემი მხრივ.
მე ნამდვილად არ ახსოვს, თუ როგორ უნდა - კარგად, ფაქტობრივად, ვერ ვიტყვი, რომ.
მე ნამდვილად არ აქვს კარგი ხელწერა.
და ა.შ. ამიტომ, მინდა ბეჭდვა რაღაც ეკრანზე ჩემთვის.
>> ამიტომ მე, როგორც ძირითადი პროგრამა.
და ვაპირებ გაქვთ ამბობენ, რომ ეს წერილობით ეს ჩემი ქათამი ნაკაწრი და
მაშინ ავლით თქვენ შეყვანის.
ასე რომ, როგორც სულელური თუმცა ეს exercise არის, ცნება ფუნქციები და მოუწოდებენ
ფუნქცია და დაბრუნების ფუნქცია მართლაც boils ქვემოთ ეს.
მე ვარ მთავარი.
მე ახლახან წერილობითი printf ("რაღაც") ეკრანზე.
მე გაშვებული ამ პროგრამის.
და როგორც კი printf იღებს მოუწოდა, ის იღებს ერთ არგუმენტს - ან ერთი პარამეტრი,
ზოგჯერ -
შორის ორმაგი შეთავაზებები.
აქ არის ის, რომ არგუმენტი.
მე გავლით მას კენ.
ახლა ის არის შავი ყუთი წერილობითი გარკვეული რაოდენობის წლის წინ, რომ აშკარად
მხოლოდ იცის როგორ ბეჭდვა რამ ეკრანზე.
>> ასე რომ, შეასრულოს.
ეს არ არის ცუდი.
ასე რომ, ძალიან კარგი.
ახლა კენ კეთდება შესრულებაში.
ამჯამად მან უნდა ჩააბაროს ჩემთან არაფერი უკან?
ასე არ არის, რომ ჩვენ ვნახეთ დღემდე.
ერთხელ, printf ამჯამად რეალურად დაბრუნებას ნომერი.
მაგრამ ჩვენ ვაპირებთ იგნორირება, რომ ახლა, რადგან ჩვენ არასოდეს გამოუყენებია ეს.
ასე რომ ეს კენ.
და ა.შ. ახლა მთავარ ბრუნდება, რათა შესრულდეს -
მთავარ იღებს კონტროლის პროგრამა ისევ იმიტომ, რომ ხაზი კოდი,
printf, კეთდება შესრულებაში.
და ჩვენ მივდივართ ჩვენი გზით შესრულებაში რასაც სხვა ხაზების არსებობს.
>> ყველა უფლება.
ახლა მოდით ვცდილობთ ოდნავ განსხვავებული მაგალითი.
და ამ დროს აქ, მოდით პირველ გარკვევას ეკრანზე აქ.
და ამ დროს, ჩვენ ყველაფერს გავაკეთებთ cubing ფუნქცია.
მაგრამ ამ დროს, მე მოველი გამონატანის მნიშვნელობა.
მოდით წავიდეთ წინ და ამის გაკეთება.
ახლა მაქვს ხაზი კოდი, რომ ამბობს x = კუბი (x).
ასე რომ რეალურად let's -
ხაზი კოდი, გაწვევა, ასე გამოიყურება.
x = კუბი (x).
მაშ როგორ არის ამ იმუშავებს?
მოდით წავიდეთ წინ და გაძლევთ თეთრი ეკრანზე ერთხელ.
და ვაპირებ დაწერა არის ქვემოთ ღირებულება x, რომელიც ამ ეტაპზე წელს
ახლა ხდება უნდა, ვთქვათ, 2, შენარჩუნება ეს მარტივი.
ასე რომ არ წერია ქვევით ნაჭერი ქაღალდი ღირებულება 2,
რაც ჩემი ღირებულების x.
მე გადასცემს მას კენ.
KEN: მე მხოლოდ წერენ პასუხი?
დევიდ ჯ Malan: ჰო, მოდით უბრალოდ წერენ პასუხი.
Okay.
და ახლა მას აქვს დაბრუნებას ჩემთვის რაღაც.
ასე -
სრულყოფილი.
Nice segue.
>> ახლა იგი ხელში ჩემთვის უკან ღირებულება 8, ამ შემთხვევაში.
და რა შუაში იყო?
ისე, რეალურად, ვნახოთ.
მიიღეთ ეს უფლება.
რა ვარ მე გაკეთებას აპირებს იგი?
ახლა მე ვაპირებ ამ ღირებულების და ფაქტობრივად ჩაწეროთ იგი იმ
ამავე ბიტი მეხსიერებაში.
მაგრამ ცნობა, მე სახის იბრძოდა აქ.
მე პატარა დაბნეული რადგან სად მაქვს რეალურად წერენ ღირებულება x?
რადგან ის, რაც მე უბრალოდ გაკეთდეს ფიზიკურად მხრივ კენ ნაჭერი ქაღალდი
რომ ჰქონდა ღირებულება 2, რომელიც x.
მართლაც, რომ ზუსტად რა ხდება.
გამოდის, რომ როცა რეკავთ ფუნქცია და კორიდორი არგუმენტი
როგორც "Hello World" ან თქვენ კორიდორი არგუმენტი მოსწონს 2, ზოგადად, თქვენ
გადადის ასლი, რომ არგუმენტი.
და ა.შ. როგორც მე დაწერა ქვემოთ რიცხვი 2 აქ და გადასცეს იგი კენ; რომ უნდა
ნიშნავს იმას, რომ კიდევ მაქვს ასლი ღირებულება 2 სადღაც.
იმის გამო, რომ მართლაც, ახლა რომ მე მიღებული თავში ღირებულება 8, მე უნდა წავიდეთ უკან
RAM და რეალურად დაწერეთ 8, სადაც მე ერთხელ ჰქონდა ნომერი 2.
>> ასე რომ ვიზუალურად გახსოვთ ეს ცნება გადადის სიტყვასიტყვით
ასლი ღირებულება.
კენ აკეთებს რამ, ხელები ჩემს უკან რაღაც - ამ შემთხვევაში,
ღირებულება მოსწონს 8.
და მერე რაიმე უნდა მოვიმოქმედოთ, რომ ღირს, თუ მე
გვინდა შეინახოს იგი გარშემო.
ამიტომ ეს იქნება ძალიან ნაცნობი ადრე ხანგრძლივი.
დიდი მადლობა ამ დემო აქ, კენ.
ყველა უფლება.
ძალიან კარგად გაკეთდეს.
მოდით ვნახოთ, როგორ, რომ საბოლოოდ ეხება ზოგიერთი ფუნქცია
მოუწოდებდა, რომ ჩვენ აქ აკეთებენ.
ნება მომეცით, წავიდეთ წინ და მიგვიყვანს თავში cubing მაგალითად აქ.
და შენიშნავს, რომ თუ ჩვენ გვინდა რეალურად დაიწყოს აღების ამ შემდგომი, ჩვენ ვაპირებთ
დან უნდა მავიწყდება იმისა, რომ ხმების x რომ მიმდინარეობს გადავიდა
აქ განსხვავდება რა მართლაც შევიდა ფუნქცია.
ასე რომ კიდევ ერთხელ, ამ გაიარა ასლი უნდა გახდეს საკმაოდ
გერმანე რაღაც მომენტში.
>> მოდით შევხედოთ რაღაც რომ არ საკმაოდ მუშაობა უფლება არავის გაუკეთებია.
მე ვაპირებ წავიდეთ წინ და გახსნა მესამე buggy მაგალითად, რომელიც
არის გაყალბდა ბუნებით.
და ეს მოუწოდა buggy3 და ახორციელებს შევცვალე ფუნქცია.
ასე რომ აქ გვაქვს ძირითადი ფუნქცია, რომელიც X და Y თვითნებურად ინიციალიზაცია to
1 და 2, შესაბამისად.
ჩვენ შეეძლო GetInt, მაგრამ ჩვენ უბრალოდ უნდა მარტივი განხორციელება.
ასე ძნელია კოდირებული როგორც 1 და 2.
სტრიქონები 21 და 22, ჩვენ აშკარად ამობეჭდოთ x და y, ერთი თითო ხაზზე.
მაშინ, on line 23, მე ამტკიცებენ მე შევცვალე ეს ფასეულობები, dot, dot, dot.
მე აშკარად მოვუწოდებთ ფუნქცია ხაზი 24 მოუწოდა swap
რომ იღებს ორ არგუმენტს.
ეს სრულიად legit ამისთვის ფუნქციები მიიღოს ორი არგუმენტი.
ჩვენ ვხედავთ printf გავაკეთებთ უკვე.
ასე რომ swap სავარაუდოდ იღებს x და y.
და როგორც მისი სახელი ვარაუდობს, მინდა იმედი მაქვს, რომ ის აპირებს
სვოპ ამ ორი ღირებულებებს.
ასე რომ მერე აცხადებენ on line 25, swapped.
მე reprint x და y ქვეშ ვარაუდი, რომ
ისინი მართლაც swapped.
მაგრამ თუ მე რეალურად აწარმოებს ამ პროგრამის -
ნება მომეცით გახსენით ტერმინალი ფანჯარა.
ნება მომეცით მიიღოს buggy3.
როგორც სახელი ვარაუდობს, ამ არ აპირებს დასრულდება კარგად.
რადგან, როდესაც მე დააჭიროთ შეამჩნევთ, რომ X არის 1.
Y არის 2.
და მაინც დასასრულს პროგრამა, ისინი მაინც, ფაქტობრივად, იგივე.
>> ამიტომ ეფუძნება მიტინგი მხოლოდ ახლა კენ, რა რეალურად საქმე?
კარგად, მოდით ჩაყვინთვის შევიდა ამ swap ფუნქცია.
ეს სუპერ მოკლე.
ეს მხოლოდ რამდენიმე ხაზი კოდი ხანგრძლივი.
მაგრამ რა არის ფუნდამენტური პრობლემა ეფუძნება მარტივი ამბავი განუცხადა
აქ ერთად კენ?
რატომ swap გაფუჭებული?
[INAUDIBLE]
სწორედ.
ამიტომ ჩვენ შენახვის, რათა ასლი, არ ცვლადი თავად.
სხვა სიტყვებით, swap სავარაუდოდ იღებს ორი არგუმენტები, int.
და მისი თვითნებურად მოუწოდა და ბ.
და აქ, მე ძალაში შევიდა, X და Y, რომელთა შესაბამისად 1 და 2.
მაგრამ მე არ სიტყვასიტყვით გადადის x.
მე არ სიტყვასიტყვით გადადის წ.
მე გავლით ასლი x და ასლი წ.
ეს მოსწონს თითქმის თითქოს თქვენ გადაწერა და pasted შევიდა სვოპ ფასეულობები,
გნებავთ რეალურად მანიპულირება.
ასე რომ თუ ეს შემთხვევაა, როდესაც მე, პროგრამა, დაიწყოს შესრულებაში
ხაზი 35, მაშინ 36 -
როცა მისაღებად ხაზი 37, ამ დროისთვის ამბავი, რა არის ღირებულება?
ამ დროისთვის ამბავი, ხაზი 37, რა არის ღირებულება ამ ეტაპზე?
ასე რომ, ეს უნდა იყოს მხოლოდ 1.
მარჯვენა?
რადგან x იყო ძალაში შევიდა, როგორც პირველი არგუმენტი.
და ამ ფუნქციის მხოლოდ თვითნებურად მოუწოდებს მისი პირველი არგუმენტი,.
ანალოგიურად არის Y, მეორე არგუმენტი.
და ეს მხოლოდ თვითნებურად მოუწოდებდა მეორე არგუმენტი ბ.
>> ახლა ეს dichotomy რეალურად საკმაოდ უბრალოდ განმარტა.
დაფიქრდით.
არც ერთი ჩვენგანი არ შეხვდა ადამიანი, რომელიც წერდა printf.
ასე რომ აუცილებლად, იგი არ აქვს როგორია ჩვენი ცვლადები 30 წლის შემდეგ ვაპირებთ
ე.წ..
ასე უნდა იყოს განსხვავება რა რეკავთ ცვლადები წელს
ფუნქციების თქვენ წერა და რა რეკავთ ცვლადები წელს ფუნქციების თქვენ
მოუწოდებდა ან გამოყენებით.
ასე რომ, სხვა სიტყვებით, მე არ წერია ჩემი ცვლადები როგორც x და y.
მაგრამ თუ ვინმეს დაწერა swap ფუნქციის, იგი, რა თქმა უნდა
არ ვიცი, რა ჩემი ცვლადები ვაპირებთ ეწოდება.
ასე რომ მიხვდებიან, რომ სწორედ ამიტომ, რომ თქვენ ეს Duality ვინაობას.
ტექნიკურად, მე ვერ გავაკეთებ ამ დაემთხვა.
მაგრამ ისინი ჯერ კიდევ ძალაში შევიდა, როგორც ასლები.
ეს იქნებოდა მხოლოდ სუფთა დამთხვევა ესთეტიურად თუ ეს პირი რომელმაც დაწერა
swap ჰქონდა გამოიყენა იგივე სახელები.
>> ყველა უფლება.
ამრიგად, ამ ეტაპზე იმ ამბავს, ხაზი 37, არის 1.
ბ არის 2.
და ახლა გაგრძელება სვოპ მათ.
კარგად პირველ რიგში, ნება მომეცით რეალურად ამის გაკეთება ბევრად უფრო მარტივად.
მე არ ვიცი რა ის სამი ხაზი კოდი აკეთებდნენ.
ნება მომეცით მხოლოდ ამის გაკეთება.
ბ იღებს.
იღებს ბ.
შესრულებულია.
რატომ არის ამ გატეხილი, ლოგიკურად?
ეს სახის ინტუიციური რამ, არა?
ასე ხდება ბ.
და B ხდება.
მაგრამ პრობლემა ის არის, რომ როგორც კი ხაზი 37 ახორციელებს, რა
ღირებულება და ბ?
იგივე, 1.
იმიტომ, რომ თქვენ არ clobbered, ასე ვთქვათ, თქვენ შეიცვალა B ერთნაირი.
ასე რომ კიდევ ერთხელ ხაზი 37 შესრულებულია, რომ დიდი.
თქვენ ახლა უკვე ორი ასლი ნომერი 1 შიგნით ამ ფუნქციას.
ასე რომ მაშინ, როდესაც თქვენ ამბობთ სტრიქონში 38, იღებს ბ, ასევე, თქვენ სახის ბრალია.
იმის გამო, რომ თქვენ მხოლოდ მინიჭება 1 დან 1.
თქვენ სახის დაკარგა ღირებულება თქვენ ზრუნავდა.
>> ასე რომ, ორიგინალური ვერსია ამ შეამჩნევთ, რა გავაკეთე.
მე ნაცვლად ჰქონდა მესამე ხაზი კოდი, რომ ჩანდა მოსწონს ეს.
ვაცხადებ დროებით ცვლადი - tmp არის ძალიან გავრცელებული სახელი
ამისთვის დროებითი ცვლადი.
ეს int რადგან მას ემთხვევა რა მინდა ასლი.
მე შესანახად ასლი შიგნით tmp. ასე რომ კიდევ ერთხელ ხაზი 37 აქვს შესრულებული,
ღირებულება არის -
სწრაფი საღი აზრის შეამოწმოს -
1.
ღირებულება B არის 2.
და ღირებულება tmp ასევე 1.
ახლა მე შეასრულოს ხაზის 38.
ასე რომ კიდევ ერთხელ ხაზი 38 ახორციელებს, იღებს ღირებულების ბ.
და ბ იყო 2.
ამიტომ არის 2.
ამრიგად, ამ ეტაპზე იმ ამბავს, არის 2, ბ არის 2,
და tmp არის 1.
ახლა ლოგიკურად, ჩვენ უბრალოდ plop tmp ღირებულების შევიდა ბ.
და ჩვენ გავაკეთეთ.
>> ამიტომ ჩვენ მოგვარდება, რომ პრობლემა.
სამწუხაროდ, როდესაც მე აწარმოებს ამ პროგრამის ამ ფორმით, ის ფაქტობრივად არ სვოპ
ნებისმიერი ღირებულებებს.
მაგრამ უნდა იყოს ნათელი, თუ რატომ?
მე დაფიქსირდა ლოგიკური პრობლემა მხოლოდ მომენტში წინ.
თუმცა ისევ და ისევ, თუ აწარმოებს ამ პროგრამის x და y უცვლელი რჩება ბოლოსთვის
პროგრამის შესრულების.
[INAUDIBLE]
დევიდ ჯ Malan: ამიტომ ჩვენ არ დაბრუნდა არაფერი.
ასე რომ მართალია.
მაგრამ თურმე არსებობს ცოტა პრობლემა აქ რადგან ჯერჯერობით
ერთადერთი, რაც ჩვენ ვერ დაბრუნდა არის ერთი რამ.
და ეს არის შეზღუდვა C. შეგიძლიათ მხოლოდ დაბრუნებას ნამდვილად ერთ ღირებულება,
ამ შემთხვევაში, მე სახის დავრჩებოდით აქ
რადგან მე ვერ დაბრუნდებიან ახალი ღირებულება x ან მე ვერ დაბრუნდებიან
ახალი ღირებულება წ.
მაგრამ მე მინდა ორივე უკან.
ამიტომ დაბრუნების არ არის მარტივი გამოსავალი აქ.
მაგრამ პრობლემა ფუნდამენტურად არის რატომ?
რა გვაქვს რეალურად swapped?
და ბ.
მაგრამ და ბ are ასლები x და y, რაც იმას ნიშნავს, რომ ჩვენ უბრალოდ ყველაფერი ამ
მუშაობა - ჩვენ უბრალოდ გაატარა მოსწონს სამი წუთის ვსაუბრობთ swap
ფუნქცია და სამივე ამ ცვლადებს.
და ეს დიდი, მშვენივრად სწორი იზოლაციაში.
მაგრამ და B-ს ფარგლებს მხოლოდ არის ამ ხაზების აქ.
ასე რომ, ისევე, როგორც for loop, თუ განაცხადოს რიცხვი მე შიგნით ამისთვის
loop - ანალოგიურად, თუ თქვენ გამოცხადების და ბ შიგნით ფუნქცია
თქვენ წერილობითი, ისინი ძალაშია მხოლოდ შიგნით რომ ფუნქცია.
რაც იმას ნიშნავს, როგორც კი swap კეთდება შესრულებაში და ჩვენ აქედან ხაზი 24 დან
ხაზი 25, X და Y არ იქნა შეცვლილა.
თქვენ უბრალოდ გადაყრილი მთელი ბევრი დრო შევცვალე ასლები ცვლადები.
>> გამოდის, რომ გადაწყვეტილება ამ ფაქტობრივად არასამთავრობო აშკარა.
ეს არ არის საკმარისი დაბრუნების ღირებულებების რადგანაც ჩვენ არ შეგვიძლია
მხოლოდ დაბრუნებას ერთი მნიშვნელობა.
და მე ნამდვილად მინდა, რომ სვოპ ორივე x და y ამავე დროს.
ამიტომ, ჩვენ ვაპირებთ, დაუბრუნდეს ამ.
მაგრამ ახლა, გააცნობიეროს, რომ საკითხი ფუნდამენტურად გამომდინარეობს ფაქტი
რომ A და B არის ასლები.
და ისინი საკუთარ ფარგლებს.
კარგად, მოდით ვცდილობთ გადავჭრათ ამ რამდენიმე გზა.
ნება მომეცით რეალურად გადახვევა უკან აქ და გახსენით, ვთქვათ, მეოთხე ვარიანტი
ამ, buggy4.
რაც შეეხება ამ საკითხთან დაკავშირებით?
ეს არის მსგავსი, მაგრამ უფრო მარტივი პრობლემა შევხედოთ წინაშე ავიღებთ stab at
გადაჭრის იგი.
ეს პროგრამა ეწოდება იყოს.
და ეს აშკარად initializes x რიცხვი to 1 სტრიქონში 18.
მე მაშინ აცხადებენ x არის 1.
მე მაშინ სარჩელი დამატება, dot, dot, dot.
მე მაშინ მოვუწოდებთ იყოს.
მაგრამ მერე ხაზები 22 და 23, მე აცხადებენ მისთვის incremented.
მე აცხადებენ x არის რაც არ არის, 2 სავარაუდოდ.
>> მაგრამ ამ პროგრამის buggy.
რა არის პრობლემა?
ჰო?
[INAUDIBLE]
დევიდ ჯ Malan: ზუსტად.
ამიტომ x გამოცხადდა აშკარად on line 18.
სწორედ შიგნით ძირითადი ს Curly braces.
ასე რომ მარტივი პასუხი აქ არის ის, რომ, ასევე, x არსებობს აქ.
იგი არ არსებობს ხაზი 32.
ასე რომ ამ პროგრამის რეალურად არც კი შეადგინოს.
შემდგენელი, როდესაც ვცდილობ შედგენის ამ კოდექსის აპირებს დაწეროთ at me
შესახებ რამდენიმე გამოუცხადებელ იდენტიფიკატორი ან რაღაც რომ ეფექტი.
ფაქტობრივად, მოდით ვცდილობთ.
ეს არის მიიღოს buggy4.
არსებობს ეს.
გამოყენება გამოუცხადებელ იდენტიფიკატორი x სტრიქონში 32.
და ფაქტობრივად, მოდით უფრო ზუსტად რომ ვთქვათ, დღეს აქ, ასე რომ ეს სასარგებლოა
ოფისში საათი და სახლში.
გაითვალისწინეთ, რომ ეს პატარა cryptically წერილობითი.
მაგრამ ის ფაქტი, რომ Clang აქვს yelled ჩვენზე და განაცხადა,
buggy4.c: 32:5, ფაქტობრივად სასარგებლო.
ეს ნიშნავს, რომ შეცდომა on line 32 საათზე ხასიათი თანამდებობა ხუთი.
ასე რომ ერთი, ორი, სამი, ოთხი, ხუთი.
სწორედ, ფაქტობრივად, სადაც პრობლემა არის.
და ასევე გავითვალისწინოთ ოფისში საათი და სახლში, მე იღბლიანი აქ.
მაქვს ერთი შეცდომა.
ეს იქნება შედარებით იოლი დაფიქსირება.
მაგრამ თუ თქვენ გაქვთ მთელი ეკრანის სავსე უამრავი შეცდომის შეტყობინებები, კიდევ ერთხელ,
გააცნობიეროს, რომ bottommost შეიძლება მხოლოდ იყოს სიმპტომატური of
ზედოთ მდებარე მიიჩნიეს.
ამიტომ ყოველთვის აყვანას ქვემოთ თქვენი შეცდომები ზემოდან ქვემოთ.
იმიტომ, რომ იქ შეიძლება რაღაც იყოს Daisy-ჯაჭვის ეფექტი, რომელიც მიგვითითებს თქვენ
აქვს უფრო მეტი პრობლემები ვიდრე თქვენ რეალურად გავაკეთოთ.
>> ასე როგორ უნდა დაფიქსირება ამ შემთხვევაში ჩემი მიზანია ნამატი x?
რა არის ეს?
Okay.
ამიტომ, ჩვენ შეგვიძლია x გლობალური.
ავიღოთ კომბინაცია, რომ მე გააფრთხილა შესახებ ადრე.
მაგრამ heck, ჩვენ უბრალოდ უნდა გადავწყვიტოთ.
მოდით უბრალოდ, ვამბობთ int x აქ.
ხდის x გლობალური.
ახლა მთავარ ხელი მიუწვდება მას.
და წუთობრივი ხელი მიუწვდება მას.
და ნება მომეცით, წავიდეთ წინ და შეადგინონ ეს ახლა.
ჩადება buggy4, შეიყვანეთ.
როგორც ჩანს, კომპილაციის არის.
მოდით აწარმოებს buggy4, და როგორც ჩანს, რეალურად იმუშავებს.
ახლა ეს არის ერთი ასეთი რამ -
გავაკეთოთ როგორც გეუბნებით, არ როგორც მე, როგორც მე უბრალოდ გაკეთდეს აქ.
რადგან ეს, ზოგადად, ჩვენი პროგრამების ვაპირებთ კიდევ უფრო მეტი საინტერესო და
ბევრად აღემატება ეს.
და თუ თქვენი გამოსავალი ცხოვრების პრობლემები მხოლოდ AH, დააყენა ყველა
ცვლადები ზედა თქვენი ფაილი, ძალიან სწრაფად გააკეთოს პროგრამების მისაღებად
horrifically რთული მართვა.
იგი იღებს უფრო რთული მგონია ახალი ცვლადი სახელები.
იგი იღებს უფრო რთული იმის გაგება, თუ რა ცვლადი აკეთებს რა.
>> და ა.შ. ზოგადად, ეს არ არის კარგი გამოსავალი.
ასე რომ მოდით ეს უკეთესი.
ჩვენ არ გვინდა, რომ გამოიყენოთ გლობალური ცვლადი აქ.
მე მინდა, რომ ნამატი x.
ასე რომ მე ვერ აშკარად -
დასასრულს დღეში, ეს სახის სულელური ამბავი იმიტომ, რომ ჩვენ მხოლოდ ამის გაკეთება.
მაგრამ თუ არ ვიცოდი, რომ ოპერატორი, ან მე არ მისცეს
შეცვლის მთავარ თავად, როგორ სხვა ასეთ რამეს მე განახორციელოს კენ მეტი აქ, ამ
დრო არ კუბი არამედ ნამატი?
როგორ შევცვალო ეს საგანი აქ?
Yeah.
[INAUDIBLE]
დევიდ ჯ Malan: Okay, კარგი.
მაშ რატომ არ მე კორიდორი x?
და მაშინ, ვიდრე მისი დაბრუნება, რატომ არ მე უბრალოდ დაბრუნების x + 1?
ახლა, რამდენიმე რამ უნდა შეცვალოს აქ.
მე სწორ გზაზე.
კიდევ რა უნდა tweak?
ვინმე.
ჰო?
[INAUDIBLE]
დევიდ ჯ Malan: მე უნდა შეიცვალოს დაბრუნების გაცნობის ნამატი
რადგან ეს არ ბათილად.
ძალადაკარგულად არაფერს ნიშნავს ის დაბრუნება.
მაგრამ ცხადია, ახლა ეს.
ასე რომ, ეს უნდა შეიცვალოს, რათა int იყოს შეესაბამება რასაც
მე რეალურად დაბრუნების.
>> არის რაღაც ჯერ კიდევ buggy აქ.
ჰო?
[INAUDIBLE]
დევიდ ჯ Malan: ასე უნდა იყოს x?
[INAUDIBLE]
დევიდ ჯ Malan: Ah, ამიტომ მე უნდა გაიაროს x.
ასე რომ, მე უნდა გავაკეთოთ ეს აქ.
ამიტომ პროტოტიპი, უნდა შეიცვალოს ეს ყველაფერი აქ.
ასე რომ, ეს უნდა გახდეს int.
ეს უნდა გახდეს -
hmm.
მე რეალურად bug ქვემოთ აქ.
მოდით დაფიქსირება ამ ერთი პირველი.
რა უნდა ამ რეალურად იყოს?
ამიტომ რაღაც უნდა იყოს int რაღაც.
ეს შეიძლება იყოს x.
მაგრამ გულწრფელად, თუ დაიწყება მოუწოდებენ ყველა თქვენი ცვლადები x, იგი აპირებს მიიღოს
უფრო ნაკლებად ნათელია, რომელიც, რომელიც.
მოდით უბრალოდ თვითნებურად აირჩიოს სხვადასხვა ნეიმინგი კონვენცია ჩემი
დამხმარე ფუნქციები, ფუნქციების მე წერა.
ჩვენ მოვუწოდებთ მას.
ან ჩვენ შეგვიძლია ეძახით - მოდით ეძახით even_number რომ ვიყოთ კიდევ უფრო ცხადი.
ასეა, მაშინ მე უნდა დაბრუნდეს რაოდენობის მიუხედავად არის პლუს 1.
და ახლა უნდა შეიცვალოს ერთი სხვა რამ აქ და ერთი
სხვა რამ აქ.
რა უნდა შეიცვალოს on line 21 პირველი?
მე უნდა მივანიჭოთ მას x.
ასე, რომ შეიძლება არა მხოლოდ მოვუწოდებთ ნამატი x.
მე უნდა გვახსოვდეს პასუხი შეცვლით ღირებულება x შესახებ
მარცხენა მხარეს.
და მიუხედავად იმისა, x არის მარცხენა და მარჯვენა, რომ მთლიანად ჯარიმა, რადგან
მარჯვენა მხარეს იღებს შესრულებული პირველი მაშინ იღებს plopped შევიდა მარცხენა
მხრივ რამ, x ამ შემთხვევაში.
და მერე ბოლოს, ეს არის ადვილი სარემონტო არის.
ეს უნდა უბრალოდ დაემთხვა რა ქვემოთ ქვემოთ.
Int ნომერი.
>> ყველა უფლება.
ასე რომ მთელი bunch of ცვლილებები მართლაც სულელური ფუნქცია.
მაგრამ წარმომადგენელი რამ, რომ ჩვენ სულ უფრო გსურთ.
ასე რომ buggy4.
მე ბრალია სადღაც.
Oh ღმერთი ჩემი.
ხუთი შეცდომები, როგორიცაა, ექვსი ხაზის პროგრამის.
რა არის არასწორი on line 18, ხასიათი 5?
ყველა უფლება.
ასე რომ მე უნდა განაცხადოს ამ int.
ყველა უფლება.
ასე რომ ვნახოთ, მთელი bunch სხვა შეცდომები.
Oh ღმერთი ჩემი.
19, 18, 21.
თუმცა ისევ და ისევ, მოდით უბრალოდ გარკვევას ეკრანზე -
კონტროლის L აქ - და ხელახლა პერსპექტივაში Clang.
ასე ხუთი პრობლემები არის რეალურად მხოლოდ, რომ ერთი.
ახლა მოდით აწარმოებს buggy4, შეიყვანეთ.
Whew.
x უკვე incremented სწორად.
>> ყველა უფლება.
ნებისმიერი კითხვები, თუ როგორ უნდა იყოს ციფრები?
ჰო?
დინამიკები 2: რატომ არის, რომ თქვენ შეგიძლიათ უბრალოდ შეცვალეთ x to ნომერი ცვლადი
ასახელებს და ეს კიდე იცით რას ნიშნავს?
დევიდ ჯ Malan: კარგი კითხვაა.
როგორ არის ის, რომ მე შემიძლია უბრალოდ შეცვალეთ x ნომერზე და პროგრამა ვიცი
მაშინვე?
ასე რომ კიდევ ერთხელ, ვფიქრობ, რომ ეს ამ აბსტრაქცია.
ასე რომ, თუ მე ვარ ძირითადი და კენ არის დამატებითი, გულწრფელად, არ მაინტერესებს
რა კენ მოუწოდებს მისი iPad.
არ მაინტერესებს, რა იგი მოუწოდებს არაფერი რომ უნდა გააკეთოს მისი განხორციელების
ამ ფუნქციები.
ასე რომ, ეს არის განხორციელება დეტალურად რომ მე, ძირითად, არ
უნდა ზრუნავდეს.
და ასე, უბრალოდ იცვლება ის თანმიმდევრულად შიგნით ფუნქცია, ნომერი აქ
და ნომერი აქ, არის ყველა სჭირდება, თუ მე recompile.
ეს ერთგვარი მინდა თუ ფიქრობთ ამის შესახებ - ბევრი ჩვენგანი, იმ თქვენ ერთად მძღოლის
ლიცენზიები, რომლებიც რო ამოძრავებს, ან თუ თქვენ კი ბიძგი მანქანაში -
ყველაზე მეტად ჩვენს წარმოდგენა არ როგორ მანქანა მუშაობს ქვეშ hood.
და სიტყვასიტყვით, თუ თქვენ გახსენით hood, ყველაზე მეტად ჩვენს - თავს შედის -
არ ვაპირებთ ნამდვილად ვიცი, რა ჩვენ შევხედავთ.
სახის მოსწონს იგრძნობთ ერთად პერსონალის მოსწონს ეს ახლავე.
მაგრამ ჩვენ ნამდვილად არ უნდა იზრუნოს, როგორ მუშაობს ავტომობილი.
ჩვენ არ უნდა იზრუნოს რა ყველა წნელები და pistons და კაბელები შიგნით
მანქანა რეალურად აკეთებს.
>> ასე რომ მსგავსი რამ, რაც თქვენ მოვუწოდებთ დგუში არ აქვს მნიშვნელობა
აქ ამ შემთხვევაში.
იმავე იდეას.
ჰო?
[INAUDIBLE]
დევიდ ჯ Malan: თუ იყო მეტი გამოყენებაზე ცვლადი xa მომენტში წინ,
თქვენ, პროგრამისტი, უნდა შეცვალოს ისინი ყველგან.
ან შეგიძლიათ სიტყვასიტყვით გავაკეთოთ ფაილი, მენიუ, და შემდეგ Find / Replace,
მსგავსი რამ, რომ.
მაგრამ თქვენ აპირებთ უნდა მოხდეს ყოველთვიურად ცვლილებების თავს.
თქვენ უნდა იყოს თანმიმდევრული.
[INAUDIBLE]
დევიდ ჯ Malan: კერძოდ იმისათვის, როგორიც აქ?
თუ ეს იყო int მეორე ნომერი?
Yeah.
ამიტომ იმისათვის, მნიშვნელოვანია, როდესაც თქვენ მოუწოდებენ ფუნქცია.
ასე რომ, თუ მე მირეკავდა ნამატი აქ რაღაც მძიმით რაღაც,
არსებობს პირდაპირი რუკების.
პირველი ცვლადი, რასაც ის მოუწოდა, კეთდება ასლი პირველი
არგუმენტი მეტი აქ.
უკაცრავად, ეს არ უნდა იყოს ფრჩხილებში.
მეორე არგუმენტი ხაზები ერთად მეორე.
>> ამიტომ იმისათვის, დიახ, თემა.
ყველა უფლება.
უკაცრავად ავიღე გრძელი გზა იქ.
გაქვთ სხვა კითხვები?
ყველა უფლება.
ასე რომ ვნახოთ, შევძლებთ თუ არა ხატავს სურათს, რა რეალურად მიმდინარეობს
აქ ქვეშ Hood, ასე ვთქვათ.
ასე რომ, ეს მართკუთხედი რომ შესაძლოა წარმოადგენდეს თქვენი კომპიუტერის მეხსიერებაში.
ისე კი, თუ თქვენ არ ვიცი როგორ მუშაობს მეხსიერების ან როგორ RAM სამუშაოები, მინიმუმ
ვივარაუდოთ, რომ თქვენ გაქვთ bunches იგი ამ დღეებში.
თქვენ მოხვდით მბ იგი.
თქვენ მოხვდით გიგაბაიტი იგი.
და ჩვენ ვიცით კვირაში ნულოვანი რომ byte არის მხოლოდ რა?
8 ბიტი.
მარჯვენა, ასე 8 zeroes და მიიჩნიეს.
ასე რომ, თუ თქვენი კომპიუტერი GIG of RAM, ორი gigs of RAM ამ დღეებში, თქვენ გაქვთ
მილიარდი ან 2 მილიარდი ბაიტი მეხსიერების, ან უხეშად 8 მილიარდ ან 16 მილიარდი
ბიტი, შიგნით თქვენი კომპიუტერი.
ახლა განსხვავებით ცოტა Woolly Willy მაგალითად, ეს არ მაგნიტური ნაწილაკების
ჩვეულებრივ უქმნით.
სულ უფრო და უფრო, წელს ლაპტოპები მინიმუმ, ის მყარი სახელმწიფო დისკები, SSDs, რომ
უბრალოდ არ არ მოძრავი ნაწილები.
ეს ყველაფერი ელექტრონულ.
ეს ყველაფერი ელექტროენერგიის საფუძველზე.
ასე მგონია, თუმცა, ამ ოთკუთხედი როგორც მხოლოდ წარმოადგენენ ერთი ან ორი
გიგაბაიტი მეხსიერება, რომ თქვენ გაქვთ.
>> ასე რომ ბლოკი მეხსიერება.
ახლა მთელი მსოფლიო კომპიუტერული მეცნიერების სახის partitioned off მოცულობით
მეხსიერების გავაკეთოთ სხვადასხვა რამ.
ასე მაგალითად, თუ ეს თქვენი კომპიუტერის RAM - როგორც მიერ შემოთავაზებული
ოთხკუთხედი იქ - თურმე მიერ კონვენციის, ზედა თქვენი RAM, ასე
საუბარი, ზოგადად რასაც ტექსტი სეგმენტი.
ეს ის zeroes და პირობა, რომ თქვენ არ შედგენილი.
ასე რომ, როდესაც ჩვენ ჩანდა ქვეშ Hood რა a.out არის, ყველა
zeroes და პირობა -
როდესაც თქვენ აწარმოებს პროგრამა, იმ zeroes და პირობა ჩატვირთვის თქვენი მყარი
წამყვანი შევიდა რაღაც მოუწოდა RAM.
და RAM, ისინი დააყენა ზედა.
არის ამავდროულად, თქვენ გაქვთ სხვა რამ.
ინიციალიზაცია მონაცემები, uninitialized მონაცემები.
ამ ორი swaths მეხსიერების ეხება გლობალური ცვლადები, რომელიც
თქვენ არ ხშირად იყენებენ.
მაგრამ ზოგჯერ თუ ისინი დასრულდება up up there ისევე.
მაშინ არსებობს რამდენიმე სხვა პერსონალი.
გარემოს ცვლადები, რომელიც ჩვენ არ დახარჯოს დიდი დრო ჩართულია.
მაგრამ შემდეგ ორი მნიშვნელოვანი რამ, რომ დავბრუნდებით მთელი ამ
სემესტრის დასტის და ბევრი.
>> ასე რომ ყველაზე თქვენი კომპიუტერის მეხსიერების დაცულია როდესაც გაშვებული პროგრამა
რაღაც მოუწოდა დასტის და რაღაც მოუწოდა ბევრი.
და ჩვენ არ ვაპირებთ ვისაუბროთ ბევრი დღეს, მაგრამ ჩვენ
ვისაუბროთ Stack.
და დასტის ნიშნავს conjure up ვიზუალური მსგავსი სასადილოს
კვება ქაღალდის წელს Mather სახლი, ან ნებისმიერ ადგილას მოხდეს იქნება, სადაც
სასადილოს პერსონალის გაწმენდა მათ ყოველდღე.
ისინი დააწყობს მათ მდე სართულზე up.
და ანალოგიურად მეხსიერებაში, არსებობს ამ იდეას აყენებს რაღაც
დააწყობს, აყენებს რაღაც დასტის, აყენებს რაღაც Stack.
და რას ვგულისხმობთ ამ?
კარგად, მოდით მიუახლოვდით მხოლოდ ქვედა ნახევარში ამ სურათს, თქვენი კომპიუტერის
RAM, შესთავაზოს შემდეგ.
თურმე, როდესაც თქვენ აწარმოებს პროგრამა მოსწონს a.out ან hello, რასაც
პროგრამის არის ის, რომ თქვენ წერილობითი,
ერთხელ, იმ zeroes და შედარებით, დატვირთული თქვენს ხისტ დისკზე - რომელიც
გრძელვადიანი შენახვა, რჩება იქ მაშინაც კი, როდესაც გაიყვანოს plug -
ჩაიტვირთება RAM.
RAM არის სწრაფად, ვიდრე მყარი დისკები.
ეს ნაკლებია მყარი დისკები.
მაგრამ აქ პროგრამების ცხოვრობს, ხოლო თქვენ გაშვებული მათ.
>> ასე, რომ თქვენ ორმაგად დაწკაპეთ პროგრამა Mac ან PC - ის დატვირთული
დისკის შევიდა RAM.
როგორც კი ის ჩაიტვირთება RAM, zeroes და პირობა წასვლა დროს გზა ზევით,
ე.წ. ტექსტი სეგმენტი.
მაგრამ შემდეგ, როგორც კი თქვენი პროგრამის რეალურად იწყება გაშვებული, მთავარ
ფუნქცია ეწოდება.
და მთავარი, როგორც ჩვენ ვნახეთ, ხშირად აქვს ადგილობრივი ცვლადები.
და მას აქვს ints და სიმებიანი და chars და მოსწონს.
ასე რომ, თუ თქვენი პროგრამა, რომელიც თქვენს მიერ დაწერილი ან პროგრამა, რომელიც თქვენ გაქვთ
ორმაგი დააწკაპებთ გამოყენებული ზოგიერთი ცვლადის შიგნით ძირითადი, მათ დასრულდება up at
ქვედა თქვენი დასტის მეხსიერების, ასე ვთქვათ.
ახლა უფრო კონკრეტულად, რას ნიშნავს რეალურად?
ეს მხოლოდ იმას ნიშნავს, რომ თუ ჩვენ ვაპირებთ ხმების რამ -
თუ ჩვენ ვაპირებთ ხმების bytes of RAM თქვენს კომპიუტერზე, რომ
ეს შეიძლება იყოს byte ხმების ნულოვანი.
ეს შეიძლება იყოს byte ნომერი ერთი, ორი, სამი, ოთხი, ხუთი, ექვსი, ყველა
გზა მდე მინდა -
2 მილიარდი იქნება ყველა გზა იქ ზედა.
ასე რომ, სხვა სიტყვებით, როდესაც ვსაუბრობთ RAM ან მეხსიერების თვალსაზრისით ბაიტი, ეს
მხოლოდ იმას ნიშნავს, რომ ვიღაცამ გადაწყვიტა, რა რაოდენობის თითოეული
იმ მოცულობით მეხსიერება.
>> ასე რომ, როდესაც თქვენ გჭირდებათ 32 ბიტი for int, ან გჭირდებათ 8 ბიტი ამისთვის char, სადაც
ისინი დასრულდება up მეხსიერებაში?
კარგად კონცეპტუალურად, ისინი უბრალოდ დასრულდება მდე ბოლოში ამ
რამ მოუწოდა Stack.
მაგრამ რა საინტერესოა ახლა, როდესაც მთავარ მოუწოდებს ფუნქცია.
დავუშვათ ფუნქცია მოუწოდა foo, მხოლოდ თვითნებური სახელი.
რა ხდება არის მთავარია ბოლოში ამ დასტის მეხსიერება.
Foo ახლა დააყენა თავზე ძირითად მეხსიერებაში.
ასე რომ ნებისმიერი ლოკალური ცვლადები რომ foo არ დასრულდება მდე სახის კონცეპტუალურად ზემოთ
იმ მთავარ.
თუ foo მოუწოდებს სხვა ფუნქცია მოუწოდა ბარი, იმ ცვლადის დასრულდება მდე აქ.
თუ ბარი მოუწოდებს რაღაც, აქ, აქ, აქ.
რა საინტერესოა შესახებ გაშვებული პროგრამის არის ის, რომ, როგორც თქვენ მოვუწოდებთ ფუნქციები,
და როგორც ამ ფუნქციების მოვუწოდებთ ფუნქციები, და როგორც ამ ფუნქციების მოვუწოდებთ ფუნქციები,
თქვენ დაამყარონ ამ დასტის ფუნქციების მეხსიერებაში.
და მხოლოდ ერთხელ ფუნქცია დააბრუნებს გაქვთ დაიწყოს მიღების, რომ მეხსიერების უკან.
ასე რომ ერთი მარტივი გზა ამოიწურა მეხსიერება კომპიუტერული პროგრამა არის
დაწერეთ ფუნქცია, რაც არასდროს დაბრუნდება.
>> ასე მაგალითად, მოდით დემონსტრირება იმდენი ერთად
განზრახ buggy პროგრამა.
ნება მომეცით წავიდეთ წინ და ნუ # მოიცავს , int ძირითადი (void).
და მე ვაპირებ ამის გაკეთებას, ხოლო (2> 1), რაც ალბათ არ ოდესმე
შეცვლის ჩვენზე.
და ნება მომეცით წავიდეთ წინ არის და არ printf.
სინამდვილეში, რომ იქნება ნაკლებ ვიზუალურად საინტერესო.
მოდით ეს.
იყიდება int (i = 0; i> 0).
მოდით ეს შეცდომა, მე + +.
და მოდით არ printf აქ.
მოდით პრაქტიკაში რა იყო ქადაგებდა.
მოდით მეთოდი აქ.
ძალადაკარგულად გუნდისა, და ჩვენ ვიტყვით, int i.
და შემდეგ მე ვაპირებ ვთქვა, printf -
OH, მოდით ეს კიდევ უფრო საინტერესო.
მოდით რეალურად არ ბეჭდვა არაფერი ყოფილა.
მოდით უბრალოდ ეს.
Chorus (I).
>> ყველა უფლება.
ასე რომ, ეს buggy რადგან რატომ?
მე მიღების ეს ყველაფერი, როგორც მე, რადგან პროგრამა ფაქტობრივად არ არაფრის
ინტერესთა.
მაგრამ ეს არ არის მიზანი.
მიზანია დაწერონ პროგრამა, რომლის მთავარი ფუნქცია აკეთებს იმას, სავარაუდოდ?
ზარის თავად.
და ფაქტობრივად, ჩვენ არ გვჭირდება loop.
მოდით კიდევ გამარტივება ამ უბრალოდ ისე, რომ არ დაკარგოს დანახვაზე მართლაც
ფუნდამენტური შეცდომა.
მთავარი მოუწოდებს გუნდი მაინც მღერიან ზოგიერთი გუნდი.
მაშინ მე იმედი, და მქონდა გუნდი ზარის გუნდი იმიტომ, რომ მე თავის თავზე აიღო
ვინმე აპირებს განახორციელოს ეს ალბათ.
და ახლა ამ არ აპირებს კომპილაციის ამჟამად.
მე უნდა რა?
მჭირდება პროტოტიპი, მახსოვს.
ასე რომ უნდა აქ ბათილად გუნდი (int i);.
>> ახლა, თუ დაცემას აქ -
რეალურად, მოდით გამოიყენოთ უფრო დიდი ფანჯარა.
მოდით წავიდეთ წინ და მიიღოს გუნდისათვის.
გამოყენება დაუდგენელმა declarer მე.
ოჰ, რომ იყო სულელური.
ჩვენ არ გვჭირდება არგუმენტი.
მოდით უბრალოდ ეს.
სურვილი გვქონდა დაიწყო ამ გზით.
ეს იქნებოდა ბევრად უფრო ადვილი პროგრამა დაწერა.
ასე რომ.
ახლა მოდით წავიდეთ მეტი ჩემს ტერმინალის ფანჯარა, ხელმეორედ გაუშვით Clang.
და აქ წასვლა.
ეს იყო მართლაც სწრაფი.
რაც სინამდვილეში მხოლოდ მოხდა, თუმცა?
ისე, ახლა მე დაამატოთ ბეჭდვის ხაზი, ასე რომ ვხედავთ.
ნება მომეცით ვთქვა printf, ვთქვათ, მე ვარ აქ.
Okay, არ ცვლადები, ჩვენ დავტოვებთ მას მოსწონს, რომ.
ნება მომეცით ხელახლა აწარმოებს მიიღოს.
ნება მომეცით ხელახლა პერსპექტივაში გუნდისათვის.
და მოდის.
შეინახეთ აპირებს.
როგორც განზე, რატომ მას არ შეეჯახა ჯერ არ გაქვთ?
სეგმენტაცია ბრალია მოხდა სუპერ სწრაფი ადრე.
[INAUDIBLE]
დევიდ ჯ Malan: ზუსტად.
ასე რომ დრო სჭირდება ბეჭდვა.
ეს უბრალოდ იღებს მეტი მუშაობა კომპიუტერის ნაწილი.
და იქ ეს.
სეგმენტაციის ბრალია.
>> ასე რომ შეამჩნევს, თუ რამდენად სწრაფად პროგრამების გასაშვებად.
თუ თქვენ არ დაბეჭდვის არაფერი, სუპერ სწრაფი.
მაგრამ ჩვენ მაინც მოხდა ეს სეგმენტაცია ბრალია, რადგან, თუ რა ხდებოდა?
ისე, თუ ფიქრობთ იმაზე, თუ როგორ თქვენი კომპიუტერის მეხსიერების ასახული, ამ
ხდება, რომ იყოს მთავარი.
მაგრამ აქ -
მოდით უბრალოდ დაარქვით გუნდისა, და მოდით მოვუწოდებთ ამ გუნდისათვის.
და ახლა, თუ ჩემი ესთეტიკის უფლება, ეს მხოლოდ თქმას გუნდი,
გუნდი, გუნდი, გუნდი, გუნდი, გუნდი, გუნდი, რეკლამა nauseum.
და საბოლოოდ, რა მოხდება?
თუ დიდი სურათის სიტყვასიტყვით ეს, რა რაღაც კონცეპტუალურად?
დასტის overruns ბევრი.
ან უარესი, უბრალოდ overrun ყველაფერი, მათ შორის ტექსტი სეგმენტი, რომელიც
zeroes და ვინც წარმოადგენენ თქვენი პროგრამა.
მოკლედ, ეს მხოლოდ სუპერ, სუპერ ცუდი.
მარჯვენა?
შენი პროგრამა spiraled კონტროლიდან.
თქვენ იყენებთ გზა მეტი მეხსიერების ვიდრე თქვენ განკუთვნილია ყველა გამო სულელური
შეცდომა, ამ შემთხვევაში.
ან ამ შემთხვევაში, სრულიად შეგნებულად კეთდება ფუნქცია მოუწოდებდა თავად.
ახლა ეს არის არა ყველა ცუდი.
ფუნქციები მოუწოდებდა თავად რეალურად აქვს დიდი ძალა
როდესაც თქვენ გამოიყენოს იგი სწორად.
მე არ გამოიყენება მას სწორად აქ.
>> ასე რომ, ეს არ არის ყველა ცუდი.
მაგრამ ის ფაქტი, რომ მე არასოდეს რეალურად შეწყვიტოს მოუწოდებენ თავს არის ფუნდამენტური
სისუსტე აქ ამ პროგრამას.
ისე სად მივდივართ ყველა ამ?
ისე, რა ხდება რეალურად?
როდესაც მოვუწოდებ ნამატი ფუნქცია, როგორიცაა ვაკეთებდით იმ მაგალითები,
მაქვს ღირებულება, როგორიცაა 1 რომ მე გაივლის სისტემაში
მე კორიდორი ასლი ნომერ.
ასე შემდეგ მოხდება.
მოდით წასვლას ნამატი მაგალითად.
და ამ ბიჭს უფლება მეტი აქ.
ასე რომ აქ არის ის, რაც სინამდვილეში ხდება.
მე როცა დაგირეკე წუთობრივი, და მე კორიდორი x, pictorially რა
მიმდინარეობს აქ არის ამ -
თუ მაქვს ღირებულება 1 ინახება, და მე სინამდვილეში წუთობრივი, რომელიც
არის მოუწოდა ქორო -
yeah, რომ სროლა ჩემთვის off აქ.
მოდით დაარქვით იყოს.
და ჩვენ არ ვიცით, რა ამ შემდეგი ფუნქცია იქნება.
ასე რომ, რა ხდება რეალურად არის აქ სადღაც მთავარ, მაქვს ბლოკი
მეხსიერება, რომელიც შენახვის ნომერი 1.
როდესაც მოვუწოდებ წუთობრივი, მე გამოყენებით მეორე ბლოკი მეხსიერება, მაგრამ ახლა მე
აქვს ასლი 1.
როდესაც მე ნამატი, რომ ღირებულება, ეს ხდება 2 - horribly დაწერილ
ეკრანზე აქ.
თუმცა, შემდეგ რა მოხდება, როგორც კი წუთობრივი ანაზღაურება?
ეს მეხსიერების უბრალოდ იღებს გადასცა თავში ოპერაციული სისტემა, რაც იმას ნიშნავს, ყველა
თქვენ გავაკეთეთ არაფერია სასარგებლო.
ერთი, რომ თავდაპირველად შეიცავს ძირითად კვლავ რეალურად არსებობს.
>> ისე სად მივდივართ ამ?
ისე, გამოდის, რომ მეხსიერებაში თქვენ ეს უკან უკან თანმიმდევრობა
bytes შეგიძლიათ განათავსოთ პერსონალის სისტემაში
და აღმოჩნდება, რომ ჩვენ უკვე დავინახეთ რაღაც რომელიც მოიცავს აყენებს
რამ თავში დაბრუნება თავში დაბრუნება.
რა არის ტექსტი, რომელიც დაფუძნებულია კვირაში ერთი და ახლა კვირაში ორი?
ასე რომ მხოლოდ კოლექცია სიმბოლო.
გამოდის, ისევე, როგორც თქვენ შეგიძლიათ განათავსოთ ნომრები მეხსიერება, ანალოგიურად შეგიძლიათ
დააყენა გმირები მეხსიერებაში.
და კიდევ ჩვენ ვიწყებთ აყენებს სიმბოლოების მეხსიერების თავში დაბრუნება თავში
უკან, აღმოჩნდება, რომ გამოყენებით მარტივი რამ, როგორიცაა ამისთვის მარყუჟი ან
ხოლო მარყუჟის, ჩვენ შეგვიძლია iterate -
მარცხნიდან მარჯვნივ მეტი სიმბოლოების string -
და დაიწყოს massaging მათთვის სხვადასხვა სიმბოლოების საერთოდ.
შესაძლოა გახდეს B. B გახდებოდა C. ასე რომ საბოლოო ჯამში, შეგვიძლია
English სასჯელს, რომ რეალურად აზრი და დააკონვერტიროთ თითოეული იმ
წერილების ერთ დროს გავლით ჩვენი კომპიუტერის მეხსიერების დარჩა
უფლება რეალურად დაშიფვრა.
>> მოდით ჩვენი ხუთი წუთის შესვენების აქ, და როდესაც ჩვენ დავბრუნდებით, ჩვენ
დავიწყოთ ამ პროცესში scrambling ინფორმაციას.
>> ყველა უფლება.
ასე რომ სანამ ჩვენ ჩაყვინთვის, რათა გარკვეული შიფრის და ეს ყველაფერი მოუწოდა მასივები, ნება მომეცით
პაუზის ნებისმიერი კითხვები, რადგან მე თავს ნამდვილად სახის muddled ზოგიერთი
ამ თემებზე.
მოდით დაფიქსირება ახლა შევძლებთ თუ არა.
ასე რომ, ჩვენ მხოლოდ ისაუბრა დაბრუნების ღირებულებებს.
ჩვენ ვისაუბრეთ არგუმენტები.
ჩვენ ვისაუბრეთ ამ ცნება, რომელიც ჩვენ დავბრუნდებით ამ კვირიდან
მოვიდა, საქართველოს ათვალიერებენ მეხსიერების როგორც მთელი bunch ამ stacked
ქაღალდის, ასე ვთქვათ.
საგებიდან on up, ასეთი, რომ ყოველი უჯრა რომ იღებს ჩაიცვი დასტის წარმოადგენს
ფუნქცია, რომელიც ამჟამად მიმდინარეობს მოუწოდა.
ნებისმიერი კითხვები?
მაშ როგორ შესახებ - ნება მომეცით ვცდილობთ პასუხში შეკითხვა.
მე შენარჩუნება spoiling რომ, მაგრამ ახლა it's - you've ყველა ჩანს ბიჭის სახე.
ამიტომ ჩვენ დავბრუნდებით რომ.
>> ნება მომეცით, შეკითხვა დაესვა აქ.
ნება მომეცით გაამარტივებს ამ თავში, რაც იყო ადრე ჩვენი ზოგიერთი ადრე Q & A.
და ის ფაქტი, რომ ნამატი აქვს ღია ფრჩხილებში, int ნომერი, დაიხურა
ფრჩხილებში.
რას int ხმების წარმოადგენს?
[INAUDIBLE]
დევიდ ჯ Malan: არგუმენტი.
Okay, მაგრამ რა არგუმენტი?
[INAUDIBLE]
დევიდ ჯ Malan: უკაცრავად, რა რომ?
დინამიკები 3: Something თქვენ გაივლით სისტემაში
დევიდ ჯ Malan: Okay.
ასე რომ რაღაც, რომ თქვენ გაივლის სისტემაში
და საერთოდ, უბრალოდ დასტური.
თუ თქვენ წერა ფუნქცია და რომ ფუნქცია მიზანი ცხოვრებაში არის გავაკეთოთ
რაღაც ცოტა განსხვავებული ყველა დროის გამოყენება, მაშინ ერთადერთი გზა
რომ მოხდეს მართლაც რომ ჩანს, უზრუნველყოს იგი შეყვანის ისე, რომ იგი
შეიძლება რაღაც განსხვავებული, რომ შეყვანის ყოველ ჯერზე.
>> ასე, რომ თქვენ უნდა მიუთითოთ ორი რამ როდესაც ფუნქცია იღებს საშუალებებით.
თქვენ უნდა მიუთითოთ სახელი, რომ თქვენ მინდა რომ შეყვანის, სუფთა ამისთვის
თქვენი საკუთარი მოხერხებულობის ასე რომ თქვენ შეგიძლიათ ეხება ის ფუნქცია, რომ თქვენ
თავის წერს, როგორც მე აქ ხაზი 32.
მაგრამ თქვენ უნდა მიუთითოთ მისი ტიპის რადგან C არის პროგრამირების ენა
რომ მოითხოვს
რომ, თუ გნებავთ ცვლადი, თქვენ უნდა ვუთხრა კომპიუტერი რა
მონაცემები აკრიფოთ ეს,
დიდი ნაწილი ისე, რომ იცის რამდენი ბიტი უნდა
გამოყოფს, რომ ცვლადი.
მას შესაძლოა იყოს ექვსი -
უკაცრავად, ეს არ იქნება ექვსი.
ეს შეიძლება იყოს 16.
ეს შეიძლება იყოს 8.
ეს შეიძლება იყოს 32, თუნდაც 64.
მაგრამ კომპიუტერში უნდა გაიგოს.
ახლა int წლის მარცხენა მხარეს წარმოადგენს რა, პირიქით?
[INAUDIBLE]
დევიდ ჯ Malan: რა არის ეს?
[INAUDIBLE]
დევიდ ჯ Malan: გაცნობის ფუნქცია და, უფრო კონკრეტულად,
გაცნობის მისი გამომუშავება.
მარჯვენა.
ასე რომ, მაშინ როდესაც რამ ფრჩხილებში წარმოადგენს მისი შეყვანის, ასეთის არსებობის შემთხვევაში,
რამ მარცხენა წარმოადგენს მისი გამომუშავება.
და ამ შემთხვევაში, ნამატი სავარაუდოდ ბრუნდება int.
და ასე int არის დაბრუნების ტიპის ამ ფუნქციის.
>> რას ნიშნავს დაბრუნებას?
სიტყვასიტყვით, თქვენ იყენებთ სიტყვით დაბრუნების.
და მაშინ, თუ რას დაბრუნების უფლება სიტყვით არის
მთელი რიცხვი, მაშინ ეს მართლაც შეესაბამება იმას, რასაც ჩვენ დავპირდით.
თქვენ ვერ რაღაც მსგავსი -
hello, world -
რადგან ეს სიმებიანი.
ცხადია, რომ ეს არ არის მთელი რიცხვი.
ასე მოკლედ, ტვირთი მართლაც ჩვენზე, პროგრამისტი, უნდა იყოს კონკრეტული, როგორც
თუ რა ჩვენ დაბრუნების და შემდეგ ფაქტიურად წასვლა დაბრუნებაზე იგი.
და შემდეგ მიიღოს tad უფრო მკაფიო კონტექსტში -
იქ არის ისევ.
კონტექსტში -
დიდი სიურპრიზი შემოდიოდნენ მხოლოდ მომენტში.
კონტექსტში აქ არის ის არის, რომ თქვენი კომპიუტერის მეხსიერების, კიდევ ერთხელ,
Gigabyte, ორი გიგაბაიტი, რასაც.
შეიძლება უფრო მეტი.
შეიძლება უფრო ნაკლები.
მაგრამ კომპიუტერი ამას განიხილავს არა როგორც განსხვავებული სექციები.
რაღაც მიდის down იქ.
რაღაც მიდის up there.
სხვადასხვა პერსონალის მიდის შუა.
და დღეს ჩვენ უბრალოდ დაიწყოს ვეუბნებოდი ეს ამბავი.
>> მაგრამ ჩვენ დავბრუნდებით ამ დროთა განმავლობაში.
ახლა მხოლოდ ნაჭერი მეხსიერების ჩვენ ნამდვილად აინტერესებს არის ტექსტი სეგმენტი
იმიტომ, რომ მხოლოდ წარმოადგენს zeroes და პირობა
რომ Clang აქვს outputted.
ასე რომ, როდესაც თქვენ აწარმოებს ბრძანებას კლავიატურის მოსწონს a.out, ან თქვენ ორმაგი
დააწკაპუნეთ ხატი შესახებ Mac OS ან Windows, თქვენი პროგრამის დატვირთული თქვენი მყარი
მანქანა შევიდა RAM.
და ეს plopped ზედა თქვენი კომპიუტერის RAM, ასე ვთქვათ.
ახლა იმავდროულად, როგორც თქვენი პროგრამა იწყება გაშვებული და ძირითადი იღებს გამოძახებული
პროგრამის დაწერა ან პროგრამა Microsoft ან Apple წერდა, მისი ნებისმიერი
ადგილობრივი ცვლადები დასრულდება მდე დაეცა იქ ბოლოში თქვენი კომპიუტერის მეხსიერებაში.
მაგრამ თუ ძირითადი მოუწოდებს სხვა ფუნქცია, რომელიც თვითონ აქვს ცვლადები ან
არგუმენტები, ისინი დასრულდება up ზემოთ.
და თუ ეს ფუნქცია მოუწოდებს რაღაც, ისინი დასრულდება up ზემოთ იგი,
ზემოთ ეს, უპირველეს იგი.
და მხოლოდ ერთხელ ფუნქციის კეთდება შესრულებაში არ Stack of ქაღალდის, ისე
საუბარი, დაიწყოს მიიღოს ქვედა და ქვედა.
და ეს არის ის, რაც შემდეგ, მოკლედ, განმარტავს, თუ რატომ, როცა რეკავთ Cube -
ან რეკავთ ნამატი -
თქვენ გადადის ასლი ღირებულება.
და რა ეს იმას ნიშნავს pictorially არის, რომ თქვენ ფაქტიურად წერა
ნომერი 1 სხვა ნაწილში მეხსიერება, იცვლება, რომ 1 დან 2, იმ შემთხვევაში, თუ
ნამატი -
ან 8, იმ შემთხვევაში Cube -
და მერე ყრიან, რომ მეხსიერების მოშორებით როგორც კი ნამატი ან კუბი
ფუნქცია დააბრუნებს.
>> შეკითხვა.
[INAUDIBLE]
დევიდ ჯ Malan: სად - გლობალური ცვლადები ინახება რა
გაკეთებული მოუწოდა ინიციალიზაცია მონაცემები ან uninitialized მონაცემები.
განსხვავებით,, თუ თქვენ გაქვთ გლობალური ცვლადი და მივანიჭოთ მას
დაუყოვნებლივ ღირებულების მქონე ტოლობის ნიშანი, იგი მთავრდება ზედა არსებობს.
და თუ თქვენ უბრალოდ, ვამბობთ int x მძიმით, და არც ღირებულება, იგი მთავრდება ოდნავ
დაბალია RAM უბრალოდ კონვენციას.
სხვა კითხვები.
ყველა უფლება.
>> ასე რომ ამ სურათს დავბრუნდებით, როგორც ჩვენ უფრო ძლიერი, რაც ჩვენ შეგვიძლია გავაკეთოთ
კომპიუტერული.
მაგრამ ახლა, მოდით აქვს მოკლე intro to კრიპტოგრაფიის, კონკრეტული ტიპის
კრიპტოგრაფიის რომ არ გადაჭრის ყველა მსოფლიოს პრობლემების მაგრამ ამჯამად გადაჭრას
ზოგიერთი მათგანი.
ამ შემთხვევაში აქ, ჩვენ გვაქვს რაღაც მოუწოდა საიდუმლო გასაღები კრიპტოგრაფიის.
და საიდუმლო გასაღები კრიპტოგრაფიის, როგორც სახელი ვარაუდობს, გამომდინარეობს მისი უსაფრთხოების
საწყისი საიდუმლო.
ასე მაგალითად, თუ თქვენ უკან Grade სკოლა და თქვენ გავლით
პატარა საიდუმლო სიყვარულის წერილში ბიჭი ან გოგონა თქვენ გამანადგურებელი შესახებ - თუ
სურდა გაიაროს, რომ აუდიტორია, თქვენ ალბათ არ წერენ
ასეთი შენიშვნა ინგლისურ ან რასაც თქვენს მშობლიურ ენას წარმოადგენს, არამედ, თქვენ
შესაძლოა გაშიფრავს მას.
ან შეიძლება უბრალოდ გააგზავნოთ ტექსტური შეტყობინება ამ დღეებში.
მაგრამ თქვენ შეიძლება რეალურად გაივლის მათ შენიშვნა მთელი კლასის.
და ამის გაკეთება საიმედოდ, ისე, რომ თქვენი მეგობრები და მასწავლებელი
არ ვიცი რა თქვენ წერის, თქვენ შეიძლება ამუშავება სამართლიანად მარტივი
ალგორითმი -
ახალგაზრდა იმისა, რომ თქვენ შეიძლება იყოს -
უბრალოდ scramble სიტყვა.
ასე რომ ნაცვლად წერა, თქვენ შეიძლება დაწეროს ბ ნაცვლად B, თქვენ შეიძლება დაწეროს
C. ნაცვლად C, თქვენ შეიძლება დაწეროს D და სხვ.
ან თქვენ ვერ ამუშავება უფრო დახვეწილი თარგმანი წერილების
სხვადასხვა წერილებს.
მაგრამ დაჭერა არის ბიჭი ან გოგო, რომელსაც თქვენ გაგზავნის ამ შენიშვნა სჭირდება
ვიცი რაღაც.
რაც, ბუნებრივია?
მსგავსად, თუ რა საიდუმლო არის.
მსგავსად, თუ რა არის ის, რომ რუკების შორის როგორც და BS და Cs და DS?
არის თუ არა მხოლოდ ერთ დასძინა, ასე ვთქვათ, თითოეულ წერილებს გადასვლა
დან B, B, რომ C?
იქნებ უფრო კომპლექსური, ვიდრე რომ?
ასე, რომ თქვენ და თქვენი Crush უნდა ამ საიდუმლო ინფორმაციას.
მაგრამ სახის catch-22 აქ.
თუ ეს ძალიან პირველად თქვენ გაგზავნის ეს სიყვარული წერილი მეშვეობით
კლასის, თუ როგორ არის, რომ ბიჭი ან გოგო აპირებს ვიცით რა საიდუმლო კი არის?
ასე რომ საიდუმლო გასაღები Crypto არ გადაჭრით ყველა მსოფლიოს პრობლემებს.
და არსებობს რეალურად ურთიერთობისათვის რომ ჩვენ დაბრუნდება მიმართ
სემესტრის ბოლოს.
>> ანალოგიურად, აქვს არცერთი us ალბათ ოდესმე გაუგზავნა -
ანალოგიურად, ნუ ყველაზე მეტად ჩვენს არ ვიცი ვინმეს რომ მუშაობს, მაგალითად, ზე
Amazon.com.
და მაინც, ბევრი ჩვენგანი ალბათ იყიდა პერსონალის at Amazon.com.
და ჩვენ ისწავლება უნდა ვივარაუდოთ, რომ ამ ელექტრონული კომერციის
ოპერაციების უსაფრთხო.
მარჯვენა?
URL ალბათ ამბობს https.
არსებობს იქნებ სულელური პატარა ბოქლომს ხატი სადღაც.
არსებობს გარკვეული სახის კრიპტოგრაფიის უზრუნველყოფის თქვენი საკრედიტო ბარათის ინფორმაცია
თქვენს შორის და Amazon.com.
და მაინც, თუ კრიპტოგრაფიის მოიცავს იცოდა ზოგიერთი საიდუმლო, და ჯერ მე არ
იცით ვინმე at Amazon, და მე ნამდვილად არ მოწყობილი ნებისმიერი სახის
საიდუმლო ვინმესთან დროს Amazon, როგორ არის ჩემი კომპიუტერი ან ჩემი ბრაუზერი ამით?
ისე, თურმე არსებობს სხვა სახის კრიპტოგრაფიის საერთოდ რომ გადაჭრას
რომ პრობლემა.
მაგრამ დღეს, ჩვენ ფოკუსირება მარტივი, სადაც შეგიძლიათ დაიყენოთ წელს
წინასწარ ვიცი რაღაც საიდუმლო, ისევე როგორც პლუს 1 ან რუკების შორის როგორც და BS.
>> და პროცესი კრიპტოგრაფიის ზოგადად მოიცავს ამ.
თქვენ გაქვთ ზოგიერთი ძირითადი ტექსტი, გამოსახული აქ მარცხნივ.
თქვენ გაუშვით მეშვეობით გარკვეული ალგორითმის ან პროცედურა
ამისთვის encrypting იგი.
იქნებ ეს მხოლოდ ხდება B, B ხდება C. და მაშინ დასრულდება up ერთად
cipher ტექსტი.
იმავდროულად, ერთხელ თქვენი Crush იღებს საიდუმლო შენიშვნა, მას უნდა შემდეგ
გაშიფვრა იგი ზოგადად უკუქცევის რომ ალგორითმი რათა მიიღოთ
უკან ძირითადი ტექსტი.
ახლა ფიზიკური incarnations ამ.
მაგალითად, ეს პატარა საიდუმლო დეკოდერი ბეჭედი.
და ეს არის ბეჭედი იმ გაგებით, რომ არსებობს ორი აკრიფეთ აქ.
On გარეთ პერიფერია ამ რამ, არსებობს წერილების მეშვეობით Z,
თუმცა ისინი შემთხვევითი მიზნით.
და ქვეყნის შიგნით, იქ რეალურად ზოგიერთი ნომრები, ისეთი, რომ ამ
ბეჭედი, შეგიძლიათ სახის ჩართოთ გარეთ მაგრამ არა შიგნით, რათა გამოდიან
ნომრები წერილებს.
და კლიპი თქვენ შესახებ, რომ ნახოთ - რომელთაგან ზოგიერთი შეგიძლიათ მინახავს 24/7
გარშემო საშობაო სეზონი საწყისი ფილმის მოუწოდა საშობაო ამბავი.
თქვენ ნახავთ, რომ პატარა Ralphie იმდენად მოწადინებული გაერკვნენ, რა პატარა ობოლი
Annie საიდუმლო გაგზავნა იყო რომ მას, რომ უკვე communicated, მე ვფიქრობ,
სახით რიცხვითი შეტყობინებების სერიული ყუთში.
და გქონდათ დაგროვების ყველა პატარა ბარათები, რომ მოვიდა
წელს ხორბლის ყუთში.
თქვენ იძულებული გახდა გვერდის მათ შემოსული
თქვენ ჰქონდა დასაბრუნებლად საიდუმლო დეკოდერი ბეჭედი, ასე რომ თქვენ შეგიძლიათ საბოლოოდ გაერკვნენ
რა არის რუკების შორის ასოები და რიცხვები,
ან ასოები და წერილები.
ასე, რომ გადმოგცეთ ეს მოკლე კლიპი საშობაო ამბავი მოტივირება pset 2 და
ჩვენი დისკუსია, წელს მომენტში, მასივი.
ასე რომ აქ გვაქვს Ralphie.
>> [ვიდეო აღწარმოების]
-იქნება ეს ცნობილია ყველასთვის და sundry, რომ რალფ პარკერი წინამდებარე დაინიშნა
წევრი Little Orphan Annie საიდუმლო წრე და მას უფლება აქვს ყველა
წარჩინებით და სარგებელი ხდება მასთან.
-ხელმოწერილი, Little Orphan Annie.
Countersigned, პიერ ანდრე!
In მელნის!
პატივით და სარგებელს, უკვე ასაკში ცხრა.
მოდი შესახებ, მოდით კიდევ იგი.
მე არ გვჭირდება ყველა რომ ჯაზის შესახებ კონტრაბანდისტები და მეკობრეები.
-მოუსმინეთ ხვალ ღამე დადების თავგადასავალი შავი
Pirate გემი.
ახლა დროა, Annie საიდუმლო გაგზავნა თქვენთვის წევრები
საიდუმლო წრე.
გახსოვდეთ, ბავშვები, მხოლოდ წევრების Annie საიდუმლო წრე შეიძლება decode
Annie საიდუმლო გაგზავნა.
გახსოვდეთ, Annie დამოკიდებულია თქვენ.
უცნობია თქვენი ქინძისთავები, რათა B2.
აქ არის გაგზავნა.
12, 11 -
-მე ჩემი პირველი საიდუმლო შეხვედრა.
-14, 11, 18, 16 -
პიერ იყო დიდი ხმა ამაღამ.
მე ვერ გეტყვით, რომ ამაღამ გზავნილი იყო მართლაც მნიშვნელოვანია.
-3, 25.
სწორედ შეტყობინება Annie თავად.
გახსოვდეთ, არ ვუთხრა ვინმეს.
-90 წამის შემდეგ, მე მხოლოდ სახლში ოთახი, სადაც ბიჭი ცხრა
შეიძლება იჯდეს კონფიდენციალურობა და decode.
Aha, ბ მივედი შემდეგი.
ე პირველი სიტყვა არის იყოს.
S. ეს მოდიოდა ადვილი არის.
U.
-Oh, მოდის, Ralphie.
მე მივიღე წასვლა.
-I'll be უფლება down, MA.
-Gee whiz.
-T, ო დარწმუნდით.
დარწმუნდით რა?
რა იყო პატარა ობოლი Annie ცდილობს ამბობენ?
დარწმუნდით რა?
-Ralphie!
რენდი აქვს გასავლელი.
თუ თქვენ ხართ, გთხოვთ, გამოვა?
-ყველა უფლება, MA.
მე უფლება out.
-I იყო უახლოვდება არის.
დაძაბულობა იყო საშინელი.
რა იყო ეს?
ბედი პლანეტა შეიძლება სასწორზე დევს.
-Ralphie!
რენდი ის მიიღო წასვლა.
-I'll be უფლება out, ამისთვის ღაღადებდეს ხმამაღლა.
-Gee, თითქმის იქ.
ჩემი თითების გაფრინდა.
ჩემი გონება იყო ფოლადის ხაფანგში.
ყველა ფორე vibrated.
ეს იყო თითქმის ნათელია.
დიახ, დიახ, დიახ, დიახ.
-დარწმუნდით დალევა თქვენი Ovaltine.
Ovaltine?
Crummy კომერციული?
Son of a Bitch.
[END ვიდეო აღწარმოების]
>> დევიდ ჯ Malan: ასე რომ ჩვენ გვაქვს კრიპტოგრაფიის.
ასე რომ თუნდაც კომპიუტერულ შეგვიძლია წავიდეთ შესახებ განხორციელების ან
წარმოადგენს რამ ასე?
კარგად, ჩვენ გვჭირდება გზა გამოხატავს საკუთარ თავს ცოტა მეტი მოქნილად, ვიდრე
ჩვენი ცვლადები ჯერჯერობით არ დაუშვეს.
ჩვენ გვქონდა ints.
ჩვენ გვქონდა სიმბოლო.
ჩვენ გვქონდა მოძრავი და ორადგილიანი და რამდენიმე სხვა.
მაგრამ ეს არის ინდივიდუალური ცალი მეხსიერების რომ ნამდვილად არ გვაძლევს
გამოხატოს რამ, როგორიცაა სიტყვა და სასჯელი და ფრაზები.
მართლაც, ჩვენ მოუწოდა ასეთი რამ სტრიქონები.
მაგრამ ჩვენ დაპირდა, რომ ეს მართლაც მხოლოდ გამარტივების წელს CS50
ბიბლიოთეკა, რომ ჩვენ აპირებს კანი უკან.
>> და მოდით ახლა გადავიდეთ გავაკეთოთ, რომ აქ.
ნება მომეცით წავიდეთ წინ და გახსენით ფაილი -
ყველა ამ ფაილებზე ხელმისაწვდომია როგორც ყოველთვის ონლაინ -
მოუწოდა array.c გადაჭრის პრობლემას უკავშირდება სტრიქონები მაგრამ რომ ხატავს
სურათს აქ, როგორ შეიძლება გამოიყენოთ რაღაც მოუწოდა მასივი.
Array არის მონაცემები ტიპის.
ეს გაცნობის ცვლადი, საქართველოს ჯიშები, რომ მრავლობითი პატარა მონაცემთა ტიპები
შიგნით მას თავში დაბრუნება თავში დაბრუნება.
ასე მაგალითად, თუ გვინდა დავწეროთ პატარა პროგრამა, რომელიც გაძლევთ თქვენს
Quiz საშუალოდ კურსი მოსწონს 50 რომ აქვს ორი ვიქტორინებში, თქვენ შეიძლება ძალიან ადვილად
დაწერეთ ამ პროგრამის - საფუძველზე კი ზოგიერთ გასულ კვირას მატერიალურ -
გამოყენებით GetInt და რამოდენიმე ცვლადი.
Int quiz1, int quiz2, და ეს საკმაოდ მარტივია.
ეს ალბათ 10, 20 ხაზების კოდი, მაქს, განახორციელოს პროგრამა, რომელიც სთხოვს
მომხმარებლის ორი Quiz ქულით და შემდეგ computes მათი საშუალო დამატებით მათ
ერთად, გამყოფი ორი, ხოლო შემდეგ ბეჭდვის შედეგები.
ჩვენ შეგვეძლო ალბათ, რომ საკმაოდ ადვილად არის შემდეგ
ზოგიერთი ხმების წუთი.
>> მაგრამ პრობლემა ისაა, რომ ვივარაუდოთ, რომ 50 ჰქონდა სამი ტესტებში ან ოთხი.
დავუშვათ, რომ თქვენ სურდა გამოიყენოთ იგივე პროგრამის კლასი, რომელიც ჰქონდა
ყოველკვირეული ტესტებში.
იფიქრეთ კლასის, რომელიც ყოველკვირეული ტესტებში.
თუ მოსწონს 16 ან იმდენად კვირით სემესტრში, ახლა თქვენ გაქვთ 16 ცვლადები -
int quiz1, int quiz2, int quiz3, int quiz4.
როგორც კი დაიწყება ვხედავთ ამ redundancy, ამ გადაწერა და pasting
კოდის, უნდა დაიწყოს, რათა გსურთ იყო უკეთესი გზა.
და საბედნიეროდ, რადგან მასივები, არსებობს.
ასე რომ მოდით ეს.
პირველი, მინდა წარმოგიდგინოთ ძალიან მარტივი რამ, რომ ჩვენ არ გამოიყენება ჯერჯერობით
მაგრამ დაინახავთ მას ზოგჯერ კოდის.
ეს არის რა ზოგადად მოუწოდა მუდმივი.
ასე რომ მუდმივი იმ გაგებით, რომ ამ მნიშვნელობის არასოდეს ცვლის.
ადამიანის კონვენციის როდესაც შექმნა კონსტანტა გამოიყენონ ყველა დედაქალაქში
წერილებს, მხოლოდ ისე, რომ იგი ნამდვილად გამოირჩევა თქვენს კოდი.
და სპეციალური სიტყვით რომ სარგებლობთ C არის # განსაზღვრავს.
ასე რომ, თუ თქვენ ამბობთ # განსაზღვრავს, მაშინ სივრცე, მაშინ სიტყვა, რომელიც გსურთ გამოიყენოთ
მუდმივი სახელი და შემდეგ ღირებულების მუდმივი.
ასე შეტყობინება, ეს განსხვავდება მინიჭების რაიმე ცვლადი.
იქ არ არის ტოლობის ნიშანი.
იქ არ არის მძიმით.
ეს არის რა საყოველთაოდ ცნობილია, როგორც preprocessor დირექტივა, მაგრამ უფრო
რომ სხვა დროს.
>> ახლა ამ ქმნის unchanging ღირებულება მოუწოდა ტესტები, რომელთა ფაქტობრივი
რიცხვითი მნიშვნელობა არის 2.
ასე რომ სადმე ხედავთ ტესტები, ტესტები, ტესტები მთელ ამ ფაილის, რომ
უბრალოდ რიცხვი 2.
ახლა, თუ გავითვალისწინებთ მთავარ ახლა, ვნახოთ, თუ როგორ ეს სამუშაოები.
თავდაპირველად, იგი გამოიყურება ცოტა cryptic.
მაგრამ ყველა პერსონალის საწყისი კვირაში ერთი.
დასვით მომხმარებლის for კლასის.
როგორ გავაკეთოთ ეს?
კარგად, შეესაბამება 22 -
ეს მართლაც წვნიანი ნაწილი -
ვაცხადებ float, მაგრამ არა მხოლოდ ერთი float.
მე გამოცხადების, არამედ მასივი მცურავი პუნქტიანი ღირებულებებს.
რომ ცვლადი აპირებს ეწოდოს კლასის, როგორც გულისხმობდა აქ.
მაგრამ მხოლოდ ნაჭერი ახალი სინტაქსის მაშინ ეს კვადრატულ ფრჩხილებში, ფაქტი
რომ მე განაცხადა float კლასების და შემდეგ ღია bracket და შემდეგ ნომერი.
შეტყობინება, თუ ეს მუდმივი, ეს მხოლოდ ისე, როგორც ეს.
ეს ნიშნავს, hey კომპიუტერი, მომეცი ორი მოძრავი, და მოდით ერთობლივად მოვუწოდებთ
მათ კლასის.
ეს არის განსხვავებით ბევრად უფრო რუტინული პროცესი მოსწონს ეს.
Float grade1, ათწილადი grade2 და სხვ.
ამიტომ მასივი საშუალებას გვაძლევს განვახორციელოთ ეს იდეა, მაგრამ უფრო ნაკლებად messily, წელს
ისე, რომ ჩვენ შეგვიძლია დავწეროთ ერთი ხაზი კოდი ნაცვლად, ვთქვათ, 16 16
კვირაში სემესტრში.
ამიტომ მე არ მინდა, რომ მყარი კოდი 2 რადგან თუ ფიქრობთ ეს ახლა
ლოგიკურად - ვარაუდობენ, მომავალ წელს CS50 ცვლილებების 3 ტესტებში ნაცვლად.
და მქონდა ნომერი 2 აქ.
მქონდა ნომერი 2 აქ.
ეს ხდება ძალიან რუტინული და ძალიან ადვილი Screw up და შემთხვევით შეცვალოს
ერთი ღირებულების 3 და ელოდებიან რაიმე სხვა ღირებულება 2.
ამიტომ მე ვაპირებ ნაცვლად აბსტრაქტული ამ მოშორებით და გამოიყენოს ეს მუდმივი, რომ, როგორც მისი
სახელი ვარაუდობს, არასდროს ცვლილებები.
და ახლა, არ აქვს მნიშვნელობა, თუ რამდენად გვაქვს სხვადასხვა ტესტებში წელს ან მომდევნო, მე
უბრალოდ უნდა შეიცვალოს ეს ერთ ადგილას, აქ ზედა.
>> ასე რომ ყველა კონსტანტა.
ამასობაში, ახალი კონცეპტუალური ფუნქცია რომ მასივი.
ასე რომ კვადრატულ ფრჩხილებში მომეცი ამ ბევრი მოძრავი და საშუალებას ჩემთვის კოლექტიურად
მოვუწოდებთ მათ კლასის აქ.
ახლა ვნახოთ რა მე ვაპირებ ამის გაკეთებას.
აქ ხაზი 24 არის დასაწყისიდან ამისთვის loop.
ეს მართლაც არაფერი მიეცით.
უბრალოდ გამოყენებით ტესტებში ნაცვლად მყარი კოდირებული ნომერი.
მაგრამ არაფერი ინტელექტუალურად სხვადასხვა იქ გასულ კვირას.
ეს არის მხოლოდ printf.
ამიტომ printf ("ინტელექტუალური ნომერი% d of% d"), რადგან მინდა ამობეჭდოთ მომეცი Quiz
ნომერ პირველი ორი და შემდეგ ორი ორი.
ასე რომ, ეს არის წმინდა წყლის ესთეტიკური რამ.
მაგრამ საინტერესო ნაწილი ახლა არის ხაზზე 27.
იმისათვის, რომ შეავსონ ერთი ორი placeholders ერთად მცურავი პუნქტიანი
ღირებულება, თქვენ კვლავ გამოიყენოთ კვადრატულ ფრჩხილებში.
ამ შემთხვევაში, მე გამოყენებით რადგან მე ამ loop დაიწყო მე equaling
რა ღირებულება, სავარაუდოდ?
0.
>> ამიტომ პირველ iteration ამ მარყუჟის, ეს თითქოს მე
დაწერა ეს კოდი.
მაგრამ მეორე iteration ამ მარყუჟის, ეს თითქოს მე
დაწერა ეს ჩემი კოდი.
მაგრამ ის ფაქტი, რომ მე გამოყენებით ცვლადი არის სრულყოფილი, რადგან, როგორც სახელი
ვარაუდობს, ის განსხვავებული მისი ღირებულება ყოველ iteration.
ამიტომ მე შევსების ამ მასივი ერთ ადგილზე დროს.
რას მასივი გამოიყურებოდეს?
ისე, მიზეზი მე მიიპყრო ამ სუპერ მარტივი მართკუთხედი ეკრანზე აქ
ადრე იყო ამ მიზეზის გამო.
Array მხოლოდ ბლოკი მეხსიერება მოჰყვა კიდევ ერთი ბლოკი მეხსიერება,
მოჰყვა კიდევ ერთი ბლოკი მეხსიერება, და სხვ.
ასე რომ, თუ ჩემი array არის ზომა 2, ამ შემთხვევაში აქ, ყველა მე აკეთებს მიერ
აკრეფით ჩემი Quiz ქულით, ისევე როგორც აქ.
მე მივიღე 100 ამ ერთ.
და შემდეგ მე მივიღე 99 ამ ერთ.
მაშინ ეს მეხსიერების შეიძლება არც კი იყოს გამოყენებული, რადგან მე მხოლოდ სთხოვა
კომპიუტერში მასივი ზომა 2.
იმ მოედნებზე ჯერ კიდევ არსებობს.
მარჯვენა?
თქვენ კვლავ აქვს ორი გიგაბაიტი ოპერატიული მეხსიერება, მაშინაც კი, თუ თქვენ მხოლოდ
ითხოვენ ორი მოძრავი.
ასე რომ იდეა უკან კოლექტორები არის, რომ კომპიუტერი მხოლოდ იღებს ბლოკი მეხსიერება
და შემდეგ გამოყოფს პატარა დარტყმები თავში დაბრუნება თავში დაბრუნება.
და ისე, რომ ყველა წყობა.
ეს მომიჯნავე ბლოკი მეხსიერება, შიგნით, რომელიც შეგიძლიათ დააყენა რამ.
>> ახლა ეს მოხდება, მაშინ ნუ რამოდენიმე მოსაწყენი არითმეტიკული.
თუ მე გადახვევა ქვემოთ აქ, ეს არის სადაც მე მაშინ iterate მეტი მასივი.
მე ამუშავება summation ყველა ღირებულებების მასივი.
და მერე გამოიყენოთ მრგვალი ფუნქცია აქ მართლაც
მთლიანობაში დაყოფილი ვიქტორინებში.
მაგრამ ნება მიბოძეთ ტალღის ჩემი ხელი, რომ როგორც სახის საკმარისი არითმეტიკული ახლა.
მაგრამ ყველა რომ აკეთებს ჩემთვის საბოლოოდ არის Computing საშუალო.
ამიტომ პირველ Quiz პლუს მეორე ვიქტორინა, გაყოფილი 2, ხოლო შემდეგ ბეჭდვის
ის როგორც int.
>> მაგრამ მოდით ახლა გადასვლის სხვადასხვა მაგალითი უწოდა string1,
რომელიც ხატავს მსგავსი სურათს მაგრამ მისი გამოყენება სტრიქონები.
ნება მომეცით წავიდეთ წინ და გაამარტივებს ამ მხოლოდ მომენტში.
და პატიება წანაცვლება ახლა.
ცნობა, ხაზი 19 ამ მაგალითად, მივიღებ string საწყისი მომხმარებელს.
მაგრამ შეამჩნევს თუ რა მე შემდეგი აკეთებდა ხაზები 22 Onward.
მე რეალურად iterating საწყისი მე მდე - და ეს არის ახალი ხრიკი -
strlen, string სიგრძე.
ეს არის ფუნქცია, რომელიც გააჩნია C, რომ თუ თქვენ გაიაროს ეს ტექსტი, იგი მოგვითხრობს
რამდენი გმირები არიან, რომ სიმებიანი.
ეს იყო.
ის ფაქტი, რომ ეს strlen ნაცვლად სიმებიანი სიგრძე არის მხოლოდ იმიტომ, რომ ეს
უფრო ლაკონური.
30 წლის წინ, ხალხი მომეწონა დაწერა რამ როგორც succinctly შეიძლება.
ასე რომ ჩვენ დაცული, რომ კონვენციის აქ.
მე + + უბრალოდ ნიშნავს ნამატი მე თითოეულ iteration.
და ახლა შეამჩნია ეს, რომელიც მართლაც ძალიან საინტერესო.
ასე რომ ხაზი 24, მე ვიტყვი, კომპიუტერი, მომეცი ხასიათი, რვა
ბიტი და ეძახით გ.
მაგრამ რა არის ამ მარჯვენა მხარეს ამბობდა?
ინგლისურ, რას წარმოადგენს?
[INAUDIBLE]
დევიდ ჯ Malan: ზუსტად.
მომეცი პირველი პერსონაჟი მასივი.
ან საერთოდ, მომეცი მე-th პერსონაჟი მასივი.
და გააცნობიეროს, მნიშვნელოვანია, რომ როგორც კომპიუტერი მეცნიერები, ჩვენ რეალურად
დათვლის საწყისი 0.
თქვენ არ შეხედულებისამებრ ახლა უნდა დაიწყოს ამით.
ახლა თქვენ უნდა მოიქცეს შესაბამისად კომპიუტერის მოლოდინი და
ითვლიან ნულიდან რადგან [0] იქნება პირველი
პერსონაჟი სიმებიანი.
[1] იქნება მეორე.
[2] იქნება მესამე და სხვ.
ასე რომ, ეს პროგრამა, თუ კომპილირება - ეს არის, კიდევ ერთხელ, string1.
>> ასე რომ string1.
და ახლა აწარმოებს string1 ჩემი ტერმინალის ფანჯარაში.
ეს ელოდება შეყვანის, ისე მე ვაპირებ აკრიფოთ, ვთქვათ, დავით.
შეიყვანეთ.
და ახლა იგი ბეჭდავს DAVID ყველა სხვადასხვა ხაზების რადგან
შეამჩნია რა ვაკეთებ.
მე დაბეჭდვის ერთი ხასიათი დროს.
ახლა ჩვენ არ წასვლას დეტალურად დღეს ამ.
მაგრამ მე წაიშალოს მომენტში წინ ამ გამშვები აქ.
თურმე, თუ მომხმარებელს misbehaving, შეჯიბრებითობის, ან უბრალოდ
დაბნეული, შეგიძლიათ რეალურად ვერ მისცემს სიმებიანი ზოგიერთი სიგრძე.
თუ თქვენ მოხვდა არასწორი გასაღები წლის კლავიატურის, თქვენ შესაძლოა უარი
არ სიმებიანი ყველა.
ან თუ თქვენ მუქარის, თქვენ ალბათ ცდილობენ ჩასვით წელს Gigabyte-ის ღირებულების
ესსე შევსება ეს კონტექსტი.
და თუ კომპიუტერი ამოიწურება მეხსიერების, აღმოჩნდება, რომ ჩვენ ვაპირებთ
დავუბრუნდეთ ამ მასივები მოუწოდა null.
ასე რომ, ახლა, უბრალოდ ვიცი, რომ არსებობს ამ მასივები მოუწოდა null, რომ
საშუალებას მოგვცემს შემოწმება როცა ჩვენ მეხსიერება ღალატობს, სხვა საკითხებს შორის.
>> მაგრამ თუ მე გახსენით ახლა string2, შეამჩნია ერთი განსხვავება აქ.
გაითვალისწინეთ ერთი განსხვავება აქ string2.
With string2, ეს არის მარყუჟის ცოტა განსხვავებული.
ნება მომეცით წაშლა nulls ასე, რომ ჩვენ შეგვიძლია საუბარი იმ სხვა დროს.
მაგრამ რა განსხვავდება იმ მარყუჟის ამ დროს?
და შემიძლია დავუბრუნდეთ წინა მაგალითს.
ასე რომ ორი ვერსია.
ეს არის ვერსია ერთ.
ერთი, ორი, ერთი ორი.
ამიტომ strlen ზარის სადაც?
ეს პირველ ნაწილს შეეხება loop.
ნებისმიერი აზრები, თუ რატომ მე ამით?
Yeah.
[INAUDIBLE]
დევიდ ჯ Malan: ასე რომ, ჩვენ არ მოვუწოდებთ ფუნქცია თითოეული დრო.
სწორედ.
შეგახსენებთ, საწყისი ამისთვის მარყუჟების, რომ ისინი სუპერ მარტივი ერთხელ თქვენ სახის
ესმით, რომ ეს არის ინიციალიზაციისას,
მდგომარეობა, და განახლება.
პრობლემა ისაა, რომ მდგომარეობა ხდება ყოველ
iteration of loop.
და ა.შ. ამ მაგალითში აქ, რა არის ცუდი ფაქტი
რომ ეს ჩემი მდგომარეობა?
თქვენ მოუწოდებდა strlen ისევ და ისევ და ისევ.
მაგრამ ერთხელ მე აკრეფილი დავით, სიგრძით, რომ სტრიქონს ხუთი.
და ეს არ შეიცვლება ყოველ iteration of loop რადგან
სიმებიანი კვლავ D--V-I-D. ასე რომ, ეს არის მინიშნება რა აპირებს გახდეს
მნიშვნელოვანი იდეა ცნობილია, როგორც დიზაინის გადაწყვეტილება, სადაც - უბრალოდ არ
მიიღოს კომპიუტერი ზედმეტი მუშაობა.
>> ახლა ისევე როგორც Sneak ესკიზი pset 2, pset 2 in სტანდარტული გამოცემა არის
აპირებს დაუპირისპირდეს თქვენ რეალურად განახორციელოს გარკვეული რაოდენობის ciphers, ზოგიერთი
პუნქტების შიფრირების ალგორითმები, ასე რომ თქვენ შეგიძლიათ ორივე დაშიფვრა და გაშიფვრა
საიდუმლო შეტყობინებები, ჰგავს ერთი Ralphie არსებობს გაშიფრული გამოჩნდება.
In Hacker გამოცემა pset 2, ჩვენ ვაპირებთ წასვლა ცოტა შემდგომი.
ჩვენ ვაპირებთ გადასცემს თქვენ ფაილის ფაქტობრივი კომპიუტერული სისტემა, რომელიც შეიცავს
მთელი bunch of სახელისა და ფაქტობრივი დაშიფრული პაროლები, და გამოწვევა
ამისთვის Hacker გამოცემა იქნება, რათა ბზარი იმ პაროლები და ფიგურა
რა კრიპტოგრაფიის ან რა საიდუმლო იყო გამოყენებული, რათა რეალურად
გენერირება იმ პაროლები.
და ჩვენ ვაპირებთ ამ გამოყენებით ახალი ფუნქცია აქ C რომ მე მივცემ
უბრალოდ დემო, რომელიც ცნობილია როგორც ბრძანება ხაზი არგუმენტები.
>> გამოდის,, როგორც ზოგიერთი თქვენთაგანი შეიძლება მინახავს ნაწილში ან სახელმძღვანელოებში,
მთავარი ყოველთვის არ უნდა იყოს ბათილად ფრჩხილებში.
თურმე მთავარი ასევე შეიძლება წერილობითი მოსწონს, ორი არგუმენტები,
argc და argv, სადაც argc არის ხმების სიტყვა, რომ თქვენ აკრიფოთ შემდეგ
პროგრამის სახელი თქვენს ბრძანებათა სტრიქონიდან.
და argv არის ფაქტობრივი სიტყვა.
და როგორც კვადრატულ ფრჩხილებში არსებობს ვივარაუდოთ, argv აშკარად მასივი.
ეს იქნება სიმებიანი შემდეგ სიმებიანი შემდეგ სიმებიანი მეხსიერებაში.
ასე რომ, რასაც ჩვენ ვაპირებთ გამოუვა, დაწყებული pset 2, არის
მსგავსი რამ.
თუ მე argv1, რომელიც მაგალითად ჩვენ დაბრუნებას ორშაბათს, და აწარმოებს
იგი, შეამჩნია, რომ არ ჩანს არაფერი გაუკეთებია.
უბრალოდ ბეჭდავს out საკუთარი სახელით.
მაგრამ თუ ვიტყვი Goodbye კლასის შეამჩნევთ, რომ ამ პროგრამის სავარაუდოდ iterates
აღემატება თითოეული სიტყვა, რომლებიც აკრეფილი ბრძანებათა ზოლზე.
და საშუალება, რომლითაც ჩვენ შესვლის უფლების მოსაპოვებლად სიტყვა, რომ მომხმარებელს აქვს
აკრეფილი ბრძანებათა ზოლზე არის შეცვლით მთავარ დაწყებული ამ კვირის, საწყისი int
ძირითადი (void) to int ძირითადი (argc, argv).
და ამგვარად იქნება დაბადებული command line არგუმენტები.
და კიდევ თქვენ ნამდვილად დახვეწილი ამ, თქვენ გექნებათ დაწერა
მართლაც trippy პროგრამებს, როგორიცაა ამ ერთი აქ, რომელიც მაღლა იწევს და მის ფარგლებს გარეთ
ზოგიერთი ფუნქციონალური ჩვენ გავაკეთეთ დღემდე მაგრამ ყველა საკმაოდ ძლიერი.
>> ამიტომ, ჩვენ დავტოვებთ ამ ამ ეკრანზე.
და ვნახავთ თქვენ ორშაბათს.