[Powered by Google Translate] DAVID Malan: Tai CS50, o tai yra 1 savaitę pradžia. Ką mes manome, mes norime padaryti šiandien yra pažvelgti atgal ką daugelis iš jūsų tikriausiai vaikščiojo praeityje kai kuriems metu ir gali atrodyti šiek tiek susipažinę. Tai, ką čia, tai, žinoma, yra - Auditorija: Mokslas. Davidas Malan: Mokslo centras. Taigi, iš tikrųjų tai yra vienas iš pirmųjų kompiuterių Atgal nuo 1940 m. Tai buvo vienas iš pirmųjų elektromechaninių kompiuterių kad gali labai ilgai užtrukti, kol, Savarankiškas skaičiavimai, ir tai, ką mes iš tikrųjų pamatyti mokslo centras yra tik dalelę šio dalyko. Ką mes manome, mes norime daryti tada pažvelgti atgal į vaizdo , kuris buvo prieš kurį laiką, įvedant dalykas, į pasaulį. Ir pamatysite iš muzikos ir balso, kad iš tikrųjų tų buvo labai laimingas kartų. [VIDEO PLAYBACK] Matematinį ir mechaninis įgūdžių triumfas tai puikus naujas automatinis skaičiuotuvas Harvardo universitete. Sudėtingų problemų, matematikos, įdėti per mašina koduota forma juosta, tiksliai išspręsta minučių frakcija laiko reikalinga žmogaus skaičiavimas. Sukurta siekiant paspartinti visų formų matematinis bei mokslinis mokslinių tyrimų, milžiniškas mechaninis smegenys dirbs Jungtinių Tautų States Navy iki karo pabaigos. DAVID Malan: Taigi, ką jūs negalite žinoti, yra tai, kad jis buvo tas pats prietaisas, kad termino mes visi dabar gana daug suprantamas dalykas, kad klaidų buvo sukurtas. Taigi vienas iš inžinierių dirbti šiame kompiuteryje tiesiog rasti į mašiną, kad atsirado mažas drugelis " kai neteisingai paskaičiuotas. Ir kaip sakoma, kad drugys buvo šeimininku į šį žurnalą žurnalas čia, atgal nuo rugsėjo 9 1940-kažką, ir taip gimė pasauliui sąvoką "klaidas". Taigi, nuo šiol mes manome, klaidų, bet klaidų rūšiuoti programas, ar žmogaus sukeltų ar, šiuo atveju, vabzdžių. Taigi keletą pranešimų, kaip mums elgtis. Taigi CS50 tradiciją pasiūlyti pietūs dvasia dauguma semestro metu Penktadieniais, kur mes priimame nuo 30 iki 40 studentų į ugnies ir ledo aikštėje atsitiktinis Pogawędka, kalbėti apie kompiuterių mokslo, kalbėti apie ateitį. Kviečiame absolventai ir draugai iš pramonės kalbėtis studentams. Tikrai link priėmimo, kas yra gana didelis klasė pabaigoje intymesnis, bent kartą, o sutrumpinti studentų. Taigi, jei norite prisijungti prie mūsų jau šį penktadienį, 01:15, eikite į CS50.net/lunch RSVP. Ir mes tai padaryti recurringly, kad ne nerimauti, jei nesate tarp pirmųjų 30 arba tiek šią savaitę. Taigi raštininkas pažymi. Išteklių žodis, kad dabar pradėti galimam mokinių klasėje. , Kad jūsų vadovai turi ne paskaitų metu scribbling viską, ką aš sakau, ir tt, ką mes darome vietoj to iš dėstytojų kanoninė banknotų rinkinys. Taigi, mes turime vieną iš mūsų mokymo bičiulių, Andrew Sellergren , kuris sėdi kiekvieną savaitę, peržiūri vaizdo įrašus, ir tada užrašo, ką mes manome, kad yra gana autoritetingas banknotų rinkinys. Ir Andriaus mėgsta, taip pat išleidžia snarky išnašas apačioje. Todėl jūs tikiuosi naudotis šiomis kaip žinynas įdomus, ir taip pat ateiti viktorina laiką, kaip galimybė iš naujo išnagrinėti kas atsitiko, atskirų paskaitų. Taigi tie, kurie susijęs paskaitų puslapyje. Problemą, 0, tuo tarpu, yra. Ir jums turimų išteklių požiūriu - žingsnis po žingsnio. Milo vedė pirmąjį penktadienį. Jis buvo nufilmuotas, internete iki šeštadienio. Ir taip suprasite, jei nesate tikrai nežinote, kur pradėti, tai ar būsimų p-komplektai, visada pirma kreiptis į žingsnis po žingsnio ar jo vaizdo. Ruožais metu; cs50.net/section yra, kur jūs turėtų pateikti jūsų pageidavimus, jei jūs neturite jau šiandien. Kadangi skyriuose bus pradėti šių metų sekmadienis, pirmadienis, ir antradienį. Mes darome skyrius tos trys dienos, kiekvieną savaitę semestrą, kad didžioji dalis. Ir mes taip pat įvesti dar kartą, skirtingus takelius. Taigi, jūsų bus paprašyta šio pjūvių formos, jei jūs nemačiau jau, jei esate tarp tų, kurie mažiau patogiau, patogi, ar kažkur tarp. Ir jei jūs tarsi ant tvoros, paprastai kažkur Tarp jų yra tai, ką dauguma studentų baigti tikrinti. Darbo laikas pradėti vakarą. Taigi nulio yra gana mažas raktas, nors tai visiškai natūralu, paleisti į įvairių klaidų, arba neaiški, dėl to, kaip įgyvendinti kažką. Taigi suprasti, kad mes pradėsime darbo valandos šią savaitę. Jie bus ne Annenberg Pirmadienis, Antradienis, Trečiadienis, Ketvirtadienis, 20:00-11:00 per smegenų pertraukos. Viršutinė classmen gali gauti, ir, jei turite kokių nors problemų gauti į duris, nes jie bus swiping, tiesiog kalbėti savo kelią ir paaiškinti esate su CS50. Paprastai 20 iki 30 iš mūsų darbuotojams bus ten, kad padėtų tu vienas ant vieno. Atvykus idėja yra tokia: jūs pareikšti savo nešiojamąjį kompiuterį, jūs turite įkroviklį, mes turime papildomų maitinimo laidus, ypač palei pietinės sienos Annenberg ten daug elektros lizdai. Ir pagrindinė įvažiavimo į Darbo valandos Q & A yra eiti į cs50.net/discuss ir rašyti ten savo klausimus. Ir ženklinti jį su pset 0 arba pset 1, nesvarbu, kokia savaitės gali atsitikti, kad būti. Ir tada, ką mes padarysime, tai yra mokymo bičiulių lentelę ir kursų padėjėjai, paprastai 8 arba 10, arba tiek mūsų, išgyvena, išlaikant akimi ant lentos, ir skynimas išjungtas klausimus tikrai taip greitai, kaip mes galime, nuoroda pranešimų, susijusių su, jei jums nepavyko rasti tuos, patys, interneto nuorodos, priklausomai nuo aplinkybių. Ir tada, jei yra problemų, nes neišvengiamai bus, ar jis tiesiog daro daugiau prasmės sėdėti vienas prieš vieną, dirbti per problemas su kuo nors. Arba jūs tiesiog ateiti į darbo valandomis tikrai kuriems šią mąstyseną. Jūs nenorite eiti per elektronine forma, tikrai nori susitikti su kuo nors. Pranešti, kad mums, ir kas nutiks, kai jūsų klausimas buvo vertinamas personalo narys, ir mes nustatyti, Yup, tai turėtų būti siunčiami į vieną iš 20 ar. 30 komandos nariai čia vietoje, pamatysite viršuje palikdavo tai mažai Įveskite Queue mygtuką pradeda mirksi cs50.net / aptarti. Ir tai sakau jums, kad dabar jūs turite pakviesti, todėl kalbėti, įvesti eilę. Ir paspaudę šį mygtuką, jūsų vardas bus rodomas iPad CS50 pasveikinimo, vienas iš kurso vadovų, surengs netoli įėjimo į Annenberg, kurie bus pamatyti kaip parodyta čia, studentams, kurie turi klausimų dėl kairės, darbuotojai, kurie yra dešinėje. Ir į kairę ir į dešinę paspaudimu, interneto naršyklė pradeda mirksėti kuo greičiau, pavyzdžiui, profesorius McGonnagal yra pasiruošęs Jus tam tikru Annenberg lentelę. Taigi, mes padarėme kai šios praėjusiais metais. Mes perleist darbo valandų ir iš naujo įgyvendinti daug programinės įrangos. Taigi, suprasti, kad tai bus sušilti šią savaitę. Tačiau taip pat suprantame taip pat ankstesniais metais, kaip jūs galbūt girdėjote, iš draugų, biuro darbo valandomis, nuo 50 iki 150 mokinių vienu metu. Ir tai tiesiog neįmanoma, mums dirbti, kad efektyviai, vienas į vieną, visą vakarą. Ir kas mes iš tikrųjų ketiname pabandyti padaryti šiemet pasinaudoti tuo, kad daug klausimų dažnai užduodami, ir dažnai gali būti geriau atsakė asinchroniškai. Taigi galite rūšiuoti apgalvoti personalo atsako, ir mes galime apgalvoti savo kodą, be šildomas slėgis būtinai stengiasi per jį šalia. Taigi, mes prognozuojame, kad maždaug trečdalį arba pusę klausimus bus siunčiami asmeniškai, ir mes pasistengsime laupti kiek pusę arba daugiau elektroniniu būdu, darbo valandomis. Ir mes toliau naudoti Aptarti per savaitę, taip pat. Ir galiausiai, suprantame, kad šis kursas gali būti verčių atitikimo / neatitikimo. Taigi, jei esate ant tvoros ar tiesiog manote, kad esate tikrai not sure, jei tai pasaulis jums, ar tai tikrai gana užsienio jums, suprasti, kad tai yra puikus būdas įgyti šiek tiek žingsnis į pasitikėjimą klasė, kaip ir aš, atvirai kalbant, metų. Ir tada jau penkias savaites rūšiuoti išsiaiškinti sau, jei norite likti atitikimo / neatitikimo, pereiti į laišką, laipsnio, ar panašiai. Ir paprastai atitikimo / neatitikimo nėra, manau, studentams yra , kad, jei jūs įtraukėte, kad 10 valandų, 20 valandų, kokia ji gali būti dėl tam tikrų problemų, ir tranko galvą prie sienos, ir tikrai tiesiog negali persekioti kažką žemyn, ir jūs turi tiek daug kitų dalykų, kuriuos reikia padaryti, sąžiningai, ką aš galvoti perduoti / nesugeba yra, ji mano Naostrzyć situacijose, kaip kad. Jei jūs atlikote dalykas, 90%, kaip. Jūs žinote, tai ne visai tobulas. Bet jūs turite daug iš jo, vis dėlto. Todėl mano, kad atitikimo / neatitikimo suteikia jums, kad psichikos modelis, galbūt. Viskas gerai, todėl praėjusią savaitę mes panėrė į nulio, o mes kalbėjo apie programavimo gana aukštos grafinę. Ir šiandien mes pereiti prie kalba, vadinamas C ant apatinio lygio programavimo kalba kurį daugelis šiuolaikinių kalbų pastatytas, įskaitant kai tie mes naudosite link termino pabaigos. Ir sintaksiškai, ką jie atrodo yra labai panašūs. Taigi, pradėkime padaryti šį perėjimą čia. Taigi tai buvo programa, praėjusią savaitę buvo paprasčiausias hello world programos. Jis tiesiog spausdinami į ekraną hello world, mažai kalbos debesėlio išeina iš kačių. Na, jei mes pradėsime dabar versti į kitą kalba, suprantame, kad idėjos šiandien ir trečiadienį yra identiški, tačiau sintaksė pradeda keistis. Taigi, kadangi praėjusią savaitę mes turėjome pasakyti, kai paspaudėte, žalia vėliava Hello world. Šiandien mes ketiname turėti int, Main, tuštumą, printf, grąža, su kai kuriais kitais sintaksė ten taip pat. Garbanotasis petnešos, ir skliaustus, ir citatos, ir Papuošalą. Bet suprasti, kad idėja, čia esmė yra spausdinimo, ir galiausiai tai, kad pagrindinis dabar vyksta tapatinama su programos pradžios. Pagrindinis ketina būti ten, kur žalia vėliava prasideda ko ne. Taigi dabar galime erzinti išskyrus kai iš pastato blokus čia kol mes pasinerti į kai kuriuos konkrečius pavyzdžius. Taigi, mes vadinami šis pareiškimas praėjusią savaitę, kai jis tiesiog komanda. Tai padaryti - šiuo atveju pasakyti hello world. Na C, jei pažvelgsime tik tos linijos, tai yra, kaip mes ketina pradėti pareikšti, kad ypatingą įspūdį: printf ("Hello world");. Ir dabar mes erzinti tai, išskyrus vis daugiau ir daugiau, laikui bėgant, bet suprantame, kad yra modelis čia. , Kad vienas, mes turime šis dalykas vadinamas printf, kuris yra iš esmės analogiškas žodžio Pasakykite. Tai, ką ji ketina daryti. Printf, ir f čia reiškia "suformatuotas". Taigi, jis tiesiog reiškia, kad jūs galite įterpti įvairios estetinės detalės. Taigi citata citatos, ką mes ketiname pradžia pradėti skambinti eilutę. Žodis, frazė, sakinys. Programavimo kalba eilutė yra lygi nuliui, seka ar daugiau simbolių. Taigi, h-e-l-l-o, kablelis ir tt, citata citatos, seka. Ir dabar Backslash n šiek tiek sintaksiškai keista, bet mes jau nustatyta, kad praėjusią savaitę, tai reiškia ką? Tai tiesiog nauja linija. Tai tiesiog būdas perteikti prie kompiuterio norite ekvivalentas pataikyti Enter ten, bet jūs neturite norite, kad iš tikrųjų paspauskite "Enter", todėl sujaukti visus formuoti jūsų faktinis programos. Dabar skliausteliuose pridėti šią eilutę, atviras skliaustas ir arti skliaustas, o viduje tai yra mūsų eilutė. , Nes tai, nes C ir kitų programavimo kalbomis, dalykų, pavyzdžiui, printf imtis argumentus, arba imtis parametrai. Taigi pradėti galvoti dabar šio raudonos pasakyti bloko kaip funkcija, kaip metodą, kaip procedūra. Jūs tikrai gali jį vadiname viską, ko norite dabar, bet tai tarsi miniatiūriniai programa, kuri veikia vienas dalykas, vienoje eilutėje, ne mažiau. Taigi printf taip pat yra tai, ką mes ketiname pradėti skambinti funkcija, ir funkcijas, padaryti kažką, šiuo atveju - spausdina suformatuoti eilutę į ekraną - bet funkcijos taip pat argumentų ar parametrus. Ir argumentai arba parametrų, ačiū, mes turime omenyje kad jų elgesys gali turėti įtakos, ką jums perduoti viduje skliausteliuose. Taigi šiuo atveju, printf poreikiai bus pasakyta, ką spausdinti, ir mes tiesiog praeiti kabutes čia eilutę, kad mes iš tikrųjų norite spausdinti. Ir ant galo šioje eilutėje kabliataškis yra tik istorinis nepatogumų, kai daugelio eilučių kodo pabaigos, kabliataškis, kad super aišku prie kompiuterio kad šią kodo eilutę baigiasi čia. Dabar tai yra gerai, nes, kaip matysime, kaip programos gauti daugiau sudėtingas, kabliataškiu super aišku mums žmones, taip pat kompiuteris, kur kodo pradžios ir pabaigos linijos. Suprantu, kad kai kurios kalbos neturi kai iš tų pačių detalių. Ir iš tiesų, "JavaScript", jūs ne visada reikia ką nors kaip kabliataškiu. Tačiau daugiau apie tai turi ateiti. Taigi kilpos. Mes turėjome kažką panašaus į tai, labai intuityviai, akivaizdu, padaryti kažkas vėl ir vėl ir vėl. Norėčiau išleisti kojinių, arba saying hello, šiuo atveju. Na, pradedant nuo šiandien, C, mes galime išreikšti Tai nulio blokuoti, o (teisinga) printf ("Hello World"). Taigi pastebėsite, mes pradedame statyti pažodžiui galvosūkį gabalas iš anksčiau. Mes turime tą patį raudonos blokas, bet jis viduje skliausteliuose Visada blokas, ir geriausias būdas versti, kad C yra taip. Yra ne Visada raktinį žodį. Jūs negalite tiesiog įveskite f-o-r-e-V-e-R C. Taigi artimiausias analogas, o. Dabar while (true) atrodo šiek tiek kvailas, nes vertė tiesa kada nors pakeisti? Turbūt nėra. Tai tarsi sakydamas, o vienas, tuo tarpu, o tiesa. Tai visi tą patį, tiesa yra visada. Taigi šis ciklas yra iš tikrųjų paskatinti Kokios kilpa? Tiesiog begalinis kilpos, teisė. Visada kilpa arba, kaip mes pavadino jį praeitą savaitę, tiesiog begalinis ciklas. Todėl kartais, kad blogai. Kartais, kad yra klaida, kartais tai kodėl jums verpimo paplūdimio kamuolys arba smėlio laikrodis ar panašiai. Tačiau šiuo atveju, mes sąmoningai dėl kokių nors priežastis, norėjo spausdinti tą patį vėl ir vėl ir vėl. Arba tuo atveju, pavyzdžiui, žiūrėti, jūs norite daryti kažkas vėl ir vėl ir vėl. Tiek begalinis kilpos gali prasmės. Ir tai, kaip C, mes galime išversti Visada kodą. Taigi, dabar tai vienas šiek tiek daugiau specifinių. Mes turėjome kartoti 10 kartų šį pareiškimą. Taigi while (true) nėra gana ten dirbti, nes tiesa yra visuomet tiesa. Taigi, jei mes vietoj pažvelgti C versija, dabar sintaksė gauna šiek tiek daugiau paslaptingas. Bet turi būti sąžiningi, kai jūs pradėsite matyti, visa tai gauna gana susipažinę greitai. Taigi, tai yra tai, kas vadinama už linijos. For ciklas vyksta pasakyti kompiuterio kažką daryti vėl ir vėl ir vėl tol, kol šie dalykai yra tiesa. Dabar ką mes turime galvoje, kad? Na, yra trys dalys kilpa, ir mes ketiname grįžti prie šio kontekste faktinės pavyzdžiai vienu metu. Taigi nesijaudinkite, jei jis ne visai nuskandinti į visus iš karto. Bet int i = 0, ilga istorija trumpa, sakydamas, duok man kintamasis, kuris tipo sveikasis skaičius, todėl man duoti numerį vadinamas i ir inicijuoti iki 0. Tai duok man kaip Algebrinė kintamasis X ir inicijuoti 0. Tačiau šiuo atveju mes vadinami Tai aš. Tada per vidurį, ji sako, man yra mažesnis nei 10. Tai pasako kompiuteriui, šią stuff taip ilgai kaip aš yra mažesnis nei 10. Ir, žinoma, prasideda mažiau nei 10, nes jis prasideda nuo 0. Tada galiausiai, jūs galite turbūt atspėti, ką aš + + priemonėmis. Tai šiek tiek sintaksę, kad tik reiškia, prieaugio i. Taigi pridėti 1 i, vėl ir vėl ir vėl. Ir taip, kaip matysime šio ciklo, šį sintaksė, o, vykdo tiksliai tą patį, kad, tiesą sakant, Scratch buvo tiesiog daug lengviau išreikšti. Pakartoti 10 ir baigsite. C, ir daugelyje programavimo kalbų, mes turime būti šiek tiek daugiau pamokantis į kompiuterį ir iš tikrųjų nurodyti kažką panašaus į tai. Bet mes grįžti į šio ir kitų sintaksė. Ką apie kintamiesiems? Nulio, mes turėjome kažką panašaus į šiuos oranžinės blokų, kur galėčiau paskelbti kintamąjį. Tegul savavališkai skambinti jai pakenkti. Leiskite inicijuoti 0, o tada tegul amžinai kažką daryti. Šiuo atveju nulio aš sakau skaitiklis, todėl katė ketina turėti šiek tiek kalbos burbulas, kad kalbėjimo skaičių, kad į šį kintamąjį rodiklį. Ir tada mes turime pakeisti skaitiklį 1. Taigi visa tai yra įvyniojami viduje amžinai spyna. Taigi, mes jau dabar besiremiančios C versti. Vienas iš būdų mes galime padaryti, kad tai yra. Duok man sveikasis skaičius, vadina jį skaitiklis. Inicijuoti iki 0 ten pirmoje eilutėje. While (true), todėl aš vagia, kad idėja tik akimirką atgal, eiti į priekį ir atlikite šiuos veiksmus. Atsispausdinti skaitiklis, tada prieaugio skaitiklis vėl, ir vėl, ir vėl. Ir vėl + + tiesiog reiškia, 1 Pridėti į kažką. Bet yra naujas gabalas sintaksė čia. Ką šokinėja kaip nėra tarp mūsų ankstesniuose pavyzdžiuose? Taip, tai% d. Taigi, gal galite daryti išvadą, ką tai daro, tiesą sakant, remiantis apie tai, kas įbrėžimams blokas daro. Bet vėl C, mes tiesiog turime būti šiek tiek daugiau ypač kai jis ateina į išreikšti save. Taigi printf ("% d \ n"). Na dauguma, kad mes galime išmesti kaip pažįstamas. Kabučių tiesiog reiškia, kad jis eilutė, Backslash n yra tik nauja linija. Taigi vienintelis naujas dalykas čia yra% d. Ir visa, kas yra vietos rezervavimo ženklas. % D pažymėti dešimtainį skaičių. Ir% d tai kompiuteris, įdėti dešimtainį skaičių. Na, ką numeriu jūs norite įdėti? Na, kaip jūs galbūt gali daryti išvadą, po kablelio, mes sakome, skaitiklis, tai kintamojo pavadinimas, kuris deklaruojamas arba sukurta pora linijos anksčiau. Kad tai tik C būdas prijungti į kintamąjį į eilutė dinamiškai. Nes priešingai, jei aš buvo, o ne padaryti kažką panašaus tai, printf ("skaitiklis"), kas tai programa, o ne padaryti, matyt? Tai bus tiesiog atspausdinti "skaitiklis". Kuri yra ne poveikis, kad aš noriu. Man reikia pakeisti tam tikra skaitinė vertė. Taigi, mes pamatysime, kad funkcijos tada, kaip printf, gali užtrukti ne tik šiek tiek atskiri argumentai, pavyzdžiui, "Hello World". Jie gali būti citata Unquote kablelį, tada kai kurių kintamųjų, , kad bus gauti įjungtas į, kaip matysime ankstesnę eilutę per šių% gestų vietos rezervavimo ženklai. Na, kas apie Būlio išraiškos? Būlio išraiškos buvo šios vertybės, true arba false. Taip arba ne. 1 arba 0. Įjungti arba išjungti. Taigi nulio, jie atrodo, kaip šis, ir pastebėsite, kad iš apačios blokas čia iš tikrųjų yra jungtukas du mažesnius blokus. Taigi I rūšies tempia ir nukrito tris įspūdį kartu padaryti, kad ilgiau įspūdį, kad aš gali perteikti idėją, kad aš noriu, kad x negali būti mažesnis nei Y ir Y mažiau nei z. Ir todėl aš gali versti šias dvi atskiras eilutes taip. Viršutinis gali būti labai funkcionalumą lengvai išverstas į C, tik su x yra tik mūsų būdas pasakyti, C suteikti man prieigą prie funkcijų, kad kažkas ją parašė. Ir šiuo atveju man rūpi, nes aš noriu printf. Dabar mes int main (void). Taigi tai yra vienas iš šių dalykų, atvirai, kad ir 0 dieną, gana daug aš zonoje out rūšis, nes tai tik neįdomu intelektualiai, kai sintaksę. Bet dabar žinome, kad funkcijas, kitaip žinoma kaip procedūrų ar metodus, paprastai gamina tam tikrą vertę. Jie kažką daryti. Jie sugalvoti atsakymą. Jie gaminti produkciją. Taigi int šalia pagrindinės yra tik mūsų stenografistų būdas pasakyti kad ši funkcija, ši procedūra galiausiai duos jums atgal numerį. Ir kodėl taip yra, mes grįžti į. Pagrindinis yra tik numatytasis pasauliniu standartu pagal nutylėjimą funkcija, kuri ketina gauti C programos, kai vykdomas jį paleisti. Void tiesiog reiškia tai, ką, pagrindiniai trunka ne argumentai, šiuo atveju. Taigi, aš super aiškus. Nėra jokių ten stygos, nėra jokių kablelių. Void reiškia, kad nėra argumentų to main. Dabar galiausiai, laimei, dvi paskutinės eilutės yra susipažinę. Viduje klamrami mes printf ir mes turime grąžinti. Ir grąža yra natūra gaila, kad mes turime padėkite jį ten, nes šiuo atveju tai ne daro viską, kad daug interesų. Tačiau į kompiuterinę programą, kai funkcija grąžina 0, tai reiškia, kad viskas yra gerai. Nieko nutiko. Priešingai, jei funkcija grąžina 1 ar neigiamą 1, arba neigiamas 1337, arba, pavyzdžiui, kad kai kurie atsitiktiniai skaičiai, kad paprastai reiškia, kad iš tikrųjų įvyko klaida. Taigi, jei jūs savo Mac ar kompiuteriui, jei jūs kada nors matė kai erzina pranešimas, nes jūsų kompiuteris sudužo arba sušaldyti, ir yra paslaptingas klaidos pranešimas, ir tada kai kodas, kaip sistemos kodas 1,2,3,4, kai skaičius, kad paprastai yra detalus pasakyti dauguma mumyse, bet tai, ką kai kurie funkcija arba kai programa iš tikrųjų sugrįžo, ne nulinės vertės. Ir tai privalumas yra tai, kad 0 reiškia taip pat ir tada jūs iš esmės turite begalę dalykų, kad gali suklysti. Kuris yra, kodėl jie pasirinko 0 gera ir ne nulinė vertė blogai, kaip mes netrukus matysime. Taigi eikime į priekį ir rašyti. Taigi priminti, kad kitą dieną aš naudojamas mano Mac atverti terminalo langą, tada aš atvėrė teksto programą, kaip TextEdit, ir aš pradėjau rašyti tam tikrą kodą. Gerai, kad viskas gerai. Bet jūsų patirtis bus kitaip "Mac" arba Solaris kompiuterio, Linux kompiuterių, nepriklausomai nuo operacinės sistema jums atsitiktų būti naudojant. Ir taip, žinoma, tai, ką mes vietoj naudoti yra kažkas, vadinamas CS50 prietaisą. Taigi CS50 Appliance gabalas programinės įrangos, yra atsisiunčiama kuri leidžia jums paleisti operacinę sistemą, vadinamą "Linux", specialiai Fedora Linux į savo Mac arba PC. Ir jums tai padaryti, atsisiųsti kažką vadinama hypervisor. Taigi, visa tai bus dokumentuojami problemą, 1. Ir jums bus vadovaujamasi į tai, ką jums reikia atsisiųsti. Bet galutinis rezultatas, ar turite Mac arba PC, parsisiųsti kai laisvos programinės įrangos. Jūs tada atsisiųsti CS50 Appliance, ir jums pasakyti, kad nemokama programinė įranga - hypervisor - CS50 Appliance lange savo kompiuteryje paleisti. Ir kas atsitinka, tai. Aš jau pastebėsite čia, kas atrodo, kad darbastalio aplinka. Ir leiskite man iš tikrųjų trauktis šį vieno langelio ". Taigi tai dabar yra mano Mac, čia su šiek tiek langą ir viduje šio lango atsitinka būti visiškai kitos operacinės sistemos. Iš tiesų ten tai start meniu žemyn čia, primenantis Langai, kad yra visa krūva antriniuose meniu, įskaitant nuoroda į CS50 vadove, išsiskleidžiančiame langelyje ir panašios. Ir ką ši aplinka dabar yra standartinė aplinka kad mums visiems dabar gali naudoti, kad nesvarbu, ką jūsų kompiuteris yra tai, ką jūs įdiegėte apie tai, kokia versija Mac OS arba Windows vykdote, mes visi dabar turi ta pati aplinka. Ir dabar šioje aplinkoje gali pradėti rašyti tam tikrą kodą. Taigi, aš ruošiuosi eiti į priekį ir atidaryti programą, pavadintą gedit. Tai yra panašus į Notepad.exe arba TextEdit "Mac". Ir tai tik super paprasta teksto redagavimo programa kad atrodo taip iš pirmo žvilgsnio. Dabar pačiame viršuje, turiu baltą paletę apačioje šis juodas langas, kuris sako jharvard @ prietaisą. Ir tai todėl, kad vartotojo abonementą, kad mes iš anksto sukurtą visiems vadinamas John Harvardo. Jis turi aplanką, kuriame visi jo failus ketinate eiti, ir čia, kur mes galime pradėti rašyti tam tikrą kodą. Taigi leiskite man eiti į priekį ir tik šiek tiek padidinti, ir aš ketina padaryti # include , int main (void), ir tada aš ruošiuosi daryti printf ("Hello World") ; Return 0. Dabar tai yra gana juoda ir balta. Leiskite man eiti į priekį ir padaryti vieną dalyką mokyti gedit, ką aš iš tikrųjų daro. Leiskite man eiti Įrašyti kaip. Aš ruošiuosi pasirinkti kairėje pusėje čia jharvard. Taigi dar kartą, net jei jūs niekada nesinaudojo Linux prieš, tiesą sakant šių dienų, visi jie yra perduodant į iš esmės tos pačios rūšies sąsaja - "Mac OS", "Windows" ir "Linux". Todėl aš nusprendė jharvard namųaplanko čia. Ir aš ruošiuosi išsaugoti šį failą kaip hello.c. Taigi, pačiame viršuje, aš įvedėte hello.c pavadinimų C programą su C pratęsimo kas yra įprasta praktika. Ir aš paspauskite "Išsaugoti". Ir dabar, kas malonu, kad aš veiksmingai mokoma gedit, kad tai C programa. Atkreipkite dėmesį, kad mano juoda ir balta tekstas dabar spalviniu kodu, arba sintaksė pabrėžė, kuri tiesiog atkreipia mano dėmesį į skirtingos semantinės programos dalis. Paliko ten, viršuje, kaip mano programos gauti daugiau sudėtingas, aš ketina turėti visų dalykų, aš raštu santrauką. Taigi, kad jis ten. Taigi, leiskite man dabar nutolinti ir eiti į šio terminalo lange. Taigi tai yra galbūt naujas daugeliui žmonių. Jei Jūs niekada naudojamas komandinės eilutės aplinkoje, jūs niekada naudojamas DOS, ar Jūs niekada naudojamas Linux, ar jūs niekada atidarytas Mac OS terminalo langą, ten yra daug dalykų galėtų padaryti su GUI, pavyzdžiui tokius kaip parodymas ir paspaudę, vilkdami, ir nuleisti, ir panašūs, tačiau paprastai žinoma, informatikos pasaulyje - naudodami komandų eilutę, kur jūs neturite pelę paprastai, jūs turite tik klaviatūra, yra iš tikrųjų daug galingesnis nei sąsaja, kai jums prisitaikyti prie skirtingų komandų. Ir jūs tarsi išsilaisvinti reikia atkreipti ir spustelėkite ne viskas. Taigi gedit mes rūšiuoti turėti geriausią iš abiejų Pasaulių. Mes galite nuvilkti tekstą, mes galime matyti gražus ir spalviniu kodu. Bet kai ateina laikas paleisti mūsų programą, mes kartais galime tiesiog naudokite nedidelį langą. Taigi, aš ruošiuosi eiti į priekį ir tai padaryti. , Apatiniame juoda ir balta langą, aš ruošiuosi eiti į priekį ir rašyti Apsukite metalinis garsas. Apsukite metalinis garsas yra kompiliatorius vardas. Tai programa, kuri konvertuoja savo šaltinio kodą taip, į objekto kodas. 0s ir 1s, kad mes matėme trumpai praėjusią savaitę. Prisiminkite, praeitą savaitę, mes pažadėjo, kad mes ketiname eiti kažką panašaus į tai - mums reikia kažkas panašaus į tai - ir tai tikrai nėra kažkas, kad žmogus vyksta padaryti rankiniu būdu. Taigi, vietoj to, mes ketiname naudoti programa, ir kad programa šis atvejis vadinamas Apsukite metalinis garsas. Ir mano programos pavadinimas yra hello.c. Taigi, siekiant surinkti hello.c iš išeities kodo į objekto kodas arba 0s ir 1s, jis turėtų pakakti tiesiog padaryti ir paspauskite "Enter". Gerai, niekas, atrodo, atsitiko. Bet aš žinau, dabar, ar iš praeitą savaitę, kad numatytasis pavadinimas kvailai vadinama programa, parašyta C, a.out. Labiausiai neįdomu vardas, kurį gali sugalvoti. Yra pirmoji abėcėlės raidė, tai, kas buvo išvesti, bet tegul bus taip. Tai mano programa, o dabar taškas įstrižas brūkšnys, kaip matysime, yra iš tikrųjų tik saugumo funkcija rūšiuoti, nes a.out yra programa, aš parašiau. Jis neateina su savo kompiuteriu, tai ne Program Files. Tai ne "Mac OS" Applications aplanke. Man reikia itin tiksliai su kompiuteriu, ir pasakyti, ši programa, a.out, yra šiame aplanke, einamojo katalogo. Ir tai, kaip jūs atstovaujate tai, kaip šis aplinkoje yra taškas reiškia bet kokio aplanko, kurį šiuo metu esate in Ir tt. / Tiesiog reiškia paleisti a.out dabartiniame aplanke. Ir aš paleisti su "Enter", ir voila, mano pats pirmas programos. Dabar leiskite man žengti žingsnį atgal. Šis langas yra šiek tiek mažas, ir suprasti, kad apačioje liko prietaiso čia yra kita piktograma. Vienas iš jų yra "Chrome", kuri turėtų būti pakankamai susipažinęs, tik interneto naršyklė viduje prietaiso. Ir tai yra tik juoda ir balta piktograma didesnis terminalo langą. Taigi, jei jis gauna šiek tiek erzina, rūšiuoti turėti tik ši maža maža lango gabalas, su kuriuo bendrauti su programomis, Vietoj to mes galime tai padaryti. O dabar leiskite man pradėti rašyti mažai greičiau būti susipažinę komandos. ls. Taigi LS yra komandų sąrašą. Mac OS arba Windows galėtumėte paprastai dvigubai pelės mygtuku spustelėkite aplanką, tada, voila, jūs matote iš įvairių failų ir aplankus. Komandinės eilutės aplinkoje, kur jūs galite tik tipui komandas arba tekstas, ls yra lygiavertis. Taigi, parodykite man, kas yra šiame kataloge. Dabar yra daiktų krūva, kad čia tiek mažai susipažinę ir šiek tiek susipažinę. , Tačiau atkreipkite dėmesį, kad kaip ir "Windows" ir "Mac OS jharvard darbastalio aplanką. Taigi visus, kurie yra ant mano darbastalio piktogramos atsitikti būti tame aplanke. Yra atsisiuntimų aplanką, stuff, kad Chrome "gali įdėti ten. "Dropbox". Todėl įrenginys ateina su built-in paramos ZMI kad per semestrą, galite sinchronizuoti su savo ZMI sąskaitą, kad visi iš jūsų programų kopijos. Jie prieinami dėl kitų savo kompiuteryje. Jei kas nors kada nors negerai su prietaisu, galite labai lengvai atkurti ZMI. Taip, kad aplankas ten. Yra du failus, kad aš padariau - hello.c a.out. Ir tada į dešinę, yra keletas kitų aplankų, kad mes gauti link semestro pabaigoje, su interneto programavimas. Taigi, kai aš. / A.out, įveskite, kad sako eiti į katalogą aš, dabartinę direktoriją ir paleiskite programa, vadinama a.out teisę ten. Viskas bus gerai, kad gražus ir geras, bet tai dar ne viskas, kad įtikinamų parašyti programą, pavadintą padėti a.out. Taigi, mes galime iš tikrųjų tai padaryti šiek tiek kitaip. Taigi, užuot tiesiog veikia Apsukite metalinis garsas, hello.c Pridėkime tai, kas vadinama komandinės eilutės argumentas. Taigi, komandų eilutės argumentas, arba šiuo atveju jungiklis yra tik kitas žodis ar frazė, kad įvedate greitai po programa, kurią norite paleisti. Taigi šiuo atveju, Apsukite metalinis garsas yra programa, aš noriu paleisti, o reiškia išvesties failas, kuris nebėra vadinamas a.out. Išvesties failą pavadinimu hello, padaryti kaupimo paskutinis žodis ant linijos, hello.c. Taigi trumpai tariant, tai yra labai menkas gamybos patobulinimas, kuriuo užuot šią kvailai pavadintas failą a.out, Apsukite metalinis garsas dabar galiu padaryti-O labas, tada hello.c, ir tada paspauskite Enter. Niekas, atrodo, kad taip atsitiktų, bet vėl, panašiai kaip su 0 - niekas, atrodo, kad taip atsitiktų, tai reiškia, kad nieko blogo nutiko - tad dabar daryti ls, "Enter", ir iš tiesų aš dabar Apie programą. Taigi, jei aš įvesti Apie command not found. Gerai,. /. Taigi visiškai teisus. Todėl, kad aš parašiau šią programą, ir jis nebuvo su kompiuteris / hello, "Enter", reiškia, Aš dabar veikia hello. Taigi, kad jis ten. Dabar ką mes galų gale gauti daugiau ir daugiau komandų eilutės argumentai, kurie leidžia mums padaryti daugiau, bet tik tiems, kuriam šis tyrimas gali būti sena skrybėlę, leiskite man iš tikrųjų eiti į katalogas čia ir tiesiog suteikti jums kaip kitaip mes erzintoją gali eiti apie Hello world įgyvendinti. Leiskite man eiti į čia, ir aš norėčiau, kad jį atidarytumėte. Taigi, iš tikrųjų, aš norėčiau paaiškinti, ką aš darau, kad tai yra naudinga. Leiskite man atgal į viršų. Todėl aš tai daryti ilgai. Taigi pastebėti per dešinėje pusėje yra pora katalogų, kad keistai pavadintas source1m ir source1w. Tai tiesiog kvaila konvencija mes naudojame. Šaltinis tiesiog reiškia, kodą, 1 reiškia, kad tai pirmąją savaitę, ir m reiškia, kad pirmadienis, ir W reiškia, kad jis trečiadienis. Taigi nieko paslaptingas ten. Tai tiesiog sutrumpinimas notacijos. Šios mėlynos dalykų yra aplankai, kitaip žinomas kaip katalogų. Aš noriu eiti į tą aplanką dabar, ir įprastą kompiuterį Galėčiau tiesiog dukart spustelėkite aplanko piktogramą ir ten visi mano failai. Bet komandinės eilutės aplinkoje, galiu ne visai daryti kad, todėl vietoj, turiu rankiniu būdu pakeisite aplankus. Taigi, jei aš tipo CD ir source1m, Enter, pastebėsite, kad mano raginimas, baltai dalykas, kairėje, tiesiog pasikeitė. Ir iš tikrųjų, kai jis tik pasakė, skliaustus ir tada mažai squiggle, tildė simbolis, kad tik reiškė, buvau Džono Harvardo namų kataloge, Mano dokumentai, jo asmens bylos. Bet dabar skliausteliuose ji sako ~ / source1m. Tai tiesiog reiškia, kad aš į aplanką, pavadintą source1m , kad John Harvardo namų kataloge. Taigi, jei aš dabar noriu į sąrašą failus į šį aplanką, lengvai klausimas, aš tipo tik ls. Ir dabar matau visus failus, kad aš iš anksto sukurta šiandien paskaita, kurios visos arba kurių dauguma atsitikti, baigti c. Taigi leiskite man eiti į priekį ir paleisti programa, vadinama gedit holloway.c, kuri yra parašyta keletas atsitiktinių hakeris internete, kad atrodo šiek tiek panašus į šį. Ir mes neketiname eiti per šį vieną, bet detalė, bet tiems, patogesnis, ypač, jei norite priimti atspėti, ką ši programa daro čia. Būkite tikri, ar esate daugiau ar mažiau patogiai, mes ne gauti net šis dalykas rūšiuoti pagal pabaigoje šį semestrą. Tai kas klaidinančiu C konkursas, pavyzdys priemonė rašyti neaiškūs ieškote programą, kurią galbūt gali pralenkti kitų protingų žmonių, kurie panašiai bando rašyti dalykus ir parodyti, kad jie gali rašyti daugiau paslaptingas dalykų, nei jums. Taigi, tai nėra gerai parašyta programa nuo pavyzdys stiliaus perspektyva, tai yra programa, kuri pavyzdys laimėjo konkursą, žmonių bando neaiškiai ir abstrakčiai. Taigi, jei mes paleisti šį dalyką, leisk man eiti į mano terminalo lange, taip sakant. Taigi, tai juoda ir balta aplinka yra vadinamas paprastai terminalo langą. Leiskite man eiti į priekį ir kaupia jį. Aš ne ketinate naudoti Apsukite metalinis garsas, nes ši programa yra šiek tiek paslaptingas ir ji turi skirtingas sudarytojas, vienas vadinamas Persijos įlankos. Bet tai nėra tas pats. Kodą į objekto kodo. Ir dabar, jei aš paleisti a.out, ši programa jums tik pamačiau tai daro. Taigi, kad kolegos tais pačiais metais laimėjo šį konkursą. Šiaip ar taip, mes neketiname ta kryptimi, per se. Todėl galime iš tikrųjų bando dabar erzinti išskyrus tai, ką mes galime padaryti šių pagrindinių pastato blokus, kad vis daugiau ir daugiau įdomias programas. Taigi, mes parašęs programą, mes paleisti programą. Dabar mes galime iš tikrųjų supaprastinti ir nebereikia rašyti komandinėje eilutėje žodis Apsukite metalinis garsas. Pasirodo, mūsų programos gauti daugiau paslaptingas, mes galime arba sudėtingesnė, tačiau mes iš tikrųjų gali paleisti šią komandą. Taigi leiskite man grįžti į savo namų katalogą, taip sakant, leiskite man pašalinti rm Pašalinti komanda - Aš ketinate pašalinti failą pavadinimu a.out ir Apie. Ir dabar pastebėti komandinės eilutės aplinkoje, panašiai kaip ir GUI, jūs gaunate pasirodys. Aš negaliu spustelėti mygtuką, nors, aš turite įvesti Y taip, Y taip. Ir dabar, jei aš tipo ls vėl, pranešimas, kad tie, žalia programos - a.out ir hello dingo. Saugokitės rm. Jis gali daryti blogų dalykų, kaip jūs galite, perkelkite dalykų, savo krepšio. Taigi dabar eikime į priekį - ir galėčiau tai padaryti - Apsukite metalinis garsas-o hello, hello - Aš jau nuobodu įvedę šią komandą. Nors aš įvedėte jį šiek tiek greičiau. Taigi, mes galime vietoj padarysiu Apie. Todėl įsitikinkite, ne kompiliatorius. Tai tiesiog draugiškas programa, kuri ateina su Linux, šiuo - operacinė sistema - kuri automatizuoja procesą sudarant programas. Taigi vietoj prisiminti, Apsukite metalinis garsas-o failo vardas ir tada taip toliau, ypač kai tas linijas gauti ilgiau ir ilgiau, galiu tiesiog parašyti padaryti. Ir tai vyksta išspjauti visa krūva stuff, kad mes galų gale pamatyti šį semestrą. , Bet pastebėsite, dabar, jei aš tipo LS, hello is mano katalogo. Ir iš tiesų aš galiu jį paleisti. / Hello. Taigi tiesiog automatizuoja procesą, kas buvo, šiuo atveju, daug ilgesnis, sudėtingesnis komanda. Taigi, mes ketiname pradėti naudoti markę, tik todėl, kad daug patogesnę naudotojui. Bet dabar galime padaryti įdomią programą nei tiesiog pasakyti labas. Taigi, programos, mes jau parašyta, iki šiol yra pagrindinis. Kad tik numatytasis dalykas, kuris prasideda viską išjungti. Tačiau yra ir kitų funkcijų, iš ten, taip pat ir stdio.h yra dalykas, kad mes matėme ne iš mūsų geriausių byla prieš, ir tai, kas vadinama standartinėje bibliotekoje. Viduje standartinėje bibliotekoje yra visa krūva funkcijų , kad kažkas parašė, ir mes galime pradėti naudoti šias funkcijos rašyti daugiau įdomių programų save. Taigi leiskite man grįžti prie prietaiso. Aš ruošiuosi uždaryti šį langą terminalo. Aš ruošiuosi uždaryti rašė tai, ką mes anksčiau, ir tiesiog eiti į hello.c, ir pastebėti, dabar galiu padaryti. Hello world yra ne visi, kad įdomus; Norėčiau pritaikyti šią programą sau. Taigi, užuot sakydamas pasaulį, aš ruošiuosi eiti į priekį ir pasakyti - Aš galėčiau įvesti David - tačiau iš tiesų tai yra tarsi iš esmės tas pats. Tačiau pabandykime šią vietos rezervavimo ženklo idėją. Prisiminkite, kad C, o printf mes turėjome šias vietos rezervavimo ženklai, ir yra daugiau nei tik% d. Taigi,% d, greitai normalumas patikrinimas. Gerai, dešimtainis skaičius, kad viskas. Skaitmenų po kablelio, štai ir viskas. Taigi% c, kaip mes susidurti, bus simbolis. Įdėti simbolį, raidė nuo a iki z, ar skyrybos simbolis. Vienas simbolis,% f, kas nors žino, iš kitų kalbų? Taigi slankaus kablelio reikšmė. Realusis skaičius. Taigi, ne dešimtainis skaičius - iš tikrųjų tai yra realus skaičius su kablelio, ir kai kurių skaitmenų skaičius į kairę ir teisė juo. % S, eilutė. Kad vienas mes ketiname pamatyti gana dažnai. Eilutė, vėlgi, yra tik žodis, frazė, seka atskirus simbolius. Ir galiausiai, LLD? Taigi tai yra daugiau kampe bylos. Ilgo dešimtosios dalies. Taigi, jei norite ne tik skaičių, kad tai dideli, nori didesnį skaičių, kad jūs ketinate turi nurodyti kompiuteris, kad jis iš tikro dydžio. Taigi leiskite įgnybti tai šiek tiek. Užuot tiesiog sunku Dovydo kodą, leiskite man šiek tiek dinamiškai pasakyti% s. Taigi įdėti% s, kuris yra vietos rezervavimo ženklų eilutę. Tada leiskite man padaryti kablelį, o tada "Dovydas" čia. Dabar tai yra ne visi, kad intelektualiai įdomu, nes aš padariau dabar tikrai sukurti daugiau darbo kompiuterio. O ne pasakyti kompiuterį visi vienu metu, aš dabar suprantama, tai padaryti, ir čia įterpti eilutę, galų gale, kablelį, čia yra, kad eilutė. Taigi, tai nėra ryškesnis pagerėjimas, bet tai bent žingsnis link įdomesnio programą. Nes dabar, leisk man eiti į priekį ir padaryti šį langą šiek tiek didesnis, leiskite man eiti į priekį ir paleisti make Apie. Ir dabar,. / A.out nėra darbo, tai kodėl? Gerai, dabar ji vadinama hello. Taigi dar kartą, o taip pat su-o Apsukite metalinis garsas, pervardyti programa būtų kažką įdomiau. Ir voila: dabar ji sako Apie Davidas. Viskas gerai, dar kvailas programa. Taigi dabar galime grįžti čia ir įvesti sąvoką kintamojo. Ar nebūtų puiku, jei aš galėtų paskelbti kintamąjį kurio tipas yra STRING? Ir kintamojo vertė iš tikrųjų ateina iš vartotojo jis pats. Taip savavališkai, aš ruošiuosi paskambinti savo kintama s, kuri yra tik bendro konvencija, kai jūs turite vieną kintamąjį, vadinamą eilutę. Aš ruošiuosi daryti lygybės ženklą, ir tada aš ruošiuosi skambinti funkcija vadinama GetString. Taigi GetString nėra kažkas, kad yra integruota į C. Tai funkcija, kuri CS50 darbuotojai parašė, tikrai tik Pirmasis iš jų porą savaičių, supaprastinti procesą gauti vartotojo įvesties ir gauti vartotojo įvesties forma stygos, arba numerius, ir tokių. Taigi GetString kaip printf, tačiau akivaizdu, o ne spausdinti ji ketina daryti tai, ką sako jos pavadinimas, gauti eilutę. Bet naudoti GetString, mes ketiname padaryti pakeitimą čia toliau. Taigi intuityviai, ši programa, tikiuosi, vyksta kažkaip gauti iš vartotojo eilutę, tada kas tai ketinate daryti su ta eilutė, vadinama? Tai tiesiog ketinate spausdinti, tiesa? Dar neturi skatinti programa, nes visa tai vyksta padaryti, tai prijungti į automobilio vertę į tai, kur% s sako, kad jis turėtų eiti. Taigi, tegul bent jau matyti kaip tai veikia praktikoje. Leiskite man išsaugoti ir nutolinti. Dabar mano terminalo lange apačioje, vienas nedidelis gabalėlis, leiskite man dar kartą padarysiu Apie. Gerai, ah, damn, aš gavo visa krūva klaidų. Leiskite man slinkti aukštyn, ir matome mūsų pirmasis - tad iš tikrųjų tai padaryti dar daugiau lange, taigi jūs galite pamatyti, kaip blogai aš įsukus todėl įsitikinkite, hello. Gerai, kad nelaimė, tiesa? Aš parašiau tris eilutes kodo ir jis man davė 12 klaidų. Tad kodėl tai yra? Taigi, laimei, dažnai, kai pamatysite daug, daug klaidų spjaudytis iš karto, tai tikrai tik todėl, kad jūs supainiojo kompiuterį čia. Ir ji vis dar painiojama iki to laiko jis gauna čia. Ir todėl ji tik pradeda užkliuvimo ir susigundyti ir spjaudytis iš dar baisesnių dalykų, nei iš tiesų. Taigi apskritai, visada pradėkite viršuje. Taigi pačiame viršuje raudona, pavyzdys tai klaidos pranešimas. Naudoti nedeklaruoto identifikatorius eilutę, aš reiškia standartas? Aš ne. Aš reiškė eilutę, bet taip yra todėl, taip pat žodis eilutė , kad aš nuolat žodžiu iš tikrųjų neegzistuoja, C arba. Tai kažkas, ką mes naudojame tik pirmą savaitę ar dvi čia, bet jis egzistuoja failą pavadinimu cs50.h. Taigi dabar, žinau, kad yra tas kitas biblioteka, kad darbuotojai parašė, kad tai buvo parašyta neseniai stdio.h. Bet viduje cs50.h apibrėžimas, sinonimas rūšių, kurios sukuria šį žodį eilutę. Taigi dabar leiskite man eiti atgal į mano terminalo lange. Aš ruošiuosi aišku visa ši netvarka Ctrl-L. Mes tiesiog nuvalykite viskas švarų, ir aš ruošiuosi eiti į priekį ir padaryti Sveiki dar kartą, "Enter". Kas nutiko dabar? Dabar visi šių klaidų nuėjo. Taigi, ką aš tikrai padaryti? Aš ką tik mokė kompiuterį, kad eilutė yra, ir tai tame faile vadinamas cs50.h. Taigi nustoti skųstis, nes dabar jūs žinote, kur rasti Ši funkcija deklaracija taip sakant. Kur jis egzistuoja pasaulyje. Taigi, dabar aš ruošiuosi eiti į priekį ir paleisti programą Hello. Man atrodo, kad begalinis ciklas, nieko, kas vyksta. Taigi man reikia tipo kažką čia, tiesiog. Mano programa kodą pirmoje eilutėje GetString. Taigi tai tiesiog laukia man gauti eilutę. Taigi šia prasme taip, tai yra begalinis ciklas. Matyt GetString yra numatytasis elgesys, kad mes rašė - darbuotojai - , kad tiesiog sako, laukti ir laukti ir laukti ir laukti ir laukti, tol, kol vartotojas suteikia jums eilutę įvedę kažkas in Taigi leiskite man eiti į priekį ir tipas D-A-V - i-d, įveskite. Ir ten yra, hello Davidas. Dabar tai atrodo, kad tai tik aktas? Leiskite man eiti į priekį ir įvesti Tommy. Įveskite, gerai, atrodo, kad reikia dirbti. Darbai Rob, darbų - Zamyla, veikia gerai. Taigi jis ketina dirbti, greičiausiai. Todėl ji turėtų spausdinti, ką mes iš tikrųjų duoti, ir mes galime būti šiek tiek sunku čia. Pažiūrėkime, jei mes darome kažką panašaus Apie. Gali eiti per čia, galime pamatyti, kopijuoti, įklijuoti. Aš nesiruošia, kad būtų galima įklijuoti, kad daug kartų čia. Pasta, gerai, paspauskite SHIFT + CTRL + V. Taigi, kas galėtų atsitikti taip, kad blogai čia? Gerai, kad, segfaults. Taip žinosite, kad kai kurie iš jūsų ankstesnių sluoksnių paprastai, suteikiant kompiuteriai daug sąnaudų, kai jie tikriausiai nėra skirtas gauti ilgus vardus, pavyzdžiui, tai - blogas dalykų atsitikti. Iš tiesų, kad interneto pasaulyje, taip pat, tai atsitinka gana nemažai, , pagal kurią, kai jūs projektuojant svetainės, kai esate projektavimas "Facebook", kad jūs turite padaryti savavališkus sprendimus iki priekyje, kaip ir kaip ilgai bus kažkieno "Facebook" vartotojo vardą? Arba kaip ilgai bus kažkieno vardas? Kaip ilgai bus kažkieno telefono numeris ir pan. Ir jei programuotojai blogų prielaidas, programos pertrauka nes bandote suteikti jiems daugiau produkcijos, daugiau sąnaudų o, nei jie turi atmintį. Arba RAM skyrė už tai, ir todėl, jei dabar aš paspauskite "Enter", kad programa iš tikrųjų dirbo, nes mes buvome į biblioteką ir mes iš tikrųjų tikimasi šiuo konkrečiu atveju. Bet be abejo, šį semestrą, jums parašyti bent vieną programa, kuri bus pasakyti šiuos žodžius. Prisiminti šiuos savaites nuo dabar, o gal dvi dienas nuo dabar. Segmentavimas kaltė yra blogas dalykas. Jis bus kreiptis į jūs darote kažką, kad kompiuterio nesitikėjo. Ir tuo atveju, jūs, programuotojas, nebuvo numatyti. Panašiai kaip, ką šis kojinių krūva, ten buvo įvairių kampiniai atvejais mes galime susidūrė su. Panašiai programas, jei nėra numatyti, kaip ilgai kažkieno vardas bus. Arba ką daryti, jei aš turiu piktybinis vartotojas, ir jo pavardė yra tikrųjų yra gana trumpas, bet jie tiesiog bando kad netvarka su manimi? Kas bus mano programos elgesys? Na, tokiu atveju, kažkas iš tiesų gali strigti. Todėl galime tai padaryti. Per 90 minučių, tai yra siaubingai ilgą laiką padaryti, kompiuterių mokslo. Kodėl mes gauti į įpročiai penkių minučių pertrauka čia, ir kai mes einame atgal, mes pasinerti į kai daugiau sudėtingų ir įtikinamų programas? Penkias minutes. Gerai. Taigi vienas greitai komentaras. Man buvo pasakyta, kad nors tai buvo ekrane prieš, kas išėjo iš mano burnos buvo cs50.net/rsvp. Tai yra teisinga. cs50.net/lunch. Taigi, dabar galite pabandyti RSVPing ši / pietūs. Bet tegul tai padaryti dabar. Taigi, tai buvo super greitas, super naujas iš žmonių daug. Sena skrybėlę kai kurie žmonės. Todėl galime atsukti tik akimirką, ir pamatyti, kaip mes turime tai hello world produkcija vos prieš akimirką. Taigi, pirma, ten tai CS50 prietaisą. Vėlgi, gabalas programinės įrangos, problemos 1 going to pasakyti jums, kaip atsisiųsti, kur jį atsisiųsti, ką spustelėkite ir taip toliau. Ir tada, kai jūs laikytis instrukcijose išdėstytų sąlygų, jums galės siekiant maksimaliai padidinti savo lange, ir jūsų Mac arba PC atrodys šiek tiek kažką panašaus į tai. Juodame fone, namų aplankas viršuje, kur visi jūsų failai, šiukšliadėžės viršuje kairėje, apačioje meniu. Taigi dar kartą, labai panašus dvasia Mac OS arba Windows net jei tai atsitinka būti "Linux". Taigi, ką mums kitą daryti? Na, mes pradėjome rašyti programas. Ir atšaukia iš praeitą savaitę, kad viskas, ko reikia rašyti programa yra paprastas tekstinis redaktorius, pavyzdžiui, "Notepad" arba "TextEdit. Atvirai, jūs netgi galite naudoti Microsoft Word. Tačiau blogi dalykai galų gale padaryti, nes tai labai Sunkioji sprendimas rašyti programą, taip pat jis bus išsaugokite jį netinkamu failo formatu. Bet tai tik teksto redaktorius, teksto redagavimo, tai viskas, ko reikia parašyti programą. Taigi CS50 Appliance, mes galime tai padaryti vienu paprastu būdu. Mes galime tiesiog spustelėkite šią piktogramą apačioje kairėje. Ir vėl, problema nustatyti 1 patars jums, ir voila - gausite šį juoda ir balta sąsaja, kurioje mes galime pradėti rašyti kodą. Taigi pradėkime rašyti super paprastą programą iš naujo. Aš ruošiuosi eiti į failą, išsaugokite, ir aš ruošiuosi skambinti tai, tarkim, hello2.c. Ir aš tiesiog sakau, įdėkite jį paspaudę ant jharvard savo namų katalogą, man nerūpi jei vienas eina. Ir pasirinkite Išsaugoti. Ir dabar galiu pradėti rašyti savo programą. Ir prisimenu iš anksčiau, kad aš turiu parašyti int main (void). Padidinti viršuje kairėje. Ir tada aš noriu pasakyti printf paimti du. Ir dabar naujos eilutės, netoli citata, uždarykite skliausteliuose, kabliataškiu. Ir tada aš einu į mano terminalo langą, įtraukti į gedit, tiesiog dėl patogumo. Ir aš ruošiuosi eiti į priekį ir rašyti, kad Apie bet ne Apie atskirai, hello2. Taigi, mano byla vadinama hello2.c. Mano byla, todėl turėtų būti vadinamas hello2, šiuo atveju. Velnias, ką aš padariau ne taip? Viskas gerai, todėl aš aiškiai neįtraukė linija, jei jūs prisimenate, ką ankstesnes programas atrodyti. Bet pažiūrėkime, jei mes negalime erzinti tai, išskyrus. Deja, dauguma žmonių, kurie rašo programas, su kuriomis mes rašome programos nereikia supaprastinti dalykų, kad gerai. Taigi, mes turime rūšies nugriebti per ką ne gana, kad pajusti čia ir pamatyti, jei mes galime suprasti, kas yra negerai. Pirmoje eilutėje sako netiesiogiai skelbiantis C bibliotekos funkcija printf tipo int. Gerai, supratau, dalimi. Bet atrodo, kad užuominos į tai, kad aš naudojamas printf negerai, kažkaip. Ir kokia prasmė tai negerai? Aš tiesiog nemokė kompiuterį, kad jis yra faile vadinamas stdio.h. Dabar turiu tik tik dabar įsiminti, kad printf yra į stdio.h, ir iš tikrųjų ten bus būti ir kitų funkcijas tame pačiame faile, kad mes priprasti prie. Taigi dabar leiskite man eiti į priekį ir paspauskite Ctrl + L, tiesiog išvalykite, kad toli, atlikite dar hello2, ir voila. Ir šią komandą vėl, daugiau sudėtingų, nei mes paaiškinti šiandien tikslais. Tačiau ji paleisti Apsukite metalinis garsas, ir Apsukite metalinis garsas kodą ir išspjauna 0s ir 1s. 0s ir 1s šiuo atveju yra vadinamas ką? Gerai, objekto kodo. Ir byla, kad jie yra vadinamas, todėl, hello2, šiuo atveju. Nes mano tekstinis failas buvo hello2.c, "Enter". O dabar turiu du šauktukas, šauktuko taškas, šauktukas. Viskas gerai, todėl dabar mes turime galimybę gauti eilutes, matyt. Na, ką mes galime gauti iš vartotojų? Gerai CS50 bibliotekoje, yra kitų funkcijų, kurios ketina supaprastinti mūsų gyvenimą šių pirmąsias kelias dienas. GetChar, GetDouble, GetFloat, GetInt GetLongLong, GetString. Na, leiskite laupti Pirmajame iš jų lengviausia. GetString tiesiog tai daro. Jis tiesiog sėdi ten, laukia, kad vartotojas galėtų įvesti kažką, ir, kai aš tipo kažką ir paspauskite "Enter", jį ar kažkas su tos vertės. Taigi, grįžkime tą pavyzdį, pamatyti, ką GetString daro. Leiskite man eiti į priekį ir atverti gedit, hello.c ir atšaukia ši teisė prieš pertrauką, tai kur mes nerašomas. Taigi tegul dabar erzinti, išskyrus šiek tiek išsamiau. Taigi 6 on-line, yra du dalykai, vyksta šiuo metu. Vienodas ženklas atskiriant pirmąją ir antrąją. Taigi kairėje pusėje lygybės ženklą, mes sakydamas eilutė-ai. Ir tada, tiesiog profanas sąlygomis, ką string s daro, do you think? Sukurti ką? Taigi tai sukurti eilutę, pavadintą ai. Dabar ką tai iš tikrųjų reiškia? Na, tai rezervuoti vietos eilutę vadinamas ai. Kad ne visai teisus. Kas tai yra daro? Bei kompiuterių, kaip jūs žinote, kietuosius diskus, tai yra, kai jūsų failai yra saugomi. Kompiuteriai RAM, ir tai, kur programos yra pakraunami o jie veikia. Taigi, kai jūs dukart spustelėkite piktogramą ir "Microsoft Word atidaro , "Microsoft Word", veikia, taip sakant, RAM, kuri yra elektroninė dalis kompiuterio. Ne fizinis, mechaninis dalis, kad verpimo, kur duomenys paprastai yra saugomi ilgą laiką. Taigi eilutė-ai yra gana daug pasako kompiuteriui, duok man pakankamai RAM, kad tilptų į eilutę. Dabar tai yra supaprastinimas bitų, nes Kaip didelis yra eilutė bus? Na, mes iš tikrųjų nežinome, dar taip per kelias savaites mes iš tikrųjų atsitraukti sluoksnį, kuris yra eilutė ir mes pasakysime, ką ji iš tikrųjų yra. Eilutę, dabar, yra tik gražus mūsų pasaulio supaprastinimas. Bet eilutė skelbia eilutę pavadinti S, dabar. Pareiškia eilutę. Ji pasilieka šiek tiek RAM vietos eilutę vartotojas yra apie tipą. Dabar pažvelkime dešinėje lygybės ženklą. Todėl ji sako GetString (). Ir šiek tiek normalumas patikrinti. Tai, kad nieko viduje skliausteliuose reiškia ką apie GetString? Tai užtrunka jokių argumentų. Tai yra, jūs jokiu būdu negali daryti įtakos jo elgesį. Kiekvieną kartą, kai jūs jį naudoti, jis bus gauti eilutę, ir viskas. Printf, priešingai, tikiuosi, jos elgesys nėra keisti kiekvieną kartą. Priešingu atveju, ji yra gana nenaudingas spausdinimo funkcija, jei jis daro tą patį. Jei ji visada spausdina Dovydą ar kažką savavališkai visą laiką. Taigi printf prasminga turėti argumentą. GetString nėra tikrai reikia argumentas, nes norėjau gauti eilutę iš vartotojo, ir tai, kas vyksta vartotojas pateikti dinamiškumą rašyti skirtingomis raidėmis kiekvieną prie klaviatūros. Taigi, ką GetString nereikia galiausiai? Pagalvokite apie tai, kaip šios mažai juodąją dėžę. Ir tai black box "neprisiima jokios įvesties, bet kai jūs sprogimo ant , ji išspjauna eilutę, kad vartotojo įvestą in Ir faktas, kad lygybės ženklas reiškia imtis kas yra išspjauti į dešinę ir į vidų kas kairėje. Taigi lygybės ženklas čia, ji iš tikrųjų nereiškia lygybė, o techniškai reiškia užduotį. Dešinėje vertę, ir įdėti jį į kintamasis kairėje. Taip, kad viskas, kad vyksta ten. Dabar 7 eilutėje, mes paskambinus printf. Taigi printf tikiuosi gauti šiek tiek nuobodu dabar. Taigi spausdinti suformatuoti eilutę. , Ką eilutė? Spausdinti, "h-e-l-l-o:% s ! \ N ". Viskas gerai, todėl tai, ką aš noriu plug-in% s? Tiesiogine prasme, kokia yra saugomas s. Taigi, šiuo atveju, mažai normalumas patikrinti, kiek argumentai nėra printf imtis? Gerai, išgirdau vieną. Aš girdėjau vieną kartą. Du, aš girdėjau du. Ir kaip apie tris? Gerai, trys? Puikus. Tris galimus atsakymus, iš kurių tik vienas yra teisingas. Taigi argumentai vėl turėti įtakos funkcijos elgesį. Praeityje, printf tik vieno argumento. "Hello World" buvo vienas argumentas. Tačiau dabar, pastebėsite, kai tai kablelis yra. Šis kablelis yra ne citata / citatos pabaiga, o tai reiškia hey printf, čia ateina antrą argumentą. Taigi daugumoje programavimo kalbų kablelių Atskirkite argumentai. Taigi atsakymas yra tikrai ne vienas, nes tai kablelis. Taigi minimaliai, printf, matyt, atsižvelgiant dvi argumentai šiuo metu. Bet čia yra galimybė apgauti klausimą, kas apie šį kablelio? Ar tai reiškia, kad ten tikrai trys argumentai? Tai, tai, ir tai. Taigi ne, nes tai kablelis yra viduje kabučių, kuri reiškia, tai tikrai tik anglų estetinis. Tai neturi nieko daryti su skaičiaus argumentai šioje programoje. Taigi tai kablelis yra už dvigubų kabučių. Ir tada grįžti 0. Dabar tegul tiesiog tarsi šį vieną tikėjimo šiandien, ir tiesiog žinau, kad kai yra atliekamas funkcijas vykdyti eilučių kodo, jie paprastai turėtų grąžinti tam tikrą vertę. Šiuo atveju, tik todėl, kad pagrindinis privalo grąžinti int, , kad tik taip, kaip kalba C darbai. Todėl, kad nieko nutiko, jaučiasi ši programa gerai, aš tik sunkiai koduojami return 0. Tačiau priešingai, ir aš ruošiuosi parašyti šį pseudo kodas dabar, panašiai kaip Juozapo padarė, kai mes padarėme kojinių pavyzdys praėjusią savaitę. Jei kažkas negerai - tai nėra tikrasis kodas - atiteko negerai, tada grįžti, tarkim, 1. Else return 0. Taigi tai yra, kur mes einame su šia. Tai nėra tikrasis C kodas, tiesiog Pseudocode. Bet tai, kaip jūs gali grįžti įvairios galimos reikšmės. Bet dabar aš tik ketina eiti į priekį ir return 0. Viskas gerai, bet iki šiol sintaksės, funkcionalumo klausimų, ar pan? Taip, atgal. Auditorija: [nesigirdi] David Malan: Ar galite kalbėti šiek tiek garsiau? Kodėl šią programą Return 0, ir? Auditorija: [nesigirdi] David Malan: O, kad nes aš tingus, atsiprašau. Nieko gero mokslo reakcija, grįžti 0. Galiu rūšies išgelbėti tai, sakydamas techniškai C, jei pagrindinis nėra aiškiai grąžina reikšmę, 0 bus grąžintas automatiškai. , Kas yra teisinga, aš ne tik slėpdama. , Bet aš turėjo padaryti jį šiuo būdu. Ne įdomus išsinešimui nei, kad nei mano klaida. Taip? Auditorija: Paprastai, kai įvedate tuštuma, tai reiškia, kad jums negrįžta kažką. David Malan: Teisingas. Jei vietoj to, galite nurodyti prieš funkcijos pavadinimą, instancija, tuščia, tai funkcija negrąžina nieko. Ir todėl aš tiesiog pasakyti, grąžinimo ar visai nieko, ir kad būtų nuoseklūs. Ir mes grįžti prie to. Ir tiesiog FYI, vienas su mokymosi sugavimus programavimo pasaulyje, kuris turi šimtus knygų ir šimtai svetainių, ten yra, jūs visada matyti įvairią sintaksę įvairių knygų skirtingų žmonių. Suprantu, mes darome viską, skyriuose ir paskaitas nuoseklūs. Bet kartais pamatysite prieštaringą sintaksę. Taigi, jei kyla abejonių, tiesiog paprašykite. Ir apskritai, mes pasirūpinsime paskaitų ir skirsniai beveik visada pateikti jį į teisingą kelią. Ir aš sakau, beveik visada, nes pagal Teisingumo Teismo punkte. Kiti klausimai? Auditorija: Ar% s egzistuoja ne prietaiso? DAVID Malan:% s egzistuoja už prietaiso ribų? Taip. Taigi,% s daryti su C. Tai, kad mes naudojame jį prietaisas iš esmės neturi nieko daryti su bruožai kalba, mes naudojame. Iš tiesų, praėjusią savaitę, kai mes naudojamas mano Mac, aš parašiau C kodas mano Mac. Aš galėjo naudoti% s mano Mac, ir jūs galite naudoti ją į Windows kompiuteryje, jei jums ją įdiegti kompiliatorių, pavyzdžiui, Iš "Microsoft Visual Studio. Taip:% s. Viskas, ką mes darome, viduje šio lango šiandien padaryti su C ir iš esmės nieko daryti su operacinės sistemos klausimą. Priešingai, juoda ir balta terminalo langą - kai Wpisuję dalykų, pavyzdžiui, ls, ir RM, ir CD , kad turi daryti su operacine sistema ir navigacinio aplink. Taip. Auditorija: aš reiškė bibliotekoje, su CS50 biblioteką. David Malan: Gerai, taigi, jei turite galvoje raktažodžių eilutę, kad egzistuoja tik CS50 bibliotekoje, teisinga. Kad neegzistuoja, C pati, kaip ir kitose porą savaičių išmesti CS50 biblioteką ir pradėti daryti viską nuo nulio save, taip sakant. Kiti klausimai? Taip. Auditorija: [nesigirdi] Davidas Malan: Geras klausimas. Yra komandos didžiosios ir mažosios raidės? Ir leiskite man padaryti skirtumą. Taigi komandos paprastai yra ne tai, ką mes rašyti apačioje lango, terminalo lange. Viskas čia būtų pareiškimų ar C kodas. Tačiau abiem atvejais atsakymas yra tas pats, taip. Tiek tų aplinkų C kodas viršuje ir operacinės sistemos komandinės eilutės apačioje, yra didžiosios ir mažosios raidės. Taigi jūs turite pasinaudoti GetString su kapitalo G, kapitalas S. Jūs turite parašyti printf visose mažosiomis raidėmis. Turite įvesti ls visose mažosiomis raidėmis. Taigi, beveik kiekvienoje situacijoje šį semestrą, atveju, faktas, klausimas. Taip. Auditorija: [nesigirdi] DAVID Malan: Ak, taip gerai, ką daryti, jei mes turėjome failą vadinamas hello.d. Taigi paaiškėja, D yra programavimo kalba. Ir taip, kai kuriais atvejais, mes iš tikrųjų galėtų parašyti programą to failo ir jis sudarytas, kad dėl mados. Mes galime ir iš tikrųjų, Trumpas atsakymas yra, aš nežinau. Taigi, mes ketiname tai padaryti. Leiskite man eiti į priekį ir sukurti naują failą. Ir nugara, sąžiningai apskritai, kai jokios abejonės, šį semestrą, ir jūs turite savo prietaisą arba kompiuterį atidaryti, eiti į priekį ir bandyti ką nors. Taigi, aš ketina išsaugoti failą pavadinimu hello.d. Išsaugoti šią. Ir aš ruošiuosi paleisti Apie Įveskite. Atrodė daryti išvadą, kad C buvo labiau tikėtina, nei d, ir šiuo atveju. Kiti klausimai. Taip. Auditorija: [nesigirdi] DAVID Malan: Gerai, sako, kad dar kartą. Auditorija: [nesigirdi] DAVID Malan: Kaip tu apie diagnozuoti, kad arba pagalba, kad? Taigi, labiausiai tikėtina, nes jie yra skirtingų kalbų, greičiausiai jums gauti visiškai skirtinga programa išvedamas. Jūs galėtumėte gauti visiškai skirtingus pranešimus apie klaidas. Ir taip pat tik pagal projektą, tai, žinoma, yra , netinkamas projektavimas sprendimas turi būti raštu du skirtingi kalbas su beveik vienodai pavadintų failų, tą patį katalogas, naudojant automatinis įrankis, pavyzdžiui, kad. , Kad aš taip pat gali stumti atgal ir pasakyti, per 15 metų tai daryti, niekada tokios klaidos. Gali atsitikti. Bet čia tik įvairūs, manau, logistikos įtvirtinimai. Plius klaidos pranešimas, kad galėtų įvykti, kad būtų galiausiai atskleisti, kokia yra problema. Bet įmanoma kampe atveju. Viskas gerai, todėl galime pristatyti tik kitų pora funkcijos čia dabar, kad mes galime pradėti kurti į daugiau kompleksinė programa. Taigi, visų pirma, matematikos. Taigi matematikos pavyzdžiai yra tiesiog rūšies paprasta, per pirmą savaitę. Tai ne pasakyti, kad visas programavimas yra apie matematika. Žinoma, suprasti įvairių funkcijų matematika, algebra visų pirma, yra gana svarbūs. Aukštesnio lygio CS klases, Tiesinė algebra, skaičiavimas ir panašiai. Bet suprasti, ką mes darysime šį pusmetį sumažina matematikos, ir tikrai ne aritmetika, savaime, bet tikrai tik logika ir kruopštaus mąstymo. Ir todėl šią sąsają, kad kompiuterių mokslas jau seniai turėjo ypač vidurinės mokyklos lygio, matematikos, šiek tiek klaidinantis. Nes dauguma programų, kad mes rašyti, tikrai, tarsi aukštesnio lygio ir sutelkti dėmesį į problemų sprendimo, kad tikrai, gali naudoti tam tikrą sudėtį, atimtį, ir įvairių matematinių formulių arba panašūs dirbiniai, , bet ne dienos pabaigoje, tai apie mąstymo, o ne tik įgyvendinimo, ką galėjo padaryti kaip TI skaičiuoklė vidurinėje mokykloje. Taigi, su ta sako, tegul dabar kažką daryti su šiomis matematiniai operatoriai, kurie egzistuoja todėl, kad mes galime kelionė per kai kurių pagrindinių aspektų programavimo, arba šiuo atveju C. Taigi, kaip CS50 biblioteka pasiūlė, ir šiandien mes tik naudojant GetString - ir per akimirką galbūt vienas kitas funkcijas - tačiau yra įvairių duomenų tipų kompiuterio. Tuo dienos pabaigos, tik kompiuteriuose žinoti 0s ir 1s. Tačiau primena, kad praėjusią savaitę, mes kalbėjome apie binarinės sistemos atstovaujant numerius, pavyzdžiui, skaičius 0 ir 1, ir 2, būdas, kaip iki 8 Nate vaizdo įrašui. Ir tada mes galime tikėtis daug didesnis, kaip mes ant scenos čia. Bet jei norite atstovauti ne tik skaičiai, bet raides, mes, žmonės, turime sugalvoti su kai savavališkai konvencijas, pagal kurią, jei dienos pabaigoje visi mano kompiuteryje yra gebėjimas išreikšti 0s ir 1s, gerai mes norime geriau 0s ir 1s modelius, kurie reprezentuoja standartizavimo skirtingi dalykai. 0s ir 1s modelis, kuris atstovauja raidę a. 0s ir 1s modelius, kurios atstovauja raide 'Z. Modeliai 0s ir 1s, kurios atstovauja mėlynai arba raudona, ar panašiai. Mes turime naudoti visi 0s ir 1s jų išreikšti save skirtinguose kontekstuose, įvairiais būdais, kurie nėra nebūtinai skaitinė reikšmė. Taigi atstovavimo, C turi skirtingus duomenų tipus, ir mes matėme vieną iš jų iki šiol. Mes matėme, int, ir kas ne pranešimas ekrane dabar yra eilutė. Eilutėje nėra, iš tiesų, yra C. Vėlgi, tai supaprastinimas mes pristatome pirmą kartą porą savaičių. Char yra individualių savybių. Plūdė yra realusis skaičius, su kablelio skaičiaus ir telefono numerius į , į kairę ir į dešinę nuo jos. Dvigubai yra kas, atgal iki fone? Taigi dvigubas yra dvigubai kažką. Prideda dvigubai daugiau tikslumo. Taigi, ką tai reiškia? Taigi kiekvienu iš šių atvejų, kad pasaulis turi rūšiuoti standartizuotas kiek bitų yra naudojamas vaizduoti kiekvienas iš šių dalykų. Taigi, jei jūs stebėjo Nate ASCII vaizdo jau dalis pset 0 arba vėliau šią savaitę jums, jūs tikriausiai žinote, kad ASCII - simbolių atstovybės - naudoti, kiek bitų? Ir galbūt net prisiminti iš mūsų demo praėjusią savaitę, kaip daug žmonių buvo ant scenos. Taigi, 7 arba 8, paprastai. Todėl paprastai 8, ir yra kažkas, vadinamas pratęstas ASCII, kuris naudoja visus 8 bitus, o ne 7. Bet apskritai, mes kalbame įgaliojimus 2, todėl šiuo atveju, 8. Taigi char programavimo kalba paprastai yra 8 bitai. Taigi int paprastai yra 32 bitai. Plūdė yra 32 bitai. Dvigubai paprastai yra 64 bitų. Ir ką tai reiškia? Tai reiškia, kad gali kelti didesnius numerius, arba tuo atveju, realiųjų skaičių, jūs galite turėti daug daugiau skaičių po dešimtųjų tikslumu. Daug daugiau tikslumo, kad šioje byloje. Dabar ilgai ilgai, deja, pavadintas. Taigi čia int, kuris yra 32 bitai. Yra ilgas, kuris, Ne, 32 bitų. Ir ilgai ilgai, kuris yra 64 bitai. Tačiau kai kurie iš jų yra atsižvelgiama į konkrečias aplinkybes, tai priklauso kokios kompiuteryje turite. Taigi apskritai, mes nurodyti namų darbus arba viktorinoje ji iš tikrųjų svarbu. Bet esmė yra ta, kad visų šių skirtingų atstovybės čia. Todėl galime iš tikrųjų pasinerti į programą. , O ne rašyti šį vieną nuo nulio, leisk man eiti į priekį ir atverti iš šiandienos šaltinio kodą - visa tai yra internete - jei norite Taisome aplink internete, ar grąža Trečiadienį prietaisą kompiuteryje, instrukcijos už kurias bus susieti kurso puslapyje. Čia super paprasta programa. Bet jis gavo šiek tiek kažką naujo viršuje, kad mes neturėjome anksčiau. Visai daug mėlynų eilučių teksto. Taigi šie mėlynos linijos sudaro komentarus. Taigi, tai labai naudinga, programos, kad būtų galima rašyti keletą pastabų sau, ar su kolegomis ar draugais, arba mokymo kolegos, kad tarsi apibūdinti, kas vyksta šį failą, bet neturi nieko bendro su C patį kodą. Nieko bendro su programa funkcionaliai, tai tik estetika. Taigi, kaip tai padaryti, C, jūs paprastai prasideda jūsų kometarus / * ir baigti savo komentarus * /. Ir jei jūs tikrai analinis ir kaip atkreipti rūšiuoti nuotraukas, tada jums reikia įdėti visai daug žvaigždžių, kad tu padarysi LITTLE BOX, kaip šis. Tačiau nė vienas, kad klausimai. Vienintelis svarbus dalykas yra pirmasis ir pats paskutinis. Tai yra tai, kas vadinama kelių eilučių komentarą. Ir tai tik žmogaus konvencija dažnai žvaigždes ir dėžutės dalykų kaip tai, jei turite daug laisvo laiko. Taigi, po to, kai parašiau kai kuriais komentarais, ateik faktiniai programos viduriai. Štai mūsų susipažinę # include . Ir tik greitai, tai yra būtina, ar nebūtina? Auditorija: Būtina. David Malan: Taigi tai tikrai nėra būtina. Tad kodėl, nors tai nėra būtina? Todėl nėra printf. Iš tiesų. Viskas, ką mes darome šioje programoje yra matematika. Taigi aš iš tikrųjų galite ištrinti, kad. Taigi, jūs ne visada turi apimti nieko programos viršuje. Todėl galime supaprastinti šį šiek tiek. Ir dabar pastebėti, ką ši programa daro. Nėra daug interesų. int x = 1. Na, kas tai daro? Na, manau, psichikos modelį iš anksčiau. Kairėje pusėje šią išraišką ką daro? Sukurti erdvę sveikasis skaičius. Taigi, kiek vietos? Na, mes atsitikti žinoti, dabar, kad tai 32 bitų. Anksčiau, eilutė buvo techniškai 32 bitų, bet daugiau ateityje. Tačiau int yra 32 bitai. Taigi, šis kairėje išraiška, int x tiesiog sako: hey operacinės sistemos, duok man 32 bitų RAM - kitaip žinomas kaip 4 baitų RAM - , kad galėčiau įdėti šioje erdvėje sveikasis skaičius. Kas sveikasis skaičius buvo norite įdėti? Na, tiesiog skaičių 1. int y gauna 2, ar tą patį dalyką, nors skaičius yra didesnis, didelė. Numeris pati yra dar tik 32 bitų. Tai tiesiog bitų modelis skiriasi atstovauti 1, palyginti su 2. int z dabar sako duok man dar 32 bitų, jį vadiname Z, ir įdėti 1 ir 2 yra sumavimas. Kad dabar "z", matyt, laikyti vertę 3 ir tada grįžti 0. Dabar šią programą, tai nieko daryti interesų? Taigi, ji iš tikrųjų nėra padaryti ką nors įdomus, bet prasme, nes kodėl? Tai daro šiek tiek matematikos. , Bet jis negrįžta atsakymą, į dešinę. Jis grąžina 0. Jis nespausdina atsakymą. Todėl ši programa iš esmės yra bevertis, nes jis yra dabar. Tai daro tam tikrą darbą. Ji ketina imtis tam tikrą skaičių sekundžių ar mikrosekundžių, į paleisti, bet jis nėra iš tikrųjų ką nors naudinga už žmogaus. Todėl galime iš tikrųjų dabar atidaryti math2, kur dabar aš iš tikrųjų spausdinimo rezultatą. Taigi tai taip pat gali būti padaryti iš mūsų ankstesniuose pavyzdžiuose. Jei aš noriu padaryti keletą paprastų matematikos, int x = 1, y = 2. z yra 1 plius 2. Ką tai vyksta atsispausdinti akivaizdžiai? Tik 3. Taip greitai normalumas patikrinti. Leiskite man pereiti į šį katalogą. Taigi cd source1m. Leiskite man eiti į priekį ir įveskite padaryti math2. Pranešimus apie klaidas išėjo, todėl leiskite man paleisti - ne a.out leiskite man paleisti math2. Įveskite. Ir iš tiesų, jis atspausdintas iš 3. Na tegul bent šis variantas atrodo. Į math3.c, dabar mes turime šį pavyzdį čia. Taigi tai vienas natūra įdomių. Taigi tai vienas čia, atsakymas ketina gauti 1 dalijamas iš 10 ir pastebėsite, aš paskelbė, kad ji kaip float. Kodėl aš noriu, kad ji būtų plūdė? Na, tai frakcija. Tai bus realusis skaičius. Taigi tai bus 0,1, tikiuosi - 10%, šiuo atveju. Ir ką tada norite spausdinti? Na, tai atsakymas. Ką gi, erzinti tai, išskyrus 1.. Taigi kairėje pusėje, paskelbti plūduriuoti, vadina jį atsakyti. Dešinėje pusėje, 1 dalijamas iš 10 ir įdėti, kad answer kintamojo viduje. Dabar, ši eilutė atrodo šiek tiek paslaptingas. Bet pastebėti kai kuriuos žinomus funkcijų. % Tai čia ateina vietos rezervavimo ženklas. f, čia reiškia, slankaus kablelio reikšmė, tiesiog realus numeris, kažkas su dešimtainiu tašku. 0,2 reiškia ką? Kiekvienas žino, iš ankstesnės patirties? Dviejų ženklų po kablelio tikslumu. Todėl mes nematė prieš tai, bet tai tik būdas vykdyti šiek tiek daugiau kontroliuoti printf ir posakis nesuteikia man 30 taškų, po kablelio, o ne duoti man tik 2. Ir tada eikime į priekį ir paleisti. Todėl įsitikinkite, matematikos 3, o dabar leiskite man paleisti 3 matematikos, įveskite. Ir kad tai nėra teisinga. Mes, atrodo, susidūrė su mūsų pirmasis tikras klaidą. Na, gal aš tiesiog ne ieško pakankamai arti. Taigi leiskite man eiti čia, ir leiskite man 20 dešimtainį kablelį taško vietos ten. Ir leiskite man sudaryti tai, kad math3, paleisti. Gana įsitikinęs, 1 dalijamas iš 10 yra ne 0. Taigi, kas vyksta? Na gerai, todėl iš tikrųjų ji neturi daryti su tai. Kad tai gera mintis. Tai tikrai tik sutapimas kad mes tai daryti. Bet tik įrodyti, kad tai yra ne tai, Aš grįžti kažką atsitiktine tvarka. Nedarykite to namuose, nes tai yra tiesiog neteisinga. Tačiau įsitikinkite, math3, leiskite man paleisti jį. Taigi yra nieko, ką aš grįžti, tik turi daryti , ką aš spausdinti. Bet aš girdėjau jį čia. Ką? Auditorija: Taigi, mums reikia rašyti skaičių padalinimas Davidas Malan: Gerai gerai. Taigi, mums reikia rašyti skaičius, dalyvaujančias padalinys, čia kaip slankaus kablelio vertės. Taigi problema čia, kaip ir anksčiau: C, nes daug kalbomis, turi skirtingus duomenų tipus. Ir šie duomenų tipai, pavyzdžiui, tai yra čia. Ir duomenų tipai yra nagrinėjamu atveju, kai aš įveskite 1 ir tada aš tipas 10, tikriausiai ką duomenų tipai? Todėl tikriausiai int, tiesa? Tai tikrai ne plūdės, nes nėra dešimtainis taškas arba ko nors panašaus. Taigi tikrai, turiu int, padalinta iš int. Taigi, įdomus dalykas, apie matematikos ir kompiuterio yra tai, kad jei jūs darote padalijimo naudojant sveikieji skaičiai - 1 dalijamas iš 10, taip yra 0,1. Tačiau, kai jūs sveikąjį skaičių padalijus sveikasis skaičius, Atsakymas turi būti sveikasis skaičius, tik todėl, kad, dabar. Ir kas potekstė tada? Na, jei atsakymas yra 1, padalytas iš 10, yra lygus 0,1, kas kompiuteris yra ruošiuosi padaryti tai aš neįsivaizduoju, kaip atstovauti 0,1, nes tai slankaus kablelio vertė, o ne sveikasis skaičius, jis ketina nukirsti viską po dešimtainis taškas, ir tiesiog parodyti jums pradžioje 0. Ir tai, kad ji spausdinama kaip slankaus kablelio vertė, tai tik estetinis dalykas. Tai todėl, kad aš verčia kompiuteris Spausdinti šį slankiojo kablelio skaičius. Ir iš tiesų aš paskelbė jį kaip float, tačiau matematika vyksta čia. Taigi, leiskite man iš tikrųjų išspręsti šią problemą į vieną gana lengvai. Kodėl ne aš tiesiog padaryti 10,0 ir 1,0, nors techniškai aš galėtų išeiti su tiesiog daro vienas iš tų. Dabar leiskite man eiti į priekį ir padaryti math3. Leiskite man eiti į priekį ir dabar paleisti math3 Įveskite. Ir dabar, oh boy. Dabar mes turime naują problemą apskritai. Tad geriau, tiesa, mes arčiau 0,1, bet tai, kas yra akivaizdžiai negerai čia? , Jeigu mes jau gulėti jums metų, tiesa? 1 dalijami iš 10, iš tiesų yra ne visai 0,1, tai kas tikrai čia vyksta? Na, galite natūra priežasties per šį logiškai. Jei kompiuteris turi tik baigtinių suma RAM pradėti ir, žinoma, kompiuteris naudoja tik 32 bitų slankiojo kablelio skaičius, tai suprantama, kad su baigtinis bitų, 32 skaičius, šiuo atveju, taip, jūs galite sudaro daug daiktų. Ji iš tikrųjų yra keturis milijardus skirtingos reikšmės gali būti atstovaujama su 32 bitų, 2 iki 32, bet jis vis dar ribotas. Taigi ši problema yra begalinis skaičius realaus numeriai, teisė. Jei galite man duoti realus skaičius, aš visada galite rasti jums vieną šiek tiek didesnis, šiek tiek mažiau, tik truputį keisdami numeriai, kurie yra po kablelio. Taigi, jei jūs neturite begalinį skaičių bitai, negali galbūt begalinis skaičius realiaisiais skaičiais. Taigi ten tai neatsiejama kompiuterių neaiškumų ir tai pasireiškia paslydau per visą laiką, net ir paprasčiausias panašiose programose. , Bet ir kai kurie labai realaus pasaulio problemas, taip pat. Tiesą sakant, tegul šiek tiek laiko ir tiesiog pažvelgti kažkas, kas iš tikrųjų nutiko iš tikrųjų. Mes žiūrėti tik pirmąjį keletą minučių, tada mes po nuorodą internete. Bet tai liudija tik tai, ką gali suklysti, gana sąžiningai, labai tragiška, kai šie dalykai yra ne vertinama, ar tik mes, žmonės daro klaidų, kai kalbama apie įgyvendinimo detales, šiuolaikinių kompiuterių rūšių. [Vaizdo žaidimai] -Mes dabar grįžti inžinerinių nelaimių Šiuolaikinės stebuklai. Kompiuteriai. Mes visi ateiti sutikti su dažnai nelinksma problemų kad eiti su jais. Klaidas, virusai ir programinės įrangos trikdžių mažos kainos mokėti už patogumą. , Bet ir aukštųjų technologijų ir greitųjų karinių ir kosmoso programų programas, mažiausias problema gali būti padidintos nelaimės. 1996 birželio 4 d., Mokslininkai pasirengusi pradėti nepilotuojamą Ariane 5 raketų. Jis vykdė mokslinių palydovų, tiksliai nustatyti, kaip Žemės magnetinis laukas sąveikauja su Saulės vėjai. Raketa buvo pastatytas Europos kosmoso agentūros ir pakilo iš savo įrenginio dėl Prancūzijos Gvianos krantų. Maždaug apie 37 sekundžių skrydžio į, jie pirmiausia pastebėjau, kad kažkas negerai, kad purkštukai pasukamas taip, jie tikrai neturėtų. Maždaug 40 sekundžių į skrydžio, aiškiai transporto priemonių buvo bėdų, ir tai yra, kai jie priėmė sprendimą ją sunaikinti. Diapazonas saugos pareigūnas su milžinišku viduriai nuspaudžiamas mygtuką, susprogdino raketa, kol ji gali tapti kelti pavojų visuomenės saugumui. -Tai buvo mergautinė reiso 5 "Ariane, ir jos naikinimas vyko dėl to, kad trūkumas, įterptųjų Raketa programinė įranga. Nuo "Ariane" problema buvo, kad ten buvo skaičius, kuris reikia 64 bitų išreikšti, ir jie norėjo ją konvertuoti 16 bitų skaičius. Jie manė, kad šis skaičius niekada nebuvo bus labai didelis, kad dauguma iš tų 64 bitų skaičiaus skaitmenų 0s. Jie klydo. Vienos programinės įrangos nesugebėjimas priimti kitu numeriu, kaip rūšies šaknų nepakankamumas. Programinės įrangos kūrimas tapo labai brangi dalis nauja technologija. Ariadnė "4" raketa buvo labai sėkmingas. Tiek daug už jį sukurta programine įranga taip pat buvo naudojama 5 "Ariane". - Pagrindinė problema buvo ta, kad Ariane 5 buvo greitesnis, paspartino greičiau. Ir programinė įranga nebuvo apskaitomas už tai. Raketos sunaikinimas buvo didžiulė finansinė nelaimei, visos dėl minutę programinės įrangos klaidos. Bet tai buvo ne pirmas kartas, duomenų konvertavimo problemų kentėjo modernią raketų technologiją. DAVID Malan: Mes palikti jį tuo. Bet tai liudija tik tai, kaip net kai šie Žemiausio lygio informacija, kad mes pradėjo ištirti šiandien yra. Taigi, net, kaip jūs gaunate šiek tiek išsiblaškęs, galbūt kai kurie iš , sintaksė ir arcaneness čia, suprantame, kad per laikotarpiu mes bus skiriama tik apie tai, kaip taikoma tai pasaulius toli už CS. Pamatysiu jus trečiadienį.