[Muzikos grojimo] GARSIAKALBIS 1: Tai CS50 ir tai yra dvi savaitės pradžia. Taigi, galime pasinerti į dešinę kažką tai yra Buggy, taip sakant. Taigi, štai čia yra CS50 IDE ir aš išrautas iš anksto tai screen-- velniškai tai. Spoileris perspėjimas. Gerai. Aš iškedentas iki šį ekraną čia kuris yra labai paprastas programą. Jei mes slinkite žemyn, dauguma tai yra tik komentarai, bet čia 13 eilučių per 17 mes turime programą. Tai sintaksiškai teisingas, o tai reiškia, jei Aš kaupia, ji bus surinkti ir paleisti, bet tai Buggy. Ši programa teigia komentarus iki viršaus, kad jis turėtų spausdinti 10 žvaigždžių, tačiau taip nėra. Ir remiantis savo patirtimi, arba netrukus bus patirtis su C, galite logiškai atskirti kodėl tai, iš tiesų, Buggy? Taip? Auditorija: Jis eina nuo nulio iki 10. Štai 11 iteracijų. GARSIAKALBIS 1: Taip. Taigi, tai vyksta nuo nulio iki per ir lygi 10, kuris, žinoma, yra 11 iteracijų. Taigi, jis ketina Spausdinti tiesų, 11 žvaigždės. Taigi, kompiuterių mokslas konvencija daugeliu programavimo kalbų yra, iš tiesų, tik pradėti skaičiuoti nuo nulio, bet suskaičiuoti iki, bet ne per vertė, kad jūs iš tikrųjų rūpi. Dabar, tai yra vienas dalykas, kad užtrunka šiek tiek priprasti prie ir net "Scratch, skirta, kaip ji yra už ne programuotojų ar ne kompiuteryje mokslininkai ir vaikams esmės, yra skirta turėti Jums pradėti skaičiuoti paprastai ne vienas. Ir tai gerai. Jūs galite visiškai pradėti skaičiuoti bent vienas, jei tai patogiau. Ir suskaičiuoti ir per 10, bet Jums ypač suprasite šią savaitę ir už jos ribų, kad tiesiog taip daug dalykų, programavimas manyti, kad 0 yra pirmasis skaitmenų su kuria jūs tikėtis, kad jūs ketinate rasti lengviau tik patekti į šio įpročio pradžios nuo nulio ir skaičiuoja iki vertę jums rūpi dabar nuo gauti eiti. Taigi, tai yra nustačiusi, kad. Mes pakeistas mažiau negu arba lygus tik mažiau nei. Paimkime pažvelgti antras pavyzdys čia. Taigi, ši programa taip pat teigia, jos komentarai iki viršaus, kad jis turėtų spausdinti dešimt žvaigždės, bet ji nėra. Koks klaidą čia? Taigi, what-- ir gaila, būkime aišku. 10 žvaigždžių. Vienas eilutėje, bet taip nėra. Taigi, iš tiesų, leiskite man eiti į priekį ir kaupia tai vienas, nes tai šiek tiek mažiau išvalyti remiantis tuo aprašymu. Leiskite man eiti į mūsų šaltinio katalogą. Padaryti Buggy vieną dot velniop, Buggy vieną. Gerai, matau 11 žvaigždžių, kurios vis dar yra problemiškas, bet jie taip pat viskas vienoje eilutėje. Koks klausimas čia? Taip. Auditorija: [nesigirdi]. GARSIAKALBIS 1: Taip. Taigi tai yra subtilumas, kad jums gali prisiminti mane padaryti trumpą paminėti. Nors viskas atrodo gražus, ir jis gražiai atitraukiama, ir tai rūšies atrodo įbrėžimams kaip toje linija 16 ir 17 yra, Iš tiesų, įspaudžiami pagal kad kilpa. Štai nereikšmingas. Kompiuteris nėra žino ar pamatyti baltą erdvę. Balta erdvė yra tik mums žmonėms, stilistiškai. Kompiuteris neturi žinoti, jei turite garbanotas petnešos, kuri, tiesą sakant, išspręsti šią problemą. Taigi, jei mes iš tikrųjų įėjo ir aiškiai pateikti šių klamrami kad būtų išspręsti šią problemą priėmimo aišku, sudarytojas kad aš iš tikrųjų norite vykdyti dvi eilutes kodo vėl, ir vėl, ir vėl. Bet kas pagrindinis paaiškinimas? Teisė? Mes neturime griežtai reikia garbanotas petnešos visą laiką, nors tai turbūt geriausia praktika patekti į tą įpročio vistiek nors ji priduria, du simbolių kodą. kodėl? Auditorija: [nesigirdi]? GARSIAKALBIS 1: Taip taip, tai Kitas sprendimas apskritai. Teisė? Ypač, jei iš pirmo žvilgsnio jūs neturite tikrai vertiname tai, kas vyksta. Na, be abejo, mes galime tiesiog padaryti du dalykus vienu metu ir tik išvengti problemų apskritai. Ir tai gerai, bet dabar, šiandienos reikmėms, ką yra už klaidą paaiškinimui? Kodėl buvo visi tie žvaigždžių vienoje eilutėje? Taip? Auditorija: Atrodo, kad jei turite vieną eilutę kodo, Jūs galite padaryti be tų ją. GARSIAKALBIS 1: Būtent. Tai tik žmogaus konvencija. Žmonės supranta, kad tai yra tiek erzina ar nuobodų turėti įdėti garbanotas petnešos visi laiko, jei viską, ką nori daryti yra įvykdyti vieną eilutę kodo. Taigi, žmonės nusprendė kai seniai, kad tai gerai. Jei norite įdėti visus savo kilpa nuo tik, kad vienoje eilutėje, kaip šis, tai gerai su vieno Semikols pabaigoje. Bet jūs galite padaryti tik vienas toks linija be klamrami. Taigi, kai CS50 stiliaus gidas kaip jums nurodyti, pamatysite, kad paprastai jis yra geras įprotis patekti į šį kol būsite gana patogus zabladzenia iš šių konvencijų rūšių ir daro savo dalyką. Taigi, kol jūs esate savarankiškai nuoseklūs. Ir mes kalbame daugiau apie stilius šiek tiek vėliau ir šiandien. Taigi, leiskite man atverti vieną kitą programą. Žinoma, mes turėtume nustatyti, kad 10 taip pat. Leiskite man eiti į priekį ir rašyti realus Greita programa, kad aš kviesiu, tarkim, kilpa dot C. Taigi, kilpa dot C. Ir kilpos dot C Aš ruošiuosi, apima standartinį I / O taškas O int main negaliojančiu. O dabar tegul tiesiog padaryti, iš tiesų, kilpa. Taigi, 4 int i gauna nulis. I yra mažiau nei, tarkim, 50. Aš pliusas, pliusas. Ir tada čia tegul eiti į priekį ir daryti Spausdinimo F. Ir tada aš noriu spausdinti I ir nauja linija, kabliataškis. Ir tai turėtų spausdinti visus numeriai nuo nulio iki 50? Keletas galva linkteli. Keletas nr. Kas jau klaidą? Kas lengva klaida padariau? Taip. Auditorija: [nesigirdi]. GARSIAKALBIS 1: Taip. Taigi, nors ji atrodo kaip tai, ką ketinu, Primename, kad aš taip pat tik ASCII simbolių. Taigi, jei aš sakau, spausdinti "I." Jis tiesiog vyksta spausdinti I. Taigi, jei aš noriu plug-in rezervuota vieta vertė Aš iš tikrųjų reikia tai padaryti ir tada plug-į I vertė, dinamiškai. Priešingu atveju aš tik ketina gauti 50 I "ekrane. Taigi, leiskite man eiti į priekį ir padaryti šį ciklą, paleiskite jį, ir, tiesą sakant, mes visi kelią iki per 49. Ir jei aš slinkti atgal laiku matau skaičius nulis pradžioje. Na, ką daryti, jei aš tipo susukti? Ką daryti, jei aš tai padaryti? Tiesiog todėl, kad aš ne galvoti. Kas tai programa. Kai iš naujo surinkti ir paleisti, ketina daryti logiškai? Auditorija: Nieko. GARSIAKALBIS 1: Nieko. Kodėl taip yra? AUDITORIJA: I yra skirtas nulio. Taigi, ši sąlyga yra klaidinga. GARSIAKALBIS 1: Taip, tiksliai. Visa kodas yra teisingas, sintaksiškai. Tai bus surinkti, šis kodas veiks, tačiau tai nėra ketina nieko naudingo padaryti nes aš inicijuoti Aš iki nulio. Mes tada patikrinkite, ar aš didesnis nei 50? Akivaizdu, kad ne, tai ne. Taigi kilpa niekada vykdo ne visiems. Ką daryti, jei mes darome ką nors šiek tiek daugiau beatodairiškai? Taigi, ką daryti, jei mes darome, kaip int i gauna nulis. O dabar leiskite naudoti kol kilpa, kuri buvo dar sąlyga. Ir o aš pasakyti, o I yra didesnis nei arba lygus nuliui, ir tada čia aš eiti į priekį ir išsaugoti failą, kad kilpa. Ir aš apie jį paleisti. Ką aš ketinu tai pamatyti laikas su while cikle? Taip. Auditorija: Begalinis kilpa? GARSIAKALBIS 1: Begalinis kilpa? Taip, ir kodėl? Auditorija: Nes tai visada lygi nuliui. GARSIAKALBIS 1: Taip. Taigi, aš yra inicializuoti kaip nulis. Žinoma, aš visada didesnis nei arba lygus 0, kaip rezultatas. Taigi, aš tik ketina pamatyti tai be galo. Ir dabar, tai atėjo kartą arba du kartus į kursą anketa galvų. Kas atsitinka, kai jūs turėti begalinį ciklą? Auditorija: Valdymo C. GARSIAKALBIS 1: Taip. Taigi Valdymo C ilgainiui reaguoti. Deja, mes išspausdinti milijonai ir milijonai nuliais jau ir kad kompiuteris turi rūšies gavo prieš mane. Taigi, jis ketina ignoruoti man už truputį. Bet jei jūs tiesiog paspauskite Control C nedaugelis kartų jūsų Mac arba PC klaviatūra, galiausiai jis turėtų išties nutraukti. O jei ne, mes jums parodyti kai metodai prieš ilgas, kur jūs iš tikrųjų gali priverstinai žudyti programas, panašiai kaip Windows ir Mac OS, jei reikia. Bet pabandykime ką nors kita. Leiskite tikrųjų prieaugio I. Ar tai vis dar bus begalinis? Leiskite paleisti tai. Ir dabar jūs galite rūšies pamatyti, kas vyksta. Tai taip pat yra begalinis ciklas. Bet tai yra triukas klausimą tiek. Ar tai spausdinti numerius amžinai? AUDITORIJA: Ne GARSIAKALBIS 1: Ne Kodėl? Aš girdėjau kai nos čia. Someone-- Taip. Auditorija: Jūs neturite pakankamai bitai tikrai nesustoti. GARSIAKALBIS 1: Gerai. Taigi aš neturiu pakankamai bitai nesustoti. Taigi, kas nutiks? Tai tiesiog ketina sustabdyti? Auditorija: Tam tikru momentu ji bus uždaryta the-- GARSIAKALBIS 1: Ji bus uždaryta kilpa žemyn, bet kodėl? Kas nutiks ne labai galas jos ribų? Taip? Auditorija: Tai bus ciklas Atgal į neigiamus skaičius. GARSIAKALBIS 1: neigiamų skaičių, arba jei mes buvome tik gydant teigiamas, nulis bent. Taigi taip, absoliučiai. Prisiminkite, kad mes matėme paskutinį kartą, kad jei prieaugio jūsų bitai vienas per daug kartų, ir jūs Yra priekinės perpildymo Jūsų int talpa ar kas duomenų tipas yra, jūs esate vyksta į kuriuos vyniojami aplink, tikriausiai, du neigiamus skaičius. Arba, jei jūs nustatyti, kad jūsų diapazonas turėtų būti tik teigiamas, kuriuos galite padaryti, bet mes nematėme, kad dar, galite baigti bent atgal nulio. Nors, iš tikrųjų taip. Šiuo atveju, neigiamas numeriai, tokiu atveju kilpa ketina nutraukti nes aš yra ne, iš tikrųjų, didesnis nei arba lygus nulis, jei jis neigiamas. Taigi, deja, kaip seniai būtų turime laukti? Šiuo metu mes iki ką, 2 mln ish? Mes esame kaip 2 mlrd, mes ketiname teks palaukti kol mes iš tikrųjų galite pamatyti šį simptomą. Tačiau mes galime pamatyti šiek tiek greičiau, maybe-- pažiūrėkime, jei mes galime nutraukti. Nagi. Net meniu rodomi lėtai. Gerai. Taigi, mes grįžti į, kad iki ilgai. Tai geras LAIKĄ_ damn tai, šuniukai. Tai geras laikas kai pranešimai. Taigi, jei jums gali patikti verstis YHack, kuris įvykis yra rėmė mūsų draugais Jeilio. Ir, tiesą sakant, kai kurie iš aikštyno TFS Jeilio yra susiję su šiuo. YHack yra tarptautinė Hack-a-Thon surengė ir surengė Jeilio, suburiant 1500 panašiai mąstančių įsilaužėlių ir skelbimų visais visame pasaulyje. Jei tai yra interesų, Pažiūrėk čia. Jei tai yra pernelyg trumpai dėl ekranas, pažiūrėtų į šiandienos skaidrių išvaizdą už paraiškos yhack.org URL. Taigi, taip pat keletas greitų skelbimai. Taigi, oficialiai skyriai pradės Kitą savaitę tiek čia ir New Haven. Turėkite omenyje, jums reikia gauti siųsti vėliau šį savaitgalį greičiausiai. Tai užima daug laiko už CS50 skyriuje, Atsižvelgiant į visus Tautai klasė ir visi juda. Ir visi Mokymo Fellows " tvarkaraščiai, taip pat vis dar kietinant, bet laukite elektroniniu paštu ir, jei reikia būti, galite iš naujo skyrių ten po. Study.cs50.net. Taigi, net jei esate pastovus dalyvis ne skyriuose, reikia suprasti, kad beveik visi išteklių mes naudojame skirsniuose yra viešai prieinama CS50 Studijų šiuo URL čia. Taigi, jei jūs kada nors norėtumėte naujo peržiūra medžiaga, iš dalies arba skaityti į priekį, arba jūs negalite padaryti jį šiek tiek savaitę Suprantu, kad imties skaidres, ir problemos, ir apibrėžtys, ir dar daugiau, visi yra ten, taip pat. Darbo valandos vėl šiandien ir rytoj, ir trečiadienį, ir ketvirtadienį patikrinkite aikštyno svetainė grafiką. Ir taip pat, dabar pradeda šiandien yra CS50 Aptarti. Taigi, jei ir kai jūs turite klausimų dėl vienas su kitu arba už kursą darbuotojų, ir bendrai yra darbo dėl kai kurių problemų rinkinys, suprasti, kad jūs nebūtinai turi kreiptis į kitą jums žmogaus. Jei yra, niekas ten, jūs galite pasiekti, kad mūsų ir klasiokų internetu per CS50 Aptarti. Taigi, tai yra aptarimas lenta, žinoma, ir suprasti, kad tai yra galbūt geriausias vieta pradėti, kai jūs turite klausimai, kai už darbo valandų ypač. Pietūs bus pradėti šią savaitę taip pat. Tuo Ugnies ir ledo [Nesigirdi] New Haven. Žiūrėkite kursas išvaizdą interneto svetainę, siekiant atsakyti. Pirmas atėjai, pirmas tarnauti už tai. Jei jums nereikia gauti šią savaitę mes padarysime tai dauguma kiekvieną penktadienį per laikotarpį. Gerai, dabar žodžio apie rūšiavimo. Ypač, kaip mes įvesti problema nustatyti vieną, kuris yra iš šią savaitę, ir problema nustatyti du ir po to. Kaip mes eiti apie vertinimo P rinkiniai ir įvertinti jų kokybę? Taigi, tai keturios ašys, kad mes naudojame CS50, ir jie šių keturių čia. Taikymo sritis, kuri fiksuoja skaitinę pagrindas, kiek daug iš P rinkinys tu spręsti. Tai maždaug atitinka pastangų, ir tai mūsų būdas užfiksuoti Ar bandėte pusė P nustatyti, visi iš P rinkinį. Tai lengva gauti tobula balai, jei jūs darote, iš tiesų, pabandykite kiekvieną P rinkinys aspektą. Taigi, keep that in mind. Teisingumas yra būtent tai. Ar jūsų kodas darbą, kaip specifikacijos Ir kaip štabų "mėginio tirpalo rodo, kad jūsų kodas turėtų, iš tikrųjų, veikia. Patikrinkite 50, jei nėra įvykdytos ją dar yra P nustatyti vieną specifikacija ir paprastai jums taip / ne atsakymų , ar jūsų kodas yra teisinga. Bent tiek, kiek mes ketiname įvertinti ją, remiantis bandymų kad mes paleisti per tą programą. Dizainas yra daug daugiau subjektyvus. Tai kaip gerai parašyta jūsų kodą. Ir tai yra kažkas, kad Jūs gausite geriau laikui bėgant, ir tai kažkas, kad mes suteikti daugiau kokybišką grįžtamąją informaciją apie. Ir dizainas galėčiau reiškia prieš ilgai jūs gali būti linkusios kai P nustatyti ką nors padaryti loopingly, bet turi gal trys ar keturi, arba penki įdėtos priekines kilpos ar įdėtos, o kilpų. Kurie paprastai turi pradėti jums šliaužioti ir būtų paprastai laikoma blogo dizaino. Ir jūs pradėsite matyti klasėje iš klasės gerų būdų, kaip daryti dalykus, blogi keliai daryti dalykus, kurie gali visi būti teisinga, bet ne nebūtinai gerai suprojektuoti. Kaip rašyti rašinį. Jums gali būti suteikta galimybė įdėti žodžius ant puslapis, kuris yra gramatiškai teisingi, bet esė arba darbas jie į tai tik visiškai nenuoseklūs ar atžvilgiu turi būti netaikomas. Ir taip, kad galėtų būti analogas parašyta pasaulis blogas ar geras dizainas. Ir stilius, taip pat, yra gana subjektyvus. Bet bent jau mes tikimės, nuoseklumą. Tai kaip gana Jūsų kodas. Yra dalykų, gražiai atitraukiama? Ar jūsų kintamieji gerai pavadintas / Ar visi Jūsų skliausteliuose ir klamrami suderinta, kaip jie turėtų būti? Mes turime CS50 stiliaus vadovas, problema rinkinys nukreips jus ne. Tie, patogesnis yra kviečiame nuklysti nuo tol, kol esate savarankiškai nuoseklūs. Ir tai irgi yra pamoka mes sustiprinti skyriuje. Taigi, jei visa tai buvo šiek tiek greitai, suprasti, P rinkinys ir skyriai eisiu į daugiau gylio prieš ilgas. Tačiau paprastai mes turime labai mažai kaušai CS50. Natos yra paprastai tokiu mastu, nuo vieno iki trijų, arba nuo vieno iki penkių. Mes literally-- ir aš negaliu pasakyti tai pakankamai per pirmą savaitę. Trys yra gera. Taigi, nors, taip, trys iš penkių paprastai matematiškai, gali būti 60 procentų, arba kaip D minus. Trys yra, iš tikrųjų, gerai. Ir, tiesą sakant, mes tikimės dauguma studentų į klasę pradėti nuo terminą aplink poromis, ir trise ir Fours. Tikriausiai ne tiek daug Five. Ne per daug tie. Bet apskritai pradėti kad saldus vietoje kreivėje kad kaip kartą progresuoja, ten tikrai kambarys, ir galimybės viršutiniame progresavimą. Taigi, prašome negali prilygti tris su 60%. Tai gerokai abstraktesnis nei tai. Formulė, su kuria mes galime apskaičiuoti rūšių yra taip, kaip nurodyta toliau. Teisingumas yra verta labiausiai. Dizainas yra verta šiek tiek mažiau. Stilius verta šiek tiek mažiau. Ir šis paprastai fiksuoja, kiek laiko kad eina į vis kiekviena iš šių ašių teisingai. Stilius yra super lengva, turėtų būti super greitai, bet tai lengva įprotis gauti tingus apie. Teisingumas gali užtrukti Jūs didžiąją dalį laiko. Chasing žemyn šiek tiek apie klaidą galią imtis, kad papildomą valandą ar daugiau, ir taip, vertinimas balais galiausiai fiksuoja, kad. Ir taip, dabar rimtesnė žodis. Nuo CS50 turi tą atskirti, geriau arba, dar blogiau, būties gal geriau susipažinti su akademinės klausimais sąžiningumas, nei dauguma bet kurio kito kurso. Ir iš tiesų, tai mano žiniomis, kad mes siųsti daugiau studentų, deja, drausminių tikslais kasmet, kaip rezultatas. Taigi, Visiškai interesų atskleidimas, leiskite trumpai pasikalbėti apie tai, kas vyksta CS50, ir ką jus gali padaryti, ir ką jūs galite būti prisimindama. Taigi, čia nuo 2007, kai Aš paveldėjo kursą, yra AD valdybos atvejų skaičius. Reklamos valdyba yra Harvardo universiteto drausminė kūnas, ar dabar garbę patarėjas, į kurią atvejai nurodyti, kai studentai kažką daryti, kad aikštyno programa mano nepagrįsta. Nėra jokio realaus modelio Čia, sakyčiau. Ji svyruoja virš metus, tačiau paprastai tai yra skaičius atvejai, kurie yra nurodyti. Studentų skaičius kurie dalyvauja? Jis taip pat skiriasi. Paprastai pernai Pavyzdžiui, 29 studentų Harvardo buvo Reklamos lipa, taip sakant. 29 iš jų dabartinių studentų, Du iš jų ankstesnių studentų, Kas buvo bendradarbiauja kai iškrypusios būdu. Ir tada kalbant apie procentais, tai paprastai apie 3% iš klasės, kad, deja, daro šiuos sprendimus rūšių. Taigi, pernai ji buvo 3,5% iš CS50 Studentų kūno kad buvo Reklamos lipa, taip sakant. Taigi, ką visa tai reiškia? Ir ką mes iš tikrųjų daryti? Taigi, visiškai atskleisti, mes absoliučiai, kaip kompiuterių mokslo, turi programinės įrangos įrankius savo žinioje ir tai labai lengva mums, tiesą sakant, kad kitos klasiokų, kurie nėra kerta šias eilutes kirsti palyginti kas šiemet prieš kiekvieną pateikimas pateikimas per pastaruosius aštuonerius metus. Programinė įranga tai daro. Ir galiausiai tai žmogaus akys, nusprendusios ar ne perduoti kai klausimas dėl tolesnio nuosprendžio, bet programinė įranga tikrai padeda. Ir tai, tiesą sakant, kodėl aš manau, kad turime tokius didelius numerius CS50. Tai ne todėl, kad CS50 studentai ar CS studentai daugiau paprastai yra bet mažiau sąžiningi nei bet kuris kitas studentams, tai tik mes turime Įrankiai ir būdai su kuria pasinaudoti šia pirmąjį perdavimą. Bet mes užmesti akį dėl visų šių dalykų taip pat, dar kartą, interesų pripažįstant darbą, kad nebūtų pateiktai By super dauguma klasėje. Ir žinoma, politika akademinio sąžiningumo, nors tai iš dalių krūva ilgas su kulkų krūva kad yra tikiuosi gana skaitoma, ji tikrai skliautais į pagrįstas. Ir geriausia nykščio taisykle, kad siūlome iki per mokymo programą tai yra, esmė visų darbų, kad jus pateikti šį kursą turi būti jūsų pačių. , Ir iš tikrųjų beveik visi iš tų, nurodytais atvejais už drausminius veiksmus ji buvo, nes kai kurių studentų pabaigoje vienas naktį paprastai pasuko jo ar jos kodą per atvirai, kad klasiokas, kuris vėliau jį priėmė visas arba žymiai dalis. Bet tikrai, tai yra Gerai. Ir iš tiesų, biure valandų, iš popieriaus lapeliai jūs buvote įteikė jei atėjo įstaigos valandos praėjusią savaitę skatina kiek. Jūs esate visiškai pasveikino ir paragino aptarti problemų rinkinius su klasiokais. Norėdami padėti vienas kitam, kai suklupimo. Bet paprastai nykščio taisyklė turėtų būti tai, "kai jūs prašote pagalbos, galite parodyti savo kodą su kitais, bet jūs negalite peržiūrėti savo. " Taigi, kitaip tariant, jei aš kovoja su tam tikru P rinkinys ir aš sėdi ten į valgykla, ar bibliotekoje, ar klasėje bando rasti tam tikrą gedimą, Aš tikrai gali parodyti mano kodas ant mano ekrano kad asmuo sėdi šalia man tikrai darbuotojai, bet klasiokas. Bet jei sprendimas, mano klasiokas siūlo yra, OH, čia tik pažvelgti, ką Aš, kad kerta liniją. Ir drįsčiau pasakyti, kad tai apskritai protingas dalykas daugumai žmonių labai lengvai pastebėti, kad liniją. Ir taip, žr mokymo programą išsamiau. Ir dabar yra viena iš daugiau prieštaringų aspektų iš CS50 mokymo programą, kad aš maniau, kad aš būtų kalbėti išvada čia yra vadinamasis apgailestauju sąlyga. Taigi, čia viskas baudos spausdinti. Bet apskritai mes matėme per pastaruosius 8 metus plius kad, tiesą sakant, beveik visi CS50 s atvejai akademinio nesąžiningumo buvę tiesiog prastas rezultatas sprendimų priėmimo vėlai naktį. Streso, rezultatas rezultatas nuo valgymo stokos trūksta miego, per daug P rinkiniai, per daug terminai, per daug įsipareigojimų. Stresas kuriant į 2:00, 03:00 AM, 04:00, nurodydama terminą smarkus. Dauguma studentų šiose bylose ką tik padarė blogų sprendimų kad jie gali labai gerai apgailestaujame Kitą rytą, jei ne minučių vėliau, tačiau iki praėjusių metų nebuvo Išleidimo vožtuvas, kad šie studentai galėtų iš tikrųjų atverti tikrųjų spręsti problema su galva be baimės būti įkelti iš kolegijos apskritai. Ir, tiesą sakant, mes pristatėme tai apgailestauju sąlyga pernai, kurie sako, kad jei per 72 valandų, tris dienas kirtimo šiek linija nurodyta mokymo programos ateini į priekį į vieną iš aikštyno Vadovai ir mes turime pokalbiai apie jį. Yra dar būti šiek tiek rezultatas, priešingai, kas yra Buvo pranešta, kad yra priešingai. Yra dar kai rezultatas, kad yra baustinas pagal kursą, paprastai nulio yra P rinkinį ar vartojate tam tikrų kitų veiksmų, bet iš tiesų mes,, tvarkyti save, o ne perduoti jį didesnis buvo rezultatas gali būti daug sunkesnis. Ir, tiesą sakant, pasidalinti, kas atsitiko Pernai per aštuonerius metus, ir dabar devynerius metus, dėstymo šį kursą ir po skardinimo su įvairių rankenėlėmis, tekinimo įvairių ciferblatai per pastaruosius keletą metų akademinės sąžiningumo, ir matyti už duomenų nėra akivaizdžių poveikis, net kalbose, pavyzdžiui, tai, tai buvo rankas žemyn geriausias dalykas mes įdiegėme pedagogiškai per aštuonerius metus kartu Šios linijos CS50. 19 studentai išėjo į priekį Pagal šią išlygą pernai. Mes nesiėmė jokių veiksmų septyni tiems studentams, nustatant, kad jie buvo be reikalo nerimauja. Jie turėjo ne, iš tiesų, kerta liniją, tačiau ji buvo geras pokalbis turėti vis. Mes nulis 11 balų kad buvo pateikta. Ir vienu atveju mes paprašėme studentas padaryti problemą, rinkinį. Bet patrauklesnės, sąžiningai, šių 19 pokalbiuose, kuris buvo būdas daugiau nei aš Tikimasi, kad, kiekvienas iš jų 10 minučių o gal valandos trukmės, taip pat atnešė šviesos keletą klausimų apie šeiminės problemos, draugas klausimai, psichikos sveikatos problemos kad mes tada užsiima, su studento palaiminimą, gyvenančio dekanas, arba draugai, arba bet kuris kitas numeris paramos lėšų. Taigi, kad tai buvo iki šiol viena iš geriausių reikmėms mūsų laikų ir vienas iš geriausių intervencijų. Turint tai sakė, ji neturėjo įvesties aptikimo norma akademinio nesąžiningumo apskritai. Ir drįstu sakyti, kad tai pogrupį Studentų pernai buvo demografinius, kad mes anksčiau niekada identifikuotas iki ir niekada susijusi su anksčiau. Ir taip, tai buvo nuostabūs Sėkmės istorijos nors jie buvo atvežti į šviesą mažiau nei optimaliomis aplinkybėmis. Taigi, turėkite tai omenyje kaip jūs darote, ko gero, kai prastas sprendimas Būk vėlai naktį, kad yra naudojamasi taip ilgai kaip tokioje situacijoje studentas savo aukštyn ir pateikti taip, kad mes galime turi tą čate natūra ir kovoti su ja tokiu būdu, kad yra mokymo, ir tada mes galime įdėti jį už mus kitą dieną. Taigi be tolesnio ceremonija, imtis Naostrzyć šio pokalbio, priežastis, šuniukai yra UP tiesiog pertrauka akimirką ledo. Ir, deja, jie visi miega, bet kas turėjo atsitikti čia buvo visi turėjo kad baiminantis ir rūšis atsipalaiduoti po to labai sunkus pokalbis. Bet, matyt aš įdėti šuniukai miegoti. Bet jei jūs einate į CS50 s svetainė pasvirasis brūkšnys šuniukai, Jūs galite žiūrėti juos visą dieną. Ypač gal 02:00, arba 03:00, arba 04:00 naktį pamatyti šiek tiek įtempių ten. Taigi tai yra velniop šuniukus. Gerai. Nebuvo, kad įdomus? GERAI. Taigi, nugaros tam tikru kompiuteriu mokslas, jei aš gali. Taigi, priminti, kad paskutinį kartą, mes pradėjome ieško ne tik pagrindinis, kuris buvo numatytasis funkcijos, kai Žaliosios vėliavos paspausti atitikmuo, bet mes taip pat pradėjo trumpai rašyti kai mūsų pačių funkcijų. Ir iki šiol nė viena iš šių funkcijų buvo ypač didelis ar mėsiškas. Jūs gausite į tuos didesnis funkcijos tikriausiai P komplektas 2, p nustatytas 3, tikrai P nustatyti 4 ir pirmyn. Šiuo metu didžiąją dalį savo programų, jeigu ne visi iš jų, žinoma, skirtas P Set 1 galima padaryti visiškai Main. Jei jūsų programa tik penkios eilutės, 10 eilučių, net 20 eilučių ilgio, puikiai protinga parašyti visi pagrindinės ir ne per komplikuoti Jūsų kodas, bet tai, ką mes darome šiandien ir toliau bando pat pristatyti gerų projektavimo metodus kad kaip jūsų kodas gauna daugiau sudėtinga ir, kaip problemų norite išspręsti gauti sunkiau ir įdomiau turite, rūšiuoti, į savo priemonių rinkinį įrankiai, su kuria projektuoti gerus sprendimus tiems. Taigi, galime priimti greitai pažvelgti atgal Ši programa iš mano praeitą savaitę, kuri buvo funkcijas nulio taškas C. Ir pastebėti, kad, paprasčiausiai, atrodo, kad tai su dviem funkcijos, pagrindinės ir spausdinimo pavadinimą. Ir galvoju grįžti arba galbūt iškomplektuoti šiandien kas buvo motyvacija įvedant atitinka 28 vadinama funkcija, Spausdinti vardas? Arba tai, kas buvo tai AN pavyzdys sąlygos principo ar takeaway, Jei norite. Kai ūžesiai. Ką? Taip taip, funkcinė dekompozicija rūšies išgalvotas būdas pasakyti, suyra savo programą į jos sudedamųjų dalių ir tada naudoti tas dalis, surinkti visumą. Taigi, tai taip pat yra tik rūšies iš gurkšnis jau tačiau tai yra galbūt net geriau pavyzdys kažką tiesiog vadinamas abstrakcija. Teisė? Abstrakcija bus vienas iš pasikartojančių temų CS50 ir kompiuterių mokslas plačiau, nes tai technika, su kuria jūs galite išspręsti problemos efektyviau, nes jus sprendimai gali rašyti daugiau intuityviai ir tokiu būdu, kad svarstyklės ir yra suprantami kitiems žmonėms. Ką man pasakyti? Taigi, be abejo, tai yra daug lengviau skaityti pažvelgti, kaip ši programa, Super trumpas, nors ji yra. Kai pamatysite on-line 22, kad ten funkcija vadinama, spausdinti pavadinimą. Tai vardas vieni sako, ką ji daro. Ši funkcija matyt trunka įvesties tarp jos skliausteliuose, ir, matyt, daro kažką, matyt spausdina vardą. Ir taip, nors mes visiškai galėtų turėti padaryti ką mes padarėme prieš savaitę, kuri buvo tiesiog šis faktinis eilutę kodo, atsikratyti šio, ir gauti atsikratyti visa tai kartu, mes tarsi išgaunamo toli spausdinimo pavadinimą sąvoka. Man nerūpi, jei jūs naudojate spausdinimo def. Man nerūpi, jei turite proc S ir Backslash N. Tai yra neįtikėtinai ARCANE detales. Kas man rūpi, kaip programuotojas spausdinant vardą. Ir taip, kas geresnis būdas tai padaryti nei paskambinę funkciją, spausdinimo vardą? Ir taip, tai buvo vienas iš motyvų daro kažką panašaus į tai. Padaryti kodas suprantamesnės daugiau daugkartinio naudojimo, o taip pat savarankiškai aprašomojo pobūdžio. Dabar galime pažvelgti kitoje, pavyzdžiui, kuris buvo funkcijos vienas, kurį mes turėjome čia. Taigi, tai vienas gal net daugiau svari, nes, šiuo atveju, Aš nenoriu, kad tik gauti int. Noriu gauti teigiamą int. Ir paaiškėja, kad gauti teigiami int turite daryti legwork krūva. Teisė? Tai nėra paprasta linija skambinti kaip Spausdinti vardas, kuris yra pripažinti mažiau įtikinamos. Norėdami gauti teigiamą int, logically-- leiskite man pereiti atgal paslėpti tai. Ką daryti? Kaip ir visi įrankiai, mes turėti tuo momentu yra dalykų, pavyzdžiui, spausdinimo def nuo standarto Biblioteka taip pat iš CS50 bibliotekoje turime Gauk Int, ir gauti plūdės, Gauk long long, gauti eilutę, bet tik vienas, Germane, dabar yra Gauk Int. Taigi, jei tik įrankis turite Jūsų įrankių dėžė yra Gauk Int, kaip mes eiti apie įgyvendinant jį gauti teigiamą int? Auditorija: Sukurti žurnalą ir patikrinkite nuo to, ar įvestis, kad jie davė buvo teigiamas, ar ne. GARSIAKALBIS 1: tobulas. Būtent. Kita priemonė, mes turime mūsų rinkinys nuo savaitės ar du atgal yra tik apsisukimo konstruktas. Ir taip, taip, jei mes naudojame šiek tiek laiko kilpa, arba, o kilpa Do arba prog kilpa mes tikriausiai galėtų išeiti su bet kuriomis tam tikra forma. Mes galime įgyvendinti GET sąvoką teigiamas int tik naudojant Gauk Int, ir tada tiesiog laikyti vadindami jį vėl ir išlaikyti paerzinti vartotoją kol jis ar ji iš tikrųjų suteikia mums tai, ką norime. Ir todėl dabar, tai abstrakcija proceso gauti teigiamą int į funkciją, vadinamą Gauk Teigiamas Žiniasklaida yra šiek tiek daugiau įtikinama, nes pažvelgti į tai. Tai yra, kaip 10 plius eilučių kodo kad dalyvauja gauti teigiamą int, ir aš nerūpi, kaip jūs tai darote. Viskas, ką aš rūpintis, kad jūs galite tai padaryti, ir todėl aš paslėpti visi šie duomenys už funkcija vadinama Gauk Teigiamas INT, kad Iš tiesų, turi tai padaryti, o kilpa. Ir pamatyti, praėjusią savaitę sintaksę ten, bet tai tik patvirtina, N, ir jis spausdina out nurodymas vartotojui. Ji ragina Gauk Int ir tada ji patikrina ši sąlyga vėl, ir vėl, ir vėl, kol vartotojas bendradarbiauja. Taigi dabar, kelias normalumas patikrinimai. Tiems, galbūt susipažinę su tam tikru programavimo, kodėl yra N pareiškė, kodėl aš sukurti N išorėje, o kilpa daryti? Kodėl jį on-line 29, o ne ant panašaus 33, pavyzdžiui. Auditorija: nes kai paskelbti ją lauke, ją natūra nuo daugiau, tuo didesnis scope-- GARSIAKALBIS 1: Geras. Auditorija: --and jei deklaruoti jis viduje linijos, [nesigirdi] nes ji neturi žinoti apie tai. GARSIAKALBIS 1: Būtent. Jei aš galiu simplify-- tai yra apimties klausimas. Ir taikymo sritis nurodo į kontekstą kuris kintamasis egzistuoja arba yra naudojami. Ir gražus nykščio taisykle, kad čia yra Paprastai, kai jūs deklaruoti ar sukurti kintamasis galite naudoti tik jį viduje iš arčiausiai apimantis vingiuotus skliaustus. Taigi, ką tai reiškia? Jei aš, vietoj to, tai anuliuoti ir eiti su kažkas, kad jaučiasi šiek tiek paprastesnis. Teisė? 32 eilutė tik atrodo švaresnis man dabar. Darau abu dalykus vieną kartą ir paskui skiriant dešinė su kaire ranka. Problema dabar remiasi kad taikymo srities apibrėžimas yra, kad N gali būti naudojamas linijų 31 ir 32 viduje šio kilpa, Bet kur tos apibrėžties jis gali būti naudojamas? Pagal ką? Taip. Auditorija: 35. GARSIAKALBIS 1: 35. Tikrai ne 35. Ir taip pat kur kitur? Auditorija: 34. GARSIAKALBIS 1: Net 34 yra problemiškas, nes tai už garbanotieji petnešų. Ir taip iš tiesų, pažiūrėkime, kas vyksta. Teisė? Tai gali atrodyti šiek tiek intuityvus arba gali nebūti, bet pažiūrėkime, ką kompiliatorius turi pasakyti, kada mes einame į šiandienos šaltinio katalogą. Padaryti funkciją vieną. O Dieve. Na, aš pagaliau baigtas , kad kelyje. Gerai. Ir kas yra problema čia? Labai paslaptingą pažvelgti. Bet štai ką aš typed-- kad funkcija vieną. Štai ką padaryti sukeltas, kuris yra faktiškai naudojant kompiliatorių klingsėti su kai kuriais iš šių vėliavų kad mes pamatysime vėl prieš ilgas. Ir vėl, visada atrodo pirmo klaidą, nes jis gali tiesiog kaskadinį beprasmė poveikis kitų linijų. Taigi, ką tai reiškia, kad problema yra funkcija 1.c. Jis yra 32 eilutėje. Ir tai ne skiltyje, arba charakterio, 13. Taigi, kai jūsų teksto redaktoriumi, kad gali padėti jums nustatyti, kur problema. Taigi, jei aš slinkti aukštyn, kas yra linija, 32? Štai iš tiesų tai vienas kad manimi jau buvo pabrėžta teisė here-- nepanaudotą kintamasis n. Bet tai ne nenaudojama. Aš naudoju jį. Tačiau kompiliatorius s painioti, nes jis egzistuoja tik viduje šioje srityje. Ir todėl aš negaliu naudoti jį čia. Aš negaliu naudoti jį čia. Ir sudarytojas, todėl nėra net rūpintis, kad aš bandau. Atrodo, kad nepanaudota jos faktinio taikymo sritį. Taigi, mes galime išplėsti taikymo sritį, daro ką mes pradėjome with-- int n. Ir nors tai nėra atrodo kaip elegantiškas, ko gero, ir mes atsižvelgiant papildomą eilutę čia dabar tai apimtis visur. Taigi pabandykime dar kartą. Taigi, kad funkcijos vieną. Gražus. Ir dabar, jei aš, jei aš paleisti funkciją viena, tegul mano, kad tai neigiamas 10, neigiamas 1, 0, 1, ir iš tikrųjų veikia. Taigi yra dar vienas sprendimas čia. Zinai ka? Ką daryti, jei aš tikrai esu imtynių su tai? Aš nežinau, kur N manimi turėjo eiti. Zinai ka? Aš tik ketina įdėti jį visi būdas ne mano failo viršuje čia. Ką tai padaryti, jūs manote? Taip? Auditorija: [nesigirdi]. GARSIAKALBIS 1: Taip. Taigi aš tapo globalus, taip sakant. Jei turite kintamąjį tai ne visus savo funkcijas, yra leidžiama, ir kodas turi kaupti, ir n dabar bus prieinama ne tik GET teigiamas int, bet main-- kuris yra šiek tiek neramina, nes ten jau yra ir pagrindinis N, todėl daugiau apie tai vos moment-- bet tai būtų laikoma blogo dizaino. Gerai. Jei turite kreiptis į kažkas panašaus, oi, aš tiesiog įdėti jį čia, nes kodas atrodo kaupia paprastai yra ne geriausia praktika. Greičiau norite pasirinkti siauriausia galima apimtį Jūsų kintamųjų, o tai reikštų, vyksta su mūsų pradinio projekto, kuris yra čia. Dabar, kaip panaikinti, jei tu turi identiškai pavadinimu kintamasis čia būdas c tvarkytų this-- nors tai neatsitiks per often-- yra tai, kad tai yra vis dar puikiai baudą čia. Bet tai n linija apibrėžimas 22 bus šešėlis Global One. Taigi tai vienas bus dirbti Pagrindinis, ir pasaulinė vienas tikrai bus taikomos tada, kai esate gauti teigiami int Bet daugiau apie tai kitą kartą, tačiau tik tiems, smalsu. Taigi trumpai tariant, mes išspręsti šią problemą čia. Dabar galime erzinti išskyrus kitus du gabalus Prieš mes žiūrime į vieną paskutinę eilutę kodas šioje programoje. Gauk teigiamą int. Kairėje pusėje jo žodis yra žodis int. Ką tai reiškia jūs manote? Iki šiol mes dažniausiai laikomos negaliojančiu. Taip? Auditorija: Tai Tipo kintamasis, kad esate klausia apie. GARSIAKALBIS 1: Taip Tai tipo, leiskite man nesakau kintamasis, bet vertė tipas kad aš prašau atgal. Ir iš tiesų, tai intuityvus čia, tikiuosi. Teisė? Jei norite gauti teigiamas INT, kas tai yra jums nori kaip function-- mūsų savanoriai iš praeitą savaitę perduoti jums atgal gabalas popieriaus su ant jo int? Ir taip mes nurodyta, kad taip vadinamas sugrįžtantis šios funkcijos tai gauti teigiamą int. Jei mes nenorėjome jį grįžti nieko, jūs sakote negaliojančiu. Jei norite, kad ji sugrįš eilutė, jūs sakote eilutę. Jei norite, kad ji sugrįš plūduras, jūs sakote plūdę. Bet tik viena, kad čia galioja logiškai, nes aš naudoju get int, nors aš apribojant ją teigiamas vertybes, yra grįžti int. Taigi priešingai, ką tai reiškia kad ten skliausteliuose negaliojantis? Ką skliaustai paprastai apibrėžti? Taip? Auditorija: Tai reiškia, kad funkcijos faktiškai nėra vartų. GARSIAKALBIS 1: Tai reiškia, kad funkcijos ne iš tikrųjų gaunate tai, ką? Auditorija: įvesties. GARSIAKALBIS 1: įvesties, kokia. Taigi iš tiesų, jei skliausteliuose Čia galite nurodyti negaliojančiu, kad tik reiškia, kad aš nenoriu jokios įvestį. Aš susidoroti su problema save. Ir iš tiesų, jūs neturite pasakyti, gauti teigiamą int nieko. Jūs tiesiog pasakyti, gauti teigiamą int, ir kad funkcija užges ir padaryti savo dalykas. Bet ten buvo šiek tiek apgauti aš buvo žaisti čia visą šį kartą įsitikinkite, kad šis kodas kaupia. Atkreipkite dėmesį, kad int-- gauti teigiami INT void-- yra on-line 27. Tačiau dėl tam tikrų iš pažiūros keistą priežasties jis taip pat čia on-line 16. Ir tik gera priemonė aš kartoti Tai todėl puikiai sutampa. Ir aš sakė prototipas su šiek tiek vienos eilutės komentaras. Kas atsitiks, jei aš ištrinti tai, ir dabar pakartotas padaryti funkcija 1, įeiti. Oi. Palauk minutėlę. Kur mano skirtukas? Huh? Budėjimo. Padaryti funkciją 1. Čia mes eiti. GERAI. Neišgelbėjo tinkamai. Taigi, aš manau, kad yra šiek tiek Re čia, kur aš nesu matyti skirtuko pavadinimą tuo momentu. Taigi, kas čia vyksta? Numanomas deklaracija funkcija gauti teigiamą int negalioja C99. Taip sunku dar kartą. Taigi, kas yra šis preliminarus? Na, it turns out, kad C yra gana kvaila. Na, tai programavimas kalba, arba, o kompiliatorius yra. Ji tik žino, ką turite išmokė ją, ir tai tik ketina kažką žinoti Jei mokė jį prieš. Kitaip tariant, Pagrindinis šiuo metu, aš bando skambinti funkcija vadinamas gauti teigiamą int. Tačiau kompiliatorius nesiruošia pastebėti, kad gauti teigiamą int egzistuoja tol, kol linija 26. Ir taip, koks kompiliatorius daro, yra tiesiog klaidų, kai tik ji patenka į eilutę 17, sakydamas numanomą deklaraciją iš gauti teigiamą int, kuris yra tik išgalvotas būdas pasakyti, aš neturiu žinoti, ką gaunate teigiamą int dar. Kitos kalbos kaip Java ir Python ir Ruby gali žiūrėti į priekį. C nėra. Ir taip, kaip mes nustatyti tai yra vienas iš dviejų būdų. Arba viena, jei problema yra tai, kad, jeigu reikia teigiamas int nebuvo matęs, Na, leiskite man tiesiog perkelti jį į viršų. Tai būtų išspręsti šią problemą. Bet apskritai, tai laikoma geriau technika įdėti savo pagrindinę funkciją labai Top kad žmogus skaito savo kodą žino, ką ši programa daro, nes pagrindinis Netiksli palaidotas visi apačioje arba viduryje būdas. Tai pačiame viršuje. Taigi, kad nesijaučia idealus. Ir jūs iš tikrųjų galite gauti į situacijas, kuriose jei viena funkcija skambučiams kitą, kurioje raginama kitą, galite patekti į klausimą, kur nei gali eiti virš kito, logiškai. Tai tiesiog neįmanoma. Ir taip, kaip dirbti aplink tai tiesiog imtis Funkcija parašas, taip speak-- pirmoji eilutė, kur jis declared-- ir tiesiog kopijuoti, įklijuoti jį ne viršuje, bet ne su garbanotais braces-- tik su kabliataškiu. Tai tarsi maža užuomina kas turi ateiti. Ir iš tikrųjų, visi šiuo metu, kai mes mačiau tokius dalykus kaip standartinis io.h ir cs50.h panašiai tose taškas h failai yra kitų prototipai. Ir mes pamatysime, kad iki ilgai. Taigi trumpai tariant, kai jūs turite programą faile su daugybe funkcijų Be pagrindinės, jūs beveik visada nori juos deklaruoti tiesiog būdas pirmasis jų linija, po kabliataškius, pačiame viršuje failo. Tai buvo daug vienu metu. Turite klausimų? Turite klausimų? Gerai. Taigi pereikime tada į kažką panašaus kosulys. Oh. Kaip montuoti. Gerai. Kosulys. Taigi čia yra c įgyvendinimas programos mes padarėme kitą dieną Įbrėžimams, kad labai paprastai tiesiog sako kosulys, kosulys, kosulys. Gerai. Ir kažkas pasakė keletą prieš, kad ten iš valymo šį kodą iki jau būdas. Gerai? Kaip tik jūs kopijavimo ir įdėjimą tikriausiai blogas dizainas. Bent kartą mes gauname keturis ar penkis arba 20 kosulys, jis jaučiasi blogą praktiką. Mes tiesiog laikyti kopijas, įklijuoti. Kas yra akivaizdus sprendimas valyti Ši programa up? Auditorija: Ciklas. GARSIAKALBIS 1: Taip. Taigi naudoti kilpą. Ir mes galime naudoti už kilpos, kurį laiką kilpa, bet požiūrių skaičius. Ir iš tiesų, tai ką mes darome versiją čia. Aš vietoj perrašyti ją Į cough.c vienos versijos būti tik kosulys per For-kilpa. Viskas gerai, bet ten yra galimybė dabar rūšies pradžios projektuoti tai šiek tiek daugiau kaip pamoka mes mokomi prieš momentas, kuris yra this-- tarkime, kad aš norėjau sukurti funkcija vadinama kosulys, aptarkime tik už akimirką ką jis atrodys. Taigi, jei aš noriu kažką kosulys, aš tiesiog reikia naudoti spausdinimo f viduje funkcija. Ir iš tiesų aš esu. Ir iš tikrųjų, visa tai laikas, bet kuriuo metu esate spausdinti kažką ekranas, programuotojas vadinčiau, kad šalutinis poveikis. Tai ne man atiduodami Atgal kažkas vertės. Tai man atsižvelgiant tam tikrų veiksmų kad gali būti vizualiai akivaizdus. Tačiau ši funkcija kosulys, tai grįžti nieko remiantis jos pirmoje eilutėje? Ne, nes jos grąžinimo tipą yra negaliojantis, kuris tiesiog reiškia, tai nėra dalijamos man nieko atgal. Tai gali būti darai kažką vizualiai, bet tai nėra dalijamos mane atgal popierėlį, kaip praėjusią savaitę. Ar reikia visas žaliavas? Ne. Ir todėl negaliojančiu čia. Taigi tai taip pat yra natūra per-inžinerijos šią problemą. Teisė? Aš atlikau programą daugiau sudėtingesnis, mažiau eilučių kodo, Aš nenorėjau, kad bet daugiau funkcinis, bet tai būtų slenksčiu, galbūt, dėl platesnės kontekstas daugiau sudėtingas kodą. Bet ką apie tai? Ką aš done-- tiesiog skaitydamas Tai nežiūrėdami į komentarą pačiame viršuje file-- Ką Aš iš esmės padaryta čia su mano kosulys įgyvendinimas, kad skiriasi? Taip, nugaros? Auditorija: padaryti taip, jūs galite turi personažas išjungti. GARSIAKALBIS 1: Taip. Taigi, tai jaučiasi rūšies gražus. Teisė? Tai tarsi pridedant funkciją savo programa ar jūsų funkcija, šiuo atveju. Jis vis dar grįžta nieko. Tai gali turėti regimąjį šalutinį poveikį, nes jis skambina spausdinimo f. Bet dabar aš Parametrizuotieji funkcija, kuri reiškia aš nurodyta imtis įvesties tipo int ir jį vadiname n bet aš negalėjau ją vadina ką aš noriu. Tiesą sakant, tai gali būti tik kartų, kad būtų dar aiškesnis. Ir tada aš galėčiau tik tai pakeisti čia. Bet esmė yra tai, kad tai yra, kaip aš sukurti funkciją, kuri turėjo indėlį. Ir jei jūs prisimenate prakeiktas per galbūt internete vieną iš Walk-throughs, The Ketvirtasis ir paskutinis kosulys pavyzdys, jūs pastebėsite, čia aš apibendrinti mano kodas further-- rūšies referuojamas jis toliau. Kaip kosulys ir čiaudėti, abu yra apie tarsi sakydamas kažką ar priėmimo kai garso natūra. Išsaugoti būtų atitinkantis Scratch bloką. Ir taip, ką aš padariau šioje versijoje, kuriuos mes galime tik žvilgsnis, yra kosulys yra kaip sakydamas, [Kosulys] kosulys, ir tuo tarpu, čiaudulys yra tarsi sakydamas, [ACHOO]. Ir todėl aš apibendrinti tų, įgyvendinimas dabar įgyvendinti Tai bendrinis funkcija, pasakyti, kuris yra įdomus šiandienos reikmėms tik todėl, kad ji vis dar neturi grįžties tipas. Bet kiek įėjimai ji neturi? Auditorija: Du. GARSIAKALBIS 1: Du. Ir todėl, jei norite imtis dviem argumentais, tiesiog atskirkite juos kableliais. Ir jei jūs norite, tada skambinti šią funkciją, pastebėsite, kad jūs tiesiog skambinti tarkim, citata, citatos, pirmą argumentą, bendra n, už antrąjį argumentas. Taigi dar kartą, mes tiesiog turime dabar blokai taip, kad mes galime iš tikrųjų įgyvendinti kai mūsų pačių funkcijų. Gerai. Bet šiais klausimais? Taigi, dabar tegul žievelės atgal sluoksnį jei taip. Ir tikslas, galų gale, kitą savaitę problema rinkinys bus ant cryptogrophy-- iš kodavimo informacijos menas. Ir konkrečiai, informacija bus jums užšifruoti ar iššifruoti bus tekstą. Ir taip, kad kviečia natūra klausimas šiandien kaip gerai, kas vyksta po kapotu su tekstu už ASCII nuo nulio savaitę Ir kaip mes iš tikrųjų pradėti manipuliuoti? Taigi čia yra Zamyla pavadinimas. Ir tekstą, kuris gali būti įvestas į kaip GET styginių funkcija. Ir dabar pradeda, kai matote styginių kaip this-- Z-A-M-Y-L-A-- pradėti galvoti apie tai, kaip nors kiekvienas iš šių simbolių yra tokioje langelio jos pačių. Ir iš tiesų, per savaitę arba tiek yra laikas, kiekvienas iš šių dėžės ketina atstovauti labai konkrečiai iš memory-- iš atminties sukandimo blokatoriaus. Taigi, kiekvienas iš šių laiškų, galiausiai sudarys 8 bitus. Ir mes iš tikrųjų matyti, kas vyksta ant po mano kompiuteryje gaubtu. Bet ne tai pakanka tiesiog pažvelgti Zamyla per lęšį, kur kiekvienas iš šie raidės yra savo dėžutę. Ir pakankamai gražiai C mes galime prieiti prie kiekvieno iš šių dėžių tiesiogiai. Taigi, jei norite gauti pirmą laiškas savo vardą, super lengva C Jei norite gauti paskutinis laiškas, super lengva, taip pat su naujos sintaksės gabalas. Taigi, aš ruošiuosi eiti į priekį į CS50 IDE ir atverti styginių nulinį tašką C. Ir šiame pavyzdyje čia, yra daug naujų dalykų pora vyksta. Taigi pirmoji eilutė 19, mes nematė šio before-- get eilutę. Taigi tik kaip greitai normalumas patikrinti, jei kas nors galėtų pasiūlyti iki žodžiu profanas paaiškinimas kas vyksta vadovaujantis 19. Kaip tik išversti į tai Anglų, kad kambarioku ne CS50 gali suprasti. Taip. AUDITORIJA: Have vartotojo įvestų seka ir laikyti jį kintamu s. GARSIAKALBIS 1: Geras. Ar naudotojo įvesties eilutę ir laikyti jį kintamu s. Tai puiku. Taigi ant dešinėje pusėje, mes vadiname GET eilutė. Tai grąžina vertę kad negavau priskirti iš dešinės pusės į kairę ranką pusėje į kintamojo vadinamas s ŠTAI skirta saugoti eilutę. Būtent. Taigi dabar linija 22, už Į eilutę 21 komentaras, Akivaizdu, spaudinius, eilutę vienas simbolis eilutėje. Bet kaip? Taigi, visų pirma, mes inicijuoti I 0. Ir tada, kaip mes gauti iš Zamyla vardo pabaiga? Na, pabaigoje Zamyla pavadinimas, galėčiau rankiniu būdu įveskite paskutinis simbolis jos vardas kažkaip, arba jo numeris. Teisė? Jei mes einame atgal here-- Z-A-M-L-- Y-L-A--, kad galėčiau įvesti. Kokia puslapis Zamyla paskutinis laiškas? Jei tai 0-- kalbėti tarsi programmer-- 0, 1, 2, 3, 4, 5, Aš heard-- taip iš tiesų, paskutinį laišką į Zamyla vardas yra šeštas, bet jei mes tikėtis iš 0, tai bus skaičius 5. Taigi keep that in mind čia. Pasirodo, ten yra funkcija C vadinamas strlen ir atgal per dieną ir iki šios dienos vis dar programuotojų daug pasirinkti sinchronizuoti vardus jų funkcijos, kurios skamba žodžiai jie bando pasakyti. Taigi strlen yra eilutės ilgis. Ir kas taip būtų eilutė ilgis S grįžti, kai Zamyla yra įvesties? Auditorija: Penki. GARSIAKALBIS 1: Z-A-M-Y-L. Šeši. Teisė? Kokia Zamyla vardo ilgis? Teisė? Ir tik iš tikrųjų, šešių raidžių. Teisė? Ir taip, ką tai reiškia mūsų kilpa? Mes ketiname pereiti nuo 0 iki šešių, kuris ketina duoti mums penkis iteracijų. Ką mes darome ant kiekvienos iteracijos? Na, proc C, kažkas atspėti kitą dieną, tai, ką vietos rezervavimo ženklą? Auditorija: Char. GARSIAKALBIS 1: Tiesiog char. Taigi vienas character-- nėra daug simbolių, pavyzdžiui eilutę. Ir tada čia yra nauja linija kad mes turime spausdinti. Ir tada čia nauja sintaksė. Jei norite spausdinti i-osios personažas styginių S, taip sakant, galite tiesiog pasakyti Pavadinimas styginių S, ir tada atidaryti kvadratinių laikiklį ir tada uždaryti kvadratinių laikiklį, su i vidurinis. Ir tai tipo gražus tuo, kad Jis rūšies atrodo aikštėje kaip kvadratų, kurie Zamyla s simbolių egzistuoja tame paveikslėlyje ten. Taigi, jei aš iš tikrųjų paleisti tai Dabar pažiūrėkime, kas atsitinka. Padaryti string 0 dot velniop styginių 0, tada aš ketina įvesti Zamyla vardu. Nėra laiku, nes aš ne naudoti spausdinimo f, bet tai gerai. Aš tiesiog žinau, ką daryti. Ir iš tiesų, jis išspausdina Zamyla pavadinimas, po vieną eilutėje. Dabar galime būti šiek tiek neapgalvotas. Tarkime, kad aš nežinojau apie strlen ir aš suprato, gerai, niekas ketina turėti pavadinimas didesnis nei kaip 50 simbolių. Vykime į priekį ir perkompiliuoti tai ir pakartotas, o tada įveskite Zamyla dar kartą. Logiškai mąstant, kas yra Programa ketiname bandyti spausdinti? Z-A-M-Y-L-A, tada, kaip 45 Nežinoma baitų atminties. Ir iš tiesų, mes grįžti į šį atminties idėja. Bet tik logiškai, jei Zamyla pavadinimas tai ilgas, kaip už paveikslėlyje čia tai, ką mes sakydamas yra išlaikyti spausdinimą, išlaikyti spausdinimą, nuolat spausdinimas, išlaikyti spausdinimą, išlaikyti spausdinimą, visi į 50 charakterio būdas, kuri, kas žino, kas nutiks. Tad tikrai pažvelgti. Leiskite įveskite Zamyla. Įdomu. Mes pasisekė. Tiesiog visa krūva tarpais. Oh. Yra vienas funky simbolių. Jis atrodo lyg keistą klausimą pažymėti ten, bet yra Zamyla pavadinimas. Leiskite gauti tikrai neapgalvotas. Kaip apie mūsų atsispausdinti 500 blokai į nežinią? Vykime į priekį ir padaryti tai , taip pat ir tada iš naujo paleisti. Ir tegul visą ekraną tai, nes turime daugiau erdvės. Zamyla. Vėl pasisekė. Dare mes gauname daugiau beatodairiškai? Leiskite gauti daugiau beatodairiškai. 50000 simbolių. Labiausiai tai tikrai nėra gera idėja. Gerai. Padaryti eilutę 0. Tai bus paskutinis mūsų demo. Zamyla. Ugh. Ugh. GERAI. Taigi, mano atmintis tikrai tuščia dabar, kuris yra iš tikrųjų rūšies patogu. Ką aš bandau gauti to-- visą teisę. Ir dabar aš tik ketina gauti beatodairiškai. 500.000. Make-- tegul visą ekraną ją. Įveskite. Zamyla. Čia mes eiti. Neįsivaizduoju, kas tai yra, bet tai skamba neblogai. Gerai. Ir iš tiesų, netrukus, jei esate vienas pasisekė mažai darbo valandų ir problema nustatyti vieną, jums gali labai gerai susidurti tai. Segmentavimas kaltė tiesų turi gerai apibrėžtą prasmę. Tai reiškia tam tikrą rūšies klaidų susijusi su atminties segmentą. Ir profanas sąlygomis, tai reiškia, kad mes palietė memory-- mes naudojome RAM mano kompiuteryje kad aš ne taip turėtų turėjo prieigą prie. Ir tai, kas tiek galingas ir pavojingas apie C yra, kad jūs iš tikrųjų turi užtikrinti nekliudomą prieigą į savo programą atmintyje visas arba baitų arba RAM konkrečiau. Taigi, nors Zamyla pavadinimas yra tik šeši rašmenys, Aš vis dar gali eiti bet kur atmintyje noriu. Ir kaip panaikinti, jei jūs kada nors skaityti šiek tiek straipsnį per metus apie kai serveris arba kai programa gauti krekingo arba nulaužė tai imtasi privalumas kažką vadinama buferio išnaudoti, kad mes iš tikrųjų kalbėti apie po kelių savaičių, tai paprastai kalbama kažkaip tracking kompiuteris į vyksta gerai anapus atminties ribų kad ji turėtų turėti ir rasti kažką sultingas tuo, kad memory-- slaptažodis, ko gero, yra būdas apeiti kai serijinį numerį Tikrinti, ar tiesiog paprastai gali apgauti kompiuteris vykdant kodas, kuris nebuvo skirtas. Bet tegul grįžti į realybė tik akimirkai kur ši programa buvo įgyvendinamos strlen, ir pristatyti vieną dalyką čia. Kas naujo tarp šių trijų geriausių linijų? Taigi styginių dot val. Pasirodo, ten Ši biblioteka vadinama Styginių Dot O ar styginių biblioteka kurio antraštė failą, taip sakant, yra eilutė taškas h, kuri suteikia man Prieiga prie šios strlen funkcija. Jei aš praleisti, kad kompiliatorius yra ketina klykauti ne man tam tikra forma. Bet žinote ką? Dabar galime gauti tikrai niuansų. Vadovaujantis 22, kažkas natūra iš inefficient-- blogai suprojektuota, arguably-- apie šio kodo eilutę. Prisiminkite, kaip už-kilpa yra įgyvendinamos ir kokių veiksmų pasikartoti ir vėl ir again-- iniciacijos, su sąlyga,, kodas, kad paleidžiama vykdyti, tada prieaugį arba pokytis, tada sąlyga, tada kodas, tada pokytis, tada su sąlyga,, tada kodas, tada kaita, ir taip toliau. Taigi, kas gali būti šiek tiek jaudina ar blogai padaryta čia? Taip, mėlynai. Auditorija: strlen yra vadinama daug, daug kartų. GARSIAKALBIS 1: Taip. Taigi strlen vadinamas daug kartų, bet kas iš Zamyla vardo į ilgį Pirmą kartą kilpa vykdo? Auditorija: šeši. GARSIAKALBIS 1: šeši. Na, kas yra jos vardas ilgis antrą kartą vykdo kodas? Auditorija: šeši. GARSIAKALBIS 1: Gerai. Tai dar šeši. Teisė? Zarla pavadinimas neturi pasikeitė, net jei aš ieškau ne tik daliai jos pavadinimo raides. Ir taip faktas, kad aš iš tikrųjų klausia šį klausimą, kas iš Zamyla ilgis, koks ilgis iš Zamyla, kas iš Zamyla ilgis, šešių atskirų kartų, arba septyni net tik kvailas, nes tai nesikeičiantis, kad atsakymas. Ir taip, ką aš iš tikrųjų galėtų padaryti, tai this-- Styga vieną Turiu šiek tiek geriau versiją čia. There-- whoops-- styginių du turiu minimaliai geriau versija, kurioje Aš this--, o ne tik Inicijuojama i 0, aš taip pat su kableliu paskelbti antrą kintamasis vadinamas n-- Aš neturiu pasakyti int dar kartą. Aš ne iš tikrųjų. Bet sakau n. Ir tada aš inicijuoti N Norėdami iš n strlen, taip, kad dabar kiek kartų jis strlen gauti įvykdyta iš viso? Tik vieną kartą. Ir todėl tai, ką mes vadiname anksčiau apie geresnį dizainą. Tiesą sakant, kai jūsų kodas yra teisingas, grįžta ir galvoju pro aš naudoju tiek mažai, atminties arba kelias sekundes ar milisekundžių kompiuterio laiką kaip galima įgyvendinti kai kurių problemų? Ir aš ruošiuosi pereikite aukštyn ir tik paminėti kad ten tai paminėjimas iš nulio šioje versijoje, bet mes grįžti į, kad iki ilgai. Nes dabar, tegul pažvelgti ne, kur tai vyksta veda mus. Taigi vienas, ji Pasirodo, kad dabar, kad mes turime galimybę pažvelgti į atskirus simbolius, mes galime išnaudoti kažką nuo savaitės 0, kad buvo labai paslaptinga ir rūšiuoti neįdomu tuo metu. Bet dabar, ypač kai mes gauti kriptografija per savaitę, tai bus gana galingas. Pasirodo, kad su kai DUOMENŲ types-- ints ir plūdės ir simbolių ir įsipareigojimų ir kita Quake kai kurie iš jų gali būti labai lengvai konvertuojami į kitą. Pavyzdžiui, kai mes kalbėjome apie ASCII šiek tiek laiko ago-- čia Kapitalo raidės nuo A per M taškas, taškas, dot-- sakėme, kad yra kartografavimo tarp šių raidžių ir skaičių. Ir iš tiesų, tai pasakytina už mažosiomis raidėmis, taip pat. Mažosios raidės a yra 97, kapitalas a yra 65. Ir ten ASCII numeris kuri yra tik tai kartografavimo sistema, skirta visų šių kitų raides. Taigi, ką tai reiškia? Na, aš ruošiuosi eiti į priekį ir atvira iki nekilnojamojo greitai kažką vadinama ASCII 0, dauguma, kuri yra komentarai. Ir vėl internete galite visada žvilgsnis per komentarus. Ir pažvelgti, kas tai ketina daryti. Taigi atšoko pagrindinę funkciją. Aš sunkiai koduojamų skaičius tik dabar, nes aš žinau, ką darau. Aš žinau, ką aš noriu pamatyti čia. Ir aš inicializuoti I 65. Ir aš skaičiuoti iki per 26 raides iš viso. Ir ką aš ketinu spausdinti vieną liniją tuo metu, jei galite interpretuoti Tai pabrėžė liniją? Ką gauna atspausdintas? Taip. Auditorija: Ar jūs ketinate spausdinti raidę, atitinka žemėlapyje laiškas vertė ir sveikas vertė? GARSIAKALBIS 1: Būtent. Aš ruošiuosi spausdinti laišką atitinkantis sveikasis verte, ir atvirkščiai, taip. Na tai, kas minėta, yra tik už char vietos rezervavimo. Jis vis dar yra. Tai, žinoma, yra vietos rezervavimo Tam, kad int-- nėra nauja linija. Ir dabar pastebėsite, mano pirmasis vertę, Aš įjungdami į tos vietos rezervavimo ženklą yra ne tik I. aš sakau, skliausteliuose, char Aš, kuri suskliaustos char yra sakau kompiliatorius, gydyti I ne kaip, kur yra, kuris yra skaičius. Gydyti kaip faktinė pobūdžio. Kadangi antrajame vertės Aš įjungdami in-- I-- turėtų būti tik skaičius. Taigi, jei aš kaupia šią program-- todėl tai padaryti ASCII 0, dot velniop ASCII 0-- aš tiesiog gauti Šis patogus mažai diagrama, kad rodo man visas galimas rodymo be galvoti, kad per arba figure it out on my own. Ir aš taip pat spausdinti, pastebėti mažąsias raides, nes keletą eilučių vėliau, aš Taip pat atsispausdinti šią kartografavimo taip pat, kurie yra tiesiog pasakyti, kad, kai jūs suprantate Kas vyksta po dangtis, jūs galite automatiškai konvertuoti pirmyn ir atgal. Ir iš tiesų, jei kas nors iš jūsų kada tai padarė pradinėje mokykloje ar girdėjote apie ką nors mythically atsižvelgiant pastabą ir pakeleivingi jį savo ar jos draugas klasėje, bet jūs plakta laiškus kaip tampa B ir B tampa C arba kažką sudėtingesnis nei, kad gerai, kaip jums eiti apie įgyvendinti, kad kaip vaikas? Na, jūs tiesiog rūšies žinoti A tampa B, B, C, tampa, bet matematiškai, kas buvo, kad vaikas daro? Kas jums buvo pridėti prie kiekvieno laiško? Efektyviai, 1. Taigi, kai jūs pakeičiate A į tašką B, tai lyg keičiasi 65 iki 66, kuris matematiškai reiškia tiesiog pridėkite 1 d. Ir taip, jei buvo įgyvendinti kad mažai apgaulinga technika Jūsų mokytojas kodas, galite gali daryti būtent, kad tik pridedant vieną raidę kartu. Taigi, prieš ilgas, mes ketiname pamatyti, kaip mes gali pasinaudoti, kad iš tikrųjų tikrai peštynės ir Rozszyfrować informacija. Tuo tarpu, žinau, kad mes pradėjome pristatyti pora kitų bibliotekų here-- styginių vieną šiandien. Ir labai naudinga svetainė Tikimės, kad jūs rasite vadinamas reference.cs50.net, kuris mokymo personalo kartu sudėjus, taip, kad jei norite, kad ieškoti kaip strlen darbus, galite pradėti rašyti Funkcija vardas, spustelėkite strlen ten, ir tada mažiau patogi paaiškinimas ketina pasirodyti. Arba, jei norite, kad pareigūną "Linux" pagrindu paaiškinimas jūs galite spustelėti daugiau Nežiūriu viršuje dešinėje, ir ji pristatys tą pačią informaciją, bet daugiau sudėtingų sąlygų. Štai naudingas šaltinis, kad iš tikrųjų žino, kas viskas veikia. Kitą kartą mes ketiname pažvelgti Ovaltine išvaizdą ir daugiau, ir pristatyti save į kriptografiją pasaulyje. Iki to laiko, matysime vėliau šią savaitę. Ir dabar, Colton Ogden. See you trečiadienį. [Muzikos grojimo] [Muzikos grojimo] GARSIAKALBIS 1: Kas [Bleep] tu darai? GARSIAKALBIS 1: aš valgyti mano desertas? Kaip jį valgyti? Su savo rankas? [Muzikos grojimo]