[Powered by Google Translate] David J. Malan: Gerai, tai yra CS50, ir tai yra baigti 1 savaitę, todėl studijų kortelės ir iš viso klasiokai, kad jūs turite šiemet yra 745. Ir mes taip malonu, kad tiek daug jūsų kurso šį semestrą, bet nors šis kursas yra toks didelis, suprasti, kad tai šių dalykų, pavyzdžiui, penktadienis pietūs, pavyzdžiui, darbo laikas, 15-asmens profiliai, ir taip toliau, kad iš tikrųjų reiškia sukurti šį intymesnis aplinka. Taigi, nors mes galime rinkti vieną ar du kartus per savaitę, čia Šlifuokliai, žinau, kad daug nuo jūsų patirties šiame kurse labai hands-on, kartu iš jūsų klasiokų ir pedagogus. Taigi čia mes einame, Fall 2012. Taigi prisiminti, kad paskutinį kartą, mes galų pastaboje netikslumų, kalbėti apie atstovavimo skaičių. Ir mes pažvelgė į vieną iš nesėkmių, kad atsitiko, realiame pasaulyje, kai ji atėjo į nesusipratimas kaip kompiuterių darbą. Na, šiandien mes bus peržiūrėti vieną kitą tų idėjų pat tęsti mūsų diskusiją CS50 klientui ir C ir ką tai reiškia tikrai programa. Bet pirmiausia, tik pora viesulu pranešimų. Skyriai prasidės šį sekmadienį, pirmąją savaitę visada tiek greitai pradžios, nes mes tiesiog pateko į skiltį formos. , Ką mes darome tą patį, dabar, su mokymo bičiulių dabar kad jie žino savo tvarkaraščius, todėl mes siekiame, Šeštadienio rytą, imtis tolesnių su jumis, su jūsų skyriuje perleidimas ir TF. Suprantu, kad jie bus pradėti kitą dieną, sekmadienį arba pirmadienį ir antradienį. Ir tada mes prisitaikyti prie skyriaus pakeitimus, kaip jie atsiranda per keletą dienų į priekį. Darbo valandos, tuo tarpu, yra, vėl, šį vakarą, 8 iki 11, Annenberg, taip pat rytoj vakare. Net jei problema rinkiniai yra paprastai dėl ketvirtadieniais vidurdienį, suprantame, turite pastaruosius penkerius dienas praleisti, taigi ir ketvirtadieniais darbo valandomis prieinamumas jei tiems, vėlai dienų grynųjų pinigų ir tuo pačiu pateikti kažkas penktadienį. Leiskite man pasiūlyti, kad nulio yra vienas iš labiausiai įdomus, tarp Low Key problema rinkiniai. Ir aš norėčiau pakabinti ant tiems, vėlai dienų, strategiškai, tiesiog vėliau į tą semestrą, kai gyvenimas pradeda gauti į kelią kontrolinius ir kitų klasių. Problema Set 1, tuo tarpu, bus paskelbtas kursas svetainė šį penktadienį, kaip bus kurso pėsčiomis tiesioginio vaizdo, kuris bus nufilmuotas 2:30 PM penktadienį ir paskelbtas internete jau kitą dieną. Taigi, mes baigėsi pirmadienį. Noriu - iš tikrųjų, čia atkreipsime dėmesį. Kadangi klasės - nes Sanders nėra tiksliai skolinti pats atsitiktinis Q & A Atgal ir pirmyn siaubingai gerai, mes ketinate pabandyti kažką šiek tiek naujo šiais metais, kuriuo jei nesate patogiai pakelti savo ranką ar jūs tiesiog , o ne pakelti ranką kambarį kaip šis, mes ketiname turėti tam tikrą mokymo bičiulių ir CAS įgulos komplektavimo cs50.net/discuss per paskaitą. Taigi, jei turite klausimų, nes buvau visiškai neaišku apie ką nors, ar jums yra smalsūs apie kai tema, pabandykite nusiųsti jį ten. Tag paskaitų etiketės, ir mes padarysime viską šiandien ir kitą savaitę - we'll tai išbandyti - į lauką arba elektroniniu paštu, internetu, arba, jeigu ji mano, kaip turėtume tikrai jį spręsti masiškai, vieną mokymo bičiuliais arba KI pakels savo ranką ir paprašyti anonimiškai jūsų vardu. Taigi, mes duoti tai pabandyti ir pamatyti, kaip gerai tai veikia. Tačiau, visomis priemonėmis, toliau kels rankas taip, kaip norėtumėte. Taigi, paskutinį kartą parodė, kad 10% arba viena dešimtoji, faktas, 0,1, kaip prieš daugelį metų buvote mokyti. Tai iš tiesų, kaip ši vertė. Bet tai nėra visiškai tiesa, tiesa? Mes tiesiog turime šį apribojimą kompiuteriais, kuriuo, jei tik gali išlaikyti tik ribotą kiekį atminties, RAM arba daugiau specialiai bitai, gerai, ten tik galutinį skaičių dalykų, kuriuos galite atstovauti. Pavyzdžiui, jei mes turime nulį, ir mes norime sudaro dvejetainis, naudojant aštuonių bitų, kur šiek tiek, dar kartą, yra nulis arba vienas, mes galime atstovauja jai kaip 00.000.000. Ir tai yra šiek tiek be reikalo Verbose. Tiesiog kaip dešimtainę sistemą ir realiame pasaulyje, paprastai, jei norite rašyti numeris 123, žmonės tikriausiai nereikia rašyti 00000123, nors, funkciniu požiūriu, tai lygiai toks pats skaičius. Mes tiesiog lašas nuliais, taip sakant. Dvejetainiu, mes galime padaryti tą patį. Dvejetainis ir nulis, nulis ir dvejetainiai tiesiog nulis. Jums reikia tik vieną bitų. Bet vėl, pasaulyje labiausiai paplitusi matavimo vienetas kompiuterija yra baitų, aštuonių bitų. Tik todėl, kad vienas bitas, gana nenaudingas. Aštuoni bitai, nėra labai naudinga, bet bent jau daugiau naudinga nei vieną matavimo vienetą. Taigi su aštuonių bitų, mes paprastai atstovauja dvejetainis. Taigi čia mes turime skaičius nulis, vienas, du, ir tada, kaip Nate mūsų vaizdo praėjusį trečiadienį, galime tęsti skaičiuoti iki septynių iki aštuonių. Ir tada, jei mes naudojame vis daugiau ir daugiau bitų, gali tikėtis iki begalybės. Tačiau jei jūs turite tik baigtinio skaičiaus šių bitų, kaip bet kurio kompiuterio sistemą, ar net raketų sistema, gerai, iš tikrųjų jūs tik baigtinis suma tikslumo. Taigi, jei norite atstovauti daugiau kaip 0,1, gerai, kompiuteris turi rinktis. Ir, jei jis turi tik baigtinio skaičiaus numeriais atstovauti, gali ateiti beveik 0,1 už jus, tačiau ji negali būtinai duoti jums tiksliai norimą reikšmę. Ir tai tik vienas iš kompiuterių problemas po kapotu, laimei. Kaip mes judėti toliau į tą semestrą, tai žemesnio lygio informacija tapo daug mažiau įdomus, bet tikrai šių idėjų taikymas gali turėti tam tikrą labai realų pasaulį pasekmių. Vienas iš jų yra šiek tiek įdomus. Kaip daugelis iš jūsų mačiau nuostabų filmą Office Space? Jei jūs neturite, kad jūsų neoficiali namų už savaitę. Tačiau Office Space, kad filmo bičiulių privalumas būtent šią idėją, bet jie iš tikrųjų pavogė tai iš kito filmo, kad jums gali tekti matyti, net metų prieš. Taigi, leiskite man duoti jums keletą sekundžių šios priekabos šį nuostabų filmą, ir tai yra labai akademiškai svarbi. [Vaidina Movie] Tiesą sakant, aš skatinamas. Galiu programuoti virusas, kuris bus nukopijuoti, kad atliekama ne didelis laiko. Na, kaip tai veikia? Kiekvieną kartą, kai bankinė operacija, kai palūkanos yra kompiuterinė, yra tūkstančiai per dieną, kompiuteris baigiasi šių frakcijų cento. Bet aš nesiruošia daryti nieko neteisėto. Neteisėtas? Samir, tai yra Amerika. Jūs turite prisiekiu Dievu. Jei niekas nežino apie tai, tačiau mums, gerai? Be šeimos nariai, nėra draugės, niekas. [Nesigirdi]. Nesijaudinkite, vyras, aš nebus niekam arba. [Filmas baigiasi] Viskas gerai, tai gal radau šį filmą geriau nei dauguma žmonės čia, tačiau bet kuriuo atveju, virusas, kad jie buvo bando sukurti ir į kiną, bet kuriuo metu, jie nori skambinti kažkas, virusas, tai paprastai ne iš tikrųjų virusas. Tai tik programa, kad kažkas rašė kažką daryti. Ir šiuo atveju, vaikinai bandė parašyti programą , kad pasinaudojo savo įmonę vadinamas Innotech-aisiais skaičiavimo sistemą, pagal kurią kompiuteriai, taip pat, net jei jis kalbama apie pinigus, ne visada gali tiksliai atstovauti pinigus. Taigi, nors jums gali tekti 0,10 $ į savo banko sąskaitą, 0,10, gerai, kompiuteris gali iš tikrųjų manote, kad turite tai daug centų jūsų banko sąskaitą. Ir taip ką šie vaikinai buvo trokštantis daryti - ir jie pavogė idėją, paaiškėja iš Supermenas III, kur Richard Pryor padarė tą patį - jie iš esmės buvo rašymo programas, kurios siekia atsižvelgti gale numeriai, visi mažytė, mažytė, mažytė frakcijų centus, ir pasilieka sau tie, išjungti, kad žmonės tiesiog mintis, oh, tai tik 0,10 $ ten, bet visi tie, gale numeriai galiausiai pridėti. Taigi, puiki idėja ir jis atsirūgo hilariously tuo, kad pirma filmas. Tačiau realiame pasaulyje, taip pat yra daug daugiau dėl pasekmės šių dalykų rūšių. Ir viena iš priežasčių, pasinerti į kompiuterių srityje mokslas, vėlgi, jo taikymas ne inžinerinius mokslus, vienas, bet tik kitose srityse, taip pat. Taigi tai yra mažiau linksmas pažvelgti į tai, kas gali suklysti, bet ji taip pat yra gana iškalbinga, manau, kai jis ateina į suprasti tiksliai, kaip visur technologijos, tokios kaip kompiuteriai ir programavimo ar šių dienų, programinės įrangos. Taigi tai kitą klipas yra tik apie šešias minutes, ir toliau kur mes palikome paskutinį kartą, tačiau leidžia mums pažvelgti šiek tiek išsamiau Vienas iš tokių šiais klausimais. Leiskite man praleisti į priekį, kur mes nerašomas, kuris buvo čia. Ir mes turime dviejų antrą dalį, apie šešias minutes. [PLAY MOVIE] Kentėjo modernią raketų technologiją. Pirmojo Persijos įlankos karo pradžios 1991 metais, su Patriot raketa patyrė panašaus pobūdžio skaičių konversija problema. Ir kaip rezultatas, 20 žmonių, žuvo 20 amerikiečių karių, ir apie 100 sužeistųjų, kai Patriot ", kuris turėjo apsaugoti nuo gaunamų Scuds nepavyko į ugnį raketa. Kai Irakas įsiveržė į Kuveitą ir Amerika pradėjo dykuma Audra pradžioje 1991, Patriot raketų baterijos buvo dislokuojama siekiant apsaugoti Saudo Arabiją ir Izraelį iš Irako Skadi raketų atakų. Patriot yra JAV vidutinio nuotolio žemė-oras sistema, pagamintas Raytheon kompanijos. Patriot kolektoriaus dydis, tai apie maždaug 20 pėdų ilgio ir sveria apie 2.000 svarų. Ir ji vykdo apie užtaisą - Manau, kad tai maždaug 150 svarų. Ir Kovinė pati yra aukštos sprogmuo, kuriam yra fragmentai aplink jį. Iš galvutės korpusas yra skirtas veikti kaip Buckshot. Raketos yra atliekami keturi vienoje talpykloje ir vežami puspriekabe. Patriot priešraketinė sistema nueina bent jau 20 metų. Iš pradžių ji buvo sukurta kaip oro gynybos raketų numušti priešo lėktuvus, pirmojo Persijos įlankos karo. Kai, kad karas atėjo kartu, armija norėjo jį naudoti šaudyti nustatantį Scuds, o ne lėktuvai. Oro Irako pajėgų buvo ne tiek daug problemų, bet armija buvo neramu apie Scuds. Ir todėl jie bandė atnaujinti "Patriot". Perimti priešas raketa keliaujant Mach 5 buvo ketinama turi būti pakankamai sudėtinga. Bet kai Patriot buvo nuvežta eksploatuoti, armija nežino Irako pakeitimo, kuris padarė savo Scuds beveik neįmanoma, kad pasiektų. Kas atsitiko, kad buvo Scuds ateina buvo nestabili. Jie buvo Įtaka. Dėl šios priežasties buvo irakiečių, siekiant gauti 600 kilometrų iš 300 kilometrų nuotolio raketų, paėmė svoris iš priekinės galvutės ir Kovinė lengvesni. Taigi dabar "Patriot" bando ateiti į Skadi, ir dauguma laiką, didžioji dauguma laiko, jis būtų tiesiog skristi į Skadi. Kai suprato Patriot "Patriot" sistemos operatoriai praleidote savo tikslą, jie Patriot užtaisą susprogdino. Norint išvengti galimų avarijų, jam buvo suteikta patenka į žemę. Tai, ką dauguma žmonių pamatė, kaip didelis ugnies danguje, ir nesuprastas kaip Skadi galvučių atkarpų. Nors, nakties danguje, patriotai pasirodė esąs sėkmingai sunaikino Scuds Dhahran, gali būti ne klaida dėl jo našumo. Ten, patriotas radaras sistema prarado stebėti įeinantis Skadi ir niekada pradėjo dėl programinės įrangos trūkumas. Tai buvo izraeliečiai, kurie pirmą kartą atrado, kad kuo ilgiau sistema, tuo daugiau laiko neatitikimas tapo dėl įdėta į kompiuterio sistemos laikrodį. Apie prieš dvi savaites iki Dhahran, tragedija Izraeliečių Gynybos departamentas pranešė, kad sistema buvo prarasti laiko. Po maždaug aštuonių valandų važiavimo, jie pastebėjo, kad sistema tampa pastebimai mažiau tikslūs. Gynybos departamentas atsakė sakau visi "Patriot" baterijos nepalikite sistemas ilgą laiką. Jie niekada nepasakė, kas ilgą laiką buvo - 8 valandas, 10 val., 1000 val. Niekas nežinojo. Patriot "baterija dislokuota ne Dhahran kareivinės ir jos trūkumų vidinis laikrodis buvo daugiau nei 100 valandų naktį, vasario 25 d. Jame stebimi laiko maždaug dešimtadalis sekundės dalį tikslumu. Dabar dešimtadalis antros yra įdomus skaičius, nes jis negali būti išreikštas dvejetainiu, tiksliai, o tai reiškia, jis negali būti išreikštas tiksliai bet modernus skaitmeninis kompiuteris. Tai sunku patikėti. Bet ir naudoti tai kaip pvz. Paimkime numeris 1/3. Trečdalis negali būti išreikštas dešimtaine, tiksliai. Trečdalis 0,333 vyksta begalybės. Nėra jokio būdo tai padaryti, kad absoliučiai dešimtosios tikslumu. Kad yra būtent tos pačios rūšies problema, kad atsitiko patriotas. Ilgiau sistema bėgo, blogiau time error tapo. Po 100 veikimo valandų, laiko paklaida buvo tik apie trečdalis sekundės. Tačiau nukreipti raketą, kelionės Mach 5 ji atsirado sekimo klaidos, daugiau nei 600 metrų. Būtų lemtinga klaida ne Dhahran kariai. Kas atsitiko, buvo aptikta Skadi pradėti išankstinio perspėjimo palydovai ir jie žinojo, kad Skadi jų bendrą kryptį. Jie nežinojo, kur jis ėjo. Tai buvo dabar iki radaro komponentą patriotas sistema, gindamas Dhahran, rasti ir sekti. gaunamus priešų raketų. Radaras buvo labai protingas. Jūs iš tiesų sekti Skadi poziciją ir tada prognozuoti, kur ji tikriausiai būtų kitą kartą radaras išsiuntė pulsą. , Kuris buvo vadinamas intervalas vartai. Tada, kai Patriot nusprendžia, pakankamai laiko praėjo eiti atgal ir patikrinti kitą vietą Nustatytas objektas, jis eina atgal. Taigi, kai ji grįžo į neteisingą vietą, tada jis nemato jokio prieštarauti, ir jis nusprendžia, kad joks objektas. Tai buvo klaidinga aptikimo ir meta takelį. Kadenciją Skadi dingo iš radaro ekrano. Ir sekundes vėliau, jis pateko į tvirtovę. Skadi žuvo 28 ir buvo atleistas metu naujausia pirmojo Persijos įlankos karo. Tragiškai, atnaujinta programinė įranga atvyko Dhahran kitą dieną. Ir programinės įrangos trūkumas buvo nustatytas, sudaro vieną skyrių, neramus raketų "Patriot" istorija. PATRIOT iš tiesų yra "etapais Array sekimo akronimas Perimti TARGET. " Viskas gerai, todėl daug daugiau smucić rezultatas ne visai suprasti šį pasaulį. Ir išsinešimui, tikrai, iš filmo, kad sprendimas buvo perkrauti savo priešraketinės gynybos sistemą kiekvienas, o vieną kartą. Ir tokiu būdu vėlgi, vienas iš šio kurso tikslų, tikrai daugiau Kuklus šių programų masto nei, yra tikrai atvira visiems akis, lygiai taip, kaip jūs einate apie gamybos mašinos daryti tai, ką norite juos daryti, ir kaip tu apie tai, kad teisingai, o pakeliui daro gerai, elegantiškai, ir kt. Ir todėl šiandien, tegul neria į šiek tiek daugiau, bet kad mes ne eiti per greitai, ypač tiems, kurie mažiau patogus, bet ir todėl, kad mes galime išlaikyti susidomėjimą tiems, patogiau, galime tik greitai prasideda šiek tiek primenama apie tai, kai kurie iš šių idėjų. Ir vėl, kreipkitės į toli, tiek asmeniškai, arba internetu, jei turite klausimai, todėl mes galime išlaikyti visus į tą patį puslapį. Taigi CS50 prietaisų, greitas žingsnis atgal, tai, kas, savo žodžiais? Viskas OK, jei jūs neturite idėjos, ką šie žodžiai gali būti dar. [Nesigirdi] Gerai, kad universali sąsaja - kad mes visi galime pasidalinti. Absoliučiai. Taigi, mes galime, pavyzdžiui, pasakyti, eiti į kai svetainėje, atsisiųsti šią programinę įrangą Mac OS. Atsisiųsti šią programinę įrangą "Windows", konfigūruoti tokiu būdu ir kad. Tačiau tikrovė yra tokia, tada mes paleisti į be galo daug techninės paramos klausimais. , O taip pat šių dienų, daug kas daroma serverio pusėje, skaičiavimo pasaulį, ypač, kai kalbama apie interneto svetainių kūrimas ir interneto grindžiamas taikomąsias programas, yra iš tikrųjų gana dažnai daroma UNIX ar Linux kompiuterių, o ne MOK arba Windows PC. Taigi tarp upsides, naudojant šį dalyką vadinamas CS50 Appliance mes visi turime tą pačią aplinką. Taigi kiekvienas tame pačiame puslapyje, nesvarbu, kokios aparatūros atėjo į kampusie, bet taip pat bus žymėjimą tiksliai pati aplinka, kad jūs naudojate link semestro pabaiga, taip pat interneto svetainių kūrimas, taip pat realaus pasaulio paraiškas jų ateitis. Taigi, konkrečiau, CS50 Appliance nemokamai gabalas programinė įranga, kuri leidžia jums paleisti kitą operacinę sistemą, "Linux", šiuo atveju, savo kompiuteryje lange. Dabar galite ne tik atsisiųsti prietaisą. Jums reikia programos, su kuria žaisti arba paleisti prietaisą. Ir kad programinė įranga paprastai vadinama hypervisor. Hypervisors būna produktų, pavyzdžiui, "VMware", Virtuali langelis, paralelės. Visi įmonių rūšių programinę įrangą, tiek nemokamų ir komercinės, panašūs. Tai, ką jūs matote problema Set 1 instrukcijos apie tai, kaip gauti nemokamą programinę įrangą, su kuria paleisti CS50 Appliance. Ir kai jūs darote, jūs turite, dėl jūsų Mac arba PC lango darbastalio aplinka, kuri atrodo labai patiko tai, kur ji turi Start meniu, pavyzdžiui, dalykas apatiniame kairiajame kampe. Ji turi namų katalogą, ar namų katalogą, viršuje kairėje ten, šiukšliadėžės ir kt. Taigi, mes erzinti išskyrus reikalingus duomenis, kaip mes einame. Bet dabar pradėkime pasinerti į C. Taigi C tai programavimo kalba, panaši dvasia Nulio, bet kur kas mažiau grafinis, tačiau ironiškai, toli daugiau galingas, kai jūs gaunate išminties su juo. Taigi C, mes rašome programas raštu šaltinio kodą, kuris yra tai anglų kaip sintaksė, panašūs į kojines įrodyta, jog darė paskutinį kartą, kuri leidžia jums gana tiksliai išreikšti save, jei arcanely prie kompiuterio. Taigi, kokios gaminio programinės įrangos ar jūs iš tikrųjų reikia rašyti programas kaip C kalba, remiantis mūsų pokalbis pirmadienį? [Nesigirdi] Gerai, jums tiesiog reikia teksto redaktoriumi. Jums nereikia jokios specialios programinės įrangos per se rašyti programas. Jums reikia tik teksto redaktorių, pavyzdžiui, Notepad "," Windows ", TextEdit "Mac", ar kažkas, vadinamas gedit, pasaulyje "Linux", kuriuos mes naudojame čia. Ir štai, rašyti programas. Tačiau rašyti tik pusė lygtis. Tada reikia paleisti juos. Tačiau, norint paleisti programas negalima paleisti kodą. Jums, o turi daryti tai, ką pirmiausia ją? Taip. David J. Malan: Jūs turite kaupia jį. , O kažkas kitas, sudarant šaltinio kodą - [Nesigirdi] David J. Malan: Būtent. Verčiant nulių ir. Kadangi mums visiems, šių dienų, kompiuterius, kurie CPU, beveik visi, kurie pagaminti kompanijos "Intel" ir Intel Inside, reiškia, kad ši smegenų viduje savo kompiuteris, vadinamas procesoriaus. Ir vienas iš dalykų, kad smegenys yra, jis žino, kaip suprasti nulių ir modelius. Ji žino, kas bitų modelis atstovauja to, ką modelis atstovauja atimti, kas modelis bitai sukuriama spausdinimo, ir sukurti girdimą garsą. Taigi trumpai tariant, CPU, kartu su operacine sistema, kuris yra programinė įranga, kuri veikia ant procesoriaus, taip sakant. Kartu šie du gabalai žinoti, kaip paleisti programas, kurios mes, žmonės, rašyti. Taigi, jei aš einu į CS50 Appliance čia, man reikia atidaryti iki teksto redaktoriumi ir aš galiu gauti prieigą keletas būdų. Galiu arba eikite į Meniu, programavimas, ir tada aš galiu pasirinkti - Ne, ne tai, kad meniu. Aš galiu eiti Reikmenys / gedit čia, norėdami atidaryti mano mažai teksto redaktoriumi. Arba paprasčiau tariant, aš galiu spustelėkite šį mažą piktogramą apačioje kairiajame kampe. Ir dabar man šią aplinką. Tai gana primena paprastą teksto redaktorių, tik su vienas ar du skirtumai. Viršuje, kur blyksi mirksi, tai kur Aš galiu pradėti rašyti savo kodą. Apačioje yra šis dalykas, vadinamas terminalo langą. Ir kokių rūšių dalykų, aš galiu daryti tai taip vadinamas terminalo langą? [Nesigirdi] Gerai, kad aš paleisti komandas. Ir kai komandų, nubėgome pirmadienį buvo šiek tiek paslaptingas per pirmąjį, bet LS sąraše, cd pakeisti katalogą, rm, pašalinti. Taigi, tai tarsi senosios mokyklos kaip naršyti jūsų kompiuteris, naudojant tik savo klaviatūrą ir tekstinius komandas, o ne, paprastai, naudotis pele. Bet mes pamatysime, prieš ilgas, tai iš tiesų suteikia mums šiek tiek daugiau galios ir šiek tiek daugiau tikslumo, su kuria išreikšti save. Ir tada per čia kairėje, mes tiesiog ketiname pamatyti, kaip mes pradėti rašymo programinės įrangos, šiek tiek santraukos programa, kad mes parašyta viršutiniame kairiajame kampe. Tačiau mes matome, kad vėl netrukus. Taigi, darykime kažką gana paprastas. Leiskite man pirmiausia eiti į priekį ir eiti į failą, išsaugokite, ir aš tiesiog spustelėkite čia jharvard, per ne į kairę, ir jharvard, vėlgi, mano namų katalogą pavadinimas, mano asmeniniai failai, ME, dabar yra John Harvard, kaip jums visiems netrukus bus Jonas Harvardo šioje aplinkoje. Jis gavo šią namų katalogą, Mano dokumentai ir tt, , kad noriu išsaugoti, dabar, šį failą in Todėl aš jį vadinti hello.c. Tada aš ruošiuosi eiti į priekį ir spustelėkite Įrašyti ir dabar, ką aš turiu čia yra skirtukas hello.c, tiek daug, kaip kito tipo redaktorius. Taigi dabar leiskite man eiti į priekį ir pradėti rašyti programą. int main (void). Ir tada aš tiesiog darė paskutinį kartą printf, spausdinimo suformatuotas, ("Sveikas, pasauli!" );. Beveik baigtas. Bet aš trūkstamų detalių pora. Tai, ko trūksta, kad man tikrai reikia šios programos iš tikrųjų sudaryti? Taip. [Nesigirdi? David J. Malan: Taip, todėl man reikia įtraukti standartą I / O lib. Taigi, tai turi eiti virš pagrindinis, todėl aš tiesiog ketinate padaryti šiek tiek už jį kambaryje yra. Ir aš ruošiuosi tai padaryti # include . Ir pastebėsite kampu laikiklius. Ir kaip panaikinti, gedit yra šiek tiek patogi, jei kartais šiek tiek painu, nes ji stengiasi padėti jūsų akys pastebėti, ką linijos su tuo, ką. Taigi tai, kad mano žymeklį šalia tai kampu laikiklis, pastebėti, kaip tai išryškinant kita kampu laikiklis plius tai vienas. Ir tai tik atkreipti savo dėmesį į tai, kad aš turi simetrija. Ir simetrija programavimo paprastai yra geras dalykas. Be to, jei aš perkelti savo žymeklį iki galo, pastebėsite, kaip garbanotieji petnešų linija parodyti, kad taip, aš turiu atvirą ir vieno uždaro, taip sakant. Viskas gerai, ir aš galiu padaryti vieną dalyką. Tai nėra būtina, bet gera praktika, pasakyti return 0. Ir return 0 ką daro mums čia? Ar reiškia ką? [Nesigirdi] David J. Malan: Bet niekas negerai. Ir atvirai tai sunku daug suklysti programoje Šis trumpas. Taigi, aš tiesiog yra super aiškiai, kad viskas yra gerai. Aš, žmogaus, kai aš paleisti šią programą, tikriausiai niekada matyti, kad 0. Apskritai, tie skaičiai yra grąžinamos iš pagrindinių tik auginti galvas žmonėms, kai kažkas negerai. Ir jūs gaunate šiek tiek pop-up sistemos klaida sakydamas, vienas, dviejų, trijų, ar kokia jo numeris buvo, kad buvo faktiškai grąžinama. Taigi dar ką nors negerai? [Nesigirdi] David J. Malan: Taigi tai yra ne tiek funkcinis klaida bet estetinis. Aš tikriausiai turėtų pateikti naujos eilutės simboliai šios eilutės pabaigą, kad mes iš tikrųjų perkelti žymeklį į kitą eilutę, ir programa tiesiog atrodo šiek tiek gražiau. Taigi dabar leiskite man eiti į mano terminalo lange ir priartinimo atgal in Ir tai čia, tai vadinama eilutę. Tai tiesiog primena man, kas aš esu, jharvard @ prietaisą, jei prietaisas kompiuterio, aš tikiu, pavadinimas. Skliaustuose tai Tilde, squiggle simbolis yra kas? Auditorija: Pagrindinis katalogas. David J. Malan: Pagrindinis katalogas. Taigi, tai tik trumpa supratimą ir pasakyti, kad esate savo asmeninį aplanką, kur visus failus eiti pagal nutylėjimą. Taigi dabar, čia, galiu tipas Lt sąrašą. Ir vienintelis dalykas, aš matau čia šiuo metu yra hello.c. Ir tai gerai, nes aš tiesiog tai parašiau. Taigi leiskite man eiti į priekį ir padaryti pagal Apie. Ir pastebėsite, aš ne rašyti, kad hello.c. Vietoj to, aš tik rašyti bazės failo vardas, labas. Ir padaryti, kaip matėme, pirmadienį, tiesiog daryti išvadą, kad aš noriu c failas. Taigi, dabar aš įvedėte padaryti Apie. Dabar aš matau šį gana ilgą komandą ir toliau matyti vėl ir vėl. , Tačiau turi būti aišku, Apsukite metalinis garsas, žodis, kad tik pasirodė, tai tikrasis kompiliatorius. Padaryti, yra tiesiog Utility. Tai tik patogi programa, kuri taupo man, ilgalaikėje perspektyvoje, įvesti iš neįtikėtinai varginantis ilgas komandos, pavyzdžiui, kad vienas. , Kad galėtumėte rankiniu būdu paleisti Apsukite metalinis garsas. Galite įrašyti, kad rankiniu būdu. Tiesiog tampa labai nuobodus. Ir todėl, kad yra tik programa, kuri supaprastina mūsų gyvenimus ir veikia daugiau sudėtingų komandas mums. Viskas gerai, taip ir dabar, kas tai per failas turėtų Turiu mano dabartinis katalogą? Ne tik hello.c, bet taip pat hello. Taigi, jei aš noriu paleisti Apie priminti, kad aš sakau dot velniop, kur dot reiškia eiti į dabartiniame aplanke, kur jums yra, ir paleiskite programą, pavadintą Apie ir iš tiesų, dabar, Turiu Hello World. Viskas gerai, bet dėl ​​darbo eigos klausimų ar sintaksė ką mes ką tik padarė? Viskas gerai, todėl galime imtis dalykų vienu žingsniu vėl. Taigi tai buvo underwhelming tiesiog parašyti programą, kad tik niekada nėra teigęs, Hello, world. Taigi, mes jį pakeitėte, pirmadienį, pasakyti,, labas, Davidas. Tai šiek tiek labiau asmeniški, bet lygiai taip pat sunku koduojami pirmoji versija. Taigi, ne visi, kad įtikinamos. Bet egzistuoja, C, funkcijas tikrai be spausdinti, funkcijos, kad jums gauti vartotojo įvesties. Ir taip, kaip mes tai padarė, kitą dieną, buvo taip. Prieš faktiškai spausdinti ką nors, aš pirmą kartą gavo kažkas iš vartotojo. Taigi, leiskite man tai padaryti ir vėl. Styginių s, kur s yra tiesiog savavališkai vardas, čia, eilutę, lygus GetString. Taigi, tai, kas buvo GetString? Tai akivaizdžiai gauna eilutę, ant jos pavadinimo. Bet kas tai yra, daugiau techniškai? Tai funkcija. Taigi tai yra funkcija, kad nėra ateis su C per se. CS50 darbuotojai parašė. Ir taip naudoti, galite ne tik apima stdio.h Jūs taip pat reikia įtraukti ką? Taip. Taigi cs50.h, kuri yra tik failas rašėme prieš keletą metų. Mes įdiegti ją už jus prietaiso kartu su visi standartinių failų. Ir taip, šių klasėje pirmąsias kelias savaites, mes naudosime tai tik supaprastinti tai labai paprastas procesas dalykų, pavyzdžiui, gauti vartotojo įvesties. Nes, kaip matysime po kelių savaičių, gauti naudotojo įvesties kalbos kaip C yra iš tikrųjų stebėtinai sudėtingas, ypač todėl, kad jūs neturite žinoti iš anksto, paprastai, kaip daug dalykų vartotojas ketina įvesti in Ir, kai jūs nežinote, kiek duomenų galima tikėtis, kad neturi žinoti, kiek atminties skirti. Ir, jei jūs iš tikrųjų turi rungtyniškumo vartotojas, kuris bando nulaužti į savo sistemą, avarijos kompiuterio, gerai, paprastai yra pirmoji atakos metodas, kaip aš Pirmadienis, įveskite visą ilgą seką atsitiktinių simbolių, paspauskite "Enter", ir pamatyti, kas sugenda. Nes paprastai, jei programa, pertraukų, kad užuominų į saugumo spraga, gali. Jis tikrai patarimų į tave, programuotojas, atlikusi klaida, bet dar pavojingiau, galbūt padarė su saugumu susijusios klaida, ir paprastai mes matome, kad mašinos yra pavojus, kad šios dienos, internete ir programų pasaulyje komandinės eilutės, kaip šis. Gerai. Taigi eilutė ai, lygus GetString. Taigi konkrečiau dabar, ką linija 6 padaryti čia? Taigi dešinėje funkcija gauna eilutę, trunka kiek argumentai? Gerai. Todėl nė vienas. Mažai normalumas patikrinti. Argumentas, vėlgi, yra tiesiog įvesties funkcijos pakeisti numatytoji elgsena tam tikru būdu. Tačiau šiuo atveju, aš nenoriu keisti kad GetString elgesys. Aš tik norėjau eilutę. Taigi, aš įdėti nieko skliausteliuose, ir tada aš įdėti kabliataškis demarking eilutės kodo pabaiga. Dabar lygybės ženklą nereiškia, lygūs, per se. Tai reiškia, kad užduotį, o tai reiškia, įrašyti bet kokį gauna išvedamas dešinėje viduje kokia yra kairėje. Taigi kairėje pusėje, mes sakome, kad pareiškė, eilutė vadinama. O tiksliau, mes skirta atminties viduje mes įdėti bitai, kuris atstovauja seką simbolių. Tačiau šiandien, skyrėme arba paskelbtas eilutę. Gerai. Taigi dabar, kai aš padariau tai, aš noriu prijungti vertės s, o ne Dovydo vertę. Taigi tai yra negerai, kodėl? Kad tai tik tiesiog kietai "įsiūtos S. Tai pasakyti "labas, ai", kuris yra ne ką aš noriu. Taigi aš galiu tai padaryti. Procento ženklas yra vietos rezervavimo ženklas, bet dabar man reikia patenka į išspausdinti antrąjį argumentą. Prisiminkite, kad argumentai funkcijų atskiriami kablelių, todėl kitą kablelis čia aš po to raidė s. Ir šiame kontekste dabar, ai yra kintamasis, o printf, gavęs šiuos du įėjimai - iš dešinės į kairę ir Kintamojo pavadinimas ai eilutė - ji bus prijungti pastarajai į buvęs mums, ir tiesiog atsispausdinti gražią gražią eilutę, kurioje kokia ji yra, mes įvedėte in Taigi, pabandykime tai. Ketinate eiti į priekį ir nutolinti, nugaros mano terminalo lange. Padidinti apačioje. Iš naujo įvesti padaryti Apie. Apsukite metalinis garsas, atrodo, buvo pakartotas. Aš ruošiuosi rašyti. / Hello, Įveskite. Niekas, atrodo, vyksta dar, bet tai ne tai greitai kad aš galiu įvesti kažką panašaus į Nate, Enter, ir dabar mes turime Sveiki, Nate. Ir aš galiu padaryti jį dar kartą su Rob ir kt. Taigi tikiuosi, dabar ši programa elgiasi, kaip ketinu. Dabar, o ne visi, kad patogi. Aš ne idėja, kas buvo tikėtis iš manęs. Taigi, mes tikrai gali išvalyti iki šiek tiek. Leiskite man grįžti čia, o ne tik nardymas ir paprašyti, kad naudotojas eilutę, leiskite man aiškiai pasakyti vartotojo, ką aš tikėjosi. Taigi printf ("Įveskite eilutę:" ); Taigi čia nėra kintamieji. Nėra proc ženklai. Tiesiog paprastas anglų frazė. Leiskite man eiti į apačią ir iš naujo paleisti savo programą. Bet niekas, atrodo, pasikeitė. Kodėl? Turiu perkompiliuoti jį. Taip paprasta klaida padaryti. Bet jūs turite ne tik išsaugoti failą, bet perkompiliuoti programą. Ir todėl, jei aš iš naujo paleisti hello, dabar Apsukite metalinis garsas veikia. Dabar galiu paleisti. / Hello. Ir dabar matau "Įveskite eilutę:". Gerai. Dabar ji šiek tiek patogesnis. Nate, Enter, hello, Nate. Na, pabandykime šį kartą ir pradėti galvoti kampe atvejais. Taigi tiesiog kaip nulio, jūs skatinami arba skatinamas spec rūšies galvoti apie tai, kas gali eiti neteisinga, jei jūs neturite numatyti viską, vartotojas gali padaryti. Klaidas, todėl gali atsirasti. Taigi įveskite eilutę - kas kampas atveju? Kas yra scenarijus, kad aš, programuotojas, gali neturėti tikimasi? Taip. Gerai. Taigi ką daryti, jei aš tipo kaip šis? Gerai. Taigi, ji vis dar veikia. Gramatically neturi prasmės. Bet bent jau programa veikia. Kas kito kampo atveju? Kažkas, aš nesitikėjau. Taip? Gerai. Taigi, mes galime padaryti kažką panašaus tikrai, tikrai didelis skaičius. Taigi, galime padaryti čia. Leiskite man nutolinti per sekundę, leiskite man pabrėžti. Ar ne kopijuoti ir įklijuoti žemyn čia. Gerai. Taigi aš negaliu nukopijuokite ir įklijuokite šio terminalo lange, todėl mes tiesiog imituoti jį. Leiskite man nutolinti, wrap. Aš ne ketinate daryti tai per ilgai, nes jis nebus pertraukos šią programą. , Bet jis gali. Įveskite. Bet ji to nepadarė. Gerai. Bet tai tikras kampas atvejis. Ir vienintelė priežastis, kad elgiasi teisingai, todėl kalbėti, nes CS50 funkcija GetString yra iš tikrųjų sukurta po gaubtu, kaip matysime po kelių savaičių, automatiškai suteikia vis daugiau ir daugiau RAM, vis daugiau ir daugiau atmintį, operacinės sistemos, kai ji supranta, wow, jūs tikrai įvedėte kažką gana ilgai. Dabar, tai yra šiek tiek balto melas. Jei mes iš tikrųjų gana ilgai patylėjo ir aš įvedėte kažkas panašaus į 5 mlrd. simbolių klaviatūros čia, ar tikrai nukentėjo copy-paste gana nemažai, mes turbūt gali sukelti programos užbaigimas. Tik šiek tiek sunkiau imituoti, kad su galutiniais laiko. Tai, kas kito kampo atveju mes galėtume pabandyti? Taip? Taip. Tad kodėl gi ne mes atsakysime nieko? Taigi, mes iš tikrųjų turime imtis tam tikrų veiksmų, nes kitaip programa ketina sėdėti ten mirksi visą dieną. Bet jei aš tiesiog paspauskite "Enter" - Gerai, dabar, vis dar atrodo negerai. Ar ne avarijos, bet gal ten dabar atsirado galimybė pradėti įgyvendinti griežtesnę programą kad tikrintų. O jei tokią eilutę, sakinys, žodis, kurį įvestas ILGIS 0, gerai, gal man reikia klykauti vartotojui, arba pasakykite jam ar jai dar kartą įvesti eilutę, kad mes iš tikrųjų gauti tai, ko atrodo teisingą elgesį, o ne tik baigtas mano pusės priežiūrą. Klausimas atgal? Dešimtainis skaičius. Taigi, mes galime pabandyti, kad per daug. 1,10000005. Atrodo, kad vyksta tik iš tikrųjų gerai dirbti. Ir kad iš tikrųjų yra tikimasi. , Nors mes gali įvedėte šis skaičius ten, arba didesnis skaičius anksčiau, suprantame, kad kai mes rašyti vartotoją įvesties ir mes naudojame GetString funkciją, nėra nesvarbu, ar kas wpisuję atrodo numerį. Primintina, kad pagal ASCII, viskas Jūsų klaviatūra turi skaitinę vertę, kuri gali būti susietas su personažas, char. Taigi šiuo atveju, nors aš galėtų įvesti skaičių, kompiuteris vyksta galvoti apie tai, taip sakant, kaip eilutę - kažkas, kad atrodo kaip skaičių, bet faktiškai nėra skaičius. Bet tai iš tiesų puikus Segue, nes dabar mes galime iš tikrųjų perėjimas prie rašymo programų, kad naudoti kitus duomenų tipus. Taigi, be to, naudojant simbolių, arba, o, be to, naudojant styginiams, suprantame, kad turime taip pat kitų duomenų tipai C kitų kalbų. Char, kaip rodo pavadinimas, yra tik vienas simbolis. Plūdė yra slankaus kablelio reikšmė, ir tai tik išgalvotas būdas pasakyti, realus skaičius - kažkas, kad turi dešimtainį kablelį su kai kurių skaičių į kairę ir / ar taškas. Int yra sveikasis skaičius, kuris yra tik kaip 123 numeris. Ir dabar dar įdomiau yra dalykų, pavyzdžiui, dvigubai. Ką mes sakome, du kartus buvo paskutinį kartą? 64, teisus. Taigi kadangi paprastai plūdė yra 32-bitų todėl ši ilgai atmintyje, jis naudoja 32 nulių ir atstovauja vertybes - dukart yra tiesiog du kartus, kad reiškia, kad jums gali atstovauti didesnius numerius arba galite atstovauti tikslesnius skaičius. Todėl jūs galite turėti daugiau numerių po kablelio, bet kolegos sakė, vaizdo, net ką nors paprasto, konceptualiai kaip 1/3 negali būti atstovaujama būtent kompiuteris, nes galų gale paleisti bitų ir todėl jūs galite padaryti tik .33333333 tiek daug kartų, tada jums tereikia pasakyti, aš iš atstovavimo erdvė, turiu tiesiog vadina jį dieną ir jam atstovauja šiek tiek netiksliai tai patinka. Ir ilgai ilgai kvailas pavadinimas, bet tai todėl, kad yra duomenų tipas, žinomas kaip ilgai C, kuris atsitiktinai dažnai yra 32 bitų, kaip Žiniasklaida yra 32 bitų, bet ilgai ilgai paprastai 64 bitai. Taigi, tai tiesiog reiškia, kad gali atstovauti didesnis numeriai, nei šis. Gerai. Taigi, jei mes iš tikrųjų nori pradėti atstovaujanti dalykų, mes gali prireikti daugiau sudėtingų tipai ir Štai kodėl mes turime eilutę. Taigi CS50 bibliotekoje, kad failas, kuris vadinamas cs50.h, mes tikrųjų deklaravo duomenų tipas, taip sakant, vadinamas eilutė, bet eilutėje nėra iš tikrųjų egzistuoja. Tai, vėlgi, vienas iš šių sluoksnių mes žievelės atgal į savaitę ar dvi ir jį išmeskite, ir faktiškai po gaubtu eilutė iš tikrųjų yra, ir kaip ji atstovavo. Mes taip pat ketiname pažvelgti į Būlio vertybių. Taigi, kas buvo braižymuisi bool? Jis yra true arba false. Taigi, tai tik vertė, tai yra true arba false, įjungti arba išjungti, 1 arba 0, tačiau norite matyti pasaulį. Taigi C dėka su CS50 bibliotekoje, o tai savo ruožtu kitą po gaubtu biblioteką, mes turime prieigą prie duomenų tipo, tai vadinama bool, kuris bus tiesiog leidžia mums priskirti reikšmės true arba false dalykų programos. Taigi eikime į priekį čia ir rašyti maža programa, kuri ar kažką dalyvauja numerius vietoj. Taigi leiskite man grįžti į CS50 Appliance, leisk man eiti į priekį ir sukurti naują failą čia vadinama - tegul tiesiog pasakyti, ką nors paprasto, pavyzdžiui, math.c. Gerai. Ir dabar eiti į mano programos viršuje, aš ketinate daryti įprasta - # Include , kad aš galiu naudoti printf int main (void) - mes grįžti, galų gale, kas int tai čia kas negalioja čia reiškia, bet dabar, tiesiog žinoti, kad jūs turite pradėti panašiose programose. Dabar aš ruošiuosi eiti į priekį ir pasakyti kažką šiek tiek skirtingi - printf ("Duok man numerį:" );. Tada aš ruošiuosi daryti int n = GetInt, nes ji GetInt Pasirodo, yra dar vienas CS50 bibliotekos funkcija be GetString. Ir dabar aš ruošiuosi padaryti kažką kvaila, kaip "dėka % d, "dešimtainis sveikasis skaičius, ir tada kableliais n tada grįžti 0. Taigi dar kartą, grįžti 0 neturi nieko daryti su numeriu, aš tikiu, klausia vartotojui. Tiesiog reiškia, pabaigoje, kad visi, matyt, yra gerai. Taigi leiskite man eiti į mano terminalo lange čia. Leiskite man įvesti padaryti matematikos, įveskite. Ir kažkas negerai. Padaryti matematikos didnt darbą. Štai pirmasis mūsų klaidų pranešimų. Kodėl? Šiek tiek paslaptingas, tačiau - Taip. Taigi cs50.h. Taigi dar kartą, ypač anksti, jums parašyti savo skyriuose, darbo valandomis programa pset 1 ir atvirai, tai bus itin svarūs kartais tai, kas šie dalykai iš tikrųjų sako. Bet jūs suprasite, labai greitai jie pradeda kristi į grupes, kai tai vienas tai reiškia, kad jūs jau palikote vienas # failo viršuje. Apsukite metalinis garsas, kompiliatorių, informuoti Jus apie tai sakydamas gana Fantazyjnie, numanomas deklaracija funkcija GetInt yra neteisinga. Gerai. Taigi, ką tai reiškia? Tai tiesiog reiškia, kad jūs netiesiogiai pareiškė GetInt, ta prasme, kad jums dar nėra aiškiai pripažino. Aiškiai paskelbti int, jūs turite mokyti Apsukite metalinis garsas, kad jis egzistuoja. Ir labai paprastas sprendimas, kad yra išmokyti jį įskaitant šio kitas failas, cs50.h ne savo failo viršuje. Nes pažodžiui, # include jis pasakoja Apsukite metalinis garsas gana daug eiti rasti failą pavadinimu cs50.h, kopijuoti, automatiškai įklijuokite jį už mane, į mano programa viršuje ir tada konvertuoti šaltinio kodą, kad nulių ir. Bet tai, be abejo, būti labai varginantis, jei mes, žmonės, eiti kopijuoti ir įklijuoti šiuos didelius failus visą laiką, # include tiesiog daro viską, kas automatiškai be savo kodą muddying kažkieno bibliotekoje. Ir biblioteka yra tik vienas failas, kuriame yra funkcijos ir kitų dalykų, kad kažkas parašė, kad mes esame įtakos mūsų pačių labui. Gerai. Pabandykime dar kartą. Padaryti matematikos. Įveskite. Geras. Taip, kad atrodo, kad dirbo. Taigi, leiskite man dabar paleisti matematikos / matematikos. Įveskite man suteikia numerį, 123. Ačiū, taikant 123. Dabar pabandykime kito kampo bylą. Eilutė yra gana turtinga, nes eilutė gali būti bet kas. Gali atrodyti skaičių, atrodo simbolių, atrodyti žodžiais. Tačiau int int. Taigi dabar, jei aš esu sunku, ir jis sako: "Duok man skaičius, "kas, jei aš pabandyti padaryti kažką panašaus 0,1? Na, tai skaičius, ir tai suderinta su gramatikos aš čia, bet po gaubtu, aš tikiu, kursas naudojant funkciją GetInt. Taigi pažiūrėkime, kas atsitinka. Įveskite, bandykite dar kartą. Gerai. Leiskite man būti sunku ir tiesiog paspauskite "Enter" dar kartą. "Enter", "Enter". Taigi, dabar atrodo kad GetInt yra šiek tiek daugiau galingas nei GetString. Mes, darbuotojai, įgyvendinama taip, kad, jei pastebėsime turite ne mums davė int - Žiniasklaida yra dešimtainis skaičius , kurių sudėtyje yra nulinės, kas du, tris, ketvertus, penketus, šešias, sevens, aštuonios ar devynetai. Ir viskas. Skaitmenų po kablelio nėra, jokių ženklų, ne skyrybos. Atrodo, kad mes turime bendradarbiauti. Taigi, leiskite man pabandyti keturi, penki, šeši, ir, kad jis pasireiškia mane per. Taigi tikrai, analinis čia, aš tikriausiai turėtų pasakyti: "Duok man sveikasis skaičius "siekiant perteikti naudotojui tai, ką ketinu. Dabar pagalvokime apie po gaubtu. Mes neketiname pažvelgti kaip cs50.h šiandien yra įgyvendinama, biblioteka. Bet jei ji išlaiko sakydamas: retry, bandykite dar kartą, bandykite dar kartą, kokia programavimo statyti aš tikriausiai naudoti po gaubtu įgyvendinti, kad? Taigi tiesiog kilpa, tiesa? Vienas iš paprasčiausių idėjų, kad mes matėme ant nulio. Visada statyti, pakartojimo statyti. Matyt, šioje programoje, po gaubtu, net nors tai parašyta C ir ne nulio, ji tai daro kažkas vadinamas atitinka amžinai, jei vartotojas neturi įvestas sveikasis skaičius, tarkim pabandyti dar kartą, pabandyti dar kartą, pabandyti dar kartą, bandykite dar kartą, todėl galiausiai, kai mes darome gauti sveikąjį skaičių, tada jūs ištrūkti iš tos linijos. Taigi, ką kiti funkcijos mes galime naudoti čia CS50 bibliotekos? Na, akivaizdžių rūšies, bent jau remiantis duomenų tipai, kad dabar mes žinome, egzistuoti. Mes įdiegėme GetString, GetInt, bet ir visame pirmųjų savaičių termino, taip pat galite naudoti GetFloat ir Siekiant gauti būtent GetDouble ir GetLongLong duomenų tipai, kuriuos norite. Nes čia pagrindinė detalė yra tai, kad, skirtingai nuo kai kurių kalbų, kaip Python ir Ruby, kur nebūtinai turi deklaruoti kintamojo duomenų tipą - jūs neturite pasakyti kompiuterio, kokios rūšies daiktų jūs ketinate įdėti į kintamasis - C, jūs turite būti vis tiek tikslūs. Taigi, jei norite, kad kintamasis vadinamas n, saugojimo riekė kad šiuo atveju būna, kad 32 bitų pagal susitarimą pasakyti kompiuterio, kad šitie bitai ketinate laikyti numerį - ne personažas, ne eilutę, o ne plūdė. Ir tai išsprendžia problemą, mes efektyviai įvažiavo į praeitą savaitę. Jei mes naudojame nulių ir numerius sudaro ne tik numerius, bet ir pusryčių ir Cs, kaip pasaulyje yra kompiuteris einate žinoti, kad faktiškai ši bitų modelis sudaro skaičių 65, o ne atstovaujančių laiškas, kuris atsitiktinai, pagal ASCII, prisimenu, buvo lygiavertis iki 65? Taigi šie duomenų tipai pateikti kontekstą prie kompiuterio, todėl kad jis žino, jei šitie bitai turėtų būti aiškinamas kaip int arba kaip eilutę. Bet kokių klausimų, tada apie tai? Taip? David J. Malan: Geras klausimas. Jeigu mes priimsime stdio.h, išsaugokite failą leiskite man eiti į terminalo langą ir paleisti padaryti matematikos, zoom , ir įveskite dabar gaunu kitą klaidą, nes aš netiesiogiai nurodant, kokią funkciją dabar? Printf. Taigi dabar aš sukūriau naują problemą, kurios sprendimas yra esmės tas pats. Man reikia įdėti, kad atgal. Auditorija: [nesigirdi] David J. Malan: oh. Taigi, jei aš - Gerai, yeah. Taigi, jei aš pašalinti standartinis I / O lib įtraukimą čia, ir tada jūs sakote, jei aš gauti atsikratyti printf gauti atsikratyti printf? Taip. Tai turėtų dirbti, nes aš jau ne naudojant bet kurį šūksniais. Aš tiesiog guli? O, gerai. Tai neveiks, nes nauja klaida, mes ką tik pristatė. Ir šis yra šiek tiek daugiau, savaime suprantama. Kokia tai problema? Nepanaudoti kintamųjų n. Taigi ši klaida yra mūsų sukonfigūruota rezultatas prietaisas būti itin pedantiškas, tikrai klykauti jums visų galimų klaidą, net jei tai tipo nemirtinas klaida kaip šis - tai tikrai toks didelis spręsti, kad aš paskirtas int, įdėti numerį jame, ir tada tiesiog nieko nedarė su juo? Iki funkciškai, Nr. Kad nesiruošia nutraukti programą. Tai tiesiog rūšies kvaila, tiesa? Yra ne vertė paprašė šio skaičiaus saugomi į kintamąjį, jei jūs niekada nieko daryti, su juo, ar spausdinti arba išsaugokite jį. Taigi, šiuo atveju, Apsukite metalinis garsas pripažindamas, kiek ir jis sako nepanaudotų kintamųjų n. Taigi, mes galime išspręsti šią problemą, jei mes tikrai norime. Bet vėl, tai yra gera programavimo dabar. , Kad galėčiau tiesiog tai padaryti - eiti čia, leiskite man išvalyti ekraną, kad matematikos. , Kuri veikia. Dabar galiu paleisti mano matematikos programą, mano indėlį gerai, kad buvo blogai. Mano būdu ir tai yra viskas, ji šiuo atveju. Taigi faktiškai, pabandykime vieną kitą kampe bylą, kad mes negalvojo anksčiau. Šiuo atveju - čia, galime grįžti į vienas, kad šiek tiek patogesnis. Leiskite man grįžti čia ir paleisti vėl padaryti matematikos. Oi, ką aš padariau ne taip? Turite įvirsta toliau. Gerai. Dabar mes grįžome į pradinę būseną, kai visi tikiuosi gerai. Ir dabar, jei aš paleisti matematikos, 123 atrodo į darbą. Bet tai nėra tikrai veiksminga įrodymas, tiesiog pasakyti, Gerai, kad veikia. 789, kuris veikia. Laikas pateikti. Nes ten kiti kampiniai atvejai čia. Eilutė nebuvo tikrai suteiks mums daug problemų rašyti visai daug simbolių. Bet kas, jei aš tipo? Paspaudus skaitmeniu "1" visai daug, čia visai daug viskas gerai, tai gauti šiek tiek nuobodu, todėl aš ruošiuosi čia sustoti, ir aš ruošiuosi, paspauskite Enter. Ką, po velnių nutiko? Taigi, tai iš tiesų gali būti paaiškinta. Taigi, ji kaip dvejetainis? Gera mintis, bet ne, tai ne tai, kad ji paėmė jį kaip dvejetainis, nes iš tiesų, tai buvo tiesiog rūšies atsitiktinumas. Mes galime tai padaryti dar kartą. Taigi čia binarinės sistemos 2 ne, tai tikriausiai pakankamai vistiek. Įveskite. Taigi, tai buvo ne problema. Ką dar? Tiksliai. Taigi, prisiminkite, kas iš tikrųjų yra int. Tai 32 bitų, kurie bendrai yra interpretuojami kaip skaičius. Jei turite 32 bitus, tai reiškia, kad kiekvienas bitai gali būti 0 arba 1, 0 arba 1. Taigi, tai reiškia, kad šis bitas yra dvi galimybės, dvi galimybės, du galimybes šiek tiek - kad 2 kartus 2 kartus - kad nuo 2 iki 32-galia iš viso permutations nulių ir, jei turite 32 vietos rezervavimo ženklų, nulių ar tie, priešais jus. Taigi, jei aš turiu 2 32, matematiškai, tai ką? Todėl daug. Tai 4 milijardų eurų, suteikti arba užtrukti. Ir 4 mlrd. Neatrodo, kad būti tai, kas čia buvo išspausdintas. Tiesą sakant, tai atrodo maždaug 2 milijardų. Bet tai nėra atsitiktinumas. Tas faktas, kad kompiuteris klaidingai aiškino savo didelį skaičių, mano didžiulis seka tie, ir tada mano labai seka poromis, maždaug 2 mlrd., paaiškinama, kaip? Yra ant int dangtelis. Yra tikrai maksimalios vertės, kad jums gali atstovauti. Bet tai paprastai 4 milijardų eurų, tiesa? Jei 2 iki 32 yra maždaug 4 mlrd., Kad atrodo tai didžiausias skaičius. Taigi ne likusi, bet gera mintis. Neigiami skaičiai. Taigi, jei turite 4 mlrd. Galimų dalykų, kuriuos galite sudaro su šių įvairių kombinacijų 32 0s ir 1s, gerai, ji stovi prie priežasties, kad mes, žmonės galbūt norėsite atstovauti ne tik teigiami sveikieji skaičiai bet neigiami sveikieji skaičiai. Ir iš tiesų, tai prielaida, kad C daro. Taigi su 32 bitų, galite atstovauja maždaug neigiamas 2 mlrd visą kelią iki teigiamo 2 mlrd. Ir todėl šiuo atveju, tai, ką mes iš tikrųjų matome, yra tik mūsų sveikojo skaičiaus talpos pakraštyje, ir mes turime, todėl kalbėti, krantų sveikasis skaičius. Mes bandėme įsprausti į jį, nei iš tikrųjų gali tilpti daugiau bitų. Taigi, galutinis rezultatas yra, mes iš esmės turime visus 1 bitai. Mes apversta visų mūsų bitai dėl, mes bandėme atstovauti didžiausia įmanoma, bet tai akivaizdžiai nėra beveik pakankamai didelis, kad atstovauja du dalykus, aš tiesiog atspausdinti. Taip? Auditorija: [nesigirdi] David J. Malan: Geras klausimas. Kodėl mes negalime tiesiog atstovauti, kad neigiamas pasirašyti kaip tik simbolį? Taigi, mes visiškai negalėjo, ir mes galime tada išsaugokite papildomas bitų. , Bet jūs vis dar ketinate turėti, tą brūkšnį ir kad ketina jums kainuoti bent ką nors, matyt, šiek tiek. Taip taip, mes galime turėti 32 bitus, naudojami mūsų grupės, bet dabar turime dar šiek tiek naudojamas mūsų brūkšnys simbolis, minuso ženklas. Taigi dabar mes turime 33 bitų vertybes, kurias mes galime padaryti, bet tai tik ne taip, kaip tai daroma. Mes padarėme sprendimą skambučių metų, 32 bitai yra tarsi čia matavimo vienetas. Taigi, mes ketiname naudoti vieną iš šių bitų veiksmingai atstovauti negatyvumo, ir 31 bitų atstovauja numerį. Kiti klausimai? Gerai. Tai daug. Kodėl ne mes eiti į priekį ir imtis mūsų penkių minučių pertrauką? Gerai. Taigi dar kartą, o ne overemphasize matematikos taikymai programavimą, tegul tiesiog laupti šį vieną pavyzdį Prieš mes pereiti į kitas konstruktai, tik todėl, kad bus parodyti keletas bendrų suklupimo taškų dėl kai kurių pagrindai, kai jis ateina į raštu programas. Šiuo atveju, daro aritmetines išraiškas, kurie turi tam tikrą įdomus aktualumas sintaksę. Kad tai tik formulė, su kuria mes galime konvertuoti temperatūras iš Farenheito į Celsijaus. Jei jūs neturite prisiminti, tai tik formulė. Taigi, jei mes prijungti 32 laipsnių pagal Celsijų vertės, kuri yra įšaldymo, kad bus 32 minus 32 yra 0, ir iš tiesų, 0 Celsijaus įšaldymas, sąrašą. Taip greitai normalumas patikrinti ten - kad pažįstamas formulė. Leiskite man pereiti prie prietaiso, nors ir pradėti raštu programa, vadinama, kaip, f2c; "Farenheito į Celsijaus dot c ". Ir viršuje čia, aš norėčiau pradėti nuo # include stdio.h, ir aš ruošiuosi daryti int main (void), ir dar kartą, mes grįžti į ateitį, nes ką int tai ten ir kas tai negalioja. O dabar leisk man eiti į priekį ir įdiegti programą, iš esmės tai daro mus konversija. Printf, tarkim, Farenheito temperatūros. Ir tada leiskite man eiti į priekį ir gauti iš vartotojo vertę. Kokios vertės turėčiau gauti iš vartotojo, jeigu aš noriu jiems duoti man temperatūra Farenheito? Taip? Ką siūlytumėte? Taip. Taip plūdė jaučiasi gana protinga. Dar kartą, mes turime, tik keletas variantų, kurie mes matėme iki šiol. Mes turime dalykų, pavyzdžiui, char, dvigubas, plūdės, int, long long bool, eilutė. Taigi iš šių, plūdės jaučiasi gana protinga. Mes galime naudoti dvigubą, teisę, nes jei mes tikrai norime atstovauja žmogaus temperatūrą - 98,60000 - mes galime naudoti 64 bitus tai padaryti, bet jis jaučiasi temperatūros žiauru. Todėl galime tik eiti su plūdės. Dabar man reikia kintamąjį. Tik kad viskas būtų paprasta, aš ruošiuosi jį vadiname f, bet aš gali būti tiesiog kaip teisingai jį vadiname temperatūra, tačiau bet kuriuo atveju yra gerai. Taigi plaukti f = GetFloat. Kuo greičiau, aš dabar nusprendė naudoti GetFloat, nors aš reikia padaryti viena pataisa. Taip. Taigi, mums reikia # include , kitaip kompiliatorius šaukti į mus. Dabar, aš turiu pinigų srautas, leisk man eiti į priekį ir daryti konversiją. Taigi, pirma, leiskite man gauti į įpročiai komentuodamas savo kodą. Taigi dar kartą, komentaras yra tik užrašas, žmogaus ŠTAI nėra per se programos dalis, tačiau jis vienas, padeda jums suprantu, ką tu kitą rytą, arba kitą mėnesį, tai padeda jūsų mokymo kolegos suprasti, ką padarei ar tai, ką ketinama daryti, todėl paprastai yra labai gera praktika. Kas keletą eilučių kodo, parašyti komentarą sau ar jūsų kolega. Taigi čia, aš norėčiau pasakyti: "Paprašyti naudotojo reikalavimai, keliami temperatūrai." Neturi būti pilnas sakinys, tik trumpą frazę. Bet už komentavimo C idėja yra tai, kad kiekvienas iš jūsų komentarai turėtų suteikti jums - ar, tarkim, TF ar bendradarbiui nugriebti savo programą ir tiksliai žinoti, ką jis ne tiek daug skaityti kodą, bet skaitant komentarus, kuris turėtų būti trumpas ir aiškus. Viskas gerai, todėl dabar leiskite man eiti į priekį ir pasakyti, "Konvertuoti Farenheito į Celsijaus. "Taigi, aš ruošiuosi eiti į priekį ir daryti, tarkim, plaukti c. Mes nuolat Celsijaus kaip slankaus kablelio vertės. Ir leiskite imtis Pabandyti ne tai. Formulė yra, vėlgi, čia. Kaip 5/9 kartus F minus 32. Todėl galime tai padaryti. Taigi, 5, padalytas iš 9, atėmus oi, aš jau messed it up. Kartus. Taigi, 5/9 kartus F minus 32. Taigi F minus 32, kabliataškis. Ir dabar, čia apačioje, aš ruošiuosi eiti į priekį ir pasakyti, spausdinti rezultatą. Ir ši dalis lengva. Printf. Kaip aš galiu eiti apie spausdinimą? Na, galėčiau pasakyti: "Šis skaičius Celsijaus% f \ n", tik kai estetika. Ir kas tada vertė aš noriu prijungti čia printf ųjų Antrasis argumentas? Gerai. Taigi tik c. Taigi, mes pradėsime su, ir tada tiesiog grįžti 0. Vėlgi, tai neturi nieko bendro su matematika. Tai tiesiog reiškia, kad viskas yra gerai. Dabar, tai teisinga, ši programa? Gerai. Taigi, aš padariau keletą klaidų. Net jei jūs neturite idėjos, kokia programavimo, galite rūšiuoti kildina atgal į pradinėje mokykloje klaidos čia gali būti. , Kas yra vienas iš pirmųjų? Auditorija: [nesigirdi] David J. Malan: Taip. Taigi, mes trūkstamus skliausteliuose. Tai buvo sąmoningas, kad aš skliaustuose keynote pastumkite čia, nes ten yra iš tikrųjų tai tvarkos sąvoka veiklos, arba viršenyb ÷ s, pagal kurią tam tikros operacijos - Multiplication - turėti aukštąjį privalomas, turi didesnę pirmenybę, nei dalykų kaip to ar skirtumą. Taigi, mes padarėme tai už metus, tik, kad tiksliai ir aiškiai ką matematinę operaciją reikia padaryti pirmiausia. Taigi, aš tikriausiai turėtų imituoti būtent tai. Kitaip, kompiuteris yra tikriausiai ketina bandyti daryti kažkas panašaus 9 5 atskirties, tada padauginti F, tada atimti 32 iš visa tai. , Kas, tiesą sakant, tai, ką norime padaryti. Taigi leiskite suskliausti. Pridėkime mano skliaustus čia, skliaustai čia. Tegul tai čia. Čia, aš ką tik pastebėjau dar vieną klaidą, aš padariau pakeliui. Taip? Auditorija: [nesigirdi] David J. Malan: Ah. Geras. Taigi, mes iš tikrųjų turime tą patį sveikasis skaičius padalinys klausimas iš anksčiau. Manau, teisinga, kad, pažiūrėkime, kas simptomas. Bet mes ketiname turi ištaisyti kita klaida čia. Taip? Auditorija: [nesigirdi] David J. Malan: Taip. Taigi, kvaila klaida padariau, bet nepaprastai svarbu. Kompiuteris nėra tiesiog nepastebėti ir leiskite man naudoti kapitalo F, kai aš iš tikrųjų paskelbė kintamasis mažosiomis f 8 eilutėje. Taigi man reikia ištaisyti line 11 mano kapitalizacijos, kuri metu senumo buvo kapitalo F netyčia. Ką apie čia? Tai turėtų būti parašytas mažosiomis raidėmis, taip pat? Ji turėtų būti, bet tai atsitiktinumas. Kad% f neturi nieko daryti su kintamojo. Taigi, tiesiog super aišku čia, leiskite man eiti į priekį ir pervardyti, trumpai, "temperatūrą." Leiskite man pervadinti tai "temperatūra". Leiskite man ne pervadinti. Nes, vėlgi,% f visame pasaulyje reiškia, "slankiojo kablelio skaičius. Neturi nieko daryti su mano kintamojo. Tačiau "temperatūra" visur yra tik šiek tiek sakytinis todėl aš grįžti į savo mažosiomis raidėmis "f" s. Dabar leiskite man eiti į priekį, į mano langą. Padaryti f2c , kuris, vėlgi, buvo savavališkai vardas davė į šį failą. Atrodo, kad turime surinkti. Tegul man paleisti f2c. Įveskite. Temperatūra pagal Celsijų - darykime lengva. 32. Gerai, ištaisyti. Tačiau, jei aš dabar 212 virinimui - Damn. Gerai. Taigi, akivaizdžiai nėra pataisyti, jei jūsų TF bando bent dvi vertės. Taigi, kas yra problema čia? Na, jūs jau įdėti pirštą ant kokia yra problema. Bet kodėl tai, kad byla? Čia, kai aš darau 5 matematikos, padalintą iš 9. Taigi konceptualiai, tai visiškai teisinga. Visiškai suderinta su formule. Bet kompiuteriai padaryti tik tiksliai, ką jūs pasakykite jiems padaryti. Ir ką mes čia pasako kompiuteriui padalinti sveikuoju skaičiumi 5 sveikasis skaičius 9 ir man duoti rezultatą. Problema yra, nors, kai jūs padalinys naudojant duomenis rūšys, produkcija yra tas pats duomenų tipas, kaip įėjimai. Ir todėl, jei du įėjimai tiek int, produkcija vyksta int. Ir taip 5, padalintas iš 9, yra taškas kažkas. Bet kas artimiausias sveikasis skaičius nurodo kažką? Taigi, tai tikrai 0. Taigi, kaip aptarėme pirmadienį, viskas po dešimtainės taškas bus sutrumpintas. Jis tiesiog bus išmesti. Taigi tai yra visiškai klaidinga, nes aš taip pat tik padauginkite viską 0 čia. Dabar galiu išspręsti šią problemą įvairiais būdais pora. Galėčiau tai padaryti. 5,0 padalintas iš 9,0. Techniškai, aš net ne reikia padaryti, kad. Ji pakanka tiesiog padaryti vieną skaičių flotacinio arba dukart įgyvendinant kablelio čia. Nes tai, kas vyksta dabar, kai jums padalinti sveikasis skaičius plūdės, arba dukart, kompiuteris bus įgyvendinta oh, viena iš jų yra tikslesnis. Leiskite man suklysti suteikti jums daugiau tikslumo pusėje nei jums skirtas. , Todėl bus konvertuoti rezultatą - jis grąžina rezultatą kaip slankaus kablelio vertės, taip pat. Taip, kad dirbtų. Tai galėtų dirbti. Ir ten vienas kitas mechanizmas, kad mes pamatyti Detaliau kitą savaitę. Kaip programuotojas, jūs iš tikrųjų galite pasakyti kompiuterio iš tikrųjų gydyti vieną duomenų tipą, kaip ir nors tai būtų dar vienas. Taigi aš iš tikrųjų galėtų tai padaryti. Skliausteliuose, galiu pasakyti kažką panašaus (float), atidarykite skliaustas, netoli paren. Ir tai yra tai, kas vadinama "liejimo." Vėl, daugiau šioje kitą savaitę. Bet tai tik programinis būdas pasakyti kompiuteris, Yeah I know 9 yra sveikasis skaičius arba ilgas. Aš žinau, tai nėra slankaus kablelio reikšmė. Bet su ja elgiamasi kaip toks vistiek. Taigi, norint mesti duomenų tipą konvertuoti iš vienos į kitą. Atvirai kalbant, tai yra tik šiek tiek negraži, todėl norėčiau pasiūlyti mes einame atsargines tiesiog konvertuoti į pradinį pasiūlymą šių dalykų slankiojo kablelio vertes rankiniu būdu. Nes dabar tai tiesiog super aišku, kas vyksta, ir tai dar ne viskas, kad blaško. Taigi, tegul dabar grįžti į mano terminalo lange. Padaryti f2c. Leiskite man eiti į priekį ir paleisti. Ir, kaip panaikinti, jums nuobodžiauti įvesti šias komandas vėl ir vėl, suprantame, kad kompiuteriai, čia, kaip Linux linkę būti labai protingas. Ir jei aš paspauskite aukštyn, mes galime eiti per visą savo istoriją komandos, aukštyn ir žemyn. Taigi, šiuo atveju čia, aš galiu tiesiog eiti paleisti f2c. Aš vis rėkė, nes aš ką tik padarė, kad antrasis prieš. Jis jau iki šiol. Taigi, dabar galiu paleisti f2c dar kartą. Pabandykime 32 pagal Farenheitą. Dabar pabandykime 212 Farenheito. Phew. Atrodo į darbą. Dabar, tai yra gerai, bet ji jaučiasi šiek tiek savavališkas, kad Rodau šeši skaičiai po skaitmenų po kablelio. Tiesa? Jei esate asmuo, TV oras, jūs natūra iš doofus jei jūs skaitote temperatūrą tai tikslumo laipsnis. Todėl galime supaprastinti šią. Todėl galime iš tikrųjų eiti čia, mano printf. Ir taip, aš noriu plaukti. Bet aš noriu dabar nurodyti tikslumo. Ir aš norėčiau būti šiek tiek glaustas. Aš ruošiuosi pasakyti, duok man vieną tašką po kablelio. Taip, o ne pasakyti,% f, aš norėčiau pasakyti,% .1 f. Ir tai tik reiškia, kad man duoti vieną poziciją po kablelio. Gerai. Pabandykime tai vėl. Leiskite man iš naujo paleisti po kompiliavimo. Ir dabar aš įveskite 32 ir aš grįšiu daugiau glausta vertė. Ir aš galiu įvesti, dabar 212, ir grįžti labiau prigludusi vertė, taip pat. Ir yra kitų dalykų, kuriuos galite padaryti su printf. Jūs iš tikrųjų galite nustatyti, kaip plačiai šis skaičius turėtų būti. , Jei norite turėti padding apie tai, kad jūs galite dešiniuoju pelės suderinti ar kairėje suderinti visus savo numerius arba pabandykite centro dalykų. Taigi, suprantate, yra mažai gudrybės, kuriuos galite padaryti, ten. Bet jie tiesiog skliautais formato kodais, kaip mes turime. Taigi, kalbant apie šį klausimą vyresniškumo. Tai labai nuobodu stalo eiti per metodiškai. Bet suprantame, kad turi sugalvoti C autoriai taisyklės, kuriose, kuriuos ūkio subjektai turi aukštąjį viršenyb ÷ s, privalomos galios, nei kiti. Taigi, kadangi pradinėje mokykloje, mes žinojo, kad ji daugyba ir dalyba, tada Sudėtis ir atimtis, tada kai kurių kitų dalykų. Į programavimo pasaulį, yra daug ilgesnis sąrašas dalykų. Ir tai ne ką verta įsiminti dabar. Gausite acclimated prieš ilgas. Bet, kaip ir pradinėje mokykloje, skliausteliuose paprastai išspręsti viršenybės klausimai, darant super aišku, kompiuteris ir žmogaus vienodai, ko siekiama. Todėl mano, kad tai tik šiek tiek Cheat sheet. Tačiau dauguma iš tų detalių, mes ne gauti tam tikrą laiką. Gerai. Dabar galime sukurti ir tolti nuo šių kvailas mažai matematiniai pavyzdžiai. Vis dar naudoja tuos pačius pagrindus, bet pradėti išreikšti save šiek tiek daugiau kaip nulio. Taigi nulio, mes turėjome šias Būlio išraiškos. Ir anglų kalbomis, Būlio išraiška yra kas? True arba false. Tai kažkas, kad vertina true arba false. 1 arba 0. Įjungti arba išjungti. Ką gi, jūs norite jį pavadinti. Dabar nulio, įspūdį, atrodė taip. Ir tai derinys, ten apačioje, trijų įspūdį. Vienas kartu - kažkas, kad turi tuščias ir tuščias. Ir tada du Būlio išraiškos viduje. Taigi galite lizdaviečių Būlio išraiškos Norėdami gauti daugiau sudėtinga Būlio išraiškos. Pavyzdžiui, jei tai yra šeštadienis, ir jis yra gražus oras, tada išeiti į lauką. Ar kažkas savavališkai, pavyzdžiui, kad. Taigi, jūs galite prisijungti Būlio išraiškos sugalvoti didesnė tiesa vertė, kurio atsakymas mažesnes. Dabar, C, laimei, šis kartografavimo tiesų yra gana paprasta. Skliaustai padėti, kad viskas būtų aišku čia. && Yra tai, ką reiškia "ir". Tai štai kaip mes ketiname konvertuoti tuos blokus nuo nulio iki C Ir sąlygų matėme nulio, ant kairės rankos przylegało galite sukrauti juos panašiai C. Jei x yra mažiau nei y, tada tai padaryti. Else if x yra didesnis nei y, tada tai padaryti. Kita logiškai jie turi būti lygus, todėl pasakyti kad jie yra lygūs. Taigi, dabar mes galime pradėti kurti šiuos dalykus. Taigi darykime pavyzdį. Leiskite man atverti failą, kad kurso interneto svetainėje, kad Rašiau iš anksto. , Kuris yra vadinamas nonswitch.c. Ir mes pamatyti, kodėl vos akimirką. Taigi šį failą - nonswitch.c - visų pirma reikėtų suprasti, kad yra visa krūva pastabas viršuje. Kad tik paaiškinti to failo vardą, ką ji , ir taip toliau. Ir tai, matyt, rodo, boolean-mo - conjoining dvi išraiškas. Taigi, pažiūrėkime, kaip ši programa veikia. Du mano failus, cs50.h ir stdio.h. Jeigu aš slinkti žemyn, dabar į programą, tai šiek tiek ilgiau nei mes parašiau prieš, bet gana įskaitomas. Taigi, aš pirmą kartą spausdinti į vartotoją, on line 18 "Duok man sveikasis skaičius nuo 1 iki 10." Taip tai tiesiai ten. Dabar gaunu sveikasis skaičius. Bet suprantame kad GetInt - gana paprasta. Tik ketina gauti int. Ji ketina užtikrinti, kad ji gauti int, o ne eilutė arba plūdė. , Bet jis nesiruošia daryti bet kokį pasienio tikrinimo. Jis nesiruošia filtruoti skaičiai tarp tam tikras intervalas. Taigi, mes turime įgyvendinti, kad save. Taigi tiesiog kaip naujo, kur aš galėtų padaryti konjunkcija du užrašai, galiu padaryti, kad C taip. Jei n yra didesnis nei arba lygus 1, ir n yra mažesnis nei arba lygus 3, aš einu labai savavališkai dekretu kiekis yra nedidelis skaičius. Tik už pareiškimą labui. Else if n yra tarp 4 ir 6, spausdinti "pasirinko vidutinės numerį. "else if n yra nuo 7 iki 10, spausdinti" Jūs pakėlė didelis skaičius. "Kitas print" Jūs pasiimti neteisingas skaičius. " Nes logiškai reiškia, kad, jei mes išnaudojo savo asortimentą. Taigi suprantame, kad tai yra ne visai, kaip mes rašome didesnis arba lygus matematikos klasės. Tiesa? Jūs paprastai padaryti tai, kaip šis, su pagal liniją. Bet nėra tokio klavišą ant mano klaviatūros. Taigi, C simbolis išreikšti didesnis nei arba lygus du simboliai, ir mažiau nei simbolis arba lygus, taip pat yra du ženklai. Gerai. Taigi, jei aš paleisti šią programą, jums greičiausiai gali atspėti, kas tai yra ketinate daryti. Jei aš einu į priekį ir padaryti nonswitch, "Enter". Ir tada paleisti nonswitch. Duok man skaičių nuo 1 iki 10. Aš ruošiuosi suteikti jai 11. Paėmiau neteisingas skaičius. Leiskite man pabandyti numerį 3. Paėmiau mažą skaičių. Taigi gana paprasta. Ką daryti, jei noriu pakeisti šios programos elgseną ir , o ne padaryti kažką šiek tiek skiriasi? Leiskite man eiti į priekį ir pasakyti tai. Leiskite man atsikratyti visa tai. Ir leiskite man pasakyti, jei (n == 42). Ir tada aš ruošiuosi eiti į priekį ir pasakyti spausdinti "Jūs pakėlė teisingas atsakymas. "Kitas mes ketiname eiti į priekį ir pasakyti, printf ("Jūs pakėlė atsakymas neteisingas "); Gerai. Tiesiog todėl, kad. Dabar keletas dalykų, mes galime padaryti čia. Vienas, aš ne įrašykite simbolį, kad jūs manote, kad yra labiausiai pagrįstas. Kai noriu patikrinti lygybę, paaiškėja, jums nereikia naudoti lygybės ženklas. Jums, o ne naudoti vienodą lygybės ženklą. Ir kodėl gali būti, kad tiesiog intuityviai? Taip. Auditorija: [nesigirdi] David J. Malan: Teisingas. Lygybės ženklas jau naudojamas užduotims. Kažkas tikrai ne manau, kad tai per. Ir todėl dabar, kai kalbama apie bandymų lyčių lygybės, mes turime būti aiškesnis, ir pasakyti, lygus lygus. Labai dažna klaida yra tai padaryti. Ir, jei darbo valandomis arba kažkada kitą savaitę arba artimiausias dvi savaites jūs darote kažką panašaus į tai, ir tada kovoti su juo, 10, 20 minučių, bando išsiaiškinti, damn klaida yra, suprantate, kad jūs esate vienas iš tų žmonės, kurie padarė šią klaidą. Taigi, super lengva padaryti. Bet tikslas dabar yra atremti šią klaidą. Tai galėtų įvertinti, nes tai, kas tai tikrai sako:? Jei n gauna 42. Taigi veiksmažodis žmonės naudoja, žodžiu, išreikšti užduoties sąvoka yra "gauna". Taigi, jei n gauna 42. Taigi, tai reiškia n 42 priskirti. Dabar turiu loginę išraišką skliaustuose, viduje šios būklės, kurių kiekvienos vertė yra 42 metai. Tiesa? Nes jei jūs ją įvertinti iš vidaus į išorę, iš viso atsakymas, dabar yra 42 metai. Taigi, jei aš paprašė klausimą, "jei (42)," tai, kas kad tikrai pasakyti? Na, Būlio išraiškos gali būti tik true arba false. 1 arba 0. Įjungti arba išjungti. Taigi, mes, atrodo, kampe atveju byloje, pagal kurią visi staiga, aš sakau "jei (42)". Tai nėra Būlio vertė. Taigi, ką kompiuteriai daryti, nors, tai iš esmės prilygsta nieko, kad ne 0 aiškinama, kad būtų tiesa. 1. Įjungta. Jie visi funkciškai lygiavertės. Tik vertė 0, arba raktinį žodį klaidingas, nes mes galų gale pamatyti, iš tikrųjų yra klaidinga. Taigi, "jei (42)" iš tikrųjų būtų tiesa, nes ji yra ne nulis. Taigi, tiksliau čia, Būlio vertė yra tikrai ne taip daug true arba false, tačiau tam atveju, jei yra 0 arba ne nulis. Taigi klaidinga arba nėra klaidinga. Ir tai leidžia mums, kad apimtų daugiau skliausteliuose išraiškos galimybės. Todėl mes turime, kada nors taip atsargiai, tai sakau - if (n == 42). Tiesiog todėl, kad mes turime nurodyti lygybės testą, kurių vertė priskyrimas. Ką dar verta paminėti čia? Šie garbanotieji petnešų yra iš tikrųjų nėra būtinas. Aš jau daro juos tiesiog būti nit-smulkmeniškas čia. Bet kai sąlygą, kad turi tik vieną eilutę kodas, kaip patogiau, programuotojai ne reikia naudoti garbanotieji petnešų. Pakanka tiesiog įtrauka, dėl estetinių priežasčių, o tada parašykite eilutę kodo. Tik tada, kai norite parašyti dvi eilutes kodo - Pavyzdžiui, kitas printf ("Bye!"). Jei norite padaryti, , kad tai yra pažeistas. Galite įtraukti viską, ką nori, bet faktas, kad jūs turite įvestas dvi eilutes kodo nenaudojant garbanotieji petnešų reiškia, kad ši programa neveiks ar gali net sudaryti teisingai. Taigi, šiuo metu, turi būti sąžiningas, aš manau, kad geriausias įprotis yra tik naudoti garbanotas petnešos, ir jūs pamatysite, kad jie super aišku, kas vyksta. Taip pat, kaip panaikinti, ypač jei jūs esate vienas iš tų, kurie naudojasi Rekomenduojamos knygos ar išteklių internete - suprasti, kad šis stilius sąvoka programavimas. Ir kai kurie žmonės iš tikrųjų nori įdėti garbanotais petnešomis čia ant linijos. Kai kurie žmonės nori padaryti juokingas dalykų, norėtų juos čia. Nėra jokių atsakymas neteisingas, kai kalbama apie stiliaus, bet tai negerai. Tačiau kai kurie žmonės tai padaryti. [Juokas] David J. Malan: Taigi, aš sakiau, tai dabar, tiesiog, nes, kaip jums perskaityti knygų ar internetu dalykų, kad jūs ketinate gauti skirtingi pranešimai iš įvairių mokytojų ir skirtingi autoriai. Ir tiesiog suvokti, kad funkciniu požiūriu, jie atitikmuo, bet būti nuoseklūs. Taigi šiuo atveju, mes standartizuoti garbanotieji petnešos čia rikiuojasi kairėje. Gerai. Taigi eikime į priekį dabar ir paleisti, ir pamatyti, kas atsitiks su šia programa. Padaryti nonswitch. Tada paleiskite nonswitch. Duok man sveikasis skaičius tarp 0 ir - taip, kad ne nebėra, bet aš tik ketina savavališkai pasakyti 42. Ir aš surinkti teisingą atsakymą. Na dabar, galime iš tikrųjų į tai kita kryptimi. Paaiškėjo, kad kai kurios kitos sintaksė, mes galite naudoti programą. Štai naujas gabalas sintaksė, kuri yra praktiškai tas pats, bet tiesiog įveda naują išreikšti save. Taigi, tai yra tai, kas vadinama "switch" teiginys ". Ir "switch" teiginys veikia taip. Ji mano, skliausteliuose, vertę, kurią norite "Jungiklis". Jūs norite, kad elgtis kitaip, remiantis jo vertės. Taigi, tai reiškia, kad n vertės jungiklį. O ką tai reiškia? Na, jei n yra 1, 2 arba 3, eiti į priekį ir atsispausdinti "Tu pakėlė didelį skaičių "ir tada pertrauka. Pertraukos priežastis yra ta, kad C būdas veikia greitai, kaip mano atveju, kad atitinka, jis pradeda vykdyti visi žemiau jo kodą. Taigi, jei aš turiu vieną eilutę kodo, kaip aš čia on line 27 paleidžiama vykdyti. Jei aš čia pridėti dar vieną liniją, jis bus vykdomas. Kita linija, jis bus vykdomas. Programa sustoja tik tada vykdyti tai, kas žemiau taikytiną teisminę pareiškimą, kai aš aiškiai pasakyti "pertrauka". Taip neteisinga. Teisė, šiuo atveju, kaip rezultatas. 4 arba 5 arba 6, panašiai, vyksta atsispausdinti pranešimą. Šiuo atveju, vidutinės numeris. Pertraukos. Byla 7, 8, 9, 10, ji ketina atsispausdinti "Jūs pakėlė didelis numeris. "Break. Ir tada ten tiesiog raktinį žodį vadinamas "pagal nutylėjimą" tai efektyviai kaip ir "kitas" statyti. Toks naujas sintaksė, bet intelektualiai, nieko visi naujo čia. Tai kaip "Scratch. Jei, if, else if, tarsi bloko. Taigi, kad perėjo šios programos versija. , Bet pastebėsite, kad mes tai padarėme su skaičiais čia. Leiskite man atverti antrą versiją, tiesiog parodyti kažkas šiek tiek daugiau betono. Taigi čia mes turime klases vietoj. Pasirodo, galite naudoti jungiklius ne tik sveikaisiais skaičiais, bet simbolių. Ne visų duomenų tipų, tačiau ne rečiau kaip simbolių. Taigi čia, mes galime padaryti kažką panašaus, jei C vertę, kuri vartotojas turi įvesti, atitinka 19, naudojant GetChar funkciją, yra kapitalo arba mažosiomis, galime interpretuoti kaip rangui, ir sako, kad jie pasirinko puikią klasę. Ir žemyn palei "switch" teiginyje, ar mes turime kita bylos dėl "B" ir "C", ir taip toliau. Bet tegul dabar baigia vienas kitas dalykas. Ir vėl, tipo skrenda per kai kurie iš šių pavyzdžių. Bet tai tikrai, kad galėtume juos taikyti, dabar - ar tikrai, tik išversti jas dabar - iki C Taigi leiskite man eiti į priekį ir tai padaryti. Aš einu atverti naują failą. Ir aš ruošiuosi tai padaryti . Ir tada aš ruošiuosi daryti int main (void). Leiskite man išsaugoti šį failą kaip loop.c. Tik kaip pavyzdys. Ir aš ruošiuosi eiti į priekį ir atlikite šiuos veiksmus. Aš noriu rašyti labai nuobodų programą. Taigi 10. Darykime tai. 9. Gerai. Kuo greičiau pradėti tai daryti programavimo, jūs tikriausiai daro kažką blogo. Bet mes pradėsime ten vistiek. Oi. , Kad tikrai negerai. 7. 6. 5. 4. Nieko nutiks, kai mes gauname 0. 3. 2. 1. Gerai. 0. Ištrinti. Gerai. Taigi, grįžti 0. Todėl ši programa akivaizdžiai ketina daryti tai, ko labai Nemalonu sako, kad ji ketina daryti. Ji ketina spausdinti visus tuos, vertės, nuo viršaus iki apačios. Taigi, leiskite man padaryti kilpą. O tada - oi. Padaryti kilpą. Buvau neteisinga kataloge. O dabar leiskite man paleisti kilpą. Įveskite. Nuostabu. Labai gražus. Gražus, ilgas programa. Viskas gerai, bet dabar galime tai padaryti geriau. Tiesiog kaip ir nulio, kai jūs pradėjote naudoti Looping statyti, o ne tik kopijuoti ir įklijuoti visus įspūdį, leiskite man pristatyti šį dalyką. Taigi C, yra įvairių ciklų sakiniai, iš kurių vienas atrodo taip. "Už" loop turi tris dalykus, atskirtų dviem kabliataškiais. Ir tada, viduje kilpos kūno, todėl kalbėti - stuff viduje klamrami - mes galime padaryti kažką vėl ir vėl. Taigi, ką aš čia ekrane, tai yra tiesiog tik komentaras. / / Čia reiškia ateina komentarą. Tai ne kodas. Tai tik Anglų aprašymas, man žmogaus. Taigi initializations, sąlygas, ir atnaujinimus. Na, galime pamatyti, kaip tai veikia. Tai leidžia man perrašyti šią programą taip. Už - todėl čia ateina mano kilpą int i - čia ateina kintamasis vadinamas "i", - gauna, inicializuoti iki 10. Taigi yra mano iniciacijos. Aš noriu padaryti taip ilgai, kaip "i" yra didesnis nei arba šio ciklo lygus 0. Ir ant kiekvieno šio ciklo iteracijos, aš noriu Ar aš. Taigi mes matėme + + pirmadienį. - Atvirkščiai. Mažinimą vertę 1. Viduje šio ciklo, aš noriu, kad iš tikrųjų kažką daryti. Todėl aš pasakyti kažką panašaus printf. Aš nenoriu pasakyti, 10 dabar, nes tai akivaizdžiai yra tik ketinate spausdinti tą pačią vertę. Ką noriu spausdinti, o ne, tikriausiai? Taip. Taigi, "i". Taigi,% d, i. Taigi, aš ketina pavogti vieną iš šių idėjų iš ankstesnių tai formato kodų pakeitimas - ir tada žemyn, apačioje, aš sugrįšiu "0", tik gera priemonė. Bet dabar, aš turiu daugiau glaustai programą. Tai tik keletas eilučių, o ne apie 10 ar 11 linijos. Leiskite man eiti į mano eilutę žemyn. Perdarytas linijos. Pakartotas linijos. Ir, atrodo, yra tas pats. Dabar, programa įdomiau. Bet dabar galiu įvesti kažką panašaus į tai. Aš galiu pakeisti 100. Tada galiu perkompiliuoti savo programą. Ir tada aš vėl paleisti savo programą. Ir dabar jis eina super greitai šiandienos kompiuteriai. Bet ten - ir iš tikrųjų, mano slinkties juosta buferio nėra net eiti taip toli. Čia mes eiti. Taigi mes turime visus 100. Bet tai lengva padaryti klaidų čia. Kas bus laukiamas elgesys, jei aš netyčia tai padaryti? Taigi jis jaučiasi begalinis. Taigi pažiūrėkime, jei kompiuteris elgiasi. Taigi, leiskite man eiti į priekį ir padaryti kilpą. Ir leiskite man paleisti kilpą. Taigi, galime sugrįžti, kad vos akimirką. Leisime, kad paleisti. Nes ką mes turėtume tikėtis iki, minimaliai? Tikriausiai mažiausiai 2 mlrd. Eurų, jei mes turime tiek bitų, ir mes naudojame teigiamas vertybes. Todėl galime atšokti. Be šių vyrių rūšių, mes turime tai, kas vadinama, o grandinės. Taigi, kaip nulio, jūs turėjote Visada Pakartokite blokai blokai, ir jums teko. Be to, C, jūs tiesiog turite kitų būdų išreikšti save. Taigi, jūs turite šią while cikle sąvoka, kuri leidžia jums išreikšti save šiek tiek kitaip. Ir tada jūs turite kažką vadinama do-while cikle, kuris veikia šiek tiek kitaip, taip pat. Ir mes erzinti tai be laikui bėgant. Bet tegul imasi šiame paskutiniame vienas čia atrodo. Jei mes einame į vis dar veikia. Tai gana begalinis. Taigi leiskite man eiti į teigiamą, ir parodyti, kaip mes iš tikrųjų gali šiek tiek efektyviau valdyti vartotojo įvesties. Tai gana trumpas programa. Ir čia mes turime, Main, int n deklaraciją. Taigi duok man kintamasis vadinamas n. Dabar aš tiesiog pasakyti, "Padaryti". Ir tada aš turiu atvirą garbanotas petnešomis, arti garbanotas petnešomis. Ir tada pastebėsite, iš karto po to, ji sako, o n yra mažesnis nei 1. Taigi pastebėti, kad šias eilutes 19-24 - kurti kolektyvinę do-while cikle. Ir kitą kartą, sintaksė, o ne nauja idėja. Tai tik dar vienas Looping būdas, sintaksiškai. Taigi, ką tai daryti? Atlikite šiuos veiksmus, o n yra mažesnis už 1. Taigi, ką aš noriu daryti? Reikalauju, kad galite man duoti teigiamą sveikąjį skaičių. Tada aš iš tikrųjų bando gauti sveikąjį skaičių nuo vartotojo. Bet operacijų tvarka, nes o sąlyga yra nustatytas čia, aš tada ketiname patikrinti, yra n mažiau nei 1? Taigi tarkime, kad vartotojo po to, kai reikalaujama, tokiu būdu tipų reikšmę, lygią 0. Ši sąlyga bus teisinga, ar klaidinga? Na, tai iš tikrųjų vyksta, kad būtų tiesa. Kadangi n yra 0, o 0 yra mažiau nei 1. Taigi, ką tai reiškia? Padaryti jį dar kartą. Padaryti jį dar kartą. Padaryti jį dar kartą. Tik tada, kai ši sąlyga įvertinama false. Jei aš tipo 42. Na ne, 42 yra ne mažesnis kaip 1. Todėl šis ciklas yra atliekamas vykdyti. Ir taip, kad tuo momentu, programa pasakys, ačiū už 42, šiuo atveju. Dabar, kad jūs turite šią būdas išreikšti save - Mes neturėtume laukti iki pabaigos. Ji ketina imtis šiek tiek laiko. Būti tęsiamas kitą kartą, galbūt. Bet dabar, jūs turite galimybę tikiuosi suprasti tiek Geek humoro. Atsiprašymai. Tai ne atstovas humoro kompiuterių mokslo visame pasaulyje, tačiau tai mielas. [Juokiasi] Leiskite pabaigoje dėl šio rašto. Ir mes matome, pirmadienį. [Plojimai]