[მუსიკის დაკვრა] დინამიკები 1: ეს არის CS50 და ეს არის დაწყების კვირაში ორი. ასე რომ, მოდით ჩაყვინთვის მარჯვენა რაღაც რომ არის buggy, ასე ვთქვათ. ასე რომ, აქ არის CS50 IDE და მე გამოყვანილია წინასწარ ამ ეკრანზე რა მას. სპოილერი მზადყოფნაში. ყველა უფლება. მე გამოყვანილია ამ ეკრანზე აქ, რომელსაც აქვს ძალიან მარტივი პროგრამა. თუ ჩვენ გადახვევა ქვემოთ, ყველაზე ეს მხოლოდ კომენტარი, მაგრამ აქ ხაზების 13 გზით 17 ჩვენ გვაქვს პროგრამა. ეს არის სინტაქსურად მოქმედებს, რაც იმას ნიშნავს, თუ კომპილირება, ეს კომპილირდება და აწარმოებს, მაგრამ ეს buggy. ეს პროგრამა ამტკიცებს, რომ კომენტარები ზევით რომ ის უნდა ამობეჭდოთ 10 ვარსკვლავს, მაგრამ ეს ასე არ არის. და ეფუძნება თქვენი გამოცდილება, ან მალე გამოცდილება C, შეგიძლიათ ლოგიკურად დაინახა რატომ არის ეს, ფაქტობრივად, buggy? ჰო? აუდიტორია: ეს მიდის ნულიდან 10. სწორედ 11 iterations. დინამიკები 1: ჰო. ასე რომ, ის აპირებს ნულიდან მეშვეობით და ტოლია 10, რა თქმა უნდა, არის 11 iterations. ასე რომ, ის აპირებს ბეჭდვითი, მართლაც, 11 ვარსკვლავი. ასე რომ, კომპიუტერულ მეცნიერებათა კონვენციას ყველაზე პროგრამირების ენები არის, მართლაც, მხოლოდ იმიტომ, რომ დაიწყება დათვლის დროს ნულოვანი, მაგრამ ითვლიან მდე მაგრამ არა მნიშვნელობა, რომ რეალურად აინტერესებს. ახლა, ეს არის ერთი რამ, რომ იღებს ცოტა შეგუება და კიდევ Scratch, შექმნილია, როგორც ეს არის არასამთავრობო პროგრამისტები ან არასამთავრობო კომპიუტერული მეცნიერები და ბავშვები ძირითადად, მიზნად ისახავს აქვს თქვენ დაიწყება დათვლის ზოგადად ერთი. და ეს ჯარიმა. თქვენ შეგიძლიათ სრულიად დაიწყება დათვლის ერთი, თუ ეს უფრო კომფორტული. და იმედი მდე და საშუალებით 10, მაგრამ თქვენ გააცნობიეროს, განსაკუთრებით ამ კვირაში და მის ფარგლებს გარეთ, რომელიც მხოლოდ ასე ბევრი რამ პროგრამირების ვივარაუდოთ, რომ 0 არის პირველი ციფრი, რომელიც თქვენ ითვლიან, რომ თქვენ ვაპირებთ უფრო ადვილია, მხოლოდ შეღწევას ამ ჩვევა ამოსავალი ნულიდან და დათვლის მდე ღირებულება თქვენ აინტერესებს ახლავე საწყისი მისაღებად წასვლა. ასე რომ, უკვე დაფიქსირდა, რომ. ჩვენ შეიცვალა ნაკლებია ან უდრის უბრალოდ ნაკლები. მოდით შევხედოთ მეორე მაგალითი აქ. ასე რომ, ეს პროგრამა ძალიან აცხადებს თავის კომენტარი ზევით, რომ ეს უნდა ბეჭდვა ათი ვარსკვლავი, მაგრამ ეს ასე არ არის. რა არის bug აქ? ასე რომ, what-- და ბოდიში, მოდით იყოს ნათელი. 10 ვარსკვლავი. ერთ ხაზზე, მაგრამ ეს ასე არ არის. ასე რომ, ფაქტობრივად, ნება მომეცით წავიდეთ წინ და შეადგინონ ეს ერთი იმიტომ, რომ ეს ცოტა ნაკლები გარკვევა საფუძველზე, რომ აღწერილობა. ნება მომეცით წასვლას ჩვენი წყაროს დირექტორია. ჩადება buggy ერთი dot ხაზი, buggy ერთი. OK, მე ვხედავ, 11 ვარსკვლავი, რომელიც კვლავ პრობლემურია, მაგრამ ისინი ასევე ყველა ერთ ხაზზე. რა არის საკითხი აქ? ჰო. აუდიტორია: [INAUDIBLE]. დინამიკები 1: ჰო. ასე რომ, ეს არის დელიკატურობა, რომ თქვენ შეიძლება გავიხსენოთ, მე მიღების მოკლე ნახსენები. მიუხედავად იმისა, რომ ყველაფერი გამოიყურება საკმაოდ, და ეს ლამაზად indented, და ეს ერთგვარი გამოიყურება Scratch მსგავსი რომ ხაზი, 16 და 17, მართლაც, დაზუსტებისათვის, რომ მარყუჟი. ეს არის არსებითი. კომპიუტერი არ ვიცი, ან ვხედავ თეთრ სივრცეში. თეთრი სივრცე მხოლოდ us ადამიანები, სტილისტურად. კომპიუტერული იცის, როდესაც თქვენ გაქვთ Curly braces, რაც, რა თქმა უნდა, დაფიქსირება ამ პრობლემას. ასე რომ, თუ ჩვენ რეალურად წავიდა და მკაფიოდ დააყენა ამ Curly braces რომ დაფიქსირება ამ პრობლემას ცხადი გახადა, შემდგენელი რომ მე რეალურად მინდა შეასრულოს ორი ხაზი კოდი, კიდევ ერთხელ, და ისევ და ისევ. მაგრამ რა არის ფუნდამენტური ახსნა? მარჯვენა? ჩვენ არ მკაცრად უნდა curly braces ყველა დროის, მიუხედავად იმისა, რომ ეს, ალბათ, პრაქტიკის მისაღებად შევიდა, რომ ჩვევა მაინც მიუხედავად იმისა, რომ დასძენს ორი გმირები თქვენი კოდი. რატომ? აუდიტორია: [INAUDIBLE]? დინამიკები 1: ჰო ისე, რომ სხვა გამოსავალი საერთოდ. მარჯვენა? მით უმეტეს, თუ ერთი შეხედვით თქვენ არ ნამდვილად ვაფასებ, რა ხდება. ისე, რა თქმა უნდა, ჩვენ შეგვიძლია მხოლოდ ორი რამ ერთდროულად და მხოლოდ თავიდან ავიცილოთ პრობლემა საერთოდ. და ეს ჯარიმა, მაგრამ ახლა, დღევანდელი მიზნებისათვის, რა არის ახსნა bug? რატომ იყო ყველა იმ ვარსკვლავს ერთ ხაზს? ჰო? აუდიტორია: როგორც ჩანს, თუ თქვენ გაქვთ ერთი ხაზი კოდი, თქვენ შეგიძლიათ ამის გაკეთება გარეშე იმ. დინამიკები 1: ზუსტად. ეს არის მხოლოდ ადამიანის კონვენციას. ხალხი გააცნობიეროს, რომ ის ცოტა შემაშფოთებელი და tedious უნდა დააყენოს curly აფრთხილებს ყველა დრო თუ ყველა გსურთ ამის გაკეთება არის შეასრულოს ერთი ხაზი კოდი. ასე რომ, ადამიანები გადაწყვიტა გარკვეული ხნის ​​წინ, რომ ეს ჯარიმა. თუ გსურთ, რომ ყველა თქვენი loop მხოლოდ, რომ ერთი ხაზი, როგორც ეს, რომ ჯარიმა ერთჯერადი მძიმით ბოლოს. მაგრამ თქვენ შეგიძლიათ მხოლოდ ერთი ასეთი ხაზის გარეშე Curly braces. ასე რომ, როდესაც CS50 სტილის სახელმძღვანელო როგორც იქნება აღვნიშნო თქვენ, თქვენ ნახავთ, რომ ზოგადად ეს არის კარგი ჩვევა შეღწევას, სანამ თქვენ საკმაოდ კომფორტული გზასაცდენილი ამ სახის კონვენციები და აკეთებს საკუთარი რამ. ასე რომ, სანამ თქვენ თვითმმართველობის თანმიმდევრული. და ჩვენ გაიგო უფრო მეტი სტილი ცოტა მოგვიანებით დღეს. ასე რომ, ნება მომეცით გახსენით ერთი პროგრამა. რა თქმა უნდა, ჩვენ უნდა დაფიქსირება, რომ 10, ასევე. ნება მომეცით წავიდეთ წინ და დაწეროთ რეალური სწრაფი პროგრამა, რომელიც მე მოვუწოდებ, ვთქვათ, loop dot C. ასე რომ, loop dot C. და loop dot C მე ვაპირებ აქვს, მოიცავს სტანდარტული I / O dot H int ძირითადი ბათილად. ახლა მოდით უბრალოდ, მართლაც, loop. ასე რომ, 4 int i იღებს ნულოვანი. მე ნაკლებად, ვიდრე, ვთქვათ, 50. მე პლუს, ასევე. და მაშინ აქ მოდით წავიდეთ წინ და არ ბეჭდვა F. და მაშინ მინდა ამობეჭდოთ მე ახალი ხაზი, მძიმით. და ეს უნდა ამობეჭდოთ ყველა ციფრები ნულიდან 50-მდე? რამდენიმე ხელმძღვანელი nods. რამდენიმე nos. რა არის bug უკვე? რა არის მარტივი შეცდომა მივიღე? ჰო. აუდიტორია: [INAUDIBLE]. დინამიკები 1: ჰო. ასე რომ, მიუხედავად იმისა, რომ გამოიყურება როგორც ეს არის, რაც მე ვაპირებ, გავიხსენოთ, რომ ასევე მხოლოდ ASCII ხასიათი. ასე რომ, თუ მე ვიტყვი, print "ი" ეს ფაქტიურად აპირებს ბეჭდვა I. ასე რომ, თუ მე გვინდა, რომ დანამატის placeholder მნიშვნელობა მე რეალურად უნდა გავაკეთოთ ეს და შემდეგ plug-in ღირებულება მე დინამიურად ვითარდება. წინააღმდეგ შემთხვევაში, მე უბრალოდ აპირებს 50 მე ის ეკრანზე. ასე რომ, ნება მომეცით წავიდეთ წინ და რათა ამ მარყუჟის, აწარმოებს, და, მართლაც, ჩვენ გვაქვს ყველა გზა მეშვეობით 49. და თუ მე გადახვევა უკან დრო მე ვხედავ ხმების ნულოვანი დასაწყისში. ისე, რა, მე სახის ხრახნიანი up? რა მოხდება, თუ ამის გაკეთება? მხოლოდ იმიტომ, რომ მე არ ვფიქრობ. რა არის ეს პროგრამა. მას შემდეგ, რაც რე შედგენილი და აწარმოებს, ვაპირებთ გავაკეთოთ, ლოგიკურად? აუდიტორია: არაფერი. დინამიკები 1: არაფერი. რატომ არის, რომ? აუდიტორია: მე განკუთვნილია ნულოვანი. ასე რომ, მდგომარეობა სიცრუეა. დინამიკები 1: ჰო, ზუსტად. ყველა კოდი არის სწორი, სინტაქსურად. ეს კომპილირდება, ეს კოდი მიიღებს, მაგრამ ეს არ არის ვაპირებ არაფრის სასარგებლო იმიტომ, რომ მე ვრთავ მე ნულის. ჩვენ მაშინ შეამოწმეთ, არის მე უფრო მეტი, ვიდრე 50? ცხადია, არა, ეს ასე არ არის. ასე რომ მარყუჟი არასოდეს გაუშვებს ყველა. რა მოხდება, თუ ჩვენ რაღაც ცოტა უფრო უგუნური? ასე რომ, თუ ჩვენ გავაკეთებთ, როგორც int i იღებს ნულოვანი. ახლა კი ნება მომეცით გამოიყენოთ ხოლო loop, რომელიც კიდევ ერთი პირობა. და ეს მაშინ როდესაც მე ვამბობ, ხოლო მე უფრო მეტია, ვიდრე ან ნულის ტოლია, ხოლო შემდეგ მე აქ წავიდეთ წინ და ფაილის შენახვა, რათა loop. და მე დაახლოებით აწარმოებს. რა ვარ მე, რომ ეს დროის ხოლო loop? ჰო. აუდიტორია: უსასრულო loop? დინამიკები 1: უსასრულო ციკლი? დიახ, და რატომ? აუდიტორია: იმიტომ, რომ ეს ყოველთვის ნულის ტოლია. დინამიკები 1: ჰო. ასე რომ, მე ინიციალიზაცია, როგორც ნულოვანი. რა თქმა უნდა, ყოველთვის უფრო მეტი მეტი ან ტოლია 0 შედეგად. ასე რომ, მე უბრალოდ აპირებს ვხედავ ამ უსასრულოდ. ახლა კი, ეს არ ამუშავება ერთხელ ან ორჯერ კურსის ხელმძღვანელები. რა ხდება, როდესაც თქვენ გაქვთ უსასრულო ციკლი? აუდიტორია: კონტროლის C. დინამიკები 1: ჰო. ასე რომ, კონტროლის C საბოლოოდ რეაგირება. სამწუხაროდ, ჩვენ დაბეჭდილი გარეთ მილიონობით zeroes უკვე და ასე კომპიუტერი სახის მიიღო წინ. ასე რომ, ის აპირებს იგნორირება ჩემთვის ცოტა. მაგრამ თუ უბრალოდ მოხვდა კონტროლის C რამდენიმე ჯერ თქვენს Mac ან PC კლავიატურის, საბოლოო ჯამში ეს უნდა, მართლაც, შეწყვიტოს. და თუ არა, ჩვენ გაჩვენებთ რამდენიმე ტექნიკის ადრე ხანგრძლივი, სადაც თქვენ შეიძლება რეალურად იძულებით მოკვლა პროგრამები, ისევე როგორც Windows და Mac OS, თუ საჭირო იქნება. მაგრამ მოდით ცდილობენ რაღაც. მოდით რეალურად ნამატი I. არის ეს მაინც იქნება უსასრულო? ნება მომეცით აწარმოებს ამ. და ახლა თქვენ შეგიძლიათ სახის ვნახოთ, რა ხდება. ეს, ძალიან, არის უსასრულო ციკლი. მაგრამ ეს ცოტა შეასრულა კითხვაზე. არის თუ არა ეს აპირებს ბეჭდვა ნომრები სამუდამოდ? აუდიტორია: არა დინამიკები 1: No. რატომ? გავიგე, რომ ზოგიერთი nos მეტი აქ. Someone-- ჰო. აუდიტორია: თქვენ არ გაქვთ საკმარისი ბიტი მართლაც შენარჩუნებას აპირებს. დინამიკები 1: ყველა უფლება. ასე რომ, მე არ გაქვთ საკმარისი ბიტი შენარჩუნება აპირებს. ასე რომ, რა მოხდება? ეს უბრალოდ შევწყვეტთ? აუდიტორია: რაღაც მომენტში იგი დახურეს the-- დინამიკები 1: დახურეს მარყუჟის ქვემოთ, მაგრამ რატომ? რა მოხდება იმ ბოლომდე მისი საზღვრები? ჰო? აუდიტორია: ეს ციკლი უკან უარყოფითი რიცხვები. დინამიკები 1: უარყოფითი რიცხვები, ან თუ ჩვენ მხოლოდ მკურნალობის დადებითი, ნულოვანი მაინც. ასე რომ, დიახ, აბსოლუტურად. შეგახსენებთ, რომ ჩვენ ვნახეთ ბოლო დროს, რომ თუ ნამატი თქვენი ბიტი ერთი ძალიან ბევრჯერ, და თქვენ იქ დასმას overflow შესაძლებლობების თქვენი int ან რასაც მონაცემები ტიპის, თქვენ აპირებს გადაიტანოთ გარშემო, ალბათ, ორი უარყოფითი რიცხვები. ან თუ თქვენ დააკონკრეტა, რომ თქვენი სპექტრი უნდა იყოს მხოლოდ დადებითი, თქვენ შეგიძლიათ, მაგრამ ჩვენ არ მინახავს, ​​რომ არ არის, თქვენ შეიძლება დასრულდება მდე მინიმუმ უკან ნულოვანი. მიუხედავად იმისა, რომ რეალურად კი. ამ შემთხვევაში, უარყოფითი ნომრები, ამ შემთხვევაში მარყუჟის აპირებს შეწყვიტოს იმიტომ, რომ მე ასე არ არის, ფაქტობრივად, მეტია ან ტოლია ნულოვანი თუ უარყოფითი. ასე რომ, სამწუხაროდ, როგორ ხანგრძლივი იქნებოდა ჩვენ უნდა ველოდოთ? ახლა ჩვენ მდე რა, 2 მლნ-ish? ჩვენ ვართ, როგორიც 2 მილიარდი, ჩვენ ვაპირებთ, რომ უნდა ველოდოთ სანამ ჩვენ ვხედავთ ამ სიმპტომია. მაგრამ ჩვენ ვხედავთ, რომ ცოტა უფრო სწრაფად, maybe-- ვნახოთ, თუ ჩვენ არ შეუშალოს. კარგით. მაშინაც კი, მენიუები გამოჩენა ნელა. ყველა უფლება. ასე რომ, ჩვენ დავბრუნდებით, რომ ხანგრძლივი. ეს არის კარგი time-- ჯანდაბას, puppies. ეს არის კარგი დროის გარკვეული განცხადებები. ასე რომ, თუ შეიძლება მინდა ჩაერთონ YHack, რომელიც არის ღონისძიება მიმდინარეობს დაფინანსებული ჩვენი მეგობრები იელის. და, მართლაც, ზოგიერთი რა თქმა უნდა, TFs იელის ჩართული ამ. YHack არის საერთაშორისო hack-a-thon უმასპინძლა და გაიმართა იელის, აერთიანებს 1500 მსგავსად მოაზროვნე ჰაკერების და კრეატიული ყველა მთელ მსოფლიოში. თუ ეს ინტერესი, შევხედოთ აქ. თუ ეს ძალიან მოკლედ ეკრანზე, შევხედოთ დღევანდელ სლაიდები იმ URL for yhack.org. ასე რომ, ასევე რამდენიმე სწრაფ განცხადებები. ასე რომ, ოფიციალურად სექციები დაიწყება მომავალ კვირას, როგორც აქ და New Haven. გაითვალისწინეთ, თქვენ უნდა მისაღებად ელ მოგვიანებით ამ კვირის სავარაუდოდ. ეს დიდი დრო სჭირდება ამისთვის CS50 განყოფილებიანი, მოცემული ყველა ადამიანი კლასის და ყველას მოძრაობდნენ. და ყველა სასწავლო პრაქტიკის " გრაფიკით ასევე მაინც განამტკიცებს, მაგრამ ადევნეთ თვალყური ელ და საჭიროების შემთხვევაში უნდა, თქვენ შეგიძლიათ ხელახლა განყოფილება შემდეგ. Study.cs50.net. ასე რომ, მაშინაც კი, თუ თქვენ ხართ მუდმივი დამსწრე განთავსებულია სექციები, გააცნობიეროს, რომ თითქმის ყველა რესურსების ვიყენებთ სექციები საჯაროდ ხელმისაწვდომია CS50 სწავლა ამ URL აქ. ასე რომ, თუ თქვენ ოდესმე მინდა ხელახლა მიმოხილვა მასალა განყოფილებიანი, ან წაიკითხა წინ, თუ თქვენ არ შეუძლია მას გარკვეული კვირაში, გააცნობიეროს, რომ ნიმუში სლაიდები, და პრობლემები, და განმარტებები, და მეტი ყველა იქ. სამუშაო საათები დღეს განახლდება, და ხვალ, ოთხშაბათს, და ხუთშაბათს ნახოთ რა თქმა უნდა, ნახვა გრაფიკი. ასევე, ახლა იწყებს დღეს არის CS50 იმსჯელებს. ასე რომ, თუ და როდესაც თქვენ გაქვთ შეკითხვები ერთმანეთს და, რა თქმა უნდა ის თანამშრომლები, და ზოგადად სამუშაო ზოგიერთი პრობლემა კომპლექტი, ხვდები, რომ თქვენ არ ემთხვეოდეს უნდა მივმართოთ ადამიანის შემდეგი თქვენ. იმ შემთხვევაში, თუ არსებობს ერთი, თქვენ შეგიძლიათ დაგვიკავშირდნენ და თანაკლასელები ონლაინ მეშვეობით CS50 იმსჯელებს. ასე რომ, ეს არის დისკუსია საბჭოს, რა თქმა უნდა, და ხვდები, რომ ეს ალბათ საუკეთესო ადგილი უნდა დაიწყოს, როდესაც თქვენ გაქვთ კითხვები, როდესაც გარეთ საათებში კერძოდ. სადილების დაიწყება ამ კვირაში ძალიან. ცეცხლი და ყინული [INAUDIBLE] New Haven. შეხედეთ, რა თქმა უნდა ნახვა, რათა RSVP. პირველი მოდის, პირველი ემსახურება, რომ. თუ თქვენ არ გაქვთ ამ კვირაში ჩვენ ყველაფერს გავაკეთებთ, რომ ეს ყველაზე ყოველ პარასკევს ვადის განმავლობაში. OK, და ახლა სიტყვას შეფასების. კერძოდ, როგორც ჩვენ შევა პრობლემა დაყენებულია ერთი, რომელიც ამ კვირაში, და პრობლემა კომპლექტი ორი და მის შემდგომ. როგორ უნდა წავიდეს შესახებ შეფასებისას P კომპლექტი და ხარისხის შეფასებისას მათი? ასე რომ, ეს ოთხი ღერძი, რომ ჩვენ ვიყენებთ CS50, და ისინი ამ ოთხი აქ. სფერო, რომელიც იღებს on რიცხობრივი საფუძველზე, თუ რამდენად P კომპლექტი იცით თუ დაძლევის. ეს დაახლოებით შეესაბამება ძალისხმევა, და ეს არის ჩვენი გზა აღების ხომ არ ცდილობენ ნახევარი P მითითებული, ყველა P კომპლექტი. ეს არის ადვილი მიიღოთ სრულყოფილი ქულების თუ, რა თქმა უნდა, ცდილობენ ყველა ასპექტს P კომპლექტი. ასე რომ, რომ გონება. სისწორე არის ზუსტად რომ. თუ არა თქვენი კოდი მუშაობა, როგორც დაზუსტება და როგორც უფროსების "ნიმუში გადაწყვეტა ვარაუდობენ, რომ თქვენი კოდი უნდა, ფაქტობრივად, მუშაობა. შეამოწმეთ 50, თუ არ შეხვდა მას კიდევ, P კომპლექტი ერთი დაზუსტება და ზოგადად გაძლევთ კი / არა პასუხი თუ არა თქვენი კოდი არის სწორი. მინიმუმ იმდენად, რამდენადაც ჩვენ ვაპირებთ შეაფასოს იგი ეფუძნება ტესტები რომ ჩვენ აწარმოებს ფარგლებში, რომ პროგრამა. დიზაინი არის ბევრად უფრო სუბიექტური. ეს არის, თუ რამდენად კარგად დაწერილი თქვენი კოდი. და ეს არის ის, რომ თქვენ უკეთ დროთა განმავლობაში, და ეს არის ის, რაც ჩვენ გამოგიგზავნით გთავაზობთ უფრო ხარისხიანი კავშირი,. და დიზაინი მე შეიძლება ნიშნავს სანამ ხანგრძლივი შეიძლება ცდუნება ზოგიერთ P მითითებული, რომ რამე loopingly, მაგრამ აქვს იქნებ სამი, ან ოთხი, ან ხუთ წყობილი fore მარყუჟების ან წყობილი ხოლო მარყუჟების. ეს ზოგადად უნდა დაიწყოს, რათა თქვენ cringe და რომ, ზოგადად, ითვლება ცუდი დიზაინი. თქვენ დავიწყებთ კლასში და გარეთ კლასი კარგი გზები აკეთებს რამ, ცუდი გზები აკეთებს რამ, რომ შეიძლება ყველა იყოს სწორი, მაგრამ არა აუცილებლად მოფიქრებული. ისევე როგორც წერილობით ესსე. თქვენ შეიძლება დააყენოს სიტყვებს გვერდი, რომელიც გრამატიკულად სწორი, მაგრამ ესსე ან თეზისი ისინი მხოლოდ სრულიად არათანმიმდევრულია და არადამაჯერებელი. და ისე, რომ, შესაძლოა, ანალოგი წერილობითი სამყაროში ცუდი ან კარგი დიზაინი. და სტილი, ძალიან, არის საკმაოდ სუბიექტური. მაგრამ მაინც, ჩვენ ველით, თანმიმდევრულობა. ეს არის თუ როგორ საკმაოდ თქვენი კოდი. ხართ რამ ლამაზად დაზუსტებისათვის? არიან თქვენი ცვლადები ასევე დაასახელა / ხართ ყველა თქვენი ბრჭყალების და curly braces მიუერთდა, როგორც უნდა იყოს? ჩვენ გვაქვს CS50 სტილის სახელმძღვანელო, როგორც პრობლემა კომპლექტი იქნება აღვნიშნო თქვენ. ისინი უფრო კომფორტულად არიან მივესალმებით გადაუხვევს, რომ ასე რომ, სანამ თქვენ ხართ თვითმმართველობის თანმიმდევრული. ეს კი, ძალიან, არის გაკვეთილი ჩვენ გააძლიეროს ნაწილში. ასე რომ, თუ ყველა ეს იყო პატარა სწრაფი, გააცნობიეროს P კომპლექტი და სექციები წავა უფრო სიღრმისეული ადრე ხანგრძლივი. მაგრამ ზოგადად ჩვენ ძალიან ცოტა თაიგულების CS50. ქულა ზოგადად მასშტაბის ერთიდან სამ, ან ერთი ხუთ. ჩვენ ფაქტიურად და მე ვერ ვიტყვი, ეს საკმარისი პირველ კვირას. სამი არის კარგი. ასე რომ, მიუხედავად იმისა, რომ, დიახ, სამი ხუთ ჩვეულებრივ, მათემატიკურად, შეიძლება იყოს 60 პროცენტი ან მოსწონს D მინუსი. სამი არის, ფაქტობრივად, კარგი. და, ფაქტობრივად, ჩვენ ველით, ყველაზე სტუდენტები კლასში დაიწყოს off ვადის გარშემო twos და threes და ოთხზე. ალბათ არც ისე ბევრი ხუთიანი. არ არის ძალიან ბევრი პირობა. მაგრამ ზოგადად დაიწყება რომ ტკბილი ადგილზე მრუდი ასე რომ, როგორც დროის სვლასთან, იქ რეალურად ოთახი, და შესაძლებლობები ზედა პროგრესია. ასე რომ, გთხოვთ, არ ვაიგივებ სამ 60%. ეს გაცილებით უფრო აბსტრაქტული, ვიდრე. ფორმულა, რომელიც ჩვენ გამოვთვალოთ შეფასება შეწონილი ასეთია. სისწორე ღირს ყველაზე. დიზაინი ღირს ცოტა ნაკლები. სტილი ღირს ცოტა ნაკლები. და ეს ზოგადად იღებს დროის რომ გადადის მიღების თითოეულ ამ ცულები მხოლოდ უფლება. სტილი არის სუპერ მარტივია, უნდა იყოს სუპერ სწრაფი, მაგრამ ეს ადვილი ჩვევა მისაღებად ზარმაცი შესახებ. სისწორე შეიძლება მიიღოს თქვენ ყველაზე მეტი დრო. მისდევდნენ ქვემოთ ზოგიერთი ხარვეზის სიძლიერეზე მიიღოს, რომ ზედმეტი საათი ან მეტი, და ასე, გაიტანა საბოლოოდ იღებს, რომ. ასე რომ, ახლა უფრო სერიოზული სიტყვა. მას შემდეგ, რაც CS50 აქვს განსხვავება, უკეთესი ან უარესი, მიმდინარეობს ალბათ უკეთესი გაეცნო საკითხებთან ერთად, აკადემიური პატიოსნება, ვიდრე ყველაზე ნებისმიერი სხვა რა თქმა უნდა. და მართლაც, ის არის, რომ ჩემი ცოდნა, რომ ჩვენ გაგზავნის მეტი სტუდენტები, სამწუხაროდ, დისციპლინური მიზნით ყოველწლიურად შედეგად. ასე რომ, ინტერესი სრული გამჟღავნება, მოდით ვისაუბროთ მოკლედ იმაზე, თუ რა მიდის CS50, და რას შეგიძლიათ გააკეთოთ, და რა შეიძლება იყოს მავიწყდება. ასე რომ, აქ 2007 წლიდან, როდესაც მე მემკვიდრეობით, რა თქმა უნდა, არის რიგი Ad Board შემთხვევაში. Ad Board არის ჰარვარდის დისციპლინური ორგანოს, ან ახლა ღირსების ადვოკატი, რომლის შემთხვევები ნახსენები, როდესაც სტუდენტები რაღაც, რომ, რა თქმა უნდა სილაბუსი მიიჩნევს, უსაფუძვლოა. არ არსებობს რეალური ნიმუში აქ, მე ვიტყოდი. ეს მერყეობს მეტი წლის განმავლობაში, მაგრამ ზოგადად ეს არის ნომერი შემთხვევები, რომლებიც მოხსენიებული. სტუდენტთა რაოდენობა რომლებიც მონაწილეობენ? ეს ძალიან მერყეობს. როგორც წესი, გასულ წელს მაგალითად, 29 სტუდენტები ჰარვარდის იყო Ad ჩასხდნენ, ასე ვთქვათ. მათგან 29 მიმდინარე სტუდენტები, ორი მათგანი წინასწარი სტუდენტები, რომლებიც თანამშრომლობს ზოგიერთ მოულოდნელი გზა. და მაშინ, იმ თვალსაზრისით, პროცენტი, ეს, როგორც წესი, დაახლოებით 3% კლასის, რომელიც, სამწუხაროდ, რაც ამ სახის გადაწყვეტილებებს. ასე რომ, გასულ წელს იყო 3.5% CS50- ს სტუდენტი ორგანოს რომ იყო Ad ჩასხდნენ, ასე ვთქვათ. ასე რომ, რა ყველა ეს რას ნიშნავს? და რა ჩვენ რეალურად ამის გაკეთება? ასე რომ, სრული გამჟღავნება, ჩვენ რა თქმა უნდა, როგორც კომპიუტერული მეცნიერების, პროგრამული ინსტრუმენტები ჩვენს ხელთ და ეს ძალიან ადვილია ჩვენთვის, სამართლიანობა, რომ სხვა თანაკლასელები, რომლებიც არ არიან გადაკვეთის ამ ხაზების გადაკვეთის შედარება ყოველ წარდგენის წელს წინააღმდეგ ყველა წარდგენის ბოლო რვა წლის განმავლობაში. პროგრამული აკეთებს ამას. და საბოლოო ჯამში ეს ადამიანის თვალში, რომ თუ არ ეხება ზოგიერთი აქვს მნიშვნელობა, შემდგომი განხილვის, მაგრამ პროგრამული უზრუნველყოფა ნამდვილად ეხმარება. და ეს, სიმართლე გითხრათ, ამიტომ ვფიქრობ, რომ მე ჩვენ გვაქვს ასეთი დიდი რაოდენობით CS50. ეს არა იმიტომ, CS50 სტუდენტები და CS სტუდენტები უფრო ზოგადად ნაკლებად პატიოსანი ვიდრე ნებისმიერი სხვა სტუდენტები, ეს, უბრალოდ, ჩვენ გვაქვს ინსტრუმენტები და ტექნიკა რომლითაც უნდა მიიღოს ამ პირველ უღელტეხილზე. მაგრამ ჩვენ შენარჩუნება თვალი ყველა ამ საკითხზე ასევე, კიდევ ერთხელ, ინტერესების აღიარების მუშაობა, რომელიც მიმდინარეობს დააყენა ამ სუპერ უმრავლესობა კლასის. და რა თქმა უნდა, პოლიტიკა აკადემიური პატიოსნება, მიუხედავად იმისა, რომ ეს არის bunch of პუნქტები ხანგრძლივი ერთად bunch of ტყვიები რომ იმედია საკმაოდ იკითხება, ის ნამდვილად არ იმატებს ქვემოთ უნდა იყოს გონივრული. და საუკეთესო უზენაესობის ცერის, რომელიც ჩვენ ვთავაზობთ ფარგლებში სილაბუსი ეს არის არსი ყველა სამუშაო, რომ თქვენ წარუდგინოს ეს, რა თქმა უნდა საკუთარი. და მართლაც, თითქმის ყველა იმ საქმეებში დისციპლინარული ზომების ეს იმიტომ, რომ ზოგიერთი სტუდენტი გვიან ღამით, როგორც წესი, აღმოჩნდა მისი კოდი მეტი აშკარა, რომ კლასელი, რომელიც შემდეგ მიიღო მთლიანად ან მნიშვნელოვნად შესახებ. მაგრამ რეალურად, ეს არის OK. და მართლაც, ოფისში საათი, slips ქაღალდი თქვენ უკვე გადასცა თუ მოვიდა ოფისში საათი გასულ კვირას ხელს უწყობს იმდენი. თქვენ აბსოლუტურად მივესალმეთ და ბიძგი განიხილოს პრობლემა კომპლექტი თანაკლასელები. იმისათვის, რომ დავეხმაროთ ერთმანეთს, როდესაც დაბრკოლების. მაგრამ ზოგადად უზენაესობის ცერის უნდა იყოს ეს, "როდესაც თქვენ დახმარებას ითხოვენ, თქვენ შეგიძლიათ ნახოთ თქვენი კოდი სხვები, მაგრამ შეიძლება არ ნახოთ მათი. " ასე რომ, სხვა სიტყვებით, თუ მე ბრძოლა ზოგიერთი P კომპლექტი და მე იჯდა იქ სასადილოს, ან ბიბლიოთეკაში, ან საკლასო ცდილობს იპოვოს რაღაც ბრალია, მე რა თქმა უნდა ნახოთ ჩემი კოდი ჩემს ეკრანზე იმ პირს, სხდომაზე შემდეგი ჩემთვის, რა თქმა უნდა, პერსონალი, არამედ თანაკლასელი. მაგრამ თუ ეს გადაწყვეტილება, რომელიც ჩემი კლასელი სთავაზობს არის, oh, აქ მხოლოდ შევხედოთ რა მე, რომელიც კვეთს ონლაინ. და მე ვერ გაბედავს ამბობენ, რომ ზოგადად გონივრული რამ საუკეთესო ადამიანი ძალიან მარტივად რაშია ხაზი. ასე რომ, ვხედავ სილაბუსი უფრო დეტალურად. და ახლა ერთ-ერთი ყველაზე წინააღმდეგობრივი ასპექტები of CS50 სილაბუსი, რომ ვფიქრობდი საუბარი, რომ დასკვნა აქ არის ე.წ. სინანული სტატიაზე. ასე რომ, აქ ყველა ჯარიმა ბეჭდვითი. მაგრამ ზოგადად ჩვენ ვნახეთ გასული 8 წელზე მეტია რომ, მართლაც, თითქმის ყველა CS50 ს შემთხვევა აკადემიური უსინდისობა შედეგი ყოფილიყო მხოლოდ ცუდი გადაწყვეტილების მიღების გვიან ღამით. შედეგი სტრესი, შედეგი ნაკლებობა ჭამა, არასაკმარისი ძილი, ძალიან ბევრი P კომპლექტი, ძალიან ბევრი ვადები, ძალიან ბევრი ვალდებულებები. სტრესი მშენებლობის წელს 2:00 AM, 3:00 AM, 4:00 AM, ვადა მოსალოდნელი. ყველაზე სტუდენტები ამ შემთხვევაში უბრალოდ გააკეთა ცუდი გადაწყვეტილებები რომ, შესაძლოა, ძალიან კარგად ვნანობ დილით თუ არ წუთის შემდეგ, მაგრამ სანამ შარშან არ იყო რელიზი სარქველი, რომ ეს სტუდენტები შეეძლო რეალურად ქმნის რეალურად მიმართავს პრობლემას on შიშის გარეშე მიმდინარეობს ჩია კოლეჯი საერთოდ. და, მართლაც, ჩვენ გააცნო ეს სინანული პუნქტი გასულ წელს, რომელიც ამბობს, რომ იმ შემთხვევაში, თუ 72 საათის განმავლობაში, სამი დღის განმავლობაში, გადაკვეთის რამდენიმე ხაზი დადგენილი სილაბუსი თქვენ მოვიდა ველით ერთი რა თქმა უნდა, ხელმძღვანელები და ჩვენ გვექნება სტატისტიკა შესახებ. არსებობს კვლავ იყოს ზოგიერთი შედეგი, პირიქით, თუ რა არის ცნობილია, რომ პირიქით. ჯერ კიდევ არსებობს გარკვეული შედეგი, რომელიც არის პრაქტიკული მიერ, რა თქმა უნდა, ზოგადად zeroing ი კომპლექტი ან მიღების სხვა ქმედება, მაგრამ ჩვენ, რა თქმა უნდა, გაუმკლავდეს მას თავს და არ ეხება ეს უმაღლესი იყვნენ შედეგს შეიძლება იყოს ბევრად უფრო მძიმე. და, მართლაც, გაზიარება, რაც მოხდა გასულ წელს, რვა წლის განმავლობაში, და ახლა ცხრა წლის განმავლობაში, სწავლების ამ კურსის და შემდეგ tinkering სხვადასხვა knobs, გარდამტეხი სხვადასხვა აკრიფეთ გასული რამდენიმე წლის განმავლობაში, აკადემიური პატიოსნება, და ხედავს მონაცემებით არ ჩანს გავლენა, მაშინაც კი, გამოსვლები, როგორც ეს, ეს იყო ხელში ქვევით საუკეთესო რამ ჩვენ გააცნო pedagogically რვა წლის განმავლობაში ერთად ამ ხაზების CS50. 19 სტუდენტი გამოვიდა ამ მუხლით გასულ წელს. ჩვენ არ იღებდა აქცია შვიდი იმ სტუდენტები, განსაზღვრის, რომ ისინი ზედმეტად აწუხებს. მათ არ, ფაქტობრივად, გადაკვეთა ხაზი, მაგრამ ეს იყო კარგი სტატისტიკა აქვს მაინც. ჩვენ zeroed 11 ქულით რომ იყო წარდგენილი. და ერთ შემთხვევაში ჩვენ ვთხოვეთ სტუდენტს პრობლემა მითითებული. მაგრამ უფრო მყარი, პატიოსნად, ეს 19 ჩეთები, რომელიც იყო უფრო მეტი, ვიდრე მე მოსალოდნელია, რომ თითოეული მათგანი 10 წუთი იქნებ საათიანი, ასევე მოიყვანეს სინათლე მთელი რიგი საკითხები დაკავშირებით ოჯახური საკითხები, მეგობარს საკითხები, ფსიქიკური ჯანმრთელობის საკითხები რომ ჩვენ მაშინ ჩართული, სტუდენტის კურთხევით, რეზიდენტი დეკანი, ან მეგობრები, ან ნებისმიერ სხვა რიგი მხარდაჭერა რესურსების. ასე რომ, ეს იყო ბევრად ერთი საუკეთესო მიზნებისათვის ჩვენი დროის და ერთ-ერთი საუკეთესო ჩარევა. რომ განაცხადა, მას არ ჰქონდა შეყვანის განაკვეთი გამოვლენის აკადემიური უსინდისობა ზოგადად. და მე ვერ გაბედავს ვთქვა, რომ ეს ქვეჯგუფი სტუდენტების გასულ წელს იყო დემოგრაფიული, რომ ჩვენ მანამდე არასოდეს განსაზღვრული წინაშე და არასდროს დაკავშირებულია ადრე. ასე რომ, ეს იყო მშვენიერი წარმატებები მიუხედავად იმისა, რომ მოიტანა სინათლე ნაკლებ ოპტიმალური გარემოებები. ასე რომ, შენარჩუნება ამის გათვალისწინებით როგორც თქვენ, ალბათ, ზოგიერთი ცუდი გადაწყვეტილება თავს გვიან ღამით, რომ არ რესურსი ისე დიდი ხნის როგორც სტუდენტი, რომ სიტუაცია ფლობდეს და მოვიდა ველით, რომ ჩვენ შეუძლია აქვს, რომ სახის სტატისტიკა და გაუმკლავდეთ მას ისე, რომ არის საგანმანათლებლო და შემდეგ ჩვენ შეგვიძლია ვთქვათ ჩვენს უკან მეორე დღეს. ასე გარეშე ado, მიიღოს პირას off ამ საუბრის, მიზეზი ლეკვები up არის უბრალოდ დაძვრა მომენტში. და სამწუხაროდ, ისინი ყველა ძილის, მაგრამ რა უნდა მოხდეს აქ იყო ყველას უნდა თაყვანისცემითა და სახის დაძაბულია მას შემდეგ, რაც ძალიან მძიმე საუბარი. მაგრამ როგორც ჩანს, მე დააყენა ლეკვები ძილის. მაგრამ თუ წასვლა CS50 ს ნახვა slash puppies, თქვენ შეგიძლიათ უყუროთ მათ მთელი დღის განმავლობაში. კერძოდ, შესაძლოა, 2:00, ან 3:00, და 4:00 AM ღამით რომ პატარა სტრესის რელიეფის არსებობს. ასე რომ, სლეში puppies. ყველა უფლება. არ იყო, რომ fun? OK. ასე რომ, უკან ზოგიერთი კომპიუტერული მეცნიერების, თუ შეიძლება. ასე რომ, გავიხსენოთ, რომ ბოლო დროს ჩვენ დავიწყეთ ეძებს და არა მხოლოდ მთავარი, რაც იყო ძირითადად ფუნქცია, როდესაც მწვანე დროშა დააწკაპებთ ექვივალენტს, მაგრამ ჩვენ ასევე დაიწყო მოკლედ წერა რამდენიმე ჩვენი საკუთარი ფუნქციები. და დღემდე არც ერთი ეს ფუნქციები განსაკუთრებით დიდი და ხორციანი. თქვენ მიიღებთ იმ დიდი ფუნქციები, ალბათ, P კომპლექტი 2, P მითითებული 3, ნამდვილად P კომპლექტი 4 მოყოლებული. ახლა ყველაზე თქვენი პროგრამების, თუ არა ყველა მათგანი, რა თქმა უნდა, P კომპლექტი 1 შეიძლება გაკეთდეს მთლიანად მთავარ. თუ თქვენი პროგრამა მხოლოდ ხუთ ხაზები, 10 ხაზი, თუნდაც 20 ხაზების ხანგრძლივი, მშვენივრად გონივრული დაწერა, ყველა მთავარი და არა ზედმეტად გართულებული თქვენი კოდი, მაგრამ, რასაც ჩვენ ვაკეთებთ დღეს და შემდგომი ცდილობს ასევე წარმოგიდგინოთ რამდენიმე კარგი დიზაინის ტექნიკა ასე რომ, როგორც თქვენი კოდი იღებს უფრო რთული და, როგორც პრობლემა გსურთ გადაწყვიტოს მიიღოს რთული და უფრო საინტერესო გაქვთ, ერთგვარი, ინსტრუმენტები თქვენს ყუთისთვის, რომელიც შეიმუშავებს კარგი გადაწყვეტილებები იმ. ასე რომ, მოდით მიიღოს სწრაფი შევხედოთ უკან ეს პროგრამა ჩემი გასულ კვირას, რომელიც იყო ფუნქციები ნულოვანი dot C. და შეამჩნია, რომ, უბრალოდ, როგორც ჩანს, ეს ორი ფუნქციები, ძირითადი და ბეჭდვითი სახელი. და ფიქრობს უკან და ალბათ საპირისპირო საინჟინრო, დღეს, რა იყო მოტივაცია შემოღების ფუნქცია ხაზი 28 მოუწოდა, ბეჭდვითი სახელი? ან რა იყო ეს, მაგალითად, წელს პირობები პრინციპი და takeaway, თუ თქვენ აკეთებთ. ზოგიერთი murmurs. რა არის ეს? ჰო, ასე ფუნქციური რღვევა არის ერთგვარი ლამაზი გზა ამბობდა, გახრწნის თქვენი პროგრამა მისი შემადგენელი ნაწილების და შემდეგ გამოიყენოს იმ ნაწილები შეიკრიბება მთელი. ასე რომ, ძალიან არის მხოლოდ სახის ერთი mouthful უკვე, მაგრამ ეს შესაძლოა უკეთესი მაგალითი, რომ რაღაც უბრალოდ მოუწოდა აბსტრაქცია. მარჯვენა? აბსტრაქცია იქნება ერთ-ერთი ერთი განმეორებადი თემები CS50 და ასევე კომპიუტერული მეცნიერების უფრო ზოგადად, რადგან ეს ტექნიკა, რომელიც თქვენ გადაჭრით პრობლემები უფრო ეფექტურად, რადგან თქვენ შეგიძლიათ დაწეროთ გადაწყვეტილებები უფრო ინტუიციურად და ისე, რომ სასწორები და გასაგებია, სხვა ადამიანი. რას ვგულისხმობ, რომ? ასე რომ, ალბათ, ის არის ბევრად უფრო იკითხება შევხედოთ პროგრამა მოსწონს ეს, სუპერ მოკლე მიუხედავად იმისა, რომ ეს არის. როდესაც ხედავთ on line 22, რომ იქ ფუნქცია მოუწოდა, ბეჭდვითი სახელი. ეს სახელი მარტო ამბობს, თუ რას აკეთებს. ეს ფუნქცია აშკარად იღებს შეყვანის შორის ფრჩხილებში, და როგორც ჩანს, აკეთებს, სავარაუდოდ, ბეჭდავს სახელი. ასე რომ, მიუხედავად იმისა, რომ ჩვენ აბსოლუტურად შეეძლო გააკეთა ის, რაც ჩვენ გავაკეთეთ, ერთი კვირის წინ, რომელიც იყო უბრალოდ მიიღოს ამ ფაქტობრივი ხაზი კოდი, მოშორება ეს, და კიდევ მოშორება ეს ყველა ერთად, ჩვენ ერთგვარი რეფერირებადი მოშორებით ცნება ბეჭდვის სახელი. მე არ მაინტერესებს, თუ თქვენ იყენებთ ბეჭდვითი დაცვა. მე არ მაინტერესებს, თუ თქვენ გაქვთ პროცენტი S და წარმატებული ნ ეს წარმოუდგენლად arcane დეტალები. მე არ აინტერესებს, როგორც პროგრამისტი არის ბეჭდვის სახელი. ასე რომ, რა უკეთესი გზა უნდა გააკეთოს, რომ ვიდრე დარეკვით ფუნქცია, ბეჭდვითი სახელი? ასე რომ, ეს იყო ერთ-ერთი მოტივაცია აკეთებს რაღაც მსგავსი. მიღების კოდი უფრო იკითხება, უფრო მრავალჯერადი, და ასევე თვითმმართველობის აღწერითი. ახლა, მოდით შევხედოთ კიდევ ერთი მაგალითია, რომელიც ფუნქციები ერთი, რომელიც ჩვენ გვქონდა აქ. ასე რომ, ეს ერთი, ალბათ, კიდევ უფრო მყარი, რადგან, ამ შემთხვევაში, მე არ მინდა, რომ უბრალოდ int. მე მინდა, რომ მიიღოს პოზიტიური int. და აღმოჩნდება, რომ მიიღონ პოზიტიური int თქვენ უნდა გავაკეთოთ რამოდენიმე legwork. მარჯვენა? ეს არ არის მარტივი ერთი ხაზი მოვუწოდებთ როგორც ბეჭდვითი სახელი იყო, რომელიც მართლაც ნაკლებად დამაჯერებელი. იმისათვის, რომ მიიღოთ დადებითი int, logically-- ნება მომეცით გადახვევა უკან ქვემოთ დამალვა. რას უნდა გავაკეთოთ? ისევე, როგორც ყველა ინსტრუმენტი, ჩვენ აქვს მომენტში რამ, როგორიცაა ბეჭდური def საწყისი სტანდარტული ბიბლიოთეკა და ასევე CS50 ბიბლიოთეკა ჩვენ მიიღეთ Int და მიიღეთ Float, მიიღეთ დიდხანს დიდხანს, მიიღეთ სიმებიანი, მაგრამ მხოლოდ ერთი, გერმანე, ახლა არის ოჯახის Int. ასე რომ, თუ მხოლოდ ინსტრუმენტი გაქვთ თქვენს ინსტრუმენტი ყუთი ოჯახის Int, როგორ უნდა წავიდეს შესახებ ახორციელებს მას დადებითი int? აუდიტორია: შექმნა შესვლა და შემოწმება თუ არა შეყვანილი, რომ მისცა დადებითი იყო თუ არა. დინამიკები 1: Perfect. ზუსტად. სხვა ინსტრუმენტი გვაქვს ჩვენი გვერდები საწყისი ორი კვირის წინ მხოლოდ looping შენება. ასე რომ, yeah, თუ ჩვენ ვიყენებთ ხოლო მარყუჟის ან do ხოლო მარყუჟის, ან ფორი loop ჩვენ შეგვიძლია ალბათ მიიღოს away ერთი ის ზოგიერთი ფორმა. ჩვენ შეიძლება განახორციელოს ცნება მისაღებად დადებითი int მხოლოდ გამოყენებით მიიღეთ Int, და მაშინ უბრალოდ შეინახოს მოუწოდებდა მას ისევ და შენარჩუნება pestering შესახებ სანამ იგი რეალურად გვაძლევს, რაც ჩვენ გვინდა. და ახლა, ამ აბსტრაქცია პროცესი მიღების დადებითი int შევიდა ფუნქცია მოუწოდა დადებითი int არის ცოტა უფრო მყარი, რადგან შევხედოთ ამ. ეს არის, როგორც 10 plus ხაზი კოდი, ჩართული მიღების დადებითი int, და მე ნამდვილად არ მაინტერესებს, თუ როგორ გავაკეთოთ ეს. ყველა მე მაინტერესებს არის ის, რომ თქვენ შეგიძლიათ ამის გაკეთება, და ასე რომ მე ფარული ყველა ეს დეტალი უკან ფუნქცია მოუწოდა დადებითი int, რომ მართლაც, აქვს ამ do ხოლო loop. და ვხედავ გასულ კვირას სინტაქსი არსებობს, მაგრამ ეს მხოლოდ აცხადებს, N, და ეს ბეჭდავს ინსტრუქციის შესახებ. ის მოუწოდებს ოჯახის Int და მაშინ იგი ამოწმებს ეს მდგომარეობა ისევ და ისევ, და ისევ სანამ შესახებ თანამშრომლობს. ასე რომ, ახლა, რამდენიმე საღი აზრის ამოწმებს. მათთვის, ალბათ, ნაცნობია რამდენიმე პროგრამირების, რატომ არის N განცხადებით, რატომ შექმნა N გარეთ do ხოლო loop? რატომ არის ეს ხაზი 29 და არა მოსწონს 33, მაგალითად. აუდიტორია: იმიტომ, რომ როდესაც თქვენ გამოაცხადოს ის გარეთ, ეს სახის მეტი, უფრო ფარგლებს დინამიკები 1: კარგი. აუდიტორია: --and თუ განაცხადოს ის შიგნით მარყუჟის, [INAUDIBLE] იმიტომ, რომ არ იციან ამის შესახებ. დინამიკები 1: ზუსტად. თუ შემიძლია simplify-- ეს საკითხი ფარგლებს. და ფარგლებს ეხება, იმ კონტექსტში, რომელიც ცვლადი არსებობს, ან არის გამოსადეგი. და ლამაზი უზენაესობის ცერის აქ ის არის, რომ ზოგადად, როდესაც თქვენ გამოაცხადოს ან შექმნათ ცვლადი თქვენ შეგიძლიათ გამოიყენოთ იგი შიგნით უახლოესი მოიცავს Curly braces. ასე რომ, რას ნიშნავს ეს? თუ მე, ნაცვლად, გაუქმება და წავიდეთ ერთად რაღაც, რომ გრძნობს ცოტა მარტივი. მარჯვენა? Line 32 უბრალოდ გამოიყურება სუფთა ჩემთვის არის. მე ვაკეთებ როგორც რამ ერთხელ და შემდეგ იმის მარჯვენა მარცხენა. პრობლემა ახლა საფუძველზე რომ განმარტება საქართველოს ფარგლებს ის არის, რომ N შეიძლება იქნას გამოყენებული ხაზები 31 და 32 შიგნით ამ მარყუჟის, მაგრამ სადაც, რომ განმარტება შეიძლება ეს არ იყოს გამოყენებული? შეესაბამება თუ რა? ჰო. აუდიტორია: 35. დინამიკები 1: 35-ზე. ნამდვილად არა 35. ასევე სხვაგან სად? აუდიტორია: 34. დინამიკები 1: მაშინაც კი, 34 პრობლემატურია, რადგან ეს გარეთ Curly braces. ასე რომ, ფაქტობრივად, ვნახოთ, რა მოხდება. მარჯვენა? ეს შეიძლება, როგორც ჩანს ცოტა ინტუიციური და არ შეიძლება, მაგრამ ვნახოთ, თუ რა შემდგენელი უნდა ვთქვა, როცა ჩვენ წასვლას დღევანდელი წყარო დირექტორია. ჩადება ფუნქცია ერთი. ოჰ, ჩემი ღმერთი. ისე, მე საბოლოოდ დასრულდა რომ, სხვათა შორის. ყველა უფლება. და რა არის საკითხი აქ? ძალიან arcane შევხედოთ. მაგრამ აქ არის ის, რაც მე typed-- ფუნქციის ერთი. აი ის, რაც გამოწვეული, რომელიც რეალურად გამოყენებით შემდგენელი clang ზოგიერთი იმ დროშები რომ ჩვენ დავინახავთ, კიდევ დიდი ხნის განმავლობაში. ისევ და ისევ, ყოველთვის გამოიყურება პირველი შეცდომა, იმიტომ, რომ ეს შეიძლება უბრალოდ კასკადური უაზრო გავლენას სხვა ხაზები. რა ეს იმას ნიშნავს, რომ პრობლემა ის არის, ფუნქცია 1.გ. ეს არის on line 32. და ეს სვეტი, ან გმირი, 13. ასე რომ, როდესაც თქვენი ტექსტური რედაქტორი, რომელსაც შეუძლია დაგეხმარებათ იდენტიფიცირება, სადაც ეს საკითხი. ასე რომ, თუ მე გადახვევა, რა არის line 32? ეს მართლაც, ამ ერთი რომ უკვე მონიშნულია სწორედ აქ გამოუყენებელი ცვლადი ო. მაგრამ ეს არ არის გამოუყენებელი. მე გამოყენებით. მაგრამ შემდგენელი ის დაბნეული, რადგან ის მხოლოდ არსებობს შიგნით ამ ფარგლებს. ასე რომ, მე ვერ გამოიყენებს აქ. მე ვერ გამოიყენოს იგი აქ. და შემდგენელი, აქედან გამომდინარე, კი არ აინტერესებს, რომ ვცდილობ. როგორც ჩანს, გამოუყენებელი თავისი კომპეტენციის ფარგლებში ფაქტობრივი ფარგლებს. ასე რომ ჩვენ შეგვიძლია გაფართოების ფარგლებში ამით ზუსტად ის, რაც ჩვენ დავიწყეთ with-- int n. და მიუხედავად იმისა, რომ ეს არ არის ასე ელეგანტური, ალბათ, და ჩვენ აღების ზედმეტი ხაზი აქ, ახლა ეს არეალი ყველგან. მოდით ცდილობენ კიდევ ერთხელ. ასე რომ ფუნქცია ერთი. Nice. და ახლა თუ მე თუ მე აწარმოებს ფუნქცია ერთი, მოდით მივცეთ მას უარყოფითი 10, უარყოფითი 1, 0, 1, და ეს მართლაც მუშაობს. ასე რომ, არსებობს სხვა გამოსავალი აქ. იცით რა? რა მოხდება, თუ მე ნამდვილად ვარ ჭიდაობის ეს? მე არ ვიცი, სადაც n უნდა წავიდეს. იცით რა? მე უბრალოდ აპირებს იმისათვის, რომ ეს ყველა გზა ზედა ჩემი ფაილი აქ. რა ამ შემთხვევაში, თქვენ როგორ ფიქრობთ? ჰო? აუდიტორია: [INAUDIBLE]. დინამიკები 1: ჰო. ასე რომ, მე გახადა გლობალური, ასე ვთქვათ. თუ თქვენ გაქვთ ცვლადი რომ გარეთ ყველა თქვენი ფუნქციები, რომელიც არის დაშვებული, და კოდი უნდა შეადგინოს და n იქნება ხელმისაწვდომი არა მხოლოდ მისაღებად დადებითი int, არამედ main-- რომელიც ცოტა შემაშფოთებელი იმიტომ, რომ იქ უკვე n მთავარ, ისე უფრო რომ რაღაც მომენტში მაგრამ ამ შემთხვევაში განიხილება ცუდი დიზაინი. ყველა უფლება. თუ თქვენ უნდა მიმართო რაღაც, oh, მე უბრალოდ ამას აქ იმიტომ, რომ კოდი ჩანს შედგენა საერთოდ არ არის საუკეთესო პრაქტიკა. იმის ნაცვლად, გსურთ აირჩიოთ ვიწრო შესაძლებელია ფარგლებში თქვენი ცვლადები, რაც იმას ნიშნავს, მიმდინარეობს ჩვენი თავდაპირველი დიზაინი, რომელიც სწორედ აქ. ახლა, როგორც განზე, თუ თქვენ არ აქვს იდენტურად დაასახელა ცვლადი აქ, გზა გ გაუმკლავდეს ამას მიუხედავად იმისა, რომ ეს არ მოხდება ძალიან often-- ის არის, რომ ეს არის კიდევ შესანიშნავად ჯარიმა აქ. მაგრამ ამ განმარტებას ო შეესაბამება 22 shadow გლობალური ერთი. ასე რომ, ეს ერთი იმუშავებს ძირითადი და გლობალური რეალურად გამოიყენოს, როდესაც თქვენ დადებითი int მაგრამ უფრო, რომ სხვა დროს, მაგრამ მხოლოდ მათთვის საინტერესო. მოკლედ, ჩვენ დაფიქსირება ამ აქ. ახლა მოდით აჯავრებენ გარდა სხვა ორი ცალი სანამ ჩვენ შევხედოთ ერთი ბოლო ხაზი კოდი ამ პროგრამაში. დადებითი int. მარცხენა მხარეს მისი სიტყვა სიტყვა int. რას ნიშნავს ეს ნიშნავდეს ფიქრობთ? ჯერჯერობით ჩვენ ძირითადად ჩანს ბათილად. ჰო? აუდიტორია: ეს არის იმ ტიპის ცვლადი, რომ თქვენ გეკითხებით. დინამიკები 1: ჰო ეს არის ტიპის, ნება მომეცით არ ვამბობ, ცვლადი, მაგრამ ტიპის მნიშვნელობა რომ მე ითხოვს უკან. და მართლაც, რომ ინტუიციური აქ, იმედია. მარჯვენა? თუ გსურთ მიიღოთ დადებითი int, რა არის ეს, მინდა, რომ ფუნქცია, როგორც ჩვენი მოხალისეები გასულ კვირას გადასცემს თქვენ უკან ნაჭერი ქაღალდი რომელზეც int ეს? ასე რომ, ჩვენ დააკონკრეტა, რომ ე.წ. დაბრუნების ტიპის ამ ფუნქციის არის დადებითი int. თუ ჩვენ არ გვინდა, რომ ეს დაბრუნდეს არაფერი, თქვენ ამბობთ, ბათილად. თუ გსურთ, რომ დაბრუნდება სიმებიანი, თქვენ ამბობთ, სიმებიანი. თუ გსურთ, რომ დაბრუნდება float, თქვენ ამბობთ, float. მაგრამ მხოლოდ ერთი, რომ ეხება აქ ლოგიკურად, რადგან მე გამოყენებით კიდევ int, მიუხედავად იმისა, რომ მე ზღუდავს მას დადებითი ღირებულებების, არის ის, რომ დაბრუნდეს int. ასე რომ, პირიქით, რას ნიშნავს ეს რომ არის ბათილად ფრჩხილებში? რა ფრჩხილებში ზოგადად განსაზღვრავს? ჰო? აუდიტორია: ეს იმას ნიშნავს, რომ ფუნქცია რეალურად არ მიღების იგი. დინამიკები 1: ეს ნიშნავს, რომ ფუნქცია რეალურად არ მიღების, რა? აუდიტორია: შესასვლელი. დინამიკები 1: input, განაწილებაზე. ასე რომ, მართლაც, თუ ფრჩხილებში აქ თქვენ დააკონკრეტა ბათილად, ეს მხოლოდ იმას ნიშნავს, რომ მე არ მინდა რაიმე შეყვანა. მე გაუმკლავდეთ პრობლემა თავს. და მართლაც, თქვენ არ უნდა ვუთხრა დადებითი int არაფერი. თქვენ უბრალოდ ამბობენ, დადებითი int, და რომ ფუნქცია მიდის და გააკეთებს რამ. მაგრამ არსებობს პატარა ხრიკი მე სათამაშო აქ მთელი ამ ხნის რათა ეს კოდი ადგენს. გაითვალისწინეთ, რომ საუბარია int დადებითი int void-- არის ხაზი 27. მაგრამ ერთი შეხედვით უცნაური მიზეზი ეს არის ასევე აქ on line 16. და მხოლოდ კარგი ღონისძიება მე ვიმეორებ ეს ისე, ეს შესანიშნავად იდენტურია. და მე განაცხადა პროტოტიპი ერთად პატარა ერთი ხაზის კომენტარი. რა მოხდება, თუ წაშლა, და ახლა გამეორება მიიღოს ფუნქცია 1 შევა. Whoops. ერთი წუთით. სად არის ჩემი tab? არა? ლოდინის მაქსიმალური. ჩადება ფუნქცია 1. იქ ჩვენ წავიდეთ. OK. ჰქონდა შენახული სწორად. ასე რომ, მე ვფიქრობ, რომ ცოტა bug აქ, სადაც მე არ ვარ ხედავს tab სახელი მომენტში. ასე რომ, რა ხდება აქ? იმპლიციტური დეკლარაციის ფუნქციის დადებითი int არასწორი C99. ასე რომ გაუგებარია ერთხელ. რა არის ეს მიუთითებს? ისე, გამოდის, რომ C საკმაოდ სულელური. ისე, ეს პროგრამირების ენის, უფრო სწორად, შემდგენელი. ეს მხოლოდ იცის, რა გაქვთ ისწავლება, და ეს მხოლოდ უნდა იცოდეს, რომ რაღაც თუ ასწავლიდა, რომ ადრე. სხვა სიტყვებით რომ ვთქვათ, მთავარი მომენტში, მე ცდილობს მოვუწოდებთ ფუნქცია მოუწოდა დადებითი int. მაგრამ შემდგენელი არ აპირებს შეამჩნია, რომ დადებითი int არსებობს, სანამ ხაზი 26. ასე რომ, რა შემდგენელი არ არის მხოლოდ შეცდომები, როგორც კი იგი იღებს გამოდიან 17 განაცხადა, დაფარული დეკლარაცია საქართველოს დადებითი int, რომელიც არის მხოლოდ ლამაზი გზა ამბობდა, მე არ იცით, რა დადებითი int არის. სხვა ენებზე, როგორიცაა Java და Python და Ruby შეიძლება მოველით. C არ არის. ასე რომ, გზა ჩვენ დაფიქსირება ეს არის ერთ ერთი ორი გზა. არც ერთი, თუ პრობლემა ის არის, რომ მიიღოს დადებითი int არ მინახავს ადრე, ასევე, ნება მომეცით გადაადგილება მას ზედა. ეს იქნებოდა დაფიქსირება ამ პრობლემას. მაგრამ ზოგადად, ითვლება უკეთესი ტექნიკა იმისათვის, რომ თქვენი ძირითადი ფუნქცია ძალიან დაბრუნება ისე, რომ ადამიანის კითხულობს თქვენი კოდი იცის, რა პროგრამა აკეთებს, იმიტომ, რომ მთავარი არ არის დაკრძალული ყველა გზა ბოლოში და შუაში. ეს არის ძალიან დაბრუნება. ასე რომ, არ გრძნობენ იდეალური. და თქვენ შეგიძლიათ რეალურად მიიღოს ისეთ სიტუაციებში, სადაც თუ ერთ-ერთი ფუნქცია მოუწოდებს კიდევ ერთი, რომელიც მოუწოდებს სხვა, თქვენ შეგიძლიათ მიიღოთ საკითხი, სადაც არც შეიძლება ზემოთ სხვა, ლოგიკურად. ეს უბრალოდ შეუძლებელია. ასე რომ გზაზე მუშაობა გარშემო არის მხოლოდ მიიღოს ფუნქცია ხელმოწერის, ასე ვთქვათ პირველი ხაზი, სადაც ეს declared-- და მხოლოდ ასლი, პასტა, იგი დაბრუნება, მაგრამ არა curly აფრთხილებს მხოლოდ მძიმით. ეს იგივეა, პატარა მინიშნება რა არის მოვა. და სინამდვილეში, მთელი ამ დროის განმავლობაში, როდესაც ჩვენ მინახავს რამ, როგორიცაა სტანდარტული io.h და cs50.h, ასევე, იმ dot თ ფაილები არსებობს სხვა პროტოტიპები. ჩვენ დავინახავთ, რომ ხანგრძლივი. მოკლედ, როდესაც თქვენ გაქვთ პროგრამა ფაილი ერთად მრავალი ფუნქციები გარდა ამისა, მთავარი, თქვენ თითქმის ყოველთვის გვინდა, რომ აცხადებენ, მათ უბრალოდ გზით მათი პირველი ხაზი, რასაც მოჰყვა მძიმით, ძალიან ზევით ფაილი. ეს იყო ბევრი ერთდროულად. ნებისმიერი კითხვები? ნებისმიერი კითხვები? ყველა უფლება. ასე რომ, მოდით გადაადგილება შემდეგ რაღაც ხველა. Oh. როგორ იარაღი. ყველა უფლება. ხველა. ასე რომ, აქ არის გ პროგრამას ჩვენ გავაკეთეთ მეორე დღეს Scratch, რომ ძალიან უბრალოდ ამბობს, ხველა, ხველა, ხველა. ყველა უფლება. და ვინმე ამბობს, რამდენიმე დღის წინ, რომ იქ გზა დასუფთავების ეს კოდი უკვე. ყველა უფლება? როგორც კი თქვენ გადაწერა და pasting ალბათ ცუდი დიზაინი. ერთხელ მაინც მივიღებთ, რომ ოთხი ან ხუთი ან 20 coughs, ის გრძნობს, ცუდი პრაქტიკა. ჩვენ უბრალოდ შეინახოს ასლი, pasting. რა არის აშკარა გადაწყვეტა დასუფთავების ამ პროგრამის up? აუდიტორია: Loop. დინამიკები 1: ჰო. ასე რომ, გამოიყენოთ loop. და ჩვენ შეგვიძლია გამოვიყენოთ ამისთვის მარყუჟის, ხოლო loop, ნებისმიერი რაოდენობის მიდგომები. და მართლაც, რომ ის, რაც ვაკეთებთ ვერსია აქ. მე ნაცვლად გადაწერილი ეს ვერსია ერთ cough.c უნდა იყოს მხოლოდ ხველა ფარგლებში for-loop. ყველა უფლება, მაგრამ არ არის შესაძლებლობა ახლა სახის დაწყება რათა შეიმუშავონ ამ ცოტა უფრო გაკვეთილი ჩვენ ისწავლება მომენტში წინ, რომელიც ამას ვარაუდობენ, რომ მინდოდა შევქმნათ ფუნქცია მოუწოდა ხველა, განვიხილოთ მხოლოდ ერთი წუთით რას აპირებს გამოიყურებოდეს. ასე რომ, თუ გვინდა, რომ რაღაც ხველა, მე უბრალოდ უნდა გამოიყენოთ ბეჭდვითი ვ შიგნით ფუნქცია. და მართლაც, მე ვარ. და სინამდვილეში, ეს ყველაფერი დროს, ნებისმიერ დროს თქვენ ბეჭდვის რაღაც ეკრანზე, პროგრამისტი მინდა მოვუწოდო, რომ გვერდითი ეფექტი. ეს არ არის ჩემთვის გადაცემის უკან ვინმე მნიშვნელობა. ეს ჩემთვის გარკვეული ქმედება რომ შეიძლება იყოს ვიზუალურად აშკარაა. მაგრამ ეს ფუნქცია ხველა, იგი დაბრუნდება არაფერი საფუძველზე მისი პირველი ხაზი? არა, რადგან მისი დაბრუნების ტიპის ბათილია, რომელიც მხოლოდ იმას ნიშნავს, ეს არ გადაცემის ჩემთან არაფერი უკან. ეს შეიძლება იყოს თავისსავე ვიზუალურად, მაგრამ ეს არ გადაცემის me უკან ნაჭერი ქაღალდი, როგორც გასულ კვირას. ნიშნავს თუ არა ეს გჭირდებათ რაიმე შეყვანის? No. ასე რომ, ეს ბათილად აქაც. ასე რომ, ეს ძალიან სახის მეტი საინჟინრო ეს პრობლემა. მარჯვენა? მე გადაცემას უფრო რთული, უფრო ხაზი კოდი, მე არ გახადა ნებისმიერი უფრო ფუნქციონალური, მაგრამ ეს იქნება სტეპინგზე ქვის, ალბათ, უფრო ფართო კონტექსტში უფრო რთული კოდი. მაგრამ რა ამის შესახებ? რა მაქვს done-- მხოლოდ glancing ზე ამ გარეშე ეძებს კომენტარის დამატება ძალიან ზევით ფაილი რა აქვს მე ფუნდამენტურად გაკეთდეს აქ ჩემი ხველა განხორციელება, რომელიც არის განსხვავებული? ჰო, უკან? აუდიტორია: გააკეთეთ ეს ისე, თქვენ შეგიძლიათ აქვს ხასიათი გამორთვა. დინამიკები 1: ჰო. ასე რომ, ეს გრძნობს სახის ლამაზი. მარჯვენა? ეს იგივეა, დასძინა ფუნქცია პროგრამა ან ფუნქცია, ამ შემთხვევაში. ეს ჯერ კიდევ ბრუნდება არაფერი. ალბათ, ვიზუალური მხარე ეფექტი, იმიტომ, რომ ის მოუწოდებდა ბეჭდვითი ვ. მაგრამ ახლა მე არ parametrized ფუნქცია, რომელიც ნიშნავს მე მითითებული მიღებული შეყვანის ტიპის int და ეძახით n, მაგრამ მე ვერ ვუწოდებ არაფერი მინდა. ფაქტობრივად, ეს შეიძლება იყოს მხოლოდ ჯერ უნდა იყოს კიდევ უფრო ცხადი. და მაშინ მე ვერ უბრალოდ შეცვალოს აქ. მაგრამ საქმე ისაა, რომ ეს არის, თუ მე შევქმნათ ფუნქცია, რომელიც იღებს შეყვანის. და თუ გავიხსენებთ, flipping მეშვეობით ალბათ ამჟამად ერთ საქართველოს მსვლელობა throughs, რომ მეოთხე და საბოლოო ხველა მაგალითად, თქვენ შეამჩნევთ აქ მე განზოგადებული ჩემი კოდი further-- სახის რეფერირებადი მის შემდგომ. ისევე როგორც ხველა და sneeze, ორივე შესახებ, თითქოს ამბობდა რაღაც ან მიღების გარკვეული სახის sound. Save იქნება შესაბამისი Scratch ბლოკი. ასე რომ, რა გავაკეთე ამ ვერსია, რომელიც ჩვენ შეგვიძლია მხოლოდ ერთი შეხედვით, არის ხველა, ისევე, როგორც ამბობდა, [ხველა], ხველა, და იმავდროულად, ცემინება არის როგორც ამბობდა, [Achoo]. ასე რომ, მე განზოგადებული განხორციელების იმ ახლა ახორციელებს ეს ზოგადი ფუნქცია, ამბობენ, რაც საინტერესოა დღევანდელი მიზნებისათვის მხოლოდ იმიტომ, რომ ჯერ კიდევ ამჯამად არ აქვს დაბრუნების ტიპის. მაგრამ რამდენი საშუალებებით აქვს მას? აუდიტორია: ორი. დინამიკები 1: ორი. ასე რომ, თუ გსურთ მიიღოს ორი არგუმენტი, ისევე გამოყოფა მათ მძიმით. და თუ გვინდა, რომ მერე მოვუწოდებთ, რომ ფუნქცია, შეამჩნია, რომ თქვენ მხოლოდ დარეკეთ ვთქვათ, ციტირებით unquote, პირველი არგუმენტი, საერთო n, მეორე არგუმენტი. ასე რომ კიდევ ერთხელ, ჩვენ უბრალოდ უნდა ახლა სამშენებლო ბლოკების ისე, რომ ჩვენ შეგვიძლია რეალურად განახორციელოს ზოგიერთი ჩვენი საკუთარი ფუნქციები. ყველა უფლება. ნებისმიერი კითხვები ამ? ასე რომ, ახლა მოდით კანი უკან ფენის თუ ასე. და მიზანი, საბოლოო ჯამში, მომავალ კვირას პრობლემა კომპლექტი აპირებს იყოს cryptogrophy-- ხელოვნების scrambling ინფორმაციას. კერძოდ, ინფორმაცია იქნება თქვენ encrypt ან decrypt იქნება ტექსტი. და ისე, რომ სახის იწვევს კითხვა დღეს, როგორც კარგად, რა ხდება ქვეშ hood ტექსტის მიღმა ASCII კვირაში ნულოვანი, და როგორ შეიძლება ჩვენ, ფაქტობრივად, დაიწყოს მანიპულირება? ასე რომ, აქ არის Zamyla სახელი. და ტექსტი, რომელიც შეიძლება inputted შევიდა, როგორც მიიღოს სიმებიანი ფუნქცია. და იწყება ახლა, როდესაც თქვენ ხედავთ სიმებიანი მოსწონს ეს Z-A-M-Y-L-A-- დაიწყოს ფიქრი, თითქოს ყოველ იმ პერსონაჟების ყუთში მისი საკუთარი. და მართლაც, ერთი კვირის ან ასე არის დროს, თითოეული ამ ყუთები აპირებს წარმოადგენს ძალიან კონკრეტულად ბლოკი memory-- bite, მეხსიერება. ასე რომ თითოეული ეს წერილები, საბოლოო ჯამში, წარმოადგენს 8 ბიტი. და ჩვენ რეალურად ვხედავთ, რა ხდება ქვეშ hood ჩემი კომპიუტერი. მაგრამ არა საკმარისია უბრალოდ შეხედეთ Zamyla ამ გზით ობიექტივი, რომლის დროსაც თითოეული ეს წერილები არის საკუთარი ყუთი. და ლამაზად საკმარისი C ჩვენ შეგვიძლია წვდომის ყოველი ამ ყუთები პირდაპირ. ასე რომ, თუ გსურთ მიიღოთ პირველი წერილში მისი სახელი, სუპერ მარტივი in C. თუ გსურთ მიიღოთ ბოლო წერილი, სუპერ მარტივია, ასევე ერთად ნაჭერი ახალი სინტაქსის. ამიტომ, მე ვაპირებ წავიდეთ წინ შევიდა CS50 IDE და გახსენით სიმებიანი ნულოვანი dot C. და ამ მაგალითად აქ, არსებობს რამდენიმე ახალი რამ ხდება. ასე რომ, პირველი ხაზი 19, ჩვენ მინახავს ეს ადრე მიიღოს სიმებიანი. ასე რომ, როგორც სწრაფი საღი აზრის შემოწმება, თუ ვინმე შეიძლება შესთავაზოს up სიტყვიერი ერისკაცად წარმოგვიდგება განმარტებით, რა ხდება ხაზი 19. ისევე როგორც უბრალოდ თარგმნოს ეს შევიდა ინგლისური, რომ roommate არ CS50 ალბათ ესმით. ჰო. აუდიტორია: გაქვთ მომხმარებლის შეყვანის სიმებიანი და ჩაწეროთ იგი ცვლადი s. დინამიკები 1: კარგი. Have მომხმარებლის შეყვანის სიმებიანი და ჩაწეროთ იგი ცვლადი s. სწორედ დიდი. ასე რომ მარჯვენა მხარეს მოვუწოდებთ, მიიღოს სიმებიანი. რომ დააბრუნებს მნიშვნელობა რომ ვერ დანიშნული საწყისი მარჯვენა მხარეს მარცხენა მხარე ცვლადში s, რომ შექმნილია შესანახად სიმებიანი. ზუსტად. ასე რომ, ახლა ხაზი 22, თითო კომენტარი შეესაბამება 21, აშკარად ბეჭდავს რომ სიმებიანი ერთი ხასიათი თითო ხაზზე. მაგრამ როგორ? ასე რომ, პირველ რიგში, ჩვენ ინიციალიზაცია მე 0. და მაშინ, თუ მივიღებთ ბოლოს Zamyla სახელი? ისე, ბოლოს Zamyla სახელი, შემეძლო ხელით ჩაწერეთ ბოლო ხასიათი მისი სახელი რატომღაც, ან რაოდენობის იგი. მარჯვენა? თუ ჩვენ უკან აქ Z-A-M-L-- Y-L-A-- ასე რომ მე აკრიფოთ. რა არის ინდექსი Zamyla ბოლო წერილი? თუ ეს 0- საუბარი, როგორც programmer-- 0, 1, 2, 3, 4, 5, მე heard-- ასე ნამდვილად, ბოლო წერილი ამ Zamyla სახელი მეექვსე, მაგრამ თუ ჩვენ ითვლიან საწყისი 0, ეს იქნება 5 ნომერი. ასე რომ შევინარჩუნოთ ამის გათვალისწინებით, აქ. თურმე არსებობს ფუნქცია C მოუწოდა strlen, და უკან დღეში და ამ დღეს მაინც, ბევრი პროგრამისტები აირჩიეთ სინქრონიზაციის სახელები მათი ფუნქციები, რომელიც ჟღერს, როგორც სიტყვა ისინი ცდილობენ ვთქვა. ასე strlen არის string სიგრძე. ასე რომ, თუ რა სიმებიანი ხანგრძლივობა S დაბრუნებას, როდესაც Zamyla არის input? აუდიტორია: ხუთი. დინამიკები 1: Z-A-M-Y-L. ექვსი. მარჯვენა? რა არის სიგრძეზე Zamyla სახელი? მარჯვენა? და მხოლოდ რეალურად, ექვსი ასო. მარჯვენა? ასე რომ, რას ნიშნავს ჩვენი loop? ჩვენ ვაპირებთ, რომ წავიდეს 0 მდე ექვსი, რომელიც აპირებს მოგვცეს ხუთ გამეორების. რა ვქნათ, თითოეულ iteration? ისე, პროცენტი C, ვინმე მიხვდა, რომ მეორე დღეს, ნიშნავს ჩანაცვლების რა? აუდიტორია: ჩარ. დინამიკები 1: უბრალოდ char. ასე რომ, ერთი გმირი არ სხვადასხვა პერსონაჟების მსგავსად სიმებიანი. და მერე აქ ახალი ხაზი რომ ჩვენ მივიღეთ ბეჭდვა. და მერე აქ ახალი სინტაქსის. თუ გსურთ ამობეჭდოთ i-th პერსონაჟი სიმებიანი S, ასე ვთქვათ, შეგიძლიათ უბრალოდ აცხადებენ, ასახელებს სიმებიანი S, და შემდეგ გახსნა კვადრატული ფრჩხილი და შემდეგ დაიხურა კვადრატული ფრჩხილი, რომელზეც i შუა. და ეს არის სახის ლამაზი, რომ ეს ერთგვარი ჰგავს მოედანზე ისევე, როგორც სკვერების, რომელიც Zamyla ს გმირები არსებობს სურათზე. ასე რომ, თუ მე რეალურად აწარმოებს ამ ახლა, მოდით, ვნახოთ, რა მოხდება. ჩადება string 0 dot ხაზი სიმებიანი 0, და მაშინ მე ვაპირებ აკრიფოთ Zamyla სახელი. არ არის დროული, იმიტომ, რომ მე არ გამოყენება ბეჭდვითი ვ, მაგრამ ეს ჯარიმა. მე მხოლოდ ის ვიცი, რა უნდა გააკეთოს. და მართლაც, იგი ბეჭდავს out Zamyla სახელი, ერთ ხაზზე. ახლა მოდით იყოს ცოტა უგუნური. დავუშვათ, რომ მე არ ვიცი შესახებ strlen და I figured, ყველა უფლება, არავინ აპირებს ასახელებს დიდია, ვიდრე მოსწონს 50 სიმბოლო. მოდით წავიდეთ წინ და recompile ამ და გამეორება, და შემდეგ ჩაწერეთ Zamyla ერთხელ. ლოგიკურად, რა არის პროგრამა აპირებს ცდილობენ ბეჭდვა? Z-A-M-Y-L-A მაშინ, როგორც 45 უცნობი ბაიტი მეხსიერება. და მართლაც, ჩვენ დავბრუნდებით ამ იდეას მეხსიერება. მაგრამ მხოლოდ ლოგიკურად, თუ Zamyla სახელი ამ ხნის განმავლობაში, როგორც ერთ სურათზე აქ, რასაც ჩვენ ვამბობთ, არის შენარჩუნება ბეჭდვა, შენარჩუნება ბეჭდვა, შენარჩუნება ბეჭდვა, შენარჩუნება ბეჭდვა, შენარჩუნება ბეჭდვა, ყველა გზა 50 ხასიათი, რომელიც ვინ იცის, რა მოხდება. მოდით რეალურად შევხედოთ. მოდით აკრიფოთ Zamyla. საინტერესოა. ჩვენ გაუმართლა. უბრალოდ მთელი bunch of თეთრი სივრცე. Oh. არსებობს კიდევ ერთი ხმაურიანი ხასიათი. ეს გამოიყურება სახის მოსწონს უცნაური კითხვა აღსანიშნავად არსებობს, მაგრამ არ არის Zamyla სახელი. მოდით ნამდვილად უგუნური. როგორ შესახებ ჩვენ ამობეჭდოთ 500 ბლოკები შევიდა უცნობი? მოდით წავიდეთ წინ და ეს ისევე, და შემდეგ ხელახლა აწარმოებს. და მოდით სრულ ეკრანზე, იმიტომ, რომ ჩვენ გვჭირდება უფრო მეტი სივრცე. Zamyla. მივიღე გაუმართლა ერთხელ. Dare ჩვენ კიდევ უფრო უგუნური? მოდით კიდევ უფრო უგუნური. 50,000 სიმბოლო. ეს არის ყველაზე ნამდვილად არ არის კარგი იდეა. ყველა უფლება. ჩადება string 0. ეს იქნება ჩვენი ბოლო დემო. Zamyla. Ugh. Ugh. OK. ასე რომ, ჩემი მეხსიერება მართლაც ცარიელი ახლა, რომელიც რეალურად სახის მოსახერხებელია. რა ვცდილობ მისაღებად, რომელთა მიზანია ყველა უფლება. და ახლა მე უბრალოდ აპირებს უგუნური. 500,000. Make-- მოდით სრულ ეკრანზე იგი. შეიტანეთ. Zamyla. იქ ჩვენ წავიდეთ. წარმოდგენა არ მაქვს, რა, რომ არის, მაგრამ ეს ხმები ცუდი. ყველა უფლება. და სინამდვილეში, კი, თუ თქვენ შორის, ბედნიერი რამდენიმე საათებში და ამ პრობლემის მითითებული ერთი, თქვენ შეიძლება ძალიან კარგად ექმნებათ ამ. სეგმენტაცია ბრალია რეალურად აკეთებს აქვს კარგად განსაზღვრული მნიშვნელობა. ეს იმას ნიშნავს, გარკვეული სახის შეცდომა დაკავშირებული სეგმენტი მეხსიერება. და ერისკაცად წარმოგვიდგება თვალსაზრისით, ეს ნიშნავს, რომ ჩვენ შეეხო memory-- ჩვენ გამოიყენება RAM ჩემი კომპიუტერი რომ მე არ უნდა ჰქონოდა წვდომა. და რომ ის, რაც ორივე ძლიერი და საშიში შესახებ C არის, რომ თქვენ რეალურად აქვს სამორინეში შესვლა რომ მთლიანად თქვენი პროგრამის მეხსიერებაში ან ბაიტი ან RAM, უფრო კონკრეტულად. ასე რომ, მიუხედავად იმისა, რომ Zamyla სახელი მხოლოდ ექვსი სიმბოლომდე მე მაინც წავიდეთ სადმე მეხსიერების მინდა. და როგორც განზე, თუ თქვენ ოდესმე წაიკითხა რამდენიმე სტატია წლების განმავლობაში, ზოგიერთი სერვერზე, ან რამდენიმე პროგრამა მიღების დაბზარული ან hacked, რომ მიღებული უპირატესობა რაღაც ე.წ. ბუფერული overflow გამოყენებისათვის, რომ ჩვენ რეალურად ვისაუბროთ რამდენიმე კვირის განმავლობაში, რომ ზოგადად გულისხმობდა რატომღაც tricking კომპიუტერული შევიდა კარგად მიდის საზღვრებს მეხსიერება ის, რომ უნდა ჰქონდეს, და მოძიებაში რაღაც წვნიანი ამ memory-- დაგავიწყდათ, ალბათ, ისე, ავლის სერიული ნომერი შეამოწმეთ, ან უბრალოდ ზოგადად შეუძლია შეასრულა კომპიუტერი შესრულებაში კოდი, რომელიც არ იყო განკუთვნილი. მაგრამ მოდით დაბრუნდება სინამდვილეში მხოლოდ ერთი წუთით სადაც ეს პროგრამა განხორციელებული strlen, და დანერგვა ერთი რამ აქ. რა არის ახალი, მათ შორის ამ სამეულში ხაზები? ასე რომ, სიმებიანი dot თ. გამოდის, რომ ამ ბიბლიოთეკის მოუწოდა სიმებიანი Dot H, ან სიმებიანი ბიბლიოთეკა, რომლის header ფაილი, ასე ვთქვათ, არის string dot h, რომელიც მაძლევს ხელმისაწვდომობის ამ strlen ფუნქცია. თუ მე გამომრჩეს, შემდგენელი არის აპირებს დაწეროთ ჩემთვის გარკვეული ფორმით. მაგრამ იცით რა? ახლა მოდით ნამდვილად რთული. შესაბამისად 22, არსებობს რაღაც სახის საქართველოს inefficient-- ცუდად შექმნილია, arguably-- ამ ხაზი კოდი. გაიხსენეთ, თუ როგორ ამისთვის loop ხორციელდება და რა ნაბიჯები განმეორდეს და ისევ და ისევ ინიციალიზაციისას, მდგომარეობა, კოდი, რომელიც იღებს შესრულებული, მაშინ ნამატი ან შეცვლას, მაშინ პირობა, მაშინ კოდი, შემდეგ ცვლილება, მაშინ მდგომარეობა, მაშინ კოდი, შემდეგ ცვლილება და სხვ. ასე რომ, რა შეიძლება იყოს პატარა შემაშფოთებელი და უხარისხოდ აქ? ჰო, ლურჯი. აუდიტორია: Strlen არის მოუწოდა ბევრჯერ. დინამიკები 1: ჰო. ასე strlen ეწოდება ბევრჯერ, მაგრამ რა არის ხანგრძლივობა Zamyla ის სახელი პირველად loop ახორციელებს? აუდიტორია: ექვსი. დინამიკები 1: ექვსი. ისე, რა არის სიგრძეზე მისი სახელი მეორედ კოდი ახორციელებს? აუდიტორია: ექვსი. დინამიკები 1: ყველა უფლება. ეს ჯერ კიდევ ექვსი. მარჯვენა? Zarla სახელი არ აქვს შეიცვალა, თუნდაც ვეძებ მხოლოდ ნაწილი ასო მისი სახელი. ასე რომ ის ფაქტი, რომ მე ვარ ეფექტურად სვამს ამ კითხვას, რა არის ხანგრძლივობა Zamyla, რა სიგრძის საქართველოს Zamyla, რა სიგრძის Zamyla, ექვსი ცალკე ჯერ, ან შვიდი კი, მხოლოდ სულელური, იმიტომ, რომ ის უცვლელია, რომ პასუხი. ასე რომ, რა შემეძლო რეალურად ამის არის ამ სიმების ერთი მაქვს ოდნავ უკეთესი ვერსია აქ. იქ whoops-- სიმებიანი ორი მაქვს ოდნავ უკეთესი ვერსია, სადაც გავაკეთო ამას ნაცვლად მხოლოდ ინიციალიზაციისას I დან 0, მე ასევე მძიმით აცხადებენ, მეორე ცვლადში N-- მე არ უნდა ვთქვა, int ერთხელ. მე არ უნდა, ფაქტობრივად. მაგრამ მე ვამბობ, n. და მერე ინიციალიზაცია n to გამოყენება strlen ო, ისე, რომ ახლა რამდენჯერ strlen შესრულებული საერთო ჯამში? მხოლოდ ერთხელ. ასე რომ, ეს არის ის, რაც ჩვენ ვგულისხმობთ ადრე უკეთესი დიზაინი. სინამდვილეში ერთხელ თქვენი კოდი არის სწორი, ბრუნდება და აზროვნების მეშვეობით, მე გამოყენებით, როგორც პატარა მეხსიერების ან რამდენიმე წამში ან მილიწამებში კომპიუტერული დროს, როგორც შესაძლებელია განახორციელოს გარკვეული პრობლემა? და მე ვაპირებ გადახვევა და უბრალოდ აღვნიშნო რომ ამ ნახსენები null, ამ ვერსია, მაგრამ ჩვენ დავბრუნდებით, რომ ხანგრძლივი. იმის გამო, რომ ახლა, მოდით შევხედოთ , სადაც ეს აპირებს მიგვიყვანს. ასე რომ, ერთი გამოდის, რომ ახლა, რომ ჩვენ გვაქვს შესაძლებლობა, შევხედოთ ინდივიდუალური პერსონაჟი, ჩვენ შეგვიძლია ბერკეტები რაღაც კვირაში 0, რომ იყო ძალიან arcane და ერთგვარი უინტერესო დროს. მაგრამ ახლა, და განსაკუთრებით მაშინ, როდესაც ჩვენ მისაღებად კრიპტოგრაფიის ერთი კვირის ეს იქნება საკმაოდ ძლიერი. გამოდის, რომ ზოგიერთი მონაცემთა types-- ints და მოძრავი და chars და სიმები და სხვა რამ ზოგიერთი მათგანი შეიძლება ძალიან ადვილად გარდაიქმნება სხვა. მაგალითად, როდესაც ჩვენ ვისაუბრეთ შესახებ ASCII გარკვეული დროის ago-- აქ დედაქალაქში წერილები მეშვეობით M, dot, dot, dot-- ჩვენ ვთქვით, რომ არსებობს რუკების შორის ამ ასოები და ციფრები. და სინამდვილეში, ეს ეხება ამას წერილებს, ასევე. ამას 97, დედაქალაქში არის 65. და არსებობს მთელი რიგი ASCII, რომელიც მხოლოდ ამ რუკების სისტემის ყველა იმ სხვა წერილები. ასე რომ, რას ნიშნავს ეს? ისე, მე ვაპირებ წავიდეთ წინ და გახსნა up რეალური სწრაფად რაღაც მოუწოდა ASCII 0, რომელთა არის კომენტარი. ისევ და ისევ ონლაინ თქვენ ყოველთვის ერთი შეხედვით მეშვეობით კომენტარი. და შევხედოთ რა ეს უნდა გააკეთოს. ასე რომ, ის მივიღე მთავარი ფუნქცია. მე მყარი კოდირებული ნომრები მხოლოდ ახლა, რადგან ვიცი, რასაც მე ვაკეთებ. მე ვიცი, რა გვინდა, რომ აქ. და მე ინიციალიზაცია მე 65. და მე იმედი up მეშვეობით 26 ასო სულ. და რა ვარ მე აპირებს ბეჭდვა ერთი ხაზის დროს თუ შეიძლება ინტერპრეტაცია ამ ხაზი გაუსვა ხაზი? რა ხდება დაბეჭდილი? ჰო. აუდიტორია: აპირებთ თუ არა ბეჭდვა წერილი, რომ შეესაბამება რუკა წერილი ღირებულება და მთელი მნიშვნელობა? დინამიკები 1: ზუსტად. მე ვაპირებ ბეჭდვა წერილი შესაბამისი მთელი ღირებულება, და პირიქით, ასეთია. ისე ეს, ვიღაცამ თქვა ადრე, მხოლოდ placeholder for char. ეს ჯერ კიდევ არ არის. ეს, რა თქმა უნდა, არის placeholder ამისთვის გაკეთება int არ არის ახალი ხაზი. და ახლა შეამჩნია, ჩემი პირველი ღირებულება, რომელიც მე ჩართვის რომ placeholder არ არის მხოლოდ I. მე ვამბობ, ფრჩხილებში, char I, რომელიც ჩართული char არის ვეუბნებოდი შემდგენელი, მკურნალობა მე არა, რაც ის არის, რაც არის. მკურნალობა, როგორც ფაქტობრივი ხასიათი. ხოლო მეორე მნიშვნელობა მე ჩართვის შიგნით არ მე უნდა იყოს მხოლოდ ნომერი. ასე რომ, თუ მე კომპილაციის ამ პროგრამის ასე რომ ეს არის მიიღოს ASCII 0, dot slash ASCII 0- მე უბრალოდ ამ მოსახერხებელი პატარა სქემა, რომელიც აჩვენებს ჩემთან ყველა შესაძლო mappings გარეშე, ვფიქრობ, რომ მეშვეობით და გაერკვნენ ის ჩემს. და მე ასევე ბეჭდვა, შეამჩნია ამას წერილები, იმის გამო, რომ რამდენიმე ხაზები შემდეგ მე ასევე, ამობეჭდოთ ამ რუკების ასევე, რაც არის მხოლოდ ამბობენ, რომ ერთხელ გესმით რა ხდება ქვეშ Hood, შეგიძლიათ ავტომატურად დააკონვერტიროთ და უკან. და სინამდვილეში, თუ რომელიმე თქვენგანს ოდესმე გააკეთა ამ კლასის სკოლა ან სმენია ვინმე mythically აღების შენიშვნა და ჩაბარების იგი თავის ან მისი მეგობარი კლასში, მაგრამ თქვენ scrambled წერილები, როგორც ხდება B, და B ხდება C, ან რამე უფრო რთული, ვიდრე, რომ, ასევე, როგორ წავიდეთ შესახებ ახორციელებს, რომ როგორც ბავშვი? ისე, უბრალოდ სახის ვიცით ხდება B, B ხდება C, მაგრამ მათემატიკურად, რა იყო, რომ ბავშვი აკეთებს? რას და დასძინა, რომ თითოეული წერილი? ეფექტურად, 1. ასე რომ, როდესაც თქვენ შეცვალოს რომ B, რომ სახის მოსწონს იცვლება 65 66, რომელიც მათემატიკურად ნიშნავს უბრალოდ დაამატოთ 1. ასე რომ, თუ თქვენ უნდა განახორციელოს რომ ცოტა მატყუარა ტექნიკა თქვენი მასწავლებელი კოდი, შეიძლება ზუსტად რომ მხოლოდ დამატებით ერთი წერილი ერთად. ასე რომ, სანამ ხანგრძლივი, ჩვენ აპირებს თუ რამდენად ჩვენ შეგიძლიათ ისარგებლოს, რომელიც, ფაქტობრივად, ნამდვილად scramble და unscramble ინფორმაცია. ამასობაში, ვიცით, რომ ჩვენ დავიწყეთ დანერგვა რამდენიმე სხვა ბიბლიოთეკების აქ სიმებიანი ერთ დღეს. და ძალიან გამოსადეგი საიტი იმედია თქვენ იპოვით ეწოდება reference.cs50.net, რომელიც აკადემიური პერსონალის არ ერთად, ასე რომ, თუ გსურთ ეძებოთ როგორ strlen სამუშაოები, თქვენ შეგიძლიათ დაიწყოს აკრეფით ფუნქციის სახელი, დააწკაპუნეთ strlen იქ, და მაშინ ნაკლებად კომფორტული ახსნა აპირებს გამოჩნდება. ან თუ თქვენ გსურთ ოფიციალური Linux დაფუძნებული განმარტებით, თქვენ შეგიძლიათ დააჭიროთ უფრო კომფორტული ზედა მარჯვენა, და ეს წარმოდგენილი იქნება იგივე ინფორმაცია, მაგრამ უფრო რთული ტერმინოლოგიისათვის. ეს არის სასარგებლო რესურსი რეალურად იცის, რა ყველაფერს აკეთებს. შემდეგი დროს ჩვენ ვაპირებთ შევხედოთ Ovaltine და უფრო, და გააცნობს საკუთარ თავს რომ სამყაროში კრიპტოგრაფიის. მანამდე, ჩვენ დავინახავთ, თქვენ მოგვიანებით ამ კვირაში. და ახლა, კოლტონი Ogden. თქვენ ოთხშაბათს. [მუსიკის დაკვრა] [მუსიკის დაკვრა] დინამიკები 1: რა [Bleep] აკეთებ? დინამიკები 1: მე ჭამა ჩემი დესერტი? როგორ ჭამა ეს? თქვენი ხელები? [მუსიკის დაკვრა]