დინამიკები 1: All უფლება. კეთილი იყოს. ეს არის კვირას ორი CS50 და ჩვენ გვაქვს დღემდე იყენებს ფუნქციები მაგრამ მეტწილად აღებული მათ გადასცა. ჩვენ გამოყენებული printf რომელსაც აქვს მხარე ეფექტი ბეჭდვა რამ ეკრანზე. ჩვენ გამოყენებული მისაღებად-int, მიიღეთ float. მაგრამ თუ თქვენ ნამდვილად გინდათ შექმნათ საკუთარი ფუნქციები, როგორც ზოგიერთი თქვენ ალბათ უკვე შეუდგა გააკეთოს პრობლემა Set ერთი, თუმცა არ არის მკაცრად საჭირო? ისე, მოდით წავიდეთ წინ და დავუბრუნდეთ, რომ პრობლემა მხოლოდ სვამს შესახებ for მათი სახელი და ბეჭდვა რაღაც ეკრანზე, მაგრამ ცდილობენ ფაქტორი გარკვეული საქართველოს საერთო რომ ჩვენ ჩანს ჩვენი კოდი დღემდე. ასე, რომ მე ვგულისხმობ შემდეგ. მე ვაპირებ წავიდეთ წინ და შევქმნათ ახალი პროგრამა, მხოლოდ დარეკვა ეს hello.c, როგორც ყოველთვის. მე ვაპირებ წავიდეთ წინ და მისცეს თავს მოიცავს სტანდარტული io.h ზედა. მე ვაპირებ ასევე მისცეს თავს preemptively CS50 ბიბლიოთეკის ისე, რომ მე არ მიიღოს დაიყვირა at მიერ შემდგენელი. ახლა კი მე ვაპირებ წავიდეთ წინ და აცხადებენ, int, მთავარი, ბათილად. შემდეგ კი აქ, ეს არის სადაც მინდა იმისათვის, რომ დავიწყოთ გამოაცხადოს ფუნქციებს რამდენიმე სხვა ფუნქცია, მე ვარ აპირებს დაწეროს, მაგრამ ეს არ გაკეთებული არსებობს. მაგალითად, ვარაუდობენ, რომ მინდოდა წერენ ფუნქცია, რომელიც საშუალებას აძლევს ჩემთვის ამობეჭდოთ hello, მძიმე, და შემდეგ რამდენიმე მომხმარებლის სახელზე. იმის ნაცვლად, რომ გრძელდება ამის გაკეთება printf hello,% s, რომ არ იქნება, თუ იქ იყო ფუნქცია მოუწოდა არ printf მაგრამ ბეჭდური სახელი? ასე რომ, სხვა სიტყვებით, მინდა შეძლებს დაწერა პროგრამა, რომელიც აკეთებს პატარა მსგავსი რამ. პირველი, მე ვაპირებ ვთქვა printf თქვენი სახელი, რითაც რითაც მომხმარებელს მომეცი მისი სახელი და შემდეგ მე აპირებს გამოიყენოს ნაცნობი სიმებიანი s აქ ვაცხადებ, სიმებიანი. მომეცი ცვლადი ტიპის ტექსტი, ეძახით s, და მაღაზიაში რომ შედეგად მოუწოდებენ მიიღოს სიმებიანი. მაგრამ ახლა ამ კვირის წარსულში, მე გარკვეულწილად tediously გაკეთდეს hello,% s / n. ხოლო სხვა სიტყვებით, ჩვენ ვნახეთ ამ მაგალითად რამოდენიმე ჯერ, და ეს ტრივიალური მაგალითი იმიტომ, რომ იქ მხოლოდ ერთი ხაზი კოდი, ასე რომ ეს ნამდვილად არ დიდი გარიგება შენარჩუნება ბეჭდვის ერთხელ. თუმცა ვარაუდობენ, რომ ეს ხაზი კოდი რეალურად იყო ხდება ტვირთი, და ეს არ არის ერთი ხაზი კოდი, მაგრამ 10 ხაზი კოდი რამდენიმე კვირის განმავლობაში დღეიდან, და თქვენ მხოლოდ მისაღებად დაღლილი საქართველოს გადაწერა და pasting ან retyping იმავე კოდი. თუ არ იქნება ლამაზი ნაცვლად აკეთებს printf hello,% s და ა.შ., რომ არ იქნება, თუ იქ იყო ფუნქცია მოუწოდა ბეჭდვითი სახელი, რომელიც იღებს არგუმენტს - სხვა სიტყვებით, ის შეყვანა - და შემდეგ მძიმით. ასე რომ, ფუნქცია, რომ არა ეს იყოს ლამაზი თუ არსებობდა? მაშინ მე არ უნდა ფიქრი რა printf, რა% s და ყველა ამ სირთულეების, რომლებიც არ არის, რომ საინტერესოა. ისინი სასარგებლო. ასე რომ, ბეჭდვის სახელი, სამწუხაროდ, არ იყო გამოიგონეს 40 პლუს წლის წინ. არავის ეგონა, რომ დაწერა. მაგრამ ეს სილამაზე, რომელსაც პროგრამირების ენა, ისევე, როგორც Scratch შეგიძლიათ განსაზღვრავს საბაჟო კორპუსები, ისე in C და ყველაზე ნებისმიერ ენაზე, შეგიძლიათ განსაზღვროს საკუთარი ფუნქციონირება, შეიძლება თქვენ განსაზღვრავს საკუთარ ფუნქციებს. ასე რომ, მიუხედავად იმისა, რომ ჩვენ მთავარ მიერ ავტომატურად უფასოდ, შეგვიძლია განაცხადოს ჩვენი საკუთარი ფუნქციები. ამიტომ, მე ვაპირებ რაღაც ოთახში აქ დასაწყისშივე, და მე ვაპირებ განაცხადოს ჩემი საკუთარი ფუნქცია, ხდება თვალი ცოტა უცნაურია, პირველ რიგში, მაგრამ ჩვენ მოვა უკან ეს ადრე ხანგრძლივი. მე ვაპირებ ვთქვა, ბათილად, რითაც მითითებით ამ ფუნქციას აკეთებს რაღაც, აქვს გვერდითი ეფექტი, მაგრამ ეს არ დაბრუნდება რაღაც ჩემთვის ანალოგიურად, რომ მიიღოთ int ან მიიღოს სიმებიანი თავად აკეთებს. და მე ვაპირებ, რათა ამ ფუნქციის სახელი ბეჭდვითი სახელი და მე ვაპირებ განმარტებით, ეს ბიჭი აპირებს სიმებიანი, და მე ვაპირებ მოვუწოდო, რომ სიმებიანი სახელი. მე ვერ ვუწოდებ არაფერი მინდა, მაგრამ მე მინდა ჩემი კოდი უნდა იყოს თვითმმართველობის დოკუმენტირების. სხვა სიტყვებით, თუ ერთი თქვენგანი იყო ამ ფაილის გახსნის და წაიკითხავს, ​​შეიძლება სახის infer საწყისი სახელი რომ შეყვანის რა როლი ეს უნდა ითამაშოს. ახლა კი ქვემოთ, რომ მე ვაპირებ გახსნა curly მუდმივი წინააღმდეგობა გაუწიოს და დახურული curly მუდმივი წინააღმდეგობა გაუწიოს, და ასე შემდეგ შეამჩნია მე მოჰყვება იგივე ნიმუში წლის ხაზების ოთხი მეშვეობით შვიდი როგორც მე უკვე შემდეგ კარგი კვირაში პლუს ახლა შორის, ვთქვათ, ხაზების ცხრა და 14, რომელიც შეადგენს ძირითად. სხვა სიტყვებით, ბეჭდვა სახელი არის კიდევ ერთი ფუნქცია. ახლა, შემდგენელი არ აპირებს ვიცი მოვუწოდებთ ამ რამ ავტომატურად იმიტომ, რომ მე ფაქტიურად მხოლოდ გამოიგონა ის, მაგრამ ეს ვიცი მაინც მოვუწოდებთ მთავარი ავტომატურად და შემდეგ, რა თქმა უნდა ხაზი 13, მოგიწოდებთ, საკუთარი ფუნქცია. და რადგან მე განაცხადა, რომ ფუნქცია up on line ოთხი ადრე, მთავარ ამ აპირებს ასწავლიან შემდგენელი რა გაცემა, unquote, "ბეჭდვის სახელი" ნიშნავს და რა უნდა გააკეთოს. ასე რომ, მე ვარ ერთგვარი ვაძლევთ მას ახალი საბაჟო ბლოკირება კონტექსტში, ვთქვათ, ნულიდან. ასე რომ, აქ, მე შემიძლია დააყენა, რომ ძალიან ხშირი ან განმეორებითი ნიმუში კოდი მე შენარჩუნება წერა კლასის, printf % S hello,% s / n ", - რა მინდა დააყენა აქ? S? მინდა დააყენა სახელი ამ კონტექსტში. ასე რომ შეამჩნია ცოტა dichotomy აქ. იმიტომ, რომ მე ვაცხადებ საკუთარი ფუნქცია მე და გარკვეულწილად თვითნებურად მოუწოდა ეს ბეჭდვა სახელით, და რადგან მე მითითებული ფრჩხილებში, რომ ეს ფუნქცია იღებს ერთ არგუმენტი, ტიპის რაც სიმებიანი - ამიტომ სიტყვა ან ფრაზა ან მსგავსი რამ - და მე მოუწოდებენ, რომ არგუმენტი სახელი, რომ ნიშნავს მხოლოდ ცვლადს, ის ფარგლებში, ასე ვთქვათ, არის სახელი. ერთადერთი შორის არსებობს რა ორი curly აფრთხილებს, რა თქმა უნდა? ისე მართლაც, ისევე, როგორც ხაზი 10 გზით 14, ასე რომ ისევე როგორც ორშაბათს ვერ გამოიყენებს S, მაგრამ რა შეგვიძლია გავაკეთოთ არის გაივლის S შევიდა ბეჭდვითი სახელი. ბეჭდვა სახელის უბრალოდ ასე ხდება, რათა ეს იგივე, სინონიმი, მეტსახელად უწოდა სახელი და ახლა გამოყენება ამ მხრივაც. ასე რომ, ახლა ნება მომეცით გადარჩენა ეს დააშორებს. ნება მომეცით წავიდეთ წინ და მიიღოს hello. კარგად გამოიყურება. არ Spit ნებისმიერი შეცდომები. . / მიესალმები შეიტანეთ. რა არის ჩემი სახელი? დავით. და კომენტარი პირველმა დავით. ასე არ არის, რომ საინტერესო, მაგრამ ვფიქრობ ახლა. თქვენ ახლა უკვე იგივე ნივთიერება როგორც ჩვენ გვქონდა Scratch to ჩვენი საკუთარი ფუნქციები. მაგრამ არსებობს ცოტა GOTCHA. დავუშვათ, რომ მე ნამდვილად არ ფიქრობდა ამ გზით და მე რეალურად გარეშე ნამდვილად ფიქრობდა ის დაწერა რომ ფუნქცია ქვემოთ აქ. გრძნობს კარგად გონივრული. In Scratch არ არსებობს ცნება ადგილმდებარეობის თქვენს სცენარი. თქვენ შეეძლო ერთი გოლი აქ, ერთი აქ, ერთი გოლი აქ, და ეს შეიძლება დაიწყოს თვალი ცოტა რთული თუ არ ქმნის მას out neatly, მაგრამ ეს არ აქვს მნიშვნელობა, სადაც ფიზიკურად სცენარების იყო ეკრანზე. სამწუხაროდ C - ეს არის განსხვავებით ენებს, როგორიცაა ჯავა და პითონი და სხვები, რომ თქვენ შეიძლება ნაცნობი ერთად - სამწუხაროდ C, იმისათვის აკეთებს სულ ერთია, რადგან watch რა მოხდება ახლა. სტანდარტულ ფუნქცია, ხდება შეასრულოს, რა თქმა უნდა, ძირითადი. მთავარი აპირებს მოვუწოდებთ ბეჭდვითი სახელი ხაზი რვა, მაგრამ, სამწუხაროდ, შემდგენელი კი არ იციან, რომ ბეჭდვითი სახელი არსებობს მანამ, სანამ იგი იღებს ხაზი 11, რაც სამწუხაროდ იქნება ძალიან გვიან. მოდით გავაკეთოთ მიიღოს hello. ახლა კი რა, ორი შეცდომები გამომუშავებული. ასე რომ, ახლა ნება მომეცით გადახვევა მდე ძალიან პირველი, როგორც ჩვენ ყოველთვის უნდა გავაკეთოთ, და შეამჩნია, რომ ის ყვირილი at me, "ფარული დეკლარაციას ფუნქცია ბეჭდვა სახელი. " ასე რომ, ჩვენ ვნახეთ ამ გზავნილის ადრე, დაფარული დეკლარაციას ფუნქცია. როდესაც გვაქვს ჩანს, რომ ასეთი შეცდომა? როდესაც მე არ შეიცავდა ბიბლიოთეკა. თუ დამავიწყდა cs50.h და მინდა მისაღებად დაიყვირა ზე for მიიღოს სიმებიანი ან მიიღოთ int. მაგრამ ამ შემთხვევაში, ეს ფუნქცია ბეჭდვითი სახელი არ არის ბიბლიოთეკაში, არა? ეს ფაქტიურად ამ ფაილში, ისე, რა არის ნამდვილად პრობლემა? ისე სამწუხაროდ C, იგი მოგაწვდით ასე ძალიან ფაქტიურად რომ თუ მინდა ფუნქცია მოუწოდა ბეჭდვითი სახელზე არსებობს, თქვენ ან უნდა განახორციელოს რომ ფუნქციონირებს ძალიან ყველაზე თქვენი კოდი ისე, რომ ეს ხელმისაწვდომი უნდა შეამცირონ ფუნქციები, მაგრამ გულწრფელად ვამბობ, რომ ხდება დაუდევარი ძალიან სწრაფად. პირადად მე მიყვარს აყენებს მთავარ პირველი რადგან მაშინ ეს ძალიან ნათელი, თუ რას პროგრამა აკეთებს ერთი შეხედვით. და პლუს, შეგიძლიათ მოხვდება უცნაური კუთხეში შემთხვევებში, როდესაც, თუ x სურს მოვუწოდებთ შ მაგრამ შ შეიძლება მოვუწოდებთ x, უბრალოდ ფიზიკურად ვერ რეალურად დააყენა ერთი ზემოთ სხვა. მაგრამ აღმოჩნდება, დო, ჩვენ შეგვიძლია გადაწყვიტოს ეს ძალიან მარტივად. მე ვაპირებ დააყენოს ცოტა სივრცე აქ, და მე მხოლოდ აპირებს preemptively, თუმცა გარკვეულწილად redundantly, მიდის ასწავლიან შემდგენელი რომ არსებობს ფუნქცია მოუწოდა ბეჭდვითი სახელი, ის ტექსტი, და მე ვაპირებ მოვუწოდო იგი ასახელებს მძიმით. ასე რომ, ეს ახლა ხაზის ოთხი, რომელიც ჩვენ არ მინახავს ადრე, არის დეკლარაცია საქართველოს ფუნქცია ბეჭდვითი სახელი, მაგრამ ეს მხოლოდ დაპირება, რომ ეს ფუნქცია საბოლოოდ განისაზღვრება, საბოლოოდ განხორციელდება. ეს ახლა მე შემიძლია თავი დაანებოს, რადგან ახლა ეს არის განმარტება, განხორციელების, ერთგვარი ბოლო მილის განხორციელების ამ კერძოდ ფუნქცია. ასე გულწრფელად რომ ეს სისულელე, ეს შემაშფოთებელი, მაგრამ ეს გზა C არის და ეს იმიტომ, რომ ეს მოგაწვდით ძალიან ფაქტიურად და, როგორც კომპიუტერული გულწრფელად უნდა, მარტო ჯერ ზუსტად რას ვამბობ, რომ გააკეთოს და ისე, რომ რიგი მნიშვნელოვანია. ასე რომ დაივიწყებს და ისევ, დაიწყოს შეამჩნია გამეორების ნიმუშები. შანსი გნებავთ, თუ არ უკვე დავიწყებთ ექმნებათ შეტყობინებები მსგავსი რომ ერთი შეხედვით, როგორც ჩანს, სრულიად cryptic, მაგრამ თუ დაიწყება მოსაძებნად ეს გასაღები სიტყვები "ფარული დეკლარაცია", აღნიშნულია ფუნქცია ამ შემთხვევაში - და გულწრფელად, თქვენ ზოგჯერ კი პატარა მწვანე სტაფილოს სიმბოლო იმისა, რომ ეუბნება, სადაც საკითხი, ალბათ, - შეგიძლიათ დაიწყოს მუშაობა თქვენი გზა ჯერჯერობით უხილავი შეცდომის შეტყობინებები. ნებისმიერი კითხვების წერილობით თქვენი საკუთარი ფუნქციის ამ გზით? მოდით რაღაც რომ არის უფრო მყარი. იმის ნაცვლად, რომ უბრალოდ რომ რამე რომ აქვს მხარე ეფექტი ბეჭდვა, ნება მომეცით წავიდეთ წინ და გადარჩენა ახალი ფაილი და ჩვენ მოვუწოდებ ამ positive.c, მიუხედავად იმისა, რომ ეს იქნება ცოტა განსხვავებული წინააღმდეგ ბოლო დროს. ამჯერად, მინდა ხელახლა განხორციელება ბოლო დროს-ს positive.C მაგალითად, რომელიც არის აიძულოს შესახებ, რათა ჩემთვის დადებითი მთელი რიცხვი. მაგრამ მე უნდა გამოიყენოს მისაღებად int ბოლო დროს. თუ არა იგი უკვე ლამაზი თუ იყო ფუნქცია მოუწოდა პოზიტიურად int რომ მე შეიძლება მხოლოდ გამოაცხადოს ამ ნაწილი ფუნქციებს? ასე რომ, განსხვავება ისაა, ჩვენ გამოგიგზავნით განახორციელოს პოზიტიურად int, მაგრამ განსხვავებით ბეჭდვითი სახელი, რომელსაც მხარე ეფექტი - ეს არ დაბრუნებულა რაღაც ჩემთვის მოსწონს ნომერი ან სიმებიანი - პოზიტიურად int, რა თქმა უნდა, მიდის დაბრუნებას, იმედია, დადებითი int. ასე რომ, მოდით ეს. ჩართეთ cs50.h, მოიცავს სტანდარტული io.h. Int მთავარი ბათილად. ახლა კი აქ, მე ვაპირებ წავიდეთ წინ და ვთქვათ int, მას ო, ტოლობის პოზიტიურად int. და ისევე, როგორც მიიღოთ int უკვე არსებობს რადგან პერსონალის დაწერა ეს, მე ვაპირებ უნდა ვივარაუდოთ, რომ მომენტი, რომ მიიღოს დადებითი int არსებობს, და ახლა მე ვაპირებ to წავიდეთ წინ და აცხადებენ, printf, მადლობა% ი / ო ", ო. ასე რომ, ახლა თუ მე შეადგინოს ამ პროგრამის რა მოხდება ჩემს ტერმინალში ფანჯრის ბოლოში ეკრანზე? მე ვაპირებ ალბათ მიიღოს, რომ იგივე შეცდომა, როგორც ადრე. მოდით ცდილობენ ამ. პოზიტიური. ისევ და ისევ, დაფარული დეკლარაცია ფუნქციის, პოზიტიურად int. ასე რომ, ჩვენ გადაჭრით ეს რამდენიმე გზა არსებობს. მე ვაპირებ, რომ შევინარჩუნოთ ის მარტივი და უბრალოდ დააყენა ჩემი დეკლარაციის აქ და მიიღეთ დადებითი int. მე უნდა ე.წ. ხელმოწერით. ხელმოწერის მხოლოდ ეხება to ესთეტიკასთან პირველი ხაზი პროგრამა. რა უნდა მიიღოს დადებითი int დაბრუნების? ასე int. ვგულისხმობ იდეალურად, ეს დაბრუნდნენ რაღაც დადებითი int, მაგრამ ეს არ არსებობს. ჩვენ არ ჩანს, რომ მათ შორის ჩვენი მონაცემებით სახის, ამიტომ ჩვენ უნდა გავუმკლავდეთ ის ფაქტი, რომ ჩვენ გვაქვს ძალიან ცოტა მონაცემთა ტიპები მუშაობა. მაგრამ ჩვენ შეგვიძლია დაბრუნების int და მხოლოდ ვენდობით, რომ ეს იქნება საკმაოდ პოზიტიური. ეს იქნება მოუწოდა პოზიტიურად int. ახლა კი რა თავისი არგუმენტები? სჭირდება რაიმე შეყვანის? ს სჭირდება შეტანის? ასე რომ, ეს არ უნდა იცოდეს, წინასწარ არაფერი. მიიღეთ სიმებიანი არ, მიიღოთ int არ. Printf აკეთებს - მას სჭირდება გარკვეული შეყვანის შევიდა ეს - და ბეჭდვითი სახელი საჭიროა გარკვეული შეყვანა, მაგრამ მისაღებად დადებითი int არ. ამიტომ, მე ვაპირებ მკაფიოდ ვუთხრა შემდგენელი ბათილად. ძალადაკარგულად არის არარსებობის არაფერი. ასე რომ, ბათილად არაფერს ნიშნავს ხდება შიგნით იმ ფრჩხილებში, მძიმით. ახლა კი ბოლოში ჩემი ფაილი - და ისევ, მე უბრალოდ როგორც ასეთი anal აქ აყენებს მთავარ ზედა, რომელიც არის კარგი პრაქტიკა, რადგან ამ გზით, ნებისმიერ დროს თქვენ თუ ვინმე სხვა ხსნის თქვენი ფაილი, ფუნქცია არ არის უფლება არსებობს. თქვენ შეგიძლიათ ჩაყვინთვის შემდეგ მოედანზე ერთი. ასე რომ, ახლა მე ვაპირებ დუბლიკატი ამ, პოზიტიურად int ბათილად, მაგრამ მე არ ვარ აპირებს მოხვდა მძიმით არის. მე ვაპირებ გახსნა curly აფრთხილებს, და ახლა გვჭირდება სესხის ზოგიერთი იდეები ორშაბათიდან. ასე რომ, როგორც თქვენ გავიხსენოთ, ჩვენ ეს რაღაც მინდა გავაკეთოთ შემდეგ, ხოლო რაღაც ასეა. და რა გავაკეთო? მე რაღაც მისცეს ჩემთვის დადებითი მთელი რიცხვი, ცოტა ზოლში. მე ვერ გამოიყენოთ რომელიმე სიტყვა მე მინდა. და მაშინ მე რა? Int ო შეადგენს მისაღებად int, არანაირი არგუმენტი მას. და შეამჩნია განსხვავება. როცა მოვუწოდებთ ფუნქცია, როდესაც თქვენ გამოიყენოს ფუნქცია, თქვენ არ დასვა ბათილად. თქვენ მხოლოდ გავაკეთოთ, რომ როდესაც გამოცხადების ფუნქცია, სწავლების შემდგენელი რა ეს უნდა ველოდოთ. ასე რომ თქვენ არ უნდა დააყენოს ძალადაკარგულად იქ თავს. ახლა კი, რა იყო ჩემს მდგომარეობაში? ასევე, N არის არ უდრის დადებითი, მაგრამ ეს მხოლოდ ფსევდო კოდი. ასე რომ, როგორ შემიძლია გამოვხატო ამ უფრო cleanly? ასე რომ ნაკლებია ან ნულის ტოლია. ასე რომ, კიდევ ერთხელ, შეამჩნია შეგიძლიათ გააკეთოთ ნაკლებია ან ტოლი. მიუხედავად იმისა, რომ ეს ორი დამოუკიდებელი სიმბოლოები, შეგიძლიათ ამის გაკეთება თქვენს კლავიატურაზე, როგორც ასეთი. მაგრამ ჯერ კიდევ bug რომ მე ბრალია ბოლო დროს ძალიან. მე უნდა განაცხადოს - ზუსტად. მე უნდა განაცხადოს ო გარეთ საქართველოს ციკლი. ასე რომ, მე უნდა დააყენოს n აქ, და მე არ მინდა კიდევ ერთხელ ვაცხადებთ, რომ ეს აქ ნუუკუე მე ახალი განსხვავებულია. მინდა მივანიჭოთ მნიშვნელობა აქ. ახლა კი მე არ საკმაოდ კეთდება აქ. ნება მომეცით მიიღონ წინ თავს და თითქოს მე გაკეთდეს. პოზიტიური და ახლა აქ არის ახალი შეცდომა. კონტროლის აღწევს ბოლოს არასამთავრობო ბათილად ფუნქცია. ასე რომ, ახალი შეცდომა, მაგრამ თუ სახის საქართველოს tease გარდა თითოეული სიტყვა, ეს ალბათ ეუბნება რა არის არასწორი. კონტროლი. საკონტროლო მხოლოდ იმას ნიშნავს, რომ ბრძანება ჩატარებული ოპერაციების პროგრამით. კომპიუტერის კონტროლი და რაღაც გაფუჭდა. ასე რომ, ეს ბოლოს მიაღწევს არასამთავრობო ბათილად ფუნქცია. რა ფუნქცია არის ის, სავარაუდოდ, გულისხმობდა? რა ფუნქცია არასამთავრობო ბათილად? ასე რომ დადებითი int და ცოტა გაუგებარია, რომ კარგად, ეს არის სახის ბათილად. მას აქვს დაზუსტება ბათილად მისი არგუმენტები, არამედ მისი გამომავალი აპირებს იყოს ტიპის ო. ასე რომ, სიტყვა მარცხენა არის ე.წ. დაბრუნების ტიპის. სიტყვა ქვეყნის შიგნით აქ ნულოვანი ან მეტი არგუმენტი რომ ფუნქცია იღებს. ასე რომ, რა უნდა გავაკეთო? ამ დროისთვის ჩემს კოდი, ხაზის 21 სადაც მოციმციმე სწრაფი ახლა არის, მე დადებითი int შიგნით საქართველოს ცვლადში ო. როგორ შემიძლია მისთვის მთავარზე დაბრუნება? ფაქტიურად. დაბრუნება n მძიმით. ასე რომ, ისევე, როგორც კოლტონი დაბრუნდა ნაწილი ქაღალდი პასუხი ჩემს მიერ ჩაშვების რომ ცალი ქაღალდის ამ პატარა შავი ყუთი მაგიდაზე, ამის შემდეგ კოდს, ფაქტიურად მხოლოდ წერენ, დაბრუნება ო, და ეს თითქოს კოლტონი იყო გადაცემის რამე ფიზიკური უკან. ამ შემთხვევაში, რა ხდება არის მიიღოს დადებითი int აპირებს გადასცემს უკან რა სავარაუდოდ დადებითი მთელი რიცხვი, ვისთვისაც? სად, რომ ღირებულება დასრულდება? რომ მთავრდება ამ ცვლადი, ო, და მაშინ ჩვენ გააგრძელოს ხაზი ცხრა. ასე რომ, სხვა სიტყვებით, გამოიტანს ოპერაციების, ეს პროგრამა იწყება შესრულებაში და შემდგენელი აცნობიერებს, oh, გსურთ ბიბლიოთეკა? ნება მომეცით წავიდეთ ხელში ჩაგდება, რაც არ უნდა შიგნით, რომ. Oh, გსურთ სტანდარტული IO ბიბლიოთეკა? ნება მომეცით წავიდეთ ხელში ჩაგდება, რაც არ უნდა შიგნით, რომ. რას შემდგენელი აცხადებენ, რომ თავად როდესაც ჰიტები ხაზის ოთხი? ოჰ, შენ პირობა დადო, რომ განახორციელებს ფუნქცია მოუწოდა პოზიტიურად, მაგრამ ჩვენ დავუბრუნდეთ მოგვიანებით, რაღაც ერთად იმ ხაზები. Int მთავარი ბათილად მხოლოდ იმას ნიშნავს, აქ არის guts, ჩემი პროგრამა. ხაზი შვიდი მხოლოდ curly მუდმივი წინააღმდეგობა გაუწიოს. ხაზი რვა ამბობს მარცხენა მისცეს მე 32 ბიტი for რიცხვი, მას ნ. მარჯვენა მხარეს, ეს არის ამბობდა პოზიტიურად int. ახლა პაუზის, რომ ამბავი, რადგან ახლა მე არ შენარჩუნება მოძრავი ჩემი კურსორი ქვემოთ. ჩემი კურსორი ახლა მიდის ქვემოთ, რადგან ახლა პოზიტიურად int ახორციელებს. Int ო განისაზღვრება. ნუ შემდეგ. Printf მაძლევს დადებითი მთელი რიცხვი. მიიღეთ int ეხლა შესახებ, ჩაწერს მას n, და შესაძლოა ეს კიდევ ერთხელ და ისევ. ეს მარყუჟის იმას ნიშნავს, რომ ეს კოდი შეიძლება შეასრულოს და ქვემოთ მოსწონს ეს კიდევ ერთხელ და კიდევ ერთხელ, მაგრამ როცა შესახებ საბოლოოდ თანამშრომლობს და მაძლევს დადებითი int, მე მოხვდა ხაზი 21, სადაც წერტილი ნომერი ჩაბარების უკან, და რომელიც ერთი უნდა ხაზი გავუსვა ახლა? ცხრა. კონტროლის, ასე ვთქვათ, ბრუნდება ხაზის ცხრა. ეს არის ის, ხაზი, რომელიც ახლა პასუხისმგებელი. ასე რომ, თუ რა ხდებოდა ყველა ამ დროს ქვეშ hood, მაგრამ როდესაც ჩვენ გამოყენებული ფუნქციები, როგორიცაა printf ან თუნდაც მიიღოს სიმებიანი, რომ ვინმეს დაწერა თქვენთვის, კონტროლი მიმდინარეობს გადასცა off ვინმე კოდი ხაზი by ხაზის მიერ ხაზი. უბრალოდ ჩვენ ვერ ვხედავთ და ჩვენ ვერ მართლაც ასახავს იგი ამ პროგრამა, რადგან ეს რომელიმე სხვა ფაილი მყარ დისკზე unbeknownst ჩვენთვის. მოდით რეალურად ადგენენ და აწარმოებს ეს ახლა. პოზიტიური. შეადგინოს, რომ პროგრესი. . / პოზიტიურია. მომეცი დადებითი მთელი რიცხვი. მოდით, რთულია. უარყოფითი 1. ნულოვანი. მოდით მივცეთ მას 50. მადლობა 50 და ასე შემდეგ კონტროლი ახლა დაბრუნდა. ნებისმიერი შეკითხვა, კი, რომ? ჰო? [Inaudible]. ვიმეორებ. ოჰ, კარგი კითხვა. ასე რომ, შესაძლოა, შეამჩნია პარალელურად აქ მე სახის ჭრის კუთხეში შესახებ. შესაბამისად 12, მე ამბობდა, პოზიტიურად int დააბრუნებს int, არამედ იმავე ლოგიკა, ის ახლა დგას, რომ მიზეზი, რომ ხაზი ექვსი, მე და განაცხადა, რომ ძირითადი ბრუნდება int, მაგრამ რა გვაქვს ჩვენ არასოდეს ჰქონდა ნებისმიერ პროგრამებს? ჩვენ არასდროს არ გვქონია ნახსენები ამ საკვანძო სიტყვა დაბრუნება. გამოდის, რომ C, სულ მცირე მობილური რომ ვიყენებთ დამზადებულია 1999 წელს, ტექნიკურად, ეს ხდება ავტომატურად. ნებისმიერ დროს როცა თქვენ განახორციელოს პროგრამა და თქვენ განახორციელოს ფუნქცია მოუწოდა, მთავარ რომ ფუნქცია დააბრუნებს ნულოვანი მიერ სტანდარტულ თუ არ ვიტყვი, წინააღმდეგ შემთხვევაში, და ნულოვანი მხოლოდ კონვენციას. მსოფლიოს ბრუნდება ნულოვანი ამით რაც მიუთითებს, რომ ყველა კარგად არის, ეფექტურად ტოვებს us ოთხი მილიარდი შესაძლებელია რამ, რაც შეიძლება წავიდეს არასწორი ასე რომ, თუ დაბრუნდება ერთი, რომ შესაძლოა ნიშნავდეს კოდი, რომელიც ნიშნავს ამ რამ გაფუჭდა. ჩვენ ვერ დაბრუნდებიან ორი, რაც იმას ნიშნავს, ეს სხვა რამ გაფუჭდა. ჩვენ ვერ დაბრუნდებიან ოთხი მილიარდი, რომელიც ნიშნავს ეს სხვა რამ გაფუჭდა. და თუ ახლა ვიფიქროთ საკუთარი კომპიუტერის ან Mac, თქვენ ალბათ გახსოვთ, რომ ზოგჯერ თქვენ გაქვთ cryptic შეცდომის შეტყობინებები პროგრამული, რომ თქვენ გამოყენებით, ზოგჯერ მას აქვს ადამიანის მეგობრული აღწერა, მაგრამ არსებობს ხშირად კოდი ან ნომრის ეკრანზე? თუ ეს არ მოვა გათვალისწინებით, უბრალოდ თვალი out მას. ეს არის ის, როგორც წესი, რაც ამ კოდები გულისხმობდა. ისინი შედის Microsoft Word და სხვა პროგრამებში, რომ თუ თქვენ წარადგინოს ხარვეზის შესახებ კომპანიის, შეგიძლიათ ვუთხრა, რა, მე მივიღე შეცდომის ნომერი 45. და ზოგიერთი პროგრამის უკან კომპანია შეიძლება გამოიყურებოდეს, რომ მისი კოდი და აცხადებენ, უჰ, იმიტომ, რომ მე გააკეთა ეს ხარვეზი და ამიტომაც შესახებ მივიღე ეს შეტყობინება. მაგრამ გულწრფელად, უბრალოდ ცოტა გადატანის და პატარა tedious to დავასკვნათ, რომ, როგორც მინიმუმ, ჩვენს პირველი რამდენიმე პროგრამების, ამიტომ ჩვენ უკვე omitting იგი. მაგრამ მთელი ამ ხნის ყველა ერთი თქვენი ფუნქციები მთავარ აქვს ფარულად ჰქონდა ამ ხაზი ავტომატურად დასძინა თქვენთვის შემდგენელი, მხოლოდ კონვენციით გადაარჩენს თქვენ გარკვეული დროის განმავლობაში. [Inaudible]. თქვენ არ უნდა შეიცავდეს იგი მთავარ. კიდევ კარგი. მაგრამ თქვენ უნდა შეიცავდეს ეს თუ იყო ახორციელებს ფუნქცია მოსწონს ეს. წინააღმდეგ შემთხვევაში ფუნქცია ბინა გარეთ ვერ იმუშავებს. მაგრამ მთავარი, ეს არ არის აუცილებელი. ერთი კვირის ან ორი, დავიწყებთ მიღების შევიდა, რომ ჩვევების ერთხელ გვინდა, რომ დავიწყოთ ფიქსირდება შეცდომები. კარგი კითხვა. ასე სწრაფად სიტყვიერი შესვენების უნდა აღინიშნოს, რომ ამ პარასკევს, ჩვენ არ მქონე სადილი თავისთავად, მაგრამ ჩვენ, რომელსაც სადილი ზოგიერთი სტუდენტები და თანამშრომლები. თუ გსურთ შემოგვიერთდნენ, ვგრძნობ უფასო წასვლა cs50.net/rsvp. 6:00 PM ამ პარასკევს. ფართი არის, როგორც ყოველთვის, შეზღუდული, მაგრამ ჩვენ გააგრძელოს ამ თემაზე თითქმის ყოველკვირეულად, თუ სივრცე ამოიწურება ამ კვირაში. ასე რომ cliffhanger, რომ ჩვენ არ ფასდაკლებას ორშაბათს იყო, რომ strings სინამდვილეში იყოს ინდექსირებული შევიდა, რომელიც მხოლოდ იმას ნიშნავს, თქვენ შეუძლიათ მიიღონ პირველ ხასიათი, მეორე სიმბოლო, მესამე ხასიათი და ა.შ., რადგან თქვენ შეგიძლიათ ეფექტურად ვფიქრობ სიმებიანი, ისევე როგორც hello, როგორც ამ შემთხვევაში ხუთ წერილების შიგნით ყუთები. და შეგიძლიათ მიიღოთ თითოეულ მათგანს ყუთები, რაც syntax მივიღეთ გააცნოს ორშაბათს? იმ კვადრატულ ფრჩხილებში თქვენს კლავიატურაზე. ეს მხოლოდ იმას ნიშნავდა, წასვლა ადგილმდებარეობა ნულოვანი. ვიწყებთ დამთვლელი ზე ნულოვანი, ასე bracket ნულოვანი ნიშნავს სთ, bracket ერთი ნიშნავს e, და სხვ. ასე რომ, ყველა იმ დროს, როდესაც ჩვენ გამოყენებით strings და ბეჭდვის "გამარჯობა" და "სამყარო" და სხვა რამ ეკრანზე, მისთვის შენახული ამ ყუთები მოსწონს ეს. და მიიღოს ვხვდები. რას თითო ყუთზე წარმოადგენს ფიზიკურად შიგნით თქვენი კომპიუტერის? [Inaudible]. ბოდიში? პერსონაჟები. ასე რომ, ხასიათის, რა თქმა უნდა, იმ შემთხვევაში, საქართველოს strings და ხასიათი მხოლოდ რვა ბიტი ან ერთი ბაიტი. ასე რომ, ალბათ, სულ ცოტა ბუნდოვნად იცნობს იმ ფაქტს, რომ თქვენი კომპიუტერში აქვს მეხსიერება. მას აქვს ორი ტიპის მეხსიერების მაინც. ერთი არის ხისტი, სადაც თქვენ გადარჩენა პერსონალის მუდმივად, და ეს როგორც წესი, დიდი ასე რომ თქვენ გაქვთ ფილმები და მუსიკის და სხვ. ამის შემდეგ თქვენ სხვა ტიპის მეხსიერება მოუწოდა RAM, R-A-M, წვდომის მეხსიერება, და ეს არის მეხსიერების , რომელიც გამოიყენება მაშინ, როდესაც კომპიუტერი გაშვებული, მაგრამ თუ დაკარგვის ძალაუფლების ან თქვენი ბატარეის კვდება, ყველაფერი ეს ინახება in RAM ქრება თუ დაკარგვის ძალა საერთოდ, რადგან ეს არ არის მუდმივი. თქვენ, როგორც წესი, აქვს, ამ დღეებში, კონცერტის ეს ორი gigs, რაც უფრო. და თავდაყირა ოპერატიული არის, რომ ეს გაცილებით ბევრად, ბევრად უფრო სწრაფად, ვიდრე მყარ დისკს ან თუნდაც მყარი სახელმწიფო დისკები ამ დღეებში, მაგრამ, როგორც წესი, უფრო ძვირი ისე თქვენ ნაკლები იქნება. ასე რომ, დღეს საუბარი ნამდვილად ეხება to RAM, რომ მეხსიერების, რომ არსებობს მხოლოდ მაშინ, როდესაც არსებობს ძალა მიმდინარეობს ყელში თქვენს კომპიუტერში. ასე რომ, როდესაც თქვენ აკრიფოთ H-E-L-L-O, ენტერს კლავიატურა, H ხდება ერთ byte ოპერატიული, E მიმდინარეობს კიდევ ერთი ბაიტი ოპერატიული, როგორც ეს დანარჩენი სიტყვა. ასე რომ გავიხსენოთ რა შევძელით ამის გაკეთება ბოლო დროს იყო ეს. ნება მომეცით წავიდეთ წინ და ქმნის ფაილი რომ ჩვენ მოუწოდა string.c და გავიხსენოთ რომ ეს ჩანდა პატარა მსგავსი რამ. ნება მომეცით, ფაქტობრივად, გააფართოვოს უკან და შეცვლის მას ზუსტად ის, რაც ჩანდა, სიმებიანი ხანგრძლივობა s. ასე რომ შევხედოთ პროგრამის აქ. ჩვენ მოიცავს CS50 ბიბლიოთეკის ისე რომ ჩვენ შეგვიძლია გამოვიყენოთ მიიღოს სიმებიანი. ჩვენ შედის სტანდარტული io.h ასე რომ ჩვენ შეგვიძლია გამოვიყენოთ printf. რატომ ჩვენ string.h? ეს იყო ახალი ორშაბათს. ამიტომ გვინდოდა სიმებიანი სიგრძეზე. ქ ლენგის. ხალხი გადაწყვიტა წლის წინ მოდით იყოს ლაკონური. იმის ნაცვლად, რომ უწოდა "სიმებიანი სიგრძე," მოდით მას "ქ ლენგის" და მოდით მსოფლიოს ფიგურა, რომ გამოვიდეს და ასე რომ რაც ჩვენ მიიღონ დაშვება ერთად string.h. ეს არის ნაცნობი. ეს არის ნაცნობი. ეს არის ნაცნობი. ეს არის პატარა ახალი. შესაბამისად 22 - და ჩვენ დავბრუნდებით ეს, მაგრამ ახლა ვიცი - და თქვენ მხოლოდ ვიცი, რომ ეს მქონე წაკითხვის დოკუმენტაცია ან თუ თქვენ იცოდა C უკვე - მიიღოს სიმებიანი ზოგჯერ ხრახნიანი up. თუ მომხმარებლის მართლაც შეჯიბრებითობის ან uncooperative და ის მხოლოდ არ შეიტანოთ არაფერი კლავიატურის ან სახის იმდენად დროს კლავიატურაზე, რომ ეს overwhelms კომპიუტერის მეხსიერებაში, თეორიულად, მიიღოს სიმებიანი შეიძლება დაბრუნდეს რაღაც გარდა სიმებიანი სიმბოლოს. ეს შეიძლება დაბრუნდეს სპეციალური ღირებულება მოუწოდა NULL ყველა caps, N-U-L-L, და ეს მხოლოდ ე.წ. Sentinel ღირებულება. ეს არის განსაკუთრებული მნიშვნელობა, რომელიც ნიშნავს რაღაც ცუდი მოხდა ამ შემთხვევაში. ეს არარსებობის სიმებიანი. ასე რომ null ვარ შემოწმება უბრალოდ ასე რომ, გრძელი ამბავი მოკლედ, ქ ლენგის და სხვა ფუნქციები რომ მოვა C, თუ ელიან სიმებიანი მაგრამ თქვენ გადმოეცა არარსებობის სიმებიანი, თუ გაივლის მათ null, კომპიუტერი ან პროგრამა მხოლოდ ავარიის აშკარა. ეს იქნება გათიშეთ. ეს იქნება ჩააგდოს გარკვეული შეცდომა. ცუდი მოხდება. ასე რომ, მიუხედავად იმისა, რომ ეს ჯერ კიდევ არ არის კარგად განსაზღვრული - ეს გახდის უფრო გრძნობა ერთ კვირაში ორ - შეესაბამება 22, ეს მხოლოდ მაგალითად თვითმმართველობის თავდაცვითი შეცდომა შემოწმება მხოლოდ იმ შემთხვევაში, ერთ დროს გარეთ მილიონი რაღაც მიდის არასწორი ზე სულ მცირე ჩემი პროგრამა არ მისაწოდებლად. ასე რომ, თუ არ უდრის რაღაც ცუდი, მე მაქვს ეს ციკლი, და ეს იყო სადაც ჩვენ გვქონდა, რომ სხვა ახალი ნაწილი სინტაქსი. მე მაქვს for loop iterating დან ნულოვანი მდე სიგრძით s. შემდეგ კი აქ, მე დაბეჭდვისას s bracket i, მაგრამ რატომ მე% c ყველა მოულოდნელი ნაცვლად% s კი თუმცა s არის სიმებიანი? ეს ხასიათი, არა? S არის ტექსტი, მაგრამ s bracket რაღაც, s bracket i სად არის ნულოვანი ან ერთი ან ორი, რომ ინდივიდუალური ხასიათის სიმებიანი და ისე რომ, printf უნდა იყოს ინფორმირებული, რომ ეს მართლაც ხასიათი უნდა ველოდოთ. და მაშინ გავიხსენოთ, რა გააკეთა ამ პროგრამის რეალურად გააკეთებს? ნაბეჭდი ის ამ სვეტით. ჰო, ზუსტად. უბრალოდ ნაბეჭდი სიტყვა, რომელიც მე აკრიფოთ სვეტი, ერთი ხასიათი თითო ხაზზე. ასე რომ, ვნახოთ, ეს კიდევ ერთხელ. ასე რომ მხოლოდ. შედგენილი OK. . / სიმებიანი. ნება მომეცით აკრიფოთ H-E-L-L-O, შეიტანეთ და მართლაც მე მივიღებ, ერთი თითო ხაზზე. ნება მომეცით, გავაკეთოთ ერთი ოპტიმიზაცია აქ. თუ ფიქრობთ ამის შესახებ, მით უმეტეს, თუ თქვენ პროგრამირდება ადრე, იქ სავარაუდოდ არაეფექტურობა შეესაბამება 24. სხვა სიტყვებით, ეს არის აუცილებელი საუკეთესო დიზაინი. პირდაპირი, ერთხელ მაინც თქვენ მახსოვს რა ქ ლენგის არის, მაგრამ ეს თავისსავე მითუმეტეს პოტენციურად. რა შეიძლება რომ იყოს? [Inaudible]. ზუსტად. ეს შემოწმების ხანგრძლივობა s თითოეული დრო, მიუხედავად იმისა, H-E-L-L-O ყოველთვის აპირებს უნდა იყოს ხუთ სიმბოლოს. ყოველ ჯერზე, ამ გზით მარყუჟის ხუთ არ იცვლება. მე შეიძლება დამატება i, მაგრამ რა არის სიგრძეზე s ყოველ iteration ამ მარყუჟის? ეს ხუთი, ეს ხუთი, ეს ხუთი და მაგრამ მე მაინც ითხოვს ამ კითხვის ნიშნის ქვეშ ისევ და ისევ და ისევ. ახლა გულწრფელად ვამბობ, კომპიუტერი იმდენად რა სწრაფი, არავინ აპირებს შეამჩნია სხვაობა ამ შემთხვევაში, მაგრამ ამ სახის ღარიბი დიზაინი გადაწყვეტილებები დავიწყოთ დაამატოთ მდე თუ შემდგენელი თავად არ ცდილობს დააფიქსიროს ეს თქვენთვის, რომელიც მას, როგორც წესი, არა, იმ მაინც მოწყობილობების. ამიტომ, მე ვაპირებ ამის გაკეთება. მე ვაპირებ დაამატოთ მძიმით შემდეგ ჩემი პირველი ცვლადი, i. მე ვაპირებ, რათა თავს კიდევ ერთი ცვლადი, უწოდა N, მხოლოდ კონვენცია ნომრები, ხოლო შემდეგ მე აპირებს დაავალოს n ღირებულება სიმებიანი ხანგრძლივობა s. და მაშინ მე ვაპირებ შეცვლას ჩემი მდგომარეობაში რომ იყოს რა? მე ვაპირებ შევცვალო ჩემი მდგომარეობაში to ხოლო i ნაკლებია, ვიდრე n. ასე რომ, ახლა, რამდენჯერ ვარ მე შემოწმების ხანგრძლივობა s? ერთხელ, მაგრამ ეს OK, რათა შეამოწმოს i წინააღმდეგ ო ისევ და ისევ, რადგან ახლა იმ ღირებულებები რეალურად არ იცვლება. ახლა ახლა, მხოლოდ ის ვიცით, რომ ნებისმიერ დროს როცა თქვენ მოვუწოდებთ ფუნქცია, იქ ცოტა ოვერჰედის, საკმარისი არ დაუკარგავს თქვენ მართლაც ეხლა ოდესმე გამოყენებით ფუნქციებს, მაგრამ რა თქმა უნდა, როდესაც ხაზი კოდი მინდა, რომ - და ხაზები მიიღებს უფრო საინტერესო, სანამ ხანგრძლივი - სადაც არსებობს შესაძლებლობა, რომ ვიფიქროთ, თუ აკრიფოთ ეს კოდი, რამდენი ჯერ იქნება ეს შესრულდეს? თქვენ დაიწყება სანახავად დროთა შესრულების თქვენს პროგრამებში მართლაც შეიცვალოს. ფაქტობრივად, ერთი პრობლემა ადგენს ჩვენ გაკეთდეს წლის წარსული მოიცავს ახორციელებს, როგორც თქვენ შეიძლება სამშობლოში კვირის ნულოვანი, მართლწერის შემოწმება, მაგრამ მართლწერის შემოწმება რომ მხარდასაჭერად ლექსიკონი 150,000 პლუს სიტყვა, რომელიც მოგაწვდით ბიჭები. თქვენ უნდა დაწეროს კოდი, რომელიც ტვირთის ამ სიტყვებით შევიდა RAM, ასე შევიდა ყუთები, როგორიც დავინახეთ ეკრანზე მომენტი წინ, შემდეგ კი სწრაფად შეიძლება, თქვენ უნდა გასცე პასუხი კითხვაზე ფორმა, არის ამ სიტყვის misspelled? არის თუ არა ეს სიტყვა misspelled? არის თუ არა ეს სიტყვა misspelled? და ასე რომ ის, რაც ჩვენ გაკეთდეს წლის წარსული აღმოჩნდა ის, თუმცა მე დამ-in სურვილისამებრ საფუძველზე, კონკურსის სახის, რომლის დროსაც სტუდენტები, რომლებიც ნაკლებად მეხსიერება და ნაკლები დრო, ნაკლები CPU ციკლი, დასრულდება მდე bubbling მდე ყველაზე პატარა ლიდერი საბჭოს ან თანამდებობის რომ ჩვენ დააყენა კურსის მთავარ გვერდზე, როგორც ჩვენ გაკეთდეს წლის წარსულში. ასე რომ, კიდევ ერთხელ, სრულიად ნებაყოფლობითია, თუმცა ამ საუბრობს დიზაინი შესაძლებლობები რომლებიც წინ ანგარიშით ერთხელ ჩვენ ვიწყებთ მშენებლობის atop ზოგიერთი ძირითადი შენობა ბლოკად. ნება მომეცით, დავუბრუნდეთ ამ დაჭერა for მხოლოდ ერთი წუთით და გამოვლენა პატარა რაღაც უფრო. ეს მართლაც სიმებიანი და ჩვენ აღებული უპირატესობა რამდენიმე ბიბლიოთეკა, სტანდარტული io.h რომელსაც აქვს - Printf. Printf, სხვა საკითხებთან ერთად. cs50.h, რომელმაც მისაღებად int და მიიღეთ სიმებიანი და ა.შ., string.h, რომელიც ჰქონდა ქ ლენგის. მაგრამ აღმოჩნდება, რომ არსებობს კიდევ ერთი. გულწრფელად ვამბობ, არსებობს უამრავი და უამრავი თავით ფაილი რომ განაცხადოს ფუნქციები ბიბლიოთეკებისათვის, მაგრამ ეს ctype.h არის რეალურად იქნება გარკვეულწილად ხელსაყრელი, რადგან მე ვაპირებ to წავიდეთ წინ და განახორციელონ ერთი სხვა პროგრამა აქ. ნება მომეცით წავიდეთ წინ და ქმნის რაღაც მე დავწერე ადრე მოუწოდა capitalize.c და ავიღოთ შევხედოთ როგორ ნამუშევრები. გავითვალისწინოთ რომ მე გამოყენებით, ამ ვერსიაში ეს, სამი ნაცნობი ფაილი. გავითვალისწინოთ რომ შეესაბამება 18, მე მიღების ტექსტი. შენიშვნა შეესაბამება 21, მე იმის თაობაზე, რომ შემდეგი კოდი აპირებს კაპიტალიზაცია s, მიუხედავად შესახებ აკრეფილი ამ და როგორ ვარ მე აკეთებს, რომ? ისე, მე აღების - გაკვეთილი ვისწავლეთ ბოლო დროს - მე გამოცხადების მე და N და iterating მეტი სიმბოლოების სიმებიანი. და მაშინ რა არის ეს ბლოკი კოდის ხაზი 24 გზით 27 აკეთებს layman პირობები? ამას წერილი უკან. ზუსტად. თუ bracket i - ასე რომ, თუ i-th ხასიათი s, რომელიც კონკრეტული char in სიმებიანი, მეტია ან ტოლია ამას და - გავიხსენოთ, რომ ორმაგი ampersand ნიშნავდეს და - და იგივე ხასიათის, s bracket i, არის ნაკლებია ან ტოლი ამას z, რაც იმას ნიშნავს, რომ ის ან ბ ან გ ან dot, dot, dot, ან z, რაც იმას ნიშნავს, ეს ამას. რა სურთ ამ შემთხვევაში? ისე, მე შემიძლია ამის გაკეთება გარკვეულწილად cryptically, მაგრამ მოდით tease ამ დაიშალა. მე ვაპირებ მოვუწოდო printf, ბეჭდავს% c იმიტომ, რომ მინდა reprint ამ ხასიათი ეკრანზე. მე მაშინ აპირებს s bracket i, i-th პერსონაჟი s, და რატომ მე ვაკეთებ პატარა შეასრულა აქ, ამას მინუსი დედაქალაქში? რა არის, რომ აპირებენ მე, ზოგადად? [Inaudible]. ზუსტად. მე ნამდვილად არ მახსოვს, - ეს იყო 65 კაპიტალური ა მე ნამდვილად არ მახსოვს რა ამას არის, მაგრამ არა აქვს მნიშვნელობა. კომპიუტერული იცის. ასე განაცხადა, ამას მინუს დედაქალაქში, ეს უცნაური იყოს subtracting ერთი char მეორე, მაგრამ რა არის სიმბოლო ქვეშ hood? ისინი უბრალოდ ნომრები. ასე რომ, რაც არ უნდა იმ რაოდენობით, მოდით კომპიუტერული მახსოვს ვიდრე მე ადამიანის. ასე რომ, ამას მინუს კაპიტალი არის აპირებენ ჩემთვის განსხვავება. ეს ხდება, 32, და რომ იქნება საქმე ამას ბ და კაპიტალის B და სხვ. იგი რჩება თანმიმდევრული, საბედნიეროდ. ასე რომ, მე არსებითად ამბობდა, მიიღოს ამას წერილი, სხვაობა off, რომ სტანდარტული განსხვავება, და რომ ეფექტურად ცვლილებების s bracket i დან ამას უნდა, რა თქმა უნდა, ზედა, გარეშე ნამდვილად მქონე ვფიქრობ შესახებ ან გახსოვდეთ, რა იყო იმ ციფრები, ჩვენ ვისაუბრეთ, როდესაც რვა მოხალისეები გამოვიდა სცენაზე? ახლა ამავდროულად, სხვა, თუ ეს ასე არ არის ამას წერილი განსაზღვრული ხაზის 24, უბრალოდ ბეჭდვა ის. მე მხოლოდ მინდა შევეხო ციფრები, რომ იყო რეალურად თავდაპირველად ამას. ასე რომ, ვნახოთ, ამ. სასტარტედ კაპიტალიზაცია. შედგენილი, OK. . / კაპიტალიზაცია. და ნება მომეცით აკრიფოთ H-E-L-L-O ამას, შეიტანეთ. და შეამჩნია, რომ ეს არის მოაქცია შევიდა ზედა. ნება მომეცით ეს კიდევ ერთხელ გავაკეთოთ ერთად სხვადასხვა სიტყვას. როგორ შესახებ D--V-I-D პირველი D კაპიტალიზაცია მისი სახელის, როგორც წესი, არის? შეიტანეთ. გავითვალისწინოთ მაინც სწორი. უბრალოდ outputted, რომ პირველი D უცვლელი მეშვეობით, რომელიც სხვაგან მშენებლობა. ასე რომ, გახსოვდეთ, მაშინ, რამდენიმე რამ აქ. ერთი, თუ თქვენ ოდესმე გსურთ შეამოწმოთ ორი პირობები ერთდროულად, თქვენ და მათ ერთად, როგორც ჩვენ გამოვლენილი. თქვენ შეიძლება შედარება გმირები ამ გზით და ეფექტურად მკურნალობა პერსონაჟების როგორც ნომრები, მაგრამ გულწრფელად ვამბობ, ეს ასეა რა cryptic მე არასოდეს აპირებს გვახსოვდეს როგორ უნდა ამუშავება ამ ნულიდან გარეშე მსჯელობა მეშვეობით საკმაოდ ცოტა დრო. თუ არა იგი უკვე, თუ ვინმე იქ წერდა ფუნქცია მოუწოდა არის შეამცირონ, რომ შეიძლება პასუხი გასცეს ჩემთვის ჭეშმარიტი ან ყალბი, ეს პერსონაჟი არის ამას? ისე საბედნიეროდ, ვინც დაწერა ctype.h ზუსტად რომ. ნება მომეცით წავიდეთ აქ და დამატება ctype for გ სახის და ახლა ნება მომეცით დაცემას აქ და გადაწერა ეს ხაზი შემდეგნაირად. ასე რომ, თუ ეს ე.წ. დაბალია, მე აცხადებენ, s bracket i, მაშინ მე ვაპირებ წაშლა ეს ორი ხაზი საერთოდ. ასე რომ, ახლა ვინმეს, მე იმ იმედით, წერდა ფუნქცია მოუწოდა უფრო დაბალია, და ეს თურმე გააკეთეს და მათ განაცხადეს, მას შიგნით ctype.h. ახლა კი მე ვაპირებ დატოვოს ხაზის 27 მარტო, მე დატოვებს ხაზი 31 მარტო, მაგრამ შეამჩნია, თუ რამდენად მე გამკაცრდა ჩემს კოდი. ეს ახლა სუფთა. ეს ნაკლებად რთული გაეცნონ რადგან ახლა ფუნქცია, უფრო მეტიც, არის ასე შესანიშნავად დაასახელა ის მხოლოდ ჯერ რა წერია. ასე რომ, ახლა მე ვაპირებ გადარჩენა ეს. მე ვაპირებ დააშორებს. და ისევე, როგორც Scratch შეიძლება Booleans, ლოგიკური ღირებულებების ჭეშმარიტი ან ცრუ, რომ ზუსტად ის, რაც არის დაწევა ეფექტურად ბრუნდება. ნება მომეცით recompile. ნება მომეცით ხელახლა პერსპექტივაში. ახლა კი მოდით ცდილობენ ეს კიდევ ერთხელ, H-E-L-L-O, შეიტანეთ. ეს არის საკმაოდ კარგი. და ცდილობენ კიდევ ერთხელ, დარწმუნდით I არ ხრახნიანი რაღაც up. ამას კაპიტალიზაცია ასევე. მაგრამ ეს არ არის საკმარისი, რადგან სხვა საქმეა, რომ მე არასოდეს არ აპირებს მახსოვს, სანამ არ მუშაობდა ეს ნამდვილად მხედველობაში, ვთქვათ, ქაღალდის არის ამ რა ხაზი. თუ არ იქნება ლამაზი თუ იყო ფუნქცია მოუწოდა ზედა? ისე გამოდის, იქ არის ctype.h ასევე. მე ვაპირებ წავიდეთ წინ და ტიპის - ნება მომეცით მოიტანს, რომ ხაზი უკან. იმის ნაცვლად, რომ ამ აქ, ნება მომეცით წავიდეთ წინ და აცხადებენ, შემცვლელი% c შედეგად მოუწოდებდა ამ ფუნქციას ზედა on i-th ხასიათი s. ახლა კი შეამჩნია ის მიღების ცოტა დაბალანსებული. მე უნდა შეასრულოს სიმღერა, თუ რამდენი ფრჩხილებში მე გაიხსნა და დაიხურა. ასე რომ, ახლა კი სუფთა. ახლა ამ პროგრამის დღითიდღე უკეთესი და უკეთესი განკუთვნილია სავარაუდოდ იმიტომ, რომ ეს ბევრად, ბევრად მეტი იკითხება, მაგრამ ეს არ არის მოდით გამოსწორებას. სასტარტედ კაპიტალიზაცია. . / კაპიტალიზაცია. H-E-L-L-O. მოდით აწარმოებს ერთხელ, D--V-I-D. OK, ასე რომ, ჩვენ ჯერ კიდევ ნამდვილად კარგი ფორმა. მაგრამ ახლა ზედა. მე ვთავაზობ, რომ არსებობს კიდევ ერთი დახვეწას ჩვენ ვერ იქნებოდა მართლაც კარგია, რომ შეიძლება მართლაც გამკაცრდეს ეს კოდი და ნამდვილად გვაძლევს ხუთ ხუთიდან დიზაინი, მაგალითად. რა იქნებოდა, თავი დაეღწია? ისე, შევხედავთ, როგორ რა ხანგრძლივი ამ ბლოკი კოდი არის მხოლოდ რაღაც უბრალო. ახლა, როგორც განზე, როგორც თქვენ ალბათ ჩანს სუპერ მონაკვეთზე გასულ კვირის ბოლოს, თქვენ არ მკაცრად სჭირდება curly აფრთხილებს, როდესაც თქვენ უბრალოდ უნდა ერთი ხაზი კოდი, მიუხედავად იმისა, შევთავაზეთ შენახვა მათ ისე, რომ იგი იღებს გაცილებით უფრო მკაფიო, ისევე როგორც Scratch-ს U-ფორმის კორპუსები, რა შიგნით ფილიალი. მაგრამ არ იქნება ლამაზი თუ ზედა, როდესაც მოცემული მისი შეყვანა, აღმოჩნდა იგი ზედა თუ ეს ასე არ არის, და რა იყოს მშვენიერი წინააღმდეგ შემთხვევაში, თუ უკვე ზედა? უბრალოდ გაივლის ის მეშვეობით და სხვა რომ არაფერი. ასე რომ, შესაძლოა, აკეთებს, რომ. მე ვერ ცდილობენ და მხოლოდ იმედი მაქვს რომ ეს ასეა, მაგრამ ნება მომეცით დანერგვა კიდევ ერთი რამ. იმის ნაცვლად, რომ გამოყენებისას ინტეგრირებული ტერმინალში ფანჯრის ქვემოთ აქ, გავიხსენოთ, რომ ამ მოედანზე შავი ხატი გაძლევთ უფრო დიდი ტერმინალში ფანჯარა, რომ მე შემიძლია სრული ჩვენებას თუ მინდა? გამოდის, ისინი ერთგვარი oddly დასახელებულა, მაგრამ არსებობს ეს ყველაფერი მოუწოდა ადამიანი გვერდები, სახელმძღვანელო გვერდების, კაცი მოკლე, და მე შეუძლია ეს მიერ ბეჭდვის კაცი - რა მინდა ტიპის? კაცი ზედა. ახლა კი შეამჩნია თუ არსებობს ფუნქციონირებს შიგნით კომპიუტერი, in ამ შემთხვევაში მოწყობილობების, რაც არის ოპერაციული სისტემა Linux, იგი აპირებს მისცეს ჩემთვის გარკვეულწილად cryptic ნაკრები გამომავალი, მაგრამ თქვენ მოვძებნოთ დროთა განმავლობაში რომ ის ყოველთვის დაფორმატების საკმაოდ ბევრი იგივე ასე რომ თქვენ დაიწყოს შეეგუება. ყურადღება მიაქციეთ ზედა ზედა, და როგორც ჩანს, ეს იგივე დოკუმენტაცია ამისთვის უნდა შეამცირონ. ვინც დაწერა ეს იყო ჭრის ზოგიერთ კუთხეში და მისი ყველა ერთ გვერდზე. ეს ყველაფერი "მიზნით ცხოვრება გარდაქმნას წერილში, რომელიც ზედა ან ამას. გავითვალისწინოთ, რომ მოკლე, კაცი გვერდზე ასწავლის რა ფაილი მაქვს რომ მოიცავს გამოყენება ამ რამ. ეს მაძლევს ხელმოწერების ეს ფუნქციები, ორივე მათგანი, თუნდაც თუმცა ჩვენ ახლა მხოლოდ აინტერესებს ერთი. აქ არის აღწერილობა. ზედა გარდაქმნის წერილი გ ზედა თუ ეს შესაძლებელია. ჯერ კიდევ არ არის, რომ სასწავლო, მაგრამ ნება მომეცით ახლა გამოიყურება ქვეშ დაბრუნებული მნიშვნელობა, რამ ეს გადასცა უკან. ასე რომ, ღირებულება დაბრუნდა ის არის, რომ მოაქცია წერილით ან გ, თუ კონვერტაციის არ იყო შესაძლებელი. რა არის გ? ორიგინალური ხასიათი. ორიგინალური ხასიათი და ვიცით, რომ, კიდევ ერთხელ, მიმდინარეობს მდე მოკლე შინაარსი, და ვინც დაწერა ეს ფუნქცია უბრალოდ გადაწყვიტა, რომ შეტანის რათა ზედა და ქვედა არის მხოლოდ თვითნებურად უნდა მოუწოდა გ. მათ შეეძლოთ მას ყველაზე არაფერი მათ სურთ, მაგრამ ისინი ინახება ეს მარტივია, გ. ასე რომ, მე კონსულტაციები კაცი გვერდზე. წაიკითხავს reassures ჩემთვის, რომ თუ ეს არ არის ამას წერილი, ეს აპირებს მხოლოდ მომეცი უკან გ, რომელიც სრულყოფილი, რაც იმას ნიშნავს, მე შემიძლია თავი დაეღწია ჩემი სხვას მდგომარეობაშია. ნება მომეცით დაბრუნდეს GEdit და ახლა ნება მომეცით მხოლოდ ამის გაკეთება. მე აპირებს ჩემი printf განცხადებაში. მე ვაპირებ წავიდეთ წინ და მარჯვენა შიგნით for loop ბეჭდვითი, რომ, და მიიღოს ჩამოშორებას ახლა ეს მთელი თუ მშენებლობა. არ იყო ცუდი იდეა, და ეს იყო ძალიან გაცილებით სწორი და შეესაბამება ყველაფერი ჩვენ ქადაგებდა, მაგრამ არ არის აუცილებელი. როგორც კი ხვდები, ზოგიერთი ბიბლიოთეკა ფუნქცია არსებობს იმისა, რომ ვინმე წერდა, ან იქნებ დაწერა სხვაგან ფაილი, შეგიძლიათ გამოიყენოთ იგი და მართლაც დავიწყოთ გამკაცრდეს up კოდი. ხოლო, როცა ამბობენ, რამ, როგორიცაა კარგი სტილი, ფაქტია, რომ ეს ადამიანი მოუწოდა ფუნქცია ზედა, ან მანამდე არის ქვედა არის შესანიშნავად მოსახერხებელია, რადგან ისინი ძალიან აღწერილობითი. თქვენ არ მინდა მოვუწოდო თქვენი ფუნქციები x და y და z, რომელთაც აქვთ ბევრად, ბევრად უფრო ნაკლები მნიშვნელობა აქვს. ნებისმიერი შეკითხვა, რომ სერია გაუმჯობესების? ასე რომ საკმარისია ითქვას ერთი takeaways კიდევ, როგორც საკუთარი პრობლემა კომპლექტი - იქნებ პრობლემა ნაკრები, მაგრამ რა თქმა უნდა, P მითითებული ორი და შემდგომი, მაშინაც კი, როდესაც ისინი სწორი არ არის აუცილებელი ნიშნავს, ისინი საქართველოს მხოლოდ ჯერჯერობით ან განსაკუთრებით კარგად შემუშავებული. ეს არის ის, სხვა ღერძი უნდა დავიწყოთ ფიქრი. ასე რომ, ეს იყო სიმებიანი შიგნით თქვენი კომპიუტერის მეხსიერებაში, მაგრამ თუ თქვენ გაქვთ მთელი bunch პერსონაჟების მსგავსად H-E-L-L-O შიგნით ოპერატიული, და ვარაუდობენ რომ თქვენ თქვენი პროგრამის მოვუწოდებთ მიიღოს სიმებიანი რამდენჯერმე, რომ თქვენ მოვუწოდებთ მიიღოს სიმებიანი ერთხელ, მაშინ მოვუწოდებთ მიიღოს სიმებიანი ერთხელ. ისე, რა ხდება მოხდება დროთა განმავლობაში? სხვა სიტყვებით, თუ თქვენ გაქვთ ხაზი კოდი, თუმცა გარეთ კონტექსტში, ისევე როგორც სიმებიანი s იღებს - მოდით ეს. სიმებიანი სახელი შეადგენს მიიღოს სიმებიანი. ამიტომ ვარაუდობენ, რომ ხაზი კოდი იგულისხმება ვთხოვო შესახებ მისი სახელი. ეს მომდევნო ხაზი კოდი იგულისხმება ვთხოვო შესახებ მისი სკოლა, და ამ მეორე ხაზზე და სხვ. ვარაუდობენ, რომ ჩვენ შევინარჩუნოთ ითხოვს შესახებ კიდევ და სხვა და სხვა სიმებიანი. ისინი აპირებენ დარჩენას მეხსიერება ამავე დროს. ერთი არ აპირებს clobber სხვა. სკოლა არ ჩაანაცვლებს სხვა. მაგრამ სად ისინი დასრულდება მდე მეხსიერება? ისე, თუ ჩვენ დავიწყებთ მიაპყროს ეკრანზე, რაც ჩვენ შეგვიძლია გამოვიყენოთ ეს საგანი აქ, ისევე როგორც chalkboard, თუ ეს შავი მართკუთხედი წარმოადგენს ჩემს კომპიუტერის მეხსიერება, მე ვაპირებ თვითნებურად დაიწყოს გამყოფი იგი დაყოფილია პატარა მოედნები, ყოველი მათგანი წარმოადგენს ერთი ბაიტი მეხსიერება. გულწრფელად ვამბობ, თუ აქვს Gigabyte ოპერატიული ამ დღეებში, თქვენ გაქვთ მილიარდი bytes მეხსიერების თქვენს კომპიუტერში, ასე მილიარდი ამ მოედნებზე. ასე რომ, საკმარისია ითქვას, რომ ეს არ არის ნამდვილად, რომ მასშტაბით. მაგრამ ჩვენ შეგვიძლია შევინარჩუნოთ ხატვის ყველა ამ ნამდვილად არ გავაფართოვოთ სკვერი და ამ ერთობლივად წარმოადგენს ჩემი კომპიუტერის მეხსიერებაში. ახლა ჩვენ მხოლოდ ამის dot, dot, dot. ასე რომ, სხვა სიტყვებით, როდესაც მე ახლა გამოიწვიოს მომხმარებელი Get სიმებიანი მისცეს me ტექსტი, რა ხდება? თუ მომხმარებლის ტიპების "Hello", რომელიც დამთავრდა წელს H-E-L-L-O. მაგრამ ვარაუდობენ შესახებ, მაშინ სახეები - რეალურად, მე არ უნდა გაკეთდეს კომენტარი პირველმა რადგან ჩვენ ითხოვს მათ სახელები. მოდით დავუბრუნდეთ თუ შეიძლება ამის გაკეთება. ასე რომ, თუ მე ტიპის D--V-I-D, ჩემი სახელი და გვარი, მაგრამ გავიხსენოთ, რომ მეორე ხაზი კოდექსი მიიღოს სიმებიანი ერთხელ თავისი სკოლა. სად არის, რომ სიტყვა, რომელიც შესახებ ტიპების აპირებს შემდეგი? ასევე, შესაძლოა, აპირებს წასვლას H--R-V--R-D. ასე რომ, მიუხედავად იმისა, რომ მე შედგენილი იქნება, როგორც ორ რიგში, ეს მხოლოდ მთელი bunch of bytes თქვენს კომპიუტერის ოპერატიული. აქ არის პრობლემა, რადგან ახლა თუ მე ვარ გამოყენებით RAM ამ ძალიან გონივრული მაგრამ ერთგვარი გულუბრყვილო გზა, რა შეგიძლიათ არ როგორც ჩანს ზღვარის? სადაც იწყება და სად ერთი მთავრდება, არა? ისინი ერთგვარი დაბინდვა ერთად. გამოდის, კომპიუტერი ამას არ გააკეთებს. ნება მომეცით რეალურად გადახვევა უკან დრო რამდენიმე პერსონაჟი, და ნაცვლად ჰარვარდის მიმდინარეობს მაშინვე მომხმარებლის სახელზე, მომხმარებლის რეალურად იღებს, უკან სცენები, სპეციალური სიმბოლოს შეიყვანეს მიერ კომპიუტერი მას. / 0, წინააღმდეგ შემთხვევაში ცნობილია როგორც nul ხასიათი გამაღიზინებლად მოუწოდა N-U-L, არ N-U-L-L, მაგრამ თქვენ დაწერა როგორც / 0. უბრალოდ ყველა ნულოვანი ბიტი არის მარკერის in შორის პირველი სიტყვა, რომელიც მომხმარებლის აკრეფილი და მეორე. ასე რომ, ჰარვარდის რეალურად ახლა მთავრდება რადგან ეს რიგითობა გმირები და კიდევ ერთი / 0. ასე რომ, სხვა სიტყვებით, მიერ, რომელსაც ეს Sentinel ღირებულებების, რვა მომიჯნავე ნულოვანი ბიტი, შეგიძლიათ დაიწყოს ზღვარის ერთი ხასიათი სხვა. ასე რომ, მთელი ამ ხნის, თუ რა იყო "გამარჯობა" არის რეალურად "Hello" ერთად / 0, და იმავდროულად, შეიძლება ძალიან კარგად იყოს უფრო მეტს RAM შიგნით კომპიუტერი. ნება მომეცით გავაკეთოთ ერთი რამ არის. გამოდის, რომ ყველა ეს მოედნები ჩვენ უკვე ხატვის, ისინი კი, სიმები, მაგრამ უფრო ზოგადად, ეს ყველაფერი მასივები. მასივი უბრალოდ ბლოკი მეხსიერება ეს არის ის, უკან თავში თავში დაბრუნება, და თქვენ, როგორც წესი, გამოიყენოთ მასივი გზით ამ მოედანზე bracket notation. ასე რომ, ჩვენ ვაპირებთ ვხედავ ამ საკმაოდ მწირი დროთა განმავლობაში, მაგრამ ნება მომეცით წავიდეთ წინ და ქმნის, მოდით ეძახით ასაკის. და შეამჩნია რა შეგვიძლია ერთად ამ საერთო tricks, პატარა ცოტა მეტი syntax აქ. ასე რომ, ხაზი 17 ამ პროგრამის - ფაქტობრივად, ნება მომეცით პროგრამის გაშვება პირველი ასე რომ, ჩვენ ვხედავთ რაც ამ რამ არ. მინდა გითხრათ, მიიღოს ასაკის შეადგინოს ამ პროგრამის. . / ასაკის. რამდენი ადამიანი ოთახში? მას სამი. ასაკი პირველი პირი? 18, 19 და 20. ახლა კი გარკვეულწილად ridiculously, უბრალოდ არ გააკეთა პროგრამა, რომელიც საუკუნეების იმ სამი ადამიანი. ასე რომ აშკარად საშუალება გარკვეული fun არითმეტიკა აქ. საბედნიეროდ, მათემატიკის სწორია. 18 წავიდა 19, 19 წავიდა 20 და სხვ. მაგრამ რა სინამდვილეში ნიშნავს, რომ საილუსტრაციო აი, როგორ ჩვენ შენახვის იმ სამ ხალხის ასაკის. ნება მომეცით მასშტაბის გასაზრდელად რა არის ხდება აქ. ასე რომ, პირველი, ეს პირველი რამდენიმე ხაზები უნდა მისაღებად საკმაოდ ნაცნობი. მე მხოლოდ რითაც მომხმარებელი, ადამიანთა რიცხვი ოთახში. მაშინ მე გამოყენებით მიიღოს int და ამის გაკეთება ხოლო ეს კიდევ ერთხელ და ისევ და ისევ. ჩვენ ვნახეთ, რომ ნიმუში ადრე, მაგრამ ხაზი 27 არის ახალი და რეალურად საკმაოდ სასარგებლო და გახდება სულ უფრო და უფრო სასარგებლოა. გავითვალისწინოთ რომ რა განსხვავებული ხაზი 27 არის, რომ მე, როგორც ჩანს, გამოცხადების int მოუწოდა ასაკის, მაგრამ დაველოდოთ. ეს არ არის მხოლოდ int ასაკის. აქ არის ამ კვადრატულ ფრჩხილებში, შიგნით, რომელიც ნ. ასე რომ, bracket n ამ კონტექსტში არ შიგნით printf განაცხადი აქ ამ ერთადერთი ხაზი 27, ამ ხაზის ამბობდა, მომეცი ო ints, რომელთაგან თითოეული არის ტიპის int. ასე რომ, ეს bucket, ასე ვთქვათ, of, ამ შემთხვევაში, სამი რიცხვებით უკან უკან დაბრუნება ისე, რომ ეფექტურად სამი ცვლადი. ალტერნატიული, უნდა იყოს ნათელი, იქნება ეს. თუ მინდოდა პირველი სტუდენტის ასაკი, შეიძლება ამის გაკეთება. თუ მინდოდა მეორე სტუდენტის ასაკი შეიძლება ამის გაკეთება. თუ მინდოდა მესამე სტუდენტის ასაკი, შეიძლება ამის გაკეთება. და ღმერთმა ნუ ქნას, რომ ჩვენ გვჭირდება ყველას ასაკი ამ ოთახში - ვგულისხმობ, ეს heck, ძალიან ბევრი ასლი, ჩასვით ისევ და ისევ და ისევ. და პლუს ერთხელ შეადგინოს ამ პროგრამის თუ კიდევ ერთი სტუდენტი დადის ზე მეტ გარეთ რომ კარი, ახლა ჩემს ნომერზე ცვლადები არასწორია. რა არის ლამაზი შესახებ მასივი როგორც მალე დაიწყება შეგრძნება თავს გადაწერა და pasting, შანსი, რომ არ არის საუკეთესო მიდგომა. მასივი დინამიური პოტენციურად. არ ვიცი წინასწარ, თუ რამდენი ადამიანი იქნება ოთახში, მაგრამ მე ვიცი, მე უნდა ნ მათ, და მე გაერკვნენ n როცა დრო მოდის. ეს ხაზი კოდი, ახლა კი იმას ნიშნავს, მომეცი ბლოკი მეხსიერება, რაც ასე გამოიყურება სადაც რაოდენობის ყუთები ეკრანზე არის მთლიანად დამოკიდებული ო, რომ მომხმარებლის აკრეფილი შემოსული ასე რომ, ახლა დანარჩენი ამ პროგრამის რეალურად საკმაოდ მსგავსია იმისა, რაც ჩვენ უბრალოდ გააკეთა სიმბოლოს. გაფრთხილების მაქვს for loop იწყება ხაზი 30. ასე რომ, მას შემდეგ, რაც მე მასივი, I iterate ეხლა Y ნულის ტოლი მდე ო. მე უბრალოდ ამ სასწავლო printf გაგზავნა უბრალოდ ამბობდა, მომეცი ასაკი პირის #% i, ასე რომ ნომერ პირველი, ნომერი ორი, ნომერი სამი. და რატომ ამის გაკეთება? გულწრფელად ვამბობ, ადამიანები ურჩევნია ითვლიან ერთი მდე, ხოლო კომპიუტერის მეცნიერები, ნულოვანი მდე. კომპიუტერული მეცნიერები არ აპირებენ გამოყენება ამ სახის პროგრამა, ამიტომ ჩვენ აპირებს დავიწყო დამთვლელი ერთ მსგავსად ნორმალური ადამიანი. ახლა კი თანხვედრაში 33, შეამჩნია ოდნავ სხვადასხვა ნაწილი სინტაქსი. I-th ასაკის რომ ცვლადის ტიპის მასივი აპირებს მიიღოს int. ახლა კი ბოლოს, ეს მხოლოდ არითმეტიკული ქვემოთ აქ. გადავწყვიტე ცალკე მარყუჟის, პრეტენზია გარკვეული დროის გადის და ახლა ამ ცალკე მარყუჟის ამ ხაზების შეასრულოს. წელი ამიერიდან, ადამიანი იქნება i წლის, მაგრამ შეამჩნია ეს არ არის ცვლადი i. ეს არის% i for int. და შეამჩნია, როგორც პირველი placeholder, I plug in i პლუს 1, ამიტომ ჩვენ იმედი მოსწონს ნორმალური ადამიანი. და შემდეგ ღირებულება მათი ასაკი, ამისთვის i წლის, მე ასაკის bracket i - და რატომ ვარ მე აკეთებს პლუს ერთი აქ? ისინი უბრალოდ ასაკია. ეს არის ჩემი სულელური არჩევანი პროგრამები. ისინი უბრალოდ ასაკის ერთი წლით. მე ვერ აკრიფოთ ნებისმიერი ნომერი, რომელიც მე რეალურად მინდა იქ. რა არის რეალურად ყველა შესაბამისობა აქ? ისე, მინდა გითხრათ, რეალურად გადახვევა უკან მეტი აქ და ხატავს სურათს თუ რა დევს წინ. ის, რასაც ჩვენ უნდა აკეთებს ჩვენი მომავალი პრობლემა Set ორი არის dabbling in მსოფლიოს კრიპტოგრაფიის. ასე რომ, ეს სიმებიანი პერსონაჟების, ისე რიგითობა მრავალი სიმბოლო და რაც ჯერ ეს ვთქვა? ეს არ ონლაინ ვერსია საქართველოს სლაიდები. ასე რომ, ამტკიცებენ, რომ ეს უდრის ამას, სულელური რეკლამის მრავალი წლის წინ, რომ, შესაძლოა, რეალურად იხსენებენ მისი წარმოშობა. ასე რომ, ეს მაგალითად დაშიფვრის ან კრიპტოგრაფიის. გამოდის, რომ, თუ გსურთ რეალურად ინფორმაციას ან წილის ინფორმაციას ვინმე საიმედოდ, მოსწონს გაგზავნა მოსწონს ეს, შეგიძლიათ scramble წერილები. თუმცა, როგორც წესი, სიტყვები არ scrambled შემთხვევით. ისინი permuted გარკვეულწილად ან შეიცვალა რამდენიმე გზა ისე, რომ - oops. სწორედ fun სპოილერი მომავალი დრო. ასე რომ შეგიძლიათ რუკაზე რა აშკარად O to ბ ცნობა, რომ ხაზები up კაპიტალიზაცია-ბრძენი. როგორც ჩანს რ ხდება ე. როგორც ჩანს F-H-E-R ხდება S-U-R-E. ასე რომ, თურმე არსებობს რუკების, ხოლო ამ შემთხვევაში არსებობს საკმაოდ სულელური რუკების თუ ვინმეს აქვს figured ის? ეს არის რაღაც მოუწოდა Rot 13, როტაცია 13. ეს stupidest დაშიფვრის მექანიზმები, რადგან ეს სიტყვა უბრალოდ დასძენს 13 თითოეული ასოს, სულელური იმ გაგებით, რომ თუ მხოლოდ ცოტა თავისუფალი დრო თქვენს ხელში და ფანქარი, ან უბრალოდ ვფიქრობ, რომ მეშვეობით თქვენს ხელმძღვანელი, შეგიძლიათ ვცდილობთ ყველა შესაძლო დამატებები - ერთი, ორი, სამი, dot, dot, dot, 25 მხოლოდ როტაცია მთელი ანბანი, და საბოლოოდ, თქვენ გაერკვნენ რა ეს მესიჯი არის. ასე რომ, თუ გააკეთეს მსგავსი რამ in კლასის სკოლის გავლის შეტყობინებები თქვენი საუკეთესო მეგობარი, თუ თქვენი კლასის სკოლა პედაგოგი, უბრალოდ წავიკითხე მეშვეობით გაგზავნა და უხეში იძულებული გადაწყვეტა, თქვენ ალბათ შემოსული პასუხი, რომ. ახლა, რა თქმა უნდა, რეალურ სამყაროში, კრიპტოგრაფიის არის უფრო დახვეწილი. ეს არის snippet of ტექსტი კომპიუტერული სისტემით, რომელსაც აქვს სახელისა და პაროლები, როგორც თითქმის ყველა ჩვენი გასაკეთებელი და ეს არის ის პაროლი ძალის ჰგავს თუ ინახება თქვენს ხისტ მანქანა, არამედ დაშიფრული ფორმით. ეს არ არის მხოლოდ როტაცია წერილები, არის B და B არის C. ეს არის ბევრად უფრო დახვეწილი, მაგრამ ის იყენებს რა საყოველთაოდ ცნობილია როგორც საიდუმლო გასაღები კრიპტოგრაფიის. ეს სურათი მოგვითხრობს შემდეგ ამბავი რამდენიმე ხატები. მარცხენა, ჩვენ გვაქვს რა ჩვენ მოვუწოდებთ ძირითადი ტექსტი. სამყაროში კრიპტოგრაფიის, ჩვეულებრივი ტექსტი არის მხოლოდ ორიგინალური გაგზავნა დაწერილი ინგლისური ან ფრანგული ან ნებისმიერ ენაზე განაწილებაზე. თუ გსურთ დაშიფვრა იგი, ჩვენ გაივლის ეს pictorially მეშვეობით ბოქლომი, ასე ზოგიერთი სახის ალგორითმი, ზოგიერთი ფუნქცია ან პროგრამა რომ ვინმე წერს რომ scrambles წერილებს იმედია მეტი complicatedly ვიდრე უბრალოდ დასძინა 13 ყოველი მათგანი. რა გავიდნენ, რომ პროცესი შუა იქ ეწოდება cyphertext. ასე რომ, ასეთი sexy სიტყვა. ეს მხოლოდ იმას ნიშნავს, რომ ეს დაშიფრული მობილური ძირითადი ტექსტი. და თუ თქვენ გაქვთ, რომ იგივე საიდუმლო, 13 ან მინუს 13, თქვენ შესაძლებლობა გაშიფვრა გაგზავნა იგრძნობა. ასე რომ, პრობლემა არის მითითებული ორი, მათ შორის რამ თქვენ თუ ამ Hacker გამოცემა, თქვენ უნდა დაწეროს კოდი ბზარი ეს პაროლები, მჭიდროდაა გარეთ რაც იყო და როგორ იყო დაშიფრული, თუმცა ჩვენ ყველაფერს ვაკეთებთ გაძლევთ ცოტა ხელმძღვანელობით გზაზე. In სტანდარტული გამოცემა, ჩვენ დანერგვა რამდენიმე ciphers, დაშიფვრის მექანიზმები, ერთი მოუწოდა ცეზარ, ერთი მოუწოდა Vigenere, რომლებიც ჯერ ბრუნვის ciphers, სადაც ხდება რაღაც, B ხდება რაღაც, მაგრამ თქვენ უნდა გავაკეთოთ პროგრამულად იმიტომ, რომ იქ მართლაც იყოს საიდუმლო გასაღები ჩართული, რომელიც, როგორც წესი, მთელი რიგი ან სიტყვით რომ მხოლოდ გამგზავნი და მიმღები ეს შეტყობინებები უნდა გაიგოს. ახლა ეს რეალურად აქვს incarnations რეალურ ცხოვრებაში. ეს, მაგალითად, პატარა ობოლი ენი საიდუმლო დეკოდერი ბეჭედი, და თქვენ შეიძლება რეალურად განახორციელოს ეს ბრუნვის ciphers - ხდება რაღაც, B ხდება რაღაც - ერთად რამდენიმე დისკები, ერთი გარეთ, ერთი ქვეყნის შიგნით ასეთი, რომ თუ თქვენ როტაცია საჭე ან ბეჭედი, შეგიძლიათ რეალურად გამოდიან წერილების სხვადასხვა წერილები, მიღების საიდუმლო კოდი. ასე რომ, როგორც cliffhanger დღეს, რა მეგონა, მე მინდა ამის გაკეთება ცოტა throwback, რომ თუ თქვენ ჩართოთ TV 24 დეკემბერს, თქვენ შეგიძლიათ ნახოთ ფილმის რეკლამა nauseum for 24 საათის განმავლობაში ზედიზედ. მაგრამ დღეს, მე გასახსნელად აქ და მოგვცეს მხოლოდ ორი წუთი pedagogically შესაბამისი საშობაო ამბავი პატარა თანამემამულე დაასახელა Ralphie. [ვიდეო აღწარმოების] -იქნება ეს ცნობილია ყველასთვის და sundry, რომ რალფ პარკერი წინამდებარე დაინიშნა წევრი პატარა ობოლი ენი საიდუმლო წრე და მას უფლება აქვს ყველა პატივით და სარგებელი ხდება მასთან. ხელმოწერილი, პატარა ობოლი Annie. Countersigned პიერ ანდრე in მელნის. ჯილდოები და შეღავათები უკვე ასაკში ცხრა. [ყვირილი, რადიო] კარგით, მოდით მიიღოს იგი. მე არ უნდა ყველა რომ ჯაზის შესახებ კონტრაბანდისტების და მეკობრეების. -Listen ხვალ საღამოს დადების ავანტიურის შავი მეკობრე გემი. ახლა დროა ენი საიდუმლო შეტყობინება თქვენთვის წევრები საიდუმლო წრე. გახსოვდეთ, ბავშვები. მხოლოდ წევრების ენი საიდუმლო წრე შეიძლება decode ენი საიდუმლო გაგზავნა. გახსოვდეთ, ენი დამოკიდებულია თქვენ. თქვენი ქინძისთავები რომ B2. აქ არის გზავნილი. 12, 11, 2 - -მე ჩემი პირველი საიდუმლო შეხვედრა. -25, 14, 11, 18, 16 - პიერ იყო დიდი ხმა შეძლებენ. მე ვერ გეტყვით, რომ დღეს ის გაგზავნა მართლაც მნიშვნელოვანია. -3, 25. სწორედ გზავნილი ენი თავად. გახსოვდეთ, არ ვუთხრა ვინმეს. -90 წამში, მე მხოლოდ ოთახი ამ სახლში, სადაც ბიჭი ცხრა შეიძლება იჯდეს კონფიდენციალურობის და decode. Aha, ბ მივედი შემდეგ. ე პირველი სიტყვა "იყოს". ს იგი მოდის ადვილი არის. უ 25. ეს არის ის, რ -კარგით, Ralphie. I gotta go. -I'll be ქვემოთ, MA. Gee პროგრამირებაში. -T. ო დარწმუნდით. დარწმუნდით, რომ რა? რა იყო პატარა ობოლი ენი ცდილობს ვთქვა? დარწმუნდით, რომ რა? -Ralphie რენდი აქვს გასავლელი. თქვენ გთხოვთ გამოვიდეს? -All უფლება, MA. მე ვიქნები უფლება. -I იყო უახლოვდება არის. დაძაბულობის საშინელი იყო. რა იყო ეს? ბედი პლანეტა შეუძლია სასწორზე დევს. -Ralphie რენდი ნახვა gotta go. -I'll იქნება სწორი გარეთ ტირილი ხმამაღლა. -თითქმის. ჩემი თითების გაფრინდა. ჩემი აზრით ფოლადის ხაფანგში. ყველა ფორე vibrated. ეს იყო თითქმის ნათელია. დიახ, დიახ, დიახ, დიახ, დიახ. -დარწმუნდით თქვენს Ovaltine. Ovaltine? Crummy კომერციული? ძე bitch. [END ვიდეო აღწარმოების] დინამიკები 1: ეს არის CS50, და რომ იქნება პრობლემა Set ორი. თქვენ მომავალ კვირას. დინამიკები 2: მომდევნო CS50, ეს მოხდება. დინამიკები 1: So ერთ თემას ჩვენ არ გვაქვს უყურებდნენ დღემდე არის რომ ფუნქციის მაჩვენებლებს. ახლა, ფუნქციის მაჩვენებელი მხოლოდ მისამართი საჯარო ფუნქცია, მაგრამ ჰგავს - ვაჟი -