[Powered by Google Translate] David J. Malan: Olgu, see on CS50 ja see on 1. nädala lõpust, nii et uuring kaardid on ja koguarv klassikaaslastega, et teil on sel aastal on 745. Ja me oleme nii põnevil, et on nii palju sa aasta jooksul Sel poolaastal, kuid isegi kui see muidugi on nii suur, aru, et see on need asjad nagu reede lõunaks, nagu tööaega, 15-isik lõigud, ja nii edasi, et on tegelikult tähendas, et luua see intiimsem keskkond. Nii et kuigi me võime koguda üks kord või kaks korda nädalas, siin Sanders, tean, et palju teie kogemused selles muidugi on väga palju olla käed-peal koos oma klassikaaslastega ja õppejõud. Nii et siin me läheme, Fall 2012. Nii et tuletada meelde, et viimane kord kui me lõppes teadmiseks ebatäpsuse, räägime esindatus numbrid. Ja me vaatasime üks ebaõnnestumisi, mis juhtus, et reaalses maailmas, kui ta tuli arusaamatus kuidas arvutid töötavad. Noh, täna me uuesti veel üks neist ideid samuti jätkame arutelu CS50 kliendi ja C ning mida see tähendab tegelikult programmeerida. Aga kõigepealt paar tuulispask teadaandeid. Sektsioonid algab sel pühapäeval, ja esimene nädal on alati natuke kiire algus, sest me saime sisse oma osa vorme. Me teeme sama, nüüd, kus õppetöö stipendiaatide nüüd et nad teavad nende graafikuid, nii et me oleme eesmärk, mida Laupäeva hommikul, et jälgida teie oma osa loovutamine ja TF. Aru, et siis hakatakse neid järgmisel päeval, pühapäeval või esmaspäeval või teisipäeval. Ja siis me majutada osa muudatusi, kui need tekivad päevil tulla. Tööaeg, vahepeal on taas täna, 08:00 kuni 11, Annenberg, samuti homme õhtul. Kuigi probleem komplektid on tavaliselt tingitud neljapäeviti keskpäeval aru, teil on kuni viis hilja päeva veeta, seega kättesaadavus tööajal neljapäeviti, kui te raha ühes neist hilja päeva ja seeläbi esitama midagi reedel. Lubage mul oletada, et Scratch on üks lõbusam seas rohkem madala võti probleem seab. Ja ma riputada peale nende hilinenud päeva, strateegiliselt, lihtsalt käesolevaks poolaastaks kui elu hakkab saada takistuseks koos midterms ja teistesse klassidesse. Ülesanded 1, vahepeal oleks postitati kursuse kodulehel sel reedel, kui antakse kell käigus jalutuskäigu läbi video, mis filmiti 02:30 reedel ja siis Internetti järgmisel päeval. Nii et me lõppes esmaspäeval. Ma tahan - tegelikult, üks märkus siin. Kuna klassid - sest Sanders täpselt ei laenata ise juhutöö Q & edasi-tagasi väga hästi, et me oleme kavatsen proovida midagi veidi uut sel aastal, kusjuures kui sa ei ole mugav tõsta oma käsi või sa lihtsalt pigem ei tõsta oma kätt sellises ruumis, me lähed on mõned õpetamise stipendiaatide ja CA mehitamise cs50.net/discuss ajal loeng. Nii et kui teil on küsimus, sest ma olin täiesti ebaselge midagi või oled uudishimulik mõned teema, proovige postitad sinna. Tag seda silti Loeng, ja me teeme oma parima, täna ja järgmisel nädalal - we'll proovida seda välja - et väljakujunenud kohtupraktika kas elektrooniliselt internetis, või kui see tundub peaksime tõesti käsitleda seda massiliselt, üks õpetamise stipendiaatide või SK tõstab oma käe ja paluma anonüümselt teie nimel. Nii et me anname seda proovida ja näha, kui hästi see töötab. Aga, kõigi vahenditega, jätkuvalt tõsta käed, kui sa sooviksid. Nii et viimasel ajal oleme selgus, et 10% või üks kümnendik ei ole, on Tegelikult 0.1, nagu teid on õpetatud juba aastaid tagasi. See on tegelikult väärtus niimoodi. Aga see pole täielikult tõsi, eks? Meil on lihtsalt see piirang arvutid, mille abil, kui te ainult piiratud kogus mälu, RAM või rohkem spetsiaalselt bitti, noh, seal on ainult piiratud arv asju saab esindada. Näiteks, kui meil on number null, ja me tahame esindama kahekomponentsete kasutades kaheksa bitti, kus natuke, jälle on null või üks, me võiksime esindada seda 00000000. Ja see on veidi asjatult paljusõnaline. Täpselt nagu detsimaalsüsteem reaalses maailmas, Üldiselt, kui sa tahad kirjutada number 123, me inimesed ilmselt ei kirjuta 00000123 kuigi funktsionaalselt, see on täpselt sama number. Me lihtsalt tilk nulle, kui nii võib öelda. In binaarne, mida me saame teha sama. Binary ja null, null ja binaarne on lihtsalt null. Sa pead ainult ühe natuke. Aga jälle, kõige levinum mõõtühik maailmas arvutustehnika on baiti, kaheksa bitti. Lihtsalt, sest üks natuke, üsna kasutu. Kaheksa bitti, ei ole väga kasulik, kuid vähemalt on see rohkem kasulik kui üks mõõtühik. Nii kaheksa bitti, siis me tüüpiliselt binaarne. Nii et siin on meil numbrid null, üks, kaks, ja siis, kui Nate tegi meie video eelmisel kolmapäeval, saame jätkata lugedes kuni seitse, kaheksa. Ja siis kui me kasutame rohkem ja rohkem bitte, me võib loota kuni lõpmatus. Aga kui sul on ainult piiratud arv neid bitti, nagu on Kui mingil arvutisüsteemi või isegi raketi süsteemi, hästi, tõepoolest, kui vaid piiratud kogus täpsusega. Nii et kui soovite esindama arvu nagu 0.1, noh, arvuti peab hoolikalt valima. Ja kui see on ainult piiratud arv numbreid ta saab esindama, võib see tulla tihe 0,1 teid, kuid see ei saa tingimata teile täpselt soovitud väärtus. Ja see on vaid üks väljakutseid arvutid, all kapuuts, õnneks. Nagu me liikuda kaugemale semester, need madalamal tasemel üksikasjad muutunud palju vähem huvitav, kuid kindlasti rakendada neid ideid saab mõned väga reaalne maailm tagajärgi. Üks on natuke lõbus. Kui paljud teist on näinud hämmastav film Office Space? Kui sa ei ole, et su mitteametlik kodutööd nädalas. Aga bürooruumid, stipendiaatide, et filmi teha ära just see mõte, kuid nad tegelikult varastas see teise filmi, et sa võisid näinud, isegi aastaid enne. Nii et lubage mul anda teile mõned sekundid selle haagis see hämmastav film ja see on väga palju akadeemiliselt asjakohane. [Mängib Filmi] Tegelikult ma reklaamitakse. Võin programmeerida viirus, et rebin et asetage maha suur aega. Noh, kuidas see toimib? Iga kord, kui seal on pangaoperatsioon kus huvi on arvutatud, on tuhandeid päevas, arvuti jõuab nende fraktsioonid protsenti. Aga ma ei kavatse teha midagi ebaseaduslikku. Ebaseaduslik? Samir, see on Ameerika. Sa pead Jumala nimel. Kui keegi teab sellest aga meile, eks? Ei pereliikmed, ei sõbrannade keegi. [Kuuldamatu]. Ära muretse, mees, ma ei ütle kellelegi kas. [Video lõpeb] Olgu, võibolla ma leidsin selle filmi paremini kui enamik inimesed siin, aga igal juhul, viirus, et nad olid püüame luua - ja filmides, millal nad tahaks helistada midagi viirus, et üldiselt ei ole tegelikult viirus. See on lihtsalt programm, et keegi kirjutas midagi teha. Ja sel juhul, poisid üritasid kirjutada programm et võttis ära oma firma nimega Innotech on arvutisüsteem, mille arvutid, liiga isegi siis, kui see tegemist on raha, ei pruugi tingimata esindada raha täpselt. Nii et kuigi sa võisid $ 0,10 pangakontole, 0,10, noh, arvuti võib tegelikult arvan, et teil on Selle paljud senti pangakontole. Ja mis need kutid olid soovivad teha - ja nad varastas idee, selgub alates Superman III, kus Richard Pryor tegi sama asja - nad olid peamiselt kirjutamise programmid, et soovivad võtta kõik trailing numbrid, kõik tilluke, pisike, tiny fraktsioonid penne, ja siphoning need ära nii, et inimestele lihtsalt mõtlesin, oh, see on ainult $ 0,10 seal, kuid kõik need trailing numbrid lõpuks tõusta. Nii tore mõte ja see tagasilöögi lõbusalt selles eelkõige film. Aga reaalses maailmas, liiga, seal on palju rohkem seotud mõju nende erinevaid asju. Ja üks põhjus sukelduda valdkonnas arvuti teadus on jällegi selle kohaldamist ei tehnikateaduste üksi, vaid lihtsalt teistes valdkondades. Nii et see on vähem lighthearted pilk saab valesti minna, kuid see on ka üsna silmade avanemise, ma arvan, kui tegemist on mõista täpselt, kuidas kõikjal tehnoloogiad nagu arvutid ja programmeerimine või nendel päevadel, kujul tarkvara. Nii et see järgmine klipp on lihtsalt umbes kuus minutit, jätkub kus meil pooleli jäi eelmine kord, kuid võimaldab meil vaadata veidi süvendatult ühte sellist nendest küsimustest. Lubage mul otse soovitud kus pooleli jäime, mis oli siinsamas. Ja meil on osa Kahest, umbes kuus minutit siin. [Play Movie] Vaevavad kaasaegse raketi tehnoloogiat. Aastal 1991, siis algas esimese Lahesõja, Patriot rakett kogenud sarnast tüüpi number konverteerimise probleem. Ja nagu tulemuse, 20 inimest, 20 ameerika sõdurit, tapeti ja umbes 100 muud haavata, kui Patriot, mis pidi kaitsta sissetulevad Scuds, suutnud tulekahju rakett. Kui Iraak tungis Kuveiti ja Ameerika käivitas Desert Torm alguses 1991 Patriot rakettide patareid olid kasutusele kaitsta Saudi Araabia ja Iisraeli Iraagi Scud rakettide rünnakud. Patriot on USA keskmise ulatusega maa-õhk süsteem, toodetud Raytheon ettevõte. Suurus Patriot püüdurhävitajaga ise, see on umbes umbes 20 jalga pikk ja ta kaalub umbes 2000 naela. Ja see viib lõhkepea umbes - Ma arvan, et see on enam-vähem 150 £. Ja lõhkepea ise on väga plahvatusohtlikus mis on killud selle ümber. Korpust lõhkepea on mõeldud tegutsema nagu haavlid. Raketid on läbi nelja konteineri kohta ja on veab pool haagis. Patriot raketitõrjesüsteem läheb tagasi vähemalt 20 aastat nüüd. See oli algselt mõeldud õhutõrje rakettide tulistama vaenlase lennukid, esimese Lahesõja. Kui see sõda tuli mööda, Armee tahtis kasutada seda tulistada alla Scuds, mitte lennukid. Air Iraagi vägede olnud nii suur probleem, kuid armee muretsesin Scuds. Ja nii nad üritasid minna Patriot. Pealtkuulamist vaenlase raketi sõita Mach 5 läksin tuleb raske piisavalt. Aga kui Patriot oli tormas teenus, armee ei olnud teadlik Iraagi muudatustest, mis tehakse nende Scuds peaaegu võimatu tabada. Juhtus see Scuds mis olid tulevad olid ebastabiilsed. Nad olid wobbling. Selle põhjuseks oli iraaklaste, et saada 600 kilomeetrisel lõigul 300 kilomeetri rakett, võttis massist välja ees lõhkepea ja tehtud lõhkepea kergem. Nüüd Patriot üritab tulla Scud, ja enamik aega, et valdav enamik ajal oleks lihtsalt lennata Scud. Kui Patriot haldurid aru Patriot oma eesmärki täitnud, nad lõhkeda Patriot lõhkepea. Et vältida võimalikke õnnetusi, see oli lubatud langevad maapinnale. See oli see, mida enamik inimesi nägin, kui suur fireballs taevas, ja vääriti kui lõikepunktide Scud lõhkepeade. Kuigi öösel taevas, patrioodid osutus edukalt hävitatud Scuds, kell Dhahran, ei saa olla viga selle toimivuse. Seal Patriot radarisüsteemi kaotanud jälgida sissetulevad Scud ja kunagi käivitatud tõttu et tarkvara viga. See oli iisraellasi, kes esimesena avastas, et mida kauem süsteem oli, mida pikem on lahknevus sai, tõttu kella varjatud süsteemi arvuti. Umbes kaks nädalat enne tragöödiat Dhahran, Iisraeli teatada kaitseministeerium, et Süsteem oli kaotame aega. Pärast umbes kaheksa tundi järjest, nad märkasid, et süsteem oli muutumas märgatavalt vähem täpne. Defense Department vastas, rääkides kõik Patriot-rakettide patareid ei jääks süsteemid juba pikka aega. Nad ei ole kunagi öelnud, mida pikka aega oli - 8 tundi, 10 tundi, 1000 tundi. Keegi ei teadnud. Patriot aku seisvad kasarmute juures Dhahran ja selle vigane sisemine kell oli üle 100 tunni Ööl vastu 25. veebruar. See jälgida aega täpsusega umbes kümnendik sekundit. Nüüd kümnendik teine ​​on huvitav number, sest seda ei saa väljendada binaarne, täpselt, mis tähendab, see ei ole võimalik esitada täpselt igas kaasaegne raal. Seda on raske uskuda. Aga kasutada seda kui näidet. Võtame arvu kolmandiku võrra. Üks kolmandik ei saa kümnendkraadides, täpselt. Üks kolmandik on 0,333 kestnud lõpmatuseni. Ei ole nii, et seda teha ülima täpsusega kohaga. See on täpselt samasugune probleem, mis juhtus Patriot. Mida kauem süsteem jooksis hullem aeg viga sai. Pärast 100 töötundi, viga ajal oli ainult umbes kolmandik sekundis. Aga nii suunatud raketi sõita Mach 5, see põhjustas jälgimise viga üle 600 meetri. Oleks saatuslik viga sõdurid Dhahran. Juhtus see Scud käivitada avastati varajase hoiatamise satelliite ja nad teadsid, et Scud oli tulemas nende üldine suund. Nad ei teadnud, kust see tuli. See oli nüüd kuni radari komponent Patriot süsteem, kaitstes Dhahran, leida ja jälgida sissetulevad vaenlase rakett. Radar oli väga tark. Sa oleks tegelikult jälgida olukorda Scud ja seejärel ennustada, kuhu see ilmselt oleks järgmine kord radar saatis impulsi läbi. See kutsuti vahemikus värava. Siis, kui Patriot otsustab piisavalt aega on möödas minna seljatoele ja kontrollitakse järgmisel asukoht Avastatud objekti, siis läheb tagasi. Nii et kui ta läks tagasi vales kohas, see siis ei näe vastuväiteid ning ta otsustab, et seal ei olnud. See oli vale tuvastamise ja langeb teele. Sissetulevad Scud kadus radari ekraanilt. Ja sekundit hiljem ta slammed arvesse kasarmud. Scud hukkus 28 ja oli viimane vallandati ajal esimest Lahesõda. Traagiliselt, uuendatud tarkvara saabus Dhahran järgmisel päeval. Ja tarkvara viga oli kinnitatud, sulgedes ühe peatüki rahutu ajalugu Patriot rakettide. PATRIOT on tegelikult akronüüm "suunadiagrammiga jälgimine Vabaliige Target. " Olgu, nii palju kurblik tulemus ei ole päris mõistmiseks sellesse maailma. Ja Buffee, tõesti, filmist on see, et lahendus seal oli taaskäivitab teie raketitõrjesüsteemi iga kord samal ajal. Ja nii jälle, üks eesmärke on see muidugi, kindlasti kohta rohkem tagasihoidlik skaala kui neid taotlusi, on tõesti avatud kõigile silmad täpselt, kuidas sa minna valmistamise masinad seda, mida sa tahad neid teha ja kuidas minna seda teed, et õigesti, kui mööda teed tee seda Noh, elegantselt, ja nii edasi. Ja nii täna, lähme sukelduda natuke rohkem seda, kuid nii et me ei lähe liiga kiiresti, eriti neile vähem mugav, vaid ka selleks, et saaksime säilitada huvi need mugavamaks, lähme lihtsalt kiiresti alustada natuke ning sulgege mõned neist ideedest. Ja jälle küsima minema, nii isiklikult või online, kui teil on küsimustele, et saaksime hoida kõik samal leheküljel. Nii CS50 Appliance, kiire samm tagasi, on Mis, oma sõnadega? See on OK, kui sa ei tea, mida need sõnad võivad olla veel. [Kuuldamatu] Okei, nii universaalne liides - et me kõik jagame. Absoluutselt. Nii et me võiks näiteks öelda, et minna mõnele veebilehel, lae see tarkvara Mac OS. Lae see tarkvara Windows, konfigureerida sisse Sel viisil ja et. Kuid reaalsus on see siis satume lugematu tehniline toetada küsimusi. Ja ka nendel päevadel, palju sellest, mida on juba tehtud serveripoolne, maailma arvutustehnika, eriti kui tegemist on veebiarendust ja veebipõhiseid rakendusi, on tegelikult üsna sageli teha Unix või Linux arvutid, erinevalt Mac või Windows arvutites. Nii hulgas tasa, siis kasutades seda asja nimetatakse CS50 Appliance on meil kõigil on sama keskkond. Nii et igaühel on samal lehel ükskõik millist riistvara sa tuli campus, vaid ka siis espalla täpselt samas keskkonnas, mis teid kasutades suunas semestri lõpuks ka veebi arengut, samuti tulevik reaalses maailmas rakendusi sätestatut. Nii konkreetsemalt, CS50 Appliance on tasuta tükk tarkvara, mis võimaldab käivitada teise operatsioonisüsteemi, Linux, sel juhul oma arvutisse, akna. Nüüd sa ei saa lihtsalt alla laadida seadmesse. Sa pead programm, millega mängida või epileerijat. Ja see tükk tarkvara on üldiselt tuntud kui hypervisor. Hypervisors tulevad vormis tooteid nagu VMware, Virtual Box, Parallels. Igasuguseid ettevõtted teevad tarkvara, nii vaba ja kaubandus-, samasugused. Mida te näete Ülesanded nr 1 on juhised, kuidas saada tasuta tarkvara, mille abil käivitada CS50 Appliance. Ja kui sa teed, sa pead, et aken Mac või PC, töölaua keskkond, mis näeb välja üsna nagu see, kus see on Start menüü moodi asi alumises vasakus nurgas. See on kodukataloog või kodu kataloogi ülemises vasakus seal, prügikast jne. Nii et me tease peale vajalikud üksikasjad nagu me minna. Aga nüüd alustame sukelduda C. Nii et C on see programmeerimiskeelt sarnase sisuga Scratch, kuid palju vähem graafiline, kuid irooniliselt, kaugele võimsam kui sa saad Savvy koos sellega. Nii C, me kirjutada programme kirjutades lähtekoodi, mis on ingliskeelse nagu süntaks, mis on sarnane sokid tõestus, et me tegime viimane kord, mis võimaldab teil väljendada ennast üsna täpselt, kui arcanely, et arvuti. Nii et millist toodet tarkvara sa tegelikult vajad kirjutada programme keeles nagu C, mis põhineb meie vestlus esmaspäeval? [Kuuldamatu] OK, sa lihtsalt vaja tekstiredaktorit. Sa ei vaja mingit erilist tarkvara iseenesest kirjutada programme. Sa lihtsalt vaja tekstiredaktoriga nagu Notepad, Windows, TextEdit Mac, või midagi, mida nimetatakse gedit, maailma Linux, mis me kasutame siin. Ja ongi selleks, et kirjutada programme. Kuid kirjutamine on ainult pool võrrandit. Seejärel tuleb käivitada neid. Aga selleks, et käivitada programme - sa ei saa joosta lähtekoodi. Sa asemel pead tegema, mida ta esimesena? Jah. David J. Malan: Sa pead kompileerida. Ja keegi teine, koostamise lähtetekst tähendab - [Kuuldamatu] David J. Malan: Täpselt. Tõlkides seda nulle ja ühtesid. Sest me kõik, nendel päevadel, on arvutid, mis on protsessoriga, peaaegu kõik, mis on tehtud firma nimega Intel ja Intel Inside, tähendab, et see on aju sees oma arvuti, tuntud kui CPU. Ja üks neist asjadest, et aju ei ole, see teab kuidas mõista mustrid nulle ja ühtesid. Ta teab, mida muster bitti moodustab Lisaks mida muster kujutab tehet, mis muster bitti esindavad trüki ja luua kuuldav heli. Nii lühike, CPU, koos operatsioonisüsteemi, mis on tarkvara, mis jookseb peal CPU, nii rääkida. Koos need kaks teavad, kuidas käivitada programme, mis meie, inimesed kirjutavad. Nii et kui ma minema CS50 Appliance siin, mul on vaja avada kuni tekstiredaktor ja võin kasutada seda aastal paar võimalust. Võin kas minna Menüü, programmeerimine, ja siis ma saan valida - nope, ei ole, et menüü. Ma ei saa minna Tarvikud / gedit siin avada mu väike tekstiredaktorit. Või lihtsamalt, ma ei kliki seda väikest ikooni alumises vasakus nurgas. Ja nüüd ma saan seda keskkonda siin. See on päris meenutavad lihtne tekstiredaktor, vaid üks või kaks erinevust. Üleval, kus kursor vilgub nüüd, see on koht, kus Ma ei hakake minu koodi. Põhjas on see asi, mida nimetatakse terminaliakent. Ja milliseid asju ma saan teha selles nn terminaliakent? [Kuuldamatu] Okei, nii et ma jooksen käske. Ja mõned käsud me jooksime esmaspäeval oli vähe segasena alguses, kuid ls nimekirja, cd muutus kataloog, rm jaoks eemaldada. Nii et see on omamoodi vana kooli viis navigeerida oma arvuti, kasutades ainult klaviatuuri ja tekstiline käske, ja ei, üldiselt, kasutades hiirt. Aga eks näis, enne pikk, see tegelikult annab meile veidi rohkem võimu ja vähe rohkem täpsust, millega väljendada end. Ja siis siin vasakul, me lihtsalt näeme, kui me hakkame kirjutamise tarkvara, väike kokkuvõte programm, et oleme kirjutanud vasakus ülaservas. Aga me näeme, et jälle enne pikk. Teeme midagi üsna lihtne siin. Lubage mul kõigepealt minna ja minge File, Save, ja ma olen lihtsalt läheb klõpsa jharvard siin, üle vasakul, ja jharvard on jällegi nimi minu kodukataloogi, minu isiklikud failid, mind, nüüd on John Harvard, nagu te kõik varsti John Harvard selles keskkonnas. Tal on see kodu kataloogi My Documents ja nii edasi, et ma tahan salvestada, nüüd see fail sisse Nii et ma lähen kutsun seda hello.c. Siis ma lähen edasi ja vajuta Save, ja nüüd, mida ma olen siin sakk nimetatakse hello.c, nii palju nagu teist tüüpi toimetaja. Nüüd lubage mul minna ja hakake kirjutama programmi. int main (void). Ja siis ma lihtsalt tegin viimane kord, printf, trüki-vormindatud, ("Hello, world!" );. Peaaegu valmis. Aga ma olen kadunud paar üksikasju. Mis puudub selle programmi, et ma tõesti vaja see tegelikult kompileerida? Jah. [Kuuldamatu]? David J. Malan: Jah, nii et ma vaja lisada standardne I / O teek. Nii et see peab minema üle peamine, nii et ma olen lihtsalt kavatse teha mõned ruumi seal. Ja ma teen # include . Ja märkate nurga sulgudes seal. Ja kui kõrvale, gedit on väike kasutajasõbralik, kui mõnikord segadusse ajav, sest see püüab aidata oma silmad teate, mis ridade järele mida. Nii et minu kursor on kohe selle nurga sulg, märgata, kuidas see esile teiste nurgaga sulg pluss see üks. Ja see on ainult mu tähelepanu juhtida sellele, et ma on sümmeetria. Ja sümmeetria programmeerimine on üldiselt hea. Samamoodi, kui ma liikuda mu kursor lõpus, märgata, kuidas looksulg rivistama näidata, et jah, mul on avatud üks ja suletud üks, nii rääkida. Hea küll, ja ma suudan veel üks asi. See ei ole tingimata vajalik, kuid hea tava öelda return 0. Ja return 0 teeb mida meile siin? Või tähendab mida? [Kuuldamatu] David J. Malan: Aga midagi on valesti. Ja ausalt öeldes on raske palju valesti minna programmeerida see lühike. Nii et ma olen lihtsalt super selge, et kõik on hästi. Mina, inimene, kui ma saan selle programmi, ei saa vist kunagi näha, et 0. Üldiselt on need numbrid, mida parasjagu naasnud peamine ainult kasvatada oma pead inimestele kui midagi läheb valesti. Ja sa saad vähe pop-up öeldes süsteemi viga, üks, kaks, kolm või mis iganes arv oli tegelikult tagastatud. Nii et midagi valesti on? [Kuuldamatu] David J. Malan: Nii et see ei ole nii palju funktsionaalne viga kuid esteetiline üks. Ma peaks ilmselt kasutusele reavahetus sümbol seal lõpuks see string nii et me tegelikult liikuda kursoriga järgmisele reale ja programm lihtsalt tundub veidi ilusam. Nüüd lubage mul minna minu terminaliakent ja suum sisse tagasi Ja see asi siin, seda kutsutakse viivitamatult. See on lihtsalt meenutas mulle, kes ma olen, jharvard @ aparaat, kus Seade on arvuti nime ma olen. Sulgudes on see tilde, kriipseldus sümbol, mis näitab, mida? Sihtrühm: Kodu kataloog. David J. Malan: Kodu kataloog. Nii et see on lihtsalt stenografisti märke öeldes olete Isikliku kausta, kus kõik failid lähevad vaikimisi. Nüüd, siin, ma ei kirjuta LS nimekirja. Ja ainus asi, ma näen siin hetkel on hello.c. Ja see on hea, sest ma lihtsalt kirjutasin selle. Nii et lubage mul minna ja ei tee tere. Ja märka ma ei kirjutades teha hello.c. Selle asemel, ma olen ainult kirjutades baasi faili nimi, tere. Ja teha, nagu me nägime esmaspäeval, lihtsalt järeldada, et ma tahan . c faili. Nii et nüüd ma olen kirjutatud tegema tere. Nüüd ma näen seda üsna pikk käsk ja jätkab nähes seda ikka ja jälle. Aga peab olema selge, rõkkama sõna, et just ilmunud, see on tegelik koostaja. Tee on lihtsalt ehitada kasulikkust. See on lihtsalt rohkem kasutajasõbralik programm, mis säästab mind, et Pikemas perspektiivis omamast tüüp välja uskumatult tüütu pikk käske, et üks. Nii et sa võiksid minna rõkkama käsitsi. Sa võiksid kirjutada kõik, et käsitsi. Lihtsalt läheb väga tüütu. Ja nii teha on lihtsalt programm, mis lihtsustab meie elu ja jookseb keerulisem käsud meile. Olgu, nüüd mida faili ma peaksin minu praegune kataloog? Mitte ainult hello.c, vaid ka tere. Nii et kui ma tahan joosta tere, meelde tuletada, et ma ütlen dot kaldkriips, kus dot vahendid lähevad praegune kaust, kuhu on, ja seejärel käivitage programm nimega tere, ja tõepoolest, nüüd, Mul on tere. Olgu, mingeid küsimusi tööprotsesside või süntaks mida me tegime? Olgu, võtame asju pügala uuesti. Nii et see oli underwhelming lihtsalt kirjutada programm, mis ainult kunagi ütleb tere, maailm. Nii muutsime ta esmaspäeval, et öelda, tere, David. See on natuke rohkem isiklikku, aga lihtsalt nii raske kodeeritakse esimene versioon. Nii et ole nii veenvad. Kuid on olemas, C, funktsioonide kindlasti lisaks prindi, funktsioone, mis võimaldavad teil saada kasutaja sisend. Ja kuidas me seda tegime, teisel päeval, oli järgmine. Enne kui ma tegelikult välja printida midagi, ma esimest korda sain midagi kasutaja. Nii et las ma teen seda uuesti. String s, kus s on lihtsalt suvaline nimi, siin, string, võrdub getString. Mis siis oli getString? See ilmselt saab stringi, mis põhineb tema nimi. Aga mida see enam tehniliselt? See funktsioon. Nii et see on funktsioon, mis ei tule koos C iseenesest. CS50 töötajad kirjutas selle. Ja nii kasutada seda, sa ei saa lihtsalt lisada stdio.h, Teil on vaja ka lisada seda, mida? Jah. Nii cs50.h, mis on lihtsalt fail me kirjutas mõned aastad tagasi. Me paigaldatud see seade teie kõrval kõik kindlad failid. Ja nii need esimestel nädalatel klassi, me kasutame see lihtsalt lihtsustada protsessi teed väga lihtne asjad nagu saada kasutaja sisend. Sest nagu me näha paari nädala jooksul, saada kasutaja sisend keeles nagu C on tegelikult üllatavalt keeruline, eriti kuna sa ei tea ette, tavaliselt, kuidas palju asju kasutaja saab tippida sisse Ja kui sa ei tea, kui palju andmeid oodata, sa ei pea teada, kui palju mälu eraldada. Ja kui sa tegelikult võistleva kasutaja, kes üritab sissemurdmist teie süsteemi krahhi arvuti, noh, üldiselt esimene meetod rünnak on, nagu ma tegin Esmaspäev, kirjuta terve pikk jada juhuslikult valitud märgist, Enter, ja vaata, mis murrab. Sest üldiselt, kui programm pause, et vihjab turvaprobleem, mis võib. Kindlasti vihjab sulle, programmeerija, kes on teinud viga, kuid rohkem ohtlikult, mida oleks võinud teha turvalisusega seotud viga, ja üldiselt me ​​näeme, et see on, kuidas masinad on ohus, et sellel päeval, nii maailmas veebi-ja programmid käsurealt, nagu see. Hea küll. Nii et string s võrdub getString. Nii konkreetsemalt nüüd, mida see rida 6 teha siin? Nii funktsiooni paremal saab stringi, võtab mitu argumendid? Okei. Nii et mitte ükski. Vähe meelerahu vaadata. Argument jällegi, on ainult sisend funktsiooni muuta selle vaikimisi käitumist mingil moel. Aga sel juhul, ma ei taha muuta käitumist getString. Ma tahtsin saada stringi. Nii et ma panin midagi sulgudes ja siis panin semikooloniga demarking lõppu rida koodi. Nüüd võrdusmärki ei tähenda võrdne iseenesest. See tähendab, loovutamine, mis tähendab, pane mis iganes väljastada paremal sees kõik, mis on vasakul. Nii vasakul, me ütleme, et meil on deklareeritud string nimega s. Ja täpsemalt, oleme eraldatud mälu sees mis me paneme bitti, mis tähistab jada tähemärki. Aga täna oleme eraldatud või deklareeritud string. Hea küll. Nüüd kui olen seda teinud, ma tahan ühendada väärtus s, mitte väärtus David. Nii et see on vale, miks? Nii et see on lihtsalt sõna otseses mõttes püsiprogrammeeritud s. See on öelda "tere, s," mis ei ole mida ma tahan. Nii et ma suudan seda. Protsendimärk on kohatäide, kuid nüüd pean erituda printida teine ​​argument. Tuletame meelde, et argumendid, mis funktsioonid on eraldatud komasid, nii et järgmine eralda siin panin pärast seda kirja s. Ja selles kontekstis nüüd, s on muutuv ja printf, saamisel need kaks sisendit - string vasakul ja muutuja nimi on paremal - siis ühendage sellest saab endise meile ja lihtsalt välja printida kena ilus sisaldav string mis iganes see on, et me kirjutada logida Nii et proovime seda. Lähen edasi minna ja välja suumida, tagasi minu terminaliakent. Pildi suurendamiseks allosas siin. Korrake teha tere. Rõkkama on ilmselt kordamisega. Ma lähen kirjuta. / Hello, Enter. Miski tundub toimuvat veel, kuid see on seda kiire et ma ei kirjuta midagi Nate, Enter, ja nüüd on meil Tere, Nate. Ja ma ei saa seda uuesti teha koos Rob ja nii edasi. Nii et loodetavasti nüüd see programm käitub kavatsen. Nüüd, mitte kõik, et kasutajasõbralik. Mul pole aimugi, mis on minult oodatakse. Nii saame kindlasti korista see ära natuke. Lubage mul tagasi minna siia üles, ja mitte lihtsalt sukeldumine ja küsib kasutajalt string, lubage mul selgelt öelda kasutaja mida ma ootan. Nii printf ("Sisesta string" ); Nii ei muutujad siin. Ei protsenti märke. Lihtsalt lihtne inglise fraas. Lubage mul nüüd minna põhja siin ja uuesti, minu programmi. Kuid mitte miski ei muutunud. Miks? Mul on kompileeri see. Nii lihtne viga teha. Aga sa pead mitte ainult faili salvestada vaid kompileeri programm. Ja nii kui ma uuesti käivitada tegema tere, nüüd rõkkama jookseb. Nüüd ma saan käivitada. / Hello. Ja nüüd ma näen, "Sisesta string". Okei. Nüüd on natuke rohkem kasutajasõbralikumaks. Nate, Enter, tere, Nate. Noh, proovime seda uuesti ja hakata mõtlema umbes nurgas juhtudel. Nii nagu ka Scratch, sa julgustada või on sellel julgustada spec omamoodi mõelda, mida võiks minna vale, kui sa ei usu kõike, kasutaja võiks teha. Bugs, seetõttu võib tekkida. Nii et sisestada stringi - Mis nurgas asjas? Mis on stsenaarium, et mina, programmeerija, ei pruugi olla oodata? Jah. Okei. Mis siis, kui ma kirjuta number, nagu see on? Hea küll. Nii et see ikka töötab. Gramatically ei ole mõtet. Aga vähemalt programm töötab. Mis on teise nurga puhul? Midagi ma ei arvanud. Jah? Okei. Nii et me võiksime teha midagi tõesti väga suur number. Teeme seda siin. Lubage mul välja suumida teist, lubage mul rõhutada. Ei saa kopeerida ja kleepida siia. Hea küll. Nii et ma ei saa kopeerida ja kleepida see terminaliakent, nii me lihtsalt simuleerida seda. Lubage mul suumimiseks läheb pakkima. Ma ei kavatse seda teha liiga kaua, sest see ei tegelikult murda selles programmis. Aga võiks. Enter. Aga seda ei juhtunud. Hea küll. Aga see on tõeline nurgas puhul. Ja ainus põhjus, et käitus õigesti, nii et rääkida, sest CS50 funktsioon getString on tegelikult kavandatud all kapuuts, nagu me näha paari nädala jooksul, automaatselt eraldama rohkem ja rohkem RAM, rohkem ja rohkem mälu operatsioonisüsteemi, kui ta mõistab, wow, olete tõesti kirjutatus midagi üsna pikk. Nüüd on see natuke hädavale. Kui me tegelikult peatatud pikka aega ja ma ei tippinud midagi 5000000000 tähemärki klaviatuuri siin, või tõesti tabanud copy-paste üsna natuke, me üsna tõenäoliselt võib põhjustada programmi crash. Lihtsalt veidi raskem jäljendada et koos piiratud aja jooksul. Mis on teise nurga juhul me võiks proovida? Jah? Jah. Nii et miks me ei vastata midagi? Nii et me tegelikult võtta teatud meetmeid, sest muidu Programmi kavatse istuda seal vilgub kogu päeva. Aga kui ma lihtsalt Enter - OK, nüüd, ikka ootab vale. Kas ei ole viga, aga äkki seal on nüüd võimalus rakendamise alustamine rangem programmi et tegelikult kontrollib. Ja kui string, lause, sõna, mida ma kirjutatus on pikkusega 0, noh, äkki ma peaks kisa kasutaja, või ütle talle sisestada stringi uuesti, nii et me tegelikult saada, mida näeb õiget käitumist ja ei lihtsalt täielik kontroll minu poolt. Küsimus on tagasi? Kümnendikuni. Nii et me võiks proovida seda ka. 1,10000005. Tundub, et läheb lihtsalt tööd tegelikult midagi. Ja et tegelikult oodatakse. Isegi kui me oleks kirjutatud, et number on olemas, või suurem hulk varem aru, et kui me kirjutades kasutaja sisend ja me kasutame getString funktsioon, ei ükskõik, kui ma olen masinakirja välja näeb arvu. Tuletame meelde, et vastavalt ASCII, kõik oma Klaviatuuril on numbriline väärtus, mis saab kaardistada iseloomu, char. Nii et sel juhul, kuigi ma võiks kirjutada number, arvuti läheb mõtlevad, kui nii võib öelda, kui string - midagi, mis näeb välja nagu hulk, kuid on ei tegelikult arv. Aga see on tegelikult täiuslik segue, sest nüüd saame tegelikult üleminek kirjalikult programmid, mis kasutada muid andmetüüpe. Nii et peale kasutades sümboleid, või õigemini peale kasutades stringid, mõistma, et meil on ka teisi andmetüüpe C kui ka teistes keeltes. Char, nagu nimigi ütleb, on lihtsalt üks sümbol. Ujuk on ujukoma väärtust ja see on lihtsalt väljamõeldud viis öelda tegelikku arvu - midagi, millel on kohaga mõtet seda mõned numbrid vasakule ja / või paremale. Väravavahi on täisarv, mis on lihtsalt number, nagu 123. Ja nüüd veel huvitavalt on asjad topelt. Mida me ütleme topelt oli viimane kord? See on 64, õigus. Nii et arvestades tavaliselt Ujuk on 32-bitine - nii et see on see pikk mälu, ta kasutab 32 nulle ja ühtesid kuni esindavad väärtused - topelt on sõna otseses mõttes kaks korda suurem, mis tähendab, et sa saad ise esindada suurem numbrid või saate esindama täpsemad numbrid. Nii et sul võib olla mitu numbrit pärast koma, kuid kui mehe sõnul on video, isegi midagi lihtsat kontseptuaalselt nagu 1/3 ei saa olla esindatud just arvuti, sest lõpuks otsa bitti, ja Seega saab teha ainult .33333333 nii palju kordi, on mis hetkel sa lihtsalt pean ütlema, ma kaon esindus ruumi, ma pean lihtsalt nimetavad seda päeva ja esindada mõnevõrra ebatäpselt meeldib. Ja pikka - loll nimi, kuid see on, sest seal on andmetüüp, mida nimetatakse pikk C, mis juhuslikult on sageli 32 bitti, nagu int on 32 bitti, kuid pikk pikk on üldiselt 64 bitti. Nii see lihtsalt tähendab, et saate esindama suurem numbreid kui see. Hea küll. Nii et kui me tegelikult tahame alustada esindavad asju, me võib olla vaja keerukamaid tüüpi ning Sellepärast on meil string. Nii CS50 raamatukogu, et fail nimega cs50.h, oleme tegelikult deklareeritud andmete tüüp, nii et rääkida, mida nimetatakse jada, kuid string tegelikult ei ole. See on taas üks neist kihtidest läheme koor tagasi nädala või kaks ja see ära visata, ja tegelikult alla vaadata kapuuts, mida string tegelikult on, ja kuidas see esindatud. Töötame ka läheb pilk Boolean väärtused. Mis siis oli bool kontekstis Scratch? See on õige või vale. Nii et see on lihtsalt väärtus, mis on õige või vale, või välja lülitada, 1 või 0, aga mida soovite vaadata kogu maailma. Nii C tänu CS50 raamatukogu, mis omakorda sisaldab teise raamatukogu all kapuuts, meil on juurdepääsu andmetüüp, mis kutsutakse bool, kes edastab sõna otseses mõttes võimaldab meil määrata väärtused õige või vale, et asjad programm. Nii lähme edasi siin ja kirjutada väike programm, mis ei midagi seotud numbrite asemel. Nii et lubage mul tagasi minna CS50 Appliance, lubage mul minna ja Uue faili siin nimetatakse - ütleme lihtsalt midagi lihtsat, nagu math.c. Hea küll. Ja nüüd tõusta tippu minu programm, ma olen teeme ikka - # Include , nii et võin kasutada printf, int main (void) - me tuleme tagasi, lõpuks, mis int tähendab siin, mida tühine tähendab siin, aga praegu, lihtsalt tean, et sa pead alustama programmid nagu see. Nüüd ma lähen edasi minna ja öelda midagi veidi erinev - printf ("Anna mulle number:" );. Siis ma teen int n = GetInt, sest see Tuleb välja, GetInt on teine ​​funktsioon CS50 raamatukogu lisaks getString. Ja nüüd ma teen midagi rumalat, nagu "tänu jaoks% d "jaoks kohaga täisarv, ja siis koma n ja siis tagastab 0. Nii et taas, tagastab 0 on midagi pistmist arvu ma olen küsib kasutaja jaoks. Lihtsalt tähistab lõpus, et kõik, arvatavasti, on hästi. Nii et lubage mul minna minu terminaliakent siin. Lubage mul tippida teha matemaatika, siseneda. Ja midagi on valesti. Tee matemaatika ei tööta. Siin on esimene meie veateateid. Miks? Vähe segasena, kuid - Jah. Nii cs50.h. Nii et taas, eriti varakult, siis saad kirjutada oma esimese programmi pset 1 osadeks, tööaega ja ausalt, see saab olema valdav mõnikord millised need asjad tegelikult öelda. Aga saate aru väga kiiresti nad hakkavad langema arvesse ämbrid, millega see tähendab, et olete lahkunud välja üks on # sisaldab ülaosas faili. Ja rõkkama, kompilaator on teavitab teid selle poolt öeldes, pigem luulelennuliselt kaudne deklaratsioon funktsioon GetInt on kehtetu. Hea küll. Nii et mida see tähendab? See lihtsalt tähendab, et olete vaikimisi, GetInt sisse selles mõttes, et sa ei ole selgesõnaliselt kuulutanud. Selgesõnaliselt deklareerida int, sa pead õpetama Rõkkama, et see on olemas. Ja väga lihtne lahendus, mis on õpetada seda sealhulgas selle teise faili, cs50.h, kell üles oma faili. Sest sõna otseses mõttes, mida # include ei ole see ütleb rõkkama päris palju minna leia faili nimega cs50.h, kopeerida, kleepige see automaatselt peale minu programm minu jaoks, ja seejärel teisendada lähtekoodi nulle ja ühtesid. Aga see oleks ilmselt väga tüütu, kui meie, inimesed pidid minna kopeerides ja kleepides need suured failid kogu aeg, nii # include lihtsalt teeb kõik, et automaatselt ilma muddying minu kood kellegi teise raamatukogu. Ja raamatukogu on lihtsalt üks fail funktsioone ja muid asju, mida keegi teine ​​on kirjutanud, et me oleme võimendades meie endi huvides. Hea küll. Proovime uuesti. Tee matemaatikat. Enter. Hea. Nii et tundub, et on töötanud. Nii et lubage mul nüüd jooksma matemaatika;. / Matemaatika. Sisesta annab mulle number, 123. Täname 123. Nüüd proovime teise nurga puhul. String on üsna helde, sest string võib olla mis iganes. Kas nägema numbrid, nägema tähemärki, näeb välja sõnad. Aga int on int. Nii et nüüd, kui ma olen raske kasutaja ja see ütleb: "Anna mulle arvu, "mis siis, kui ma üritan teha midagi 0,1? Noh, see on number, ja see on kooskõlas grammatika ma siin kasutatud, kuid all kapuuts, ma olen Muidugi, kasutades funktsiooni GetInt. Nii et vaatame, mis juhtub. Sisesta, proovige uuesti. Hea küll. Lubage mul olla raske ja lihtsalt Enter uuesti. Sisesta Enter. Nüüd tundub, et GetInt on natuke rohkem võimsam kui getString. Meie, personal, rakendatakse nii, et kui märkame te ei ole andnud meile int - ja int on kümnendmurruna sisaldab nulle, need, kahekesi, kolmekesi, püksid, viied, kuuekaupa seitsmed, kaheksad või üheksad. Ja ongi kõik. Ei koma, ühtegi märki, mitte kirjavahemärke. Tundub, et me peame koostööd tegema. Nii et lubage mul proovida neli, viis, kuus, ja mis saab mind läbi. Nii et tõesti, et anal siin, ma peaks ilmselt öelda: "Anna mulle täisarv ", et edastada kasutaja täpselt, mida ma kavatsen. Nüüd mõtleme selle all kapuuts. Me ei lähe vaatama, kuidas cs50.h rakendatakse täna, et raamatukogu. Aga kui ta hoiab öeldes proovige uuesti, uuesti, uuesti, mida programmeerimine ehitada ma arvatavasti kasutades all kapuuts rakendada seda? Nii lihtsalt loop, eks? Üks lihtsamaid ideid, mida nägime Scratch. Forever ehitada, kordamise konstruktsiooni. Arvatavasti selles programmis all kapuuts, isegi kuigi see on kirjutatud C ja mitte nullist, see läheb midagi, mida nimetatakse samaväärseks igavesti kui kasutaja ei ole sisestatud täisarv, öelda uuesti, uuesti, uuesti, uuesti, nii siis lõpuks, kui me ei saada täisarvu, siis murda läbi selle kontuuri. Mis siis muud funktsioonid saame kasutada siin CS50 raamatukogu? Noh, selline ilmne need, vähemalt põhineb andmetüübid, et me teame nüüd olemas. Me rakendatakse getString, GetInt, kuid kogu esimeste nädalate perspektiivis, võid kasutada ka GetFloat ja GetDouble ja GetLongLong, et saada täpselt andmetüübid, mida soovite. Sest võti detail on see, et erinevalt mõnest keeles, nagu Python ja Ruby, kus sa ei pea tingimata tunnistada andmete tüüpi muutuja - sa ei pea ütleb arvuti, mida sellist kraami sa lähed panna muutuja - C, peate olema kunagi nii täpne. Nii et kui soovite muutuja nimega n, patakas ladustamine et sel juhul juhtub olema 32 bitti, kokkuleppeliselt te pean ütlema arvuti, et need bitid on lähed salvestada arv - ei iseloomu, ei ole string, mitte sularahaga. Ja see lahendab probleemi, me tõhusalt sattus eelmisel nädalal. Kui me kasutame nulle ja ühtesid numbreid esindama mitte ainult numbrid aga As ja Bs ja Cs, kuidas maailmas on arvuti läheb teame, et see muster bitti tegelikult esindab arv 65, vastandina esindavad kirja, mis juhuslikult, vastavalt ASCII, mäletate, oli see võrdub 65? Nii et need andmetüübid luua kontekst arvutiga, nii et ta teab, kui need bitid tuleks tõlgendada int või string. Kõik küsimused, siis sellest? Jah? David J. Malan: Hea küsimus. Kui me võtame välja stdio.h, me salvestada faili - lubage mul minna terminaliakent ja kestab teha matemaatika, zoom ja sisestage - nüüd ma saan erinevaid viga, sest ma olen kaudselt kuulutatakse missugust ülesannet nüüd? Printf. Nii et nüüd ma olen loonud uue probleemi, mille lahendamine on sisuliselt sama. Ma pean tagasi jalga panna. Sihtrühm: [kuuldamatu] David J. Malan: Oh. Nii et kui ma võtan välja - Okei, jah. Nii et kui ma eemaldan standard I / O raamatukogu kaasamise üles siin ja siis sa ütled kui ma vabaneda printf, saada lahti printf? Jah. See peaks töötama, sest ma ei kasuta enam üldse - Ups. Kas ma lihtsalt valetada? Oh, okei. See ei toimi, sest uus viga me lihtsalt sisse. Ja see üks on natuke rohkem iseenesestmõistetavad. Milles probleem? Kasutamata muutuja n. Nii et see viga on tingitud meie olles seadistatud Seade on eriti pedantne, tõesti kisa sa iga võimalikku viga, isegi kui see on selline mitte-fataalne viga niimoodi - kas see on tõesti nii suur tegeleda, et ma eraldatud int, pane number see ja seejärel lihtsalt ei teinud midagi sellega? Nii funktsionaalselt, ei. See ei kavatse murda programm. See on lihtsalt tobe, eks? Ei ole väärtust, kes palus, et number, salvestatakse see muutujale, kui sa oled kunagi midagi teha seda, kas printida või salvestada. Nii et sel juhul rõkkama on teadvustamine nii palju, ja ta ütleb kasutamata muutuja n. Nii saame määrata seda kui me tõesti tahame. Aga jälle, see ei ole hea programmeerimise nüüd. Ma võiks lihtsalt teha - minna siin, lubage mul selge ekraan, teha matemaatikat. See toimib. Nüüd ma saan käivitada mu matemaatika programm, võtab sisend - Noh, see oli halb. Teeb panuse, ja see on kõik see, käesoleval juhul. Nii et tegelikult, proovime ühte teist nurka nii, et me ei mõelnud varem. Sel juhul - siin, lähme tagasi üks, mis on natuke rohkem kasutajasõbralikumaks. Laske mul minna siia tagasi ja käivitage teha matemaatika uuesti. Oih, mida ma valesti tegin? Sain tagasi pöörata veelgi. Okei. Nüüd oleme tagasi algne olek, kus kõik on loodetavasti hästi. Ja nüüd, kui ma saan matemaatika, 123 tundub töötavat. Kuid see ei ole tõesti tõhus tõend, et lihtsalt öelda okei, mis töötab. 789, mis töötab. Aega esitada. Sest seal on teises nurgas juhtudel siin. String tegelikult ei anna meile palju pahandust kirjutades kogu palju tähemärke. Aga kui ma kirjuta see? Lööb number 1 kogu palju, palju siin - Olgu, see läheb natuke igav, nii et ma lähen lõpe siin, ja ma lähen Enter. Mis kurat nüüd juhtus? Nii et see võib tegelikult seletada. Nii kulus seda binaarne? Hea mõte, aga ei, see ei ole asjaolu, et ta võttis selle nagu binaarsed, sest tõepoolest, see oli lihtsalt selline kokkusattumus. Me saame seda teha uuesti. Seega puudub 2 binaarne süsteem, mis on ilmselt piisavalt niikuinii. Enter. Nii et see ei olnud probleem. Mis veel? Täpselt. Nii et mõtle sellele, mida int tegelikult on. See on 32 bitti, mis kokku on tõlgendatud nagu number. Kui teil on 32 bitti, mis tähendab, et iga bitti võib olla 0 või 1, 0 või 1. See tähendab, seal on kaks võimalust seda natuke, kaks võimalust seda, on kaks võimalust selle natuke - nii see on 2 korda 2 korda - nii et on 2 kuni 32 võimsus on kokku permutatsiooni nulle ja ühtesid kui teil on 32 kohatäited, nulli või need, teie ees. Nii et kui mul on 2 kuni 32, matemaatiliselt, see on, mida? Nii et see on palju. See on 4 miljardit anda või võtta. Ja 4000000000 ei tundu olema, mida trükiti siin. Tegelikult see näeb välja 2 miljardit eurot. Kuid see ei ole juhus. Asjaolu, et arvuti on valesti minu suur arv, minu tohutu jada ühtesid ja siis mu tohutu järjekord kahekesi kui umbes 2 miljardit on selgitatud kuidas? Seal on piir int. Seal on kindlasti suurim väärtus, mida saab esindada. Aga see on tavaliselt 4000000000, eks? Kui 2 32 on ligikaudu 4 miljardit eurot, mis tundub See on suurim number. Nii ei jäänud, kuid hea mõte. Negatiivsed arvud. Nii et kui teil on 4000000000 võimalik asju saab esindada nende erinevate kombinatsioonide 32 0s ja 1s, noh, siis loogiline, et meie, inimesed, võiksite esindada mitte ainult positiivsed täisarvud kuid taisarvud. Ja tõepoolest, see on eeldusel, et C teeb. Nii 32 bitti, saab esindada jämedalt negatiivne 2 miljardi kõik viis kuni positiivseid 2 miljardit eurot. Ja nii sel juhul, mida me tegelikult näeme, on lihtsalt kulgev suutlikkust meie täisarv, ja meil on, nii rääkida, ülevoolavalt täisarv. Oleme püüdnud tuupima rohkem bitte sinna peale saab tegelikult sobivad. Nii et lõpptulemus on meil sisuliselt on kõik 1 bitti. Oleme keerata kõik meie bitti, oleme püüdnud esindada Kõige rohkem võimalik, kuid see on selgelt ei pea piisavalt suur, et esindada kahte asja ma olen lihtsalt kirjutada logida Jah? Sihtrühm: [kuuldamatu] David J. Malan: Hea küsimus. Miks me ei võiks lihtsalt esindavad et negatiivne kirjutama kui lihtsalt iseloomu? Nii et me absoluutselt suutnud, võiksime päästa täiendavaid natuke. Aga sa ikkagi ise esindada, et kriips, ja et läheb teile maksma vähemalt midagi, eeldatavasti veidi. Nii et jah, me võiks olla 32 bitti kasutatakse meie number, kuid nüüd vajame teist natuke kasutatud meie kriips sümbol, miinusmärgiga. Nii et nüüd on meil 33 bit väärtused, mida me võiksime teha, aga see on lihtsalt ei tee seda tehakse. Tegime otsuse kõne aastat tagasi, 32 bitti on omamoodi mõõtühik siin. Nii et me ei kavatse kasutada üks neist bitti tõhusalt esindada negatiivsus, ja 31 bitti esindama arvu. Muud küsimused? Hea küll. See on palju. Miks me ei võiks minna edasi ja võtta meie viieminutiline paus siin? Hea küll. Nii et taas, mitte overemphasize matemaatika rakendusi programmeerimine, lähme lihtsalt sikutama välja see üks näide enne Astume muud skeemid, lihtsalt sellepärast, et see illustreerivad mõned ühised komistuskivi punkte mõned põhitõdesid, kui on tegemist kirjalikult programmid. Sellisel juhul teeb aritmeetilised avaldised et mõned huvitav olulised süntaks. Nii et see on lihtsalt valem, mille abil saame muuta temperatuurid Fahrenheiti Celsiuse järgi. Kui te ei mäleta, see on lihtsalt valem. Nii et kui me lülitame sisse Fahrenheiti väärtus 32 kraadi, mis on külmutamine, mis saab olema 32 miinus 32 on 0, ja tõepoolest, 0 Celsiuse järgi on ka külmutamiseks. Nii kiire meelerahu vaadata seal - see on tuttav valem. Lubage mul minna üle seadme, kuigi ja alustada kirjalikult programmi nimega, nagu, f2c; "Fahrenheiti Celsiuse dot c ". Ja kuni ülaosas siin, ma lähen alustad # include stdio.h, ja ma teen int main (void), ja Jällegi, me tuleme tulevikus, milliseid int tähendab ja millised tühine tähendab seal. Ja nüüd lubage mul minna ja rakendama programmi, et sisuliselt teeb see muundumine meile. Nii printf, oletame, temperatuur Fahrenheiti järgi. Ja siis lubage mul minna ja saada raha kasutaja. Millist väärtust ma peaksin kasutaja, kui ma tahan neid mulle temperatuuri Fahrenheiti? Jah? Mida soovitaksite? Jah. Nii Ujuk tundub päris mõistlik. Meil on jällegi vaid mõned võimalused, mis oleme näinud siiani. Meil on asjad nagu paalia, double, float, int, long pikk, bool, string. Nii et need, float tundub päris mõistlik. Me võiksime kasutada topelt, eks, sest kui me tõesti tahame esindab inimese temperatuur - 98,60000 - saaksime kasutada 64 bitti teha, kuid tundub, nagu overkill temperatuur. Nii Lähme koos sularahaga. Nüüd on mul vaja muutuja. Lihtsalt hoida asjad lihtsad, ma lähen kutsun seda f, aga ma võiks sama õigesti nimetan seda temperatuuri, kuid kas on hea. Nii float f = GetFloat. Niipea, kui ma nüüd oleme otsustanud kasutada GetFloat, kuigi ma vaja teha ühe korrektsiooni. Jah. Seega peame # include , muidu kompilaator on läheb kisa meile. Nüüd, kui mul on ujuk, lubage mul minna ja teha vahetamisega. Nii et esimene, las ma ka sattuda harjumus siin Kommenteerides minu koodi. Nii et taas, kommentaar on lihtsalt märge inimese, mis on ei kuulu programm iseenesest, kuid see üks, mis aitab teil mõista, mida sa tegid järgmisel hommikul või järgmisel kuus, see aitab teie õpetamise mehe aru, mida sa tegid või mida sa ette teha, nii et see on üldiselt väga häid tavasid. Iga paar rida koodi, kirjutada kommentaari ise või teie kolleeg. Nii et siin, ma lähen ütlen, "Küsi kasutajalt temperatuur." Ei pea olema täielik lause, vaid lühikese fraasi. Aga mõte kommenteerib C on see, et iga teie märkusi tuleks anda teile - või, ütleme, TF või kolleeg - koorima oma programmi ja teavad täpselt, mida ta teeb, mida ei nii palju koodi lugemine, kuid lugedes kommentaare, mis peaks olema lühike ja selge. Olgu, nüüd las ma minna ja öelda: "Convert Fahrenheiti Celsiuse järgi. "Ma lähen edasi minna ja teha, oletame, float c. Hoiame Celsiuse kui ujukoma väärtus. Ja las ma võtke torkehaav seda. Valem on taas siin. Nagu 09/05 korda F miinus 32. Nii et teeme seda. Nii 5 jagatud 9, miinus - Oih, ma messed see üles juba. Times. Nii 09/05 korda F miinus 32. Nii et F miinus 32, semikoolon. Ja nüüd, siin, ma lähen edasi minna ja öelda, printida tulemust. Ja see osa on lihtne. Printf. Kuidas minna umbes trükkimiseks? Noh, ma võiks öelda: "See number Celsiuse järgi on% f \ n", ainult mõned esteetika. Ja mis siis raha ma tahan ühendada siin printf poolt Teine argument? Okei. Nii lihtsalt c. Nii et hakkame koos seda ja siis lihtsalt tagasi 0. Jällegi, see on midagi pistmist matemaatikat. See tähendab lihtsalt, et kõik on hästi. Nüüd on see õige, see programm? Hea küll. Nii et ma olen teinud vigu. Isegi kui sa ei tea, mida programmeerimine on, saate sortida ja järeldavad tagasi algkool mida vigu siin olla. Mis on üks esimesi? Sihtrühm: [kuuldamatu] David J. Malan: Jah. Nii et meil puuduvad sulud. See oli tahtlik, et ma tegin sulgudes Keynote lükake siia, sest seal on tegelikult see mõiste selleks, tegevusest või pretsedendist, kus teatavad toimingud - korrutamine - on suurem siduvad, on suurem pretsedendist, kui asjad nagu lisamise või mahaarvamise. Nii et me oleme teinud seda juba aastaid just täpselt selgeks mida matemaatilist operatsiooni tuleks teha esimene. Nii et ma peaks ilmselt jäljendada täpselt seda. Muidu arvuti on arvatavasti läheb püüdma teha midagi lõhe 5 9, siis korrutatakse F, lahutage 32 alates kogu asi. Mis ei ole tegelikult see, mida me tahame teha. Nii et olgem parenthesize. Olgem lisada oma sulud siia, sulgudes siin. Paneme selle siia. Siin ma lihtsalt märkasin teise viga tegin mööda teed. Jah? Sihtrühm: [kuuldamatu] David J. Malan: Ah. Hea. Nii et meil on tegelikult sama täisarv jagunemise küsimusega enne. Ma korrigeerida, et vaatame, mis sümptom on. Aga me ei kavatse on õige muud viga siin. Jah? Sihtrühm: [kuuldamatu] David J. Malan: Jah. Nii loll viga tegin, kuid uskumatult oluline. Arvuti ei kavatse lihtsalt silmi kinni pigistama ja lase mul kasutada kapitali F, kui ma tegelikult deklareeritud muutuja kui väiketähti f siia, reas 8. Nii et mul on vaja korrigeerida line 11 minu kapitalisatsiooni, mis hetk tagasi oli kapital F kogemata. Aga siin? Kas see peaks olema väiketähtedega ka? See peaks olema, kuid see on kokkusattumus. See% f on midagi pistmist muutuja. Nii lihtsalt olema super selge siin, lubage mul minna ja Nimeta lühidalt "temperatuuri." Lubage mul ümber see "temperatuuri." Las ma ei nimeta seda. Sest jällegi% f maailmas tähendab, "ujukoma väärtus." Pole midagi pistmist minu muutuja. Aga "temperatuur" kogu koht on natuke sõnaohter, nii et ma lähen tagasi oma väike "f" s. Nüüd lubage mul minna kuni mu akna siin. Tee f2c - mis oli jällegi suvalise nime ma andis sellele failile. Tundub, et on koostatud. Ma jooksen f2c. Enter. Temperatuuri Fahrenheiti - teeme lihtne. 32. OK, parandage. Aga kui ma nüüd tegema 212 keeva - neetud. Hea küll. Niisiis, selgelt vale, kui teie TF püüab vähemalt kaks väärtust. Mis siis probleem? Noh, sa juba näpuga näidata, mida on küsimus. Aga miks on see nii? Siin üleval, kui teen matemaatika 5. jagatud 9. Nii et põhimõtteliselt, see on täiesti õige. Täielikus kooskõlas valem. Aga arvutid teha ainult täpselt, mida sa ütle neile, mida teha. Ja mida me tegelikult ütleb arvuti, siin on jagada täisarv 5, täisarv 9 ja mulle tulemus. Probleem on, aga kui sa rajoon andmeid kasutades tüübid, väljund on sama andmetüüp kui sisendeid. Ja nii kui kaks sisendit on nii ints, toodang läheb olema int. Ja nii 5 jagatud 9 on punkt midagi. Aga mis on lähim täisarv juhtida midagi? Nii, see on tegelikult 0. Nii et kui me arutasime esmaspäeval, kõike pärast koma Punkti saab kärbitud. See lihtsalt läheb minema visata. Nii et see on täielik vale, sest ma võin ka lihtsalt korrutab kõike 0 siin. Nüüd saan selle kohta paar võimalust. Ma võiksin seda teha. 5,0 jagatuna 9.0. Tehniliselt, ma isegi ei pea seda tegema. See ei piisa lihtsalt üks arvudest float - või topelt - pannes koma siin. Sest see, mis juhtub nüüd on, kui sa jagad täisarv poolt float või topelt, arvuti läheb mõistma oh, üks neist on täpsem. Lubage mul Syyllistyä annab teile rohkem täpsust kui Te soovisite. Nii et see teisendada tulemus - ta naaseb tulemus ujukoma väärtus samuti. Nii, et oleks tööd. See teeks. Ja seal on üks teine ​​mehhanism, et me näeme üksikasjalikumalt järgmisel nädalal. Võite tegelikult, nagu programmeerija, ütleb arvuti tegelikult ravida ühe andmetüübi nagu kuigi see oli teine. Ma võiks tegelikult teha. Sulgudes võin öelda midagi sellist (float), avatud paren lähedal paren. Ja see on, mida nimetatakse "casting." Jällegi rohkem selle järgmisel nädalal. Kuid see on vaid programmilise viis öelda arvuti, jah ma tean 9 on täisarv või pikk. Ma tean, et see pole ujukoma väärtus. Aga käsitleme seda sellisena niikuinii. Nii et enamus andmetüüp tähendab teisendada ühest teise. Ausalt, see on lihtsalt natuke inetu, et ma teeksin ettepaneku, me läheme Tagasi esialgne ettepanek lihtsalt konverteeriva need asjad murdarve käsitsi. Sest nüüd, see on lihtsalt super selge, mis toimub, ja see pole kõik, mis häirivad. Nii et olgem nüüd minna tagasi minu terminaliakent. Tee f2c. Lubage mul minna ja teha selle. Ja nagu kõrvale, kui teil igav kirjutades neid käske ikka ja jälle aru, et arvutid, nagu Linux siin, kipuvad olema üsna nutikas. Ja kui ma tabanud, me ei lähe läbi kogu mu ajalugu käske, üles ja alla. Nii et selles asjas, ma ei saa lihtsalt minna kuni kestab teha f2c. Mind karjusin, sest ma just tegin seda hetk tagasi. See on juba kursis. Nii et nüüd ma saan käivitada f2c uuesti. Proovime 32 Fahrenheiti järgi. Nüüd proovime 212 Fahrenheiti järgi. Phew. Tundub, et töö. Nüüd on see hea, kuid tundub veidi meelevaldne, et Ma näitan kuus numbrit pärast koma. Eks? Kui oled ilm inimene televisioonis, et sa oled mingi jobu kui sa loed temperatuuri Selle täpsusega. Nii et olgem seda lihtsustada. Nii et olgem ikka lendab siin, et minu printf. Ja jah, ma tahan ujuma. Aga ma tahan nüüd täpsustada täpsusega. Ja ma lähen olema natuke lühike. Ma ütlen, anna mulle üks punkt pärast koma. Nii et pigem öelda% f, ma lähen ütlen% .1 f. Ja see tähendab lihtsalt, anna mulle üks positsioon pärast koma. Hea küll. Proovime seda uuesti. Lubage mul uuesti käivitada pärast kompileerimist. Ja nüüd ma kirjuta 32, ja ma saan tagasi sisutihe väärtus. Ja ma ei kirjuta, nüüd, 212, ja saada tagasi sisutihe väärtus samuti. Ja seal on teisi asju, mida saate teha printf. Võite tegelikult täpsustada, kuidas suur hulk peaks olema. Kui sa tahad olla pehmendus see, et saaksite paremjoondamiseks või vasaku viia kõik oma numbrid või proovige keskus asju. Nii aru, seal on vähe trikke saab teha seal. Aga nad lihtsalt taanduvad vormingu tähistamine, nagu oleme seal. Nii et nii see küsimus tähtsam. See on väga igav tabel minna läbi metoodiliselt. Aga mõistan, et autorid C on tulla eeskirjad, mis määravad, mida ettevõtjad on suurem pretsedendist, mitu siduvat jõudu, kui teised. Nii et arvestades algkool, me üldiselt teadsime, et see oli korrutamine ja jagamine, siis liitmine ja lahutamine, siis mõned muud kraami. Maailmas, programmeerimine, seal on palju enam nimekirja asjadest. Ja see ei ole midagi väärt meeldejätmist nüüd. Saad harjutada enne pikk. Aga nagu algkool, sulgudes üldiselt lahendada küsimustes ülimuslik, tehes super selge arvuti ja inimese moodi mida on mõeldud. Nii et pean seda natuke petma lehte seal. Aga enamik neist üksikasju me ei jõua mõnda aega. Hea küll. Nüüd saab luua ja eemalduda neist rumal vähe matemaatilisi näiteid. Ikka kasutada sama põhialuste, kuid alustada eneseväljendamisel veidi nagu nullist. Nii Scratch, meil oli neid Boole'i ​​avaldised. Ja inglise keeles, Boole'i ​​avaldis on mis? Õige või vale. See on midagi, mis hindab õige või vale. 1 või 0. Sisse või välja. Mida iganes sa tahad seda kutsuda. Nüüd Scratch, puzzle tükki nägi välja selline. Ja see on kombinatsioon, põhja seal, kolme puzzle tükki. Üks koos - midagi, mis on tühi ja tühjaks. Ja siis kaks Boole'i ​​avaldiste sees on. Nii saad pesa Loogiline väljendeid saada rohkem keeruline Boole'i ​​avaldised. Näiteks, kui see on laupäev, ja see on tore ilm, siis mine välja. Või midagi meelevaldset niimoodi. Nii saab liituda Loogiline väljendeid tulla suurem tõde väärtus, mille vastus põhineb kohta väiksemad. Nüüd, C, õnneks see kaardistamine on tegelikult päris lihtne. Sulgudes aidata teha asju selgeks siin. && On see, mida tähendab "ja". Nii see on, kuidas me ei kavatse muuta need plokid nullist C. Ja tingimused nägime Scratch, vasakul poolel, võin korstnat neid samamoodi ka C. Kui x on väiksem kui y, siis tee seda. Else if x on suurem kui y, siis tee seda. Else loogiliselt need peavad olema võrdsed, nii öelda et nad on võrdsed. Nii saame nüüd hakata ehitama neid asju. Teeme näite. Lubage mul avada faili, mis on rajal veebilehte, et Ma kirjutasin eelnevalt. Seda nimetatakse nonswitch.c. Ja me näeme, miks just hetk. Nii et see fail - nonswitch.c-- kõigepealt mõistma, et seal on terve hunnik kommentaarid ülaosas. See on lihtsalt selgitades faili nimi, mida ta ei, ja nii edasi. Ja see ilmselt näitab kasutamist Loogiline JA-se - konjungeerimise kaks väljendit. Nii et vaatame, kuidas see programm töötab. Ma sisaldama minu kaks faili, cs50.h ja stdio.h. Kui ma keri, nüüd, et programm, see on natuke pikem kui oleme kirjutanud varem, kuid päris loetav. Nii et ma esimest printida kasutaja on line 18 "Anna mulle täisarv vahemikus 1 kuni 10." Nii see on seal. Nüüd ma saan täisarv. Aga mõistan, et GetInt - päris lihtne. See on lihtsalt hakka int. See saab tagada, et see ei saa int ja ei jada või sularahaga. Aga ta ei kavatse teha mingeid piire kontrollitakse. Ta ei kavatse filtreerida numbrid olla vahel teatud piirides. Seega peame rakendama, et ise. Nii nagu ka Scratch, kus ma võiksin teha koosmõjul kaks väljendit, mida ma teha saan, et C järgmiselt. Kui n on võrdne või suurem kui 1, ja n on väiksem kui ja 3 või sellega võrdne, ma väga meelevaldselt dekreet, et arv olema väike arv. Lihtsalt huvides oma avalduses. Else if n on vahemikus 4 kuni 6, print "Sa valisid keskmise arvu. "Else kui n on vahemikus 7 ja 10, print" Sa valisid suur arv. "Else print" Sa vali vale number. " Sest loogiliselt, et järgmine, kui oleme ammendatud meie valik. Nii et realiseerida see ei ole päris, kuidas me kirjutame suurem või võrdne aastal matemaatika klassi. Eks? Te tavaliselt joonistan selle niimoodi, koos rida selle alusel. Aga ei ole olemas sellist klahvi minu klaviatuuri. Nii sümbol C väljendamiseks suurem või võrdne on kaks märki ja sümbolit alla või võrdne on kaks märki ka. Hea küll. Nii et kui ma saan selle programmi, saate ilmselt arvata, mis see on teeme. Kui ma minna ja teha nonswitch, Enter. Ja siis joosta nonswitch. Anna mulle number vahemikus 1 kuni 10. Ma annan ta 11. Ma valisin vale numbri. Las ma proovin number 3. Ma valisin väikese arvu. Nii et üsna lihtne on. Mida teha, kui ma tahan muuta käitumist selle programmi ja teha midagi veidi teistsugune asemel? Lubage mul minna ja öelda. Lubage mul vabaneda sellest kõigest. Ja lubage mul öelda, kui (n == 42). Ja siis ma lähen edasi minna ja öelda print "Sa valisid õige vastus. "muidu me läheme edasi minna ja öelda, printf ("Sa valisid vale vastus. "); Okei. Lihtsalt. Nüüd, mõned punktid saame teha siin. Üks, ma ei kirjuta sümbol, mis sa arvad on kõige mõistlikum. Kui ma tahan vaadata võrdsus, selgub te ei kasuta võrdusmärk. Sa asemel kasutada võrdse võrdusmärk. Ja miks see võiks olla, lihtsalt intuitiivselt? Jah. Sihtrühm: [kuuldamatu] David J. Malan: Õige. Võrdusmärk on juba kasutatud loovutamisega. Keegi tegelikult ei usu, et see läbi. Ja nüüd, kui on tegemist võrdõiguslikkuse katsetamine, peame olema selgem, ja öelda võrdub võrdsetena. Väga levinud viga on seda teha. Ja kui ka tööaega või millalgi järgmisel nädalal või Järgmise kahe nädala jooksul sa midagi sellist ja siis võitlevad sellega 10, 20 minutit püüab välja selgitada Mis kuradi viga on, aru, et te olete üks neist, inimesed, kes tegid selle vea. Nii super lihtne teha. Aga eesmärk on nüüd ennekuulmatut seda viga. See võiks hinnata, sest see, mida see tegelikult öelda? Kui n saab 42. Nii tegusõna inimesed kasutavad, verbaalselt väljendada mõiste loovutamine on "läheb." Nii et kui n saab 42. Nii et see tähendab määrata 42 kuni n. Nüüd on mul Boole'i ​​avaldis sulgudes, sees see tingimus, mille väärtus on 42. Eks? Sest kui sa seda hinnata seest kokku vastus, nüüd on 42. Nii et kui ma küsisin sult küsimuse, "kas (42)," Mis on et tegelikult öelda? Noh, Boole'i ​​avaldiste saab olla ainult õige või vale. 1 või 0. Sisse või välja. Nii näib, et oleme nurka asjas, mille kohaselt tuleb kõik ootamatu, ma ütlen "kui (42)". See ei ole tõeväärtus. Nii et mida arvutid teha, kuigi on see sisuliselt võrdsustab midagi, mis ei ole 0 on tõlgendanud, et olla tõsi. 1. Sees. Nad kõik funktsionaalselt võrdväärsed. Ainult väärtus 0 või märksõna vale, nagu me lõpuks näha, on tegelikult vale. Nii et "if (42)" oleks tegelikult tõsi, sest see ei ole null. Nii et täpsemalt siin, Boole'i ​​väärtus ei ole tegelikult nii palju õige või vale, vaid see juhul, kui on 0 või nullist. Nii et vale või ei ole vale. Ja see lubab meil hõlmata kõiki rohkem võimalusi Sulgudes väljend. Nii et me peame kunagi nii hoolikalt, ütlen seda - if (n == 42). Lihtsalt sellepärast peame täpsustama test võrdsuse, ei loovutamise väärtust. Mida veel märkida siin? Need looksulg on tegelikult ei vaja. Olen teinud neid lihtsalt olla ting-Nirso siin. Aga kui teil on seisund, et on ainult üks rida kood, nagu mugavus, programmeerijad ei pea kasutama looksulg. Piisab lihtsalt taandes esteetilistel põhjustel, ja seejärel kirjutage rida koodi. Ainult siis, kui sa tahad kirjutada kaks rida koodi - eest Näiteks teine ​​printf ("Bye!"). Kui sa tahad teha et see on katki. Võite taandes kõik soovid, kuid asjaolu, et teil on trükitud kaks rida koodi ilma looksulg tähendab, et see programm ei tööta õigesti või võib isegi mitte koostada õigesti. Nii et nüüd, kui aus olla, siis ma arvan, et parim harjumus on lihtsalt kasutada looksulg, ja leiad, et nad teevad super selge, mis toimub. Samuti, nagu kõrvale - eriti kui oled nende seas, kes kasutavad soovitusliku kirjanduse või ressursse internetis - aru, et seal on see mõiste stiili programmeerimine. Ja mõned inimesed tegelikult eelistavad panna lokkis traksidega siin joonel. Mõned inimesed eelistavad teha naeruväärsed asjad, meeldib panna neid siia. Ei ole vale vastus, kui tegemist on stiili, kuid see on vale. Aga mõned inimesed teevad seda. [Naer] David J. Malan: Ma mainin seda nüüd lihtsalt sellepärast, et nii teil lugeda üles asjad raamatute või online, sa lähed, et saada erinevaid sõnumeid erinevate õpetajate ja erinevatelt autoritelt. Ja just sellest aru, funktsionaalselt on nad üldiselt samaväärne, kuid olla järjekindel. Nii et sel juhul me standardiseerida lokkis traksid vooder kuni siin vasakul. Hea küll. Nii lähme edasi nüüd ja käivitada see, ja vaata, mis juhtub selle programmiga. Tee nonswitch. Seejärel käivita nonswitch. Anna täisarv vahemikus 0 kuni - nii et ei ole asjakohane enam, kuid ma lihtsalt suvaliselt öelda 42. Ja ma valisin õige vastus. Noh nüüd, lähme tegelikult seda teises suunas. Tuleb välja, seal on mõned muud süntaks me saab kasutada programmi. Siin on uus tükk süntaks, mis on funktsionaalselt sama, aga lihtsalt tutvustab teises viis väljendada ennast. Nii et see on, mida nimetatakse "lüliti avaldus." Ja lüliti avaldus toimib järgmiselt. See võtab, sulgudes väärtus, mida soovite "Lüliti" kohta. Sa tahad käituda erinevalt põhineb selle väärtus. Nii et see tähendab, lülitage n väärtus. Ja mida see tähendab? Noh, kui n on 1, 2 või 3, edasi minna ja välja printida "Sa korjatakse suur hulk "ja seejärel murda. Põhjuseks katkestus on, et teed C töötab on Niipea kui ta leiab juhtumi, mis sobib, hakkab ta täidesaatva kõik koodi all. Nii et kui mul on üks rida koodi, kui mina siin rida 27, siis saab teostada. Kui ma lisada veel rida siin, see läheb täide. Teine rida siin, see läheb täide. Programm ainult peatub täidesaatva mis on allpool kohaldatakse juhul avaldus, kui ma otseselt öelda "murda." Nii vale. Õigus, antud juhul, kui tulemus. Aasta otsus kohtuasjas 4 või 5 või 6, samamoodi läheb välja trükkida sõnum. Sel juhul keskmise arvu. Break. Aasta otsus kohtuasjas 7, 8, 9, 10, see saab välja printida "Sa valisid suur arvu. "Break. Ja siis seal on sõna otseses mõttes märksõna nimega "default" see on tegelikult nagu "veel" ehitada. Nii et uus süntaks, kuid intellektuaalselt, mitte midagi uut siin. See on nagu nullist. Kui muidu, kui muidu kui mingi plokk. Nii et lülitada versioon sellest programmist. Aga teate, et me tegime seda numbrid siin. Lubage mul avada teine ​​versioon, lihtsalt näidata midagi natuke konkreetsem. Nii et siin on meil klassid asemel. Selgub, saate kasutada lüliteid mitte ainult täisarvud, kuid tähemärki. Mitte kõik andmetüübid, kuid vähemalt tähemärki. Nii et siin, me võiksime teha midagi kui väärtus C, et kasutaja sisestatud kooskõlas 19, kasutades getchar funktsioon, on kapitali või väiketähed, vaatame seda tõlgendada kui klass, ja ütlevad, et nad valisid hea hinne. Ja mööda lüliti avaldus, meil on muud juhtudel "B" s ja "C" s, ja nii edasi. Kuid olgem nüüd ringi läbi üks teine ​​asi. Ja jälle, lendamine läbi Mõned näited. Aga see on tõesti nii, et saame rakendada neid, nüüd - või tegelikult, lihtsalt tõlkida neid nüüd - et C. Nii et lubage mul minna ja seda teha. Ma lähen avada uus fail. Ja ma teen sisaldavad . Ja siis ma teen int main (void). Las ma salvestada see fail loop.c. Lihtsalt näitena. Ja ma lähen edasi minna ja teha järgmist. Ma tahan kirjutada väga tüütu programm. Nii 10. Teeme seda. 9. Hea küll. Niipea kui hakkate seda teed programmeerimise, sa oled Ilmselt teen midagi valesti. Aga me hakkame niikuinii. Oih. See on tegelikult vale. 7. 6. 5. 4. Midagi ei juhtu, kui me kuni 0. 3. 2. 1. Okei. 0. Kustuta. Hea küll. Nii return 0. Nii et see programm on ilmselt läheb seda, mida ta väga tüütult ütleb ta tegema hakkab. See saab printida kõik need väärtused, ülevalt alla. Nii et las ma teen tegema silmus. Ja siis - Ups. Tee silmus. Ma olin vales kataloogis. Ja nüüd ma jooksma silmus. Enter. Woohoo. Väga kena. Kena, pikk programm. Olgu, aga nüüd teeme seda parem. Täpselt nagu Scratch, kui sa hakkasid kasutama silmuspõletamise ehitada, selle asemel, et lihtsalt kopeerida ja kleepida kõik puzzle tükki, lubage mul tutvustada seda asja. Nii C, on erinevaid silmuspõletamise skeemid, üks mis näeb välja selline. "For" loop on kolm asja, eraldatud kahe semikoolonit. Ja siis, seest keha silmus, nii rääkida - kraami sees looksulg - me saame teha midagi uuesti ja uuesti. Mis mul siin ekraanil, see on sõna otseses mõttes lihtsalt kommentaari. / / Tähendab siin tuleb kommentaari. See ei ole koodi. See on lihtsalt ingliskeelne kirjeldus mulle inimene. Nii initializations, tingimused ja uuendused. Noh, vaatame, kuidas see töötab. See võimaldab mul kirjutada selle programmi järgmiselt. Sest - Nii et siin on minu loop - int i - siin tuleb muutuja nimega "i" - saab initsialiseerida 10. Seega on minu ettekanne. Ma tahan seda teha silmus, nii kaua kui "i" on suurem või võrdne 0-ga. Ja iga iteratsiooni see silmus, ma tahan teha i -. Nii nägime + + esmaspäeval. - On vastupidine. See Count väärtus 1. Toas see silmus, ma tahan tegelikult midagi teha. Nii et ma ütlen midagi printf. Ma ei taha öelda 10 praegu, sest see ilmselt on lihtsalt trükkimineku sama väärtusega. Mida ma tahan printida selle asemel, ilmselt? Jah. Nii "i." Nii% d, i. Ma lähen varastada üks neist ideid varem - Selle asemele vormingu tähistamine - ja siis siia alla, alt, ma naasen 0, lihtsalt hea meede. Aga nüüd, mul on sisutihe programm. See on ainult paar rida, ja mitte mingi 10 või 11 rida. Las ma lähen oma kiire siia alla. Remake silmus. Rerun silmus. Ja see tundub olevat sama. Nüüd programm on enam huvitav. Aga nüüd ma ei kirjuta midagi sellist. Ma ei muuda seda 100-le. Saan siis kompileeri oma programmi. Ja siis ma saan uuesti käivitada oma programmi. Ja nüüd ta läheb ülikiire tänapäeva arvutid. Kuid mul on - ja tegelikult, minu Ajaloo puhver ei isegi nii kaugele minna. Nii juba läheb. Nii et meil on kõik 100. Aga see on lihtne teha vigu siin. Mis saab olema oodatud käitumine, kui ma kogemata teha? Nii tundub lõputu. Nii et vaatame, kui arvuti käitub. Nii et lubage mul minna ja teha silmus. Ja las ma joosta silmus. Nii et olgem tagasi tulla, et üks hetk. Me teavitame, et perspektiivis. Sest see, mida me peaksime kokku lugema, minimaalselt? Tõenäoliselt vähemalt 2 miljardit, kui meil on, et paljud bitti, ja me kasutame positiivseid väärtusi. Nii et olgem hüpata siia tagasi. Peale selliseid silmuseid, meil on nn samas silmuseid. Nii, nagu Scratch, siis tuli Forever plokid, ja siis tuli Korda plokke. Samamoodi C, sa lihtsalt muid võimalusi väljendada ennast. Nii et teil on see mõiste samas silmus, mis võimaldab teil väljendada ennast natuke teistmoodi. Ja siis on midagi, mida nimetatakse do-kui ahela, mis tegutseb veidi erinevalt samuti. Ja me tease nende peale ajas. Aga võtame pilk see viimane siin. Kui me astume - ikka töötab. See on päris lõpmatu. Nii et lubage mul minna positiivne, ja näidata, kuidas me saame tegelikult reguleerivad kasutaja sisend veidi tõhusamalt. See on üsna lühike programm. Ja siin on meil, on peamine, int n deklaratsiooni. Nii et anna mulle muutuja nimega n. Nüüd ma sõna otseses mõttes öelda "Teha." Ja siis ma sain lahti lokkis traksidega, lähedal lokkis traksidega. Ja siis märkate, kohe pärast seda, ta ütleb samas n on väiksem kui 1. Nii märkate, et need read - 19-24 - koostada ühiselt do-kui ahela. Ja jälle uus süntaks, ei ole uus idee. See on lihtsalt üks viis silmuspõletamise, süntaktiliselt. Mida see teeb? Kas järgmine samas n on väiksem kui 1. Mida ma tahan teha? Ma nõuan, et sa annad mulle positiivne täisarv. Siis ma tegelikult üritavad täisarv kasutaja. Aga nii et toimingute siin, sest samas seisukorras on siin all, ma siis lähen vaatan, on n vähem kui 1? Olgu, oletame, et kasutaja - pärast seda nõudis sel moel - liigid väärtus 0. See tingimus saab olema õige või vale? Noh, see tegelikult toimub, et olla tõsi. Kuna n on 0, ja 0 on väiksem kui 1. Mis siis, et tähenda? Tee seda uuesti. Tee seda uuesti. Tee seda uuesti. Alles siis, kui see tingimus on FALSE. Kui ma tüüpi 42. Hästi ei, 42 on mitte vähem kui 1. Seega see silmus tehakse täidesaatva. Ja nii sel hetkel, programm öelda, aitäh 42, sel juhul. Nüüd, kui teil on see võimalus väljendada ennast - Me ei peaks ootama, kuni see lõpuni. See vőtab aega. Et jätkata järgmine kord, ehk. Aga nüüd, teil on võime loodetavasti aru natuke geek huumorit. Vabandused. See ei iseloomusta huumorit arvutiteadus maailmas, kuid see on armas. [Naerab] Lõpetame selle teadmiseks. Ja me näeme esmaspäeval. [Aplaus]