DAVID J. Malan: Do tiu estas CS50. Kaj tio estis por CS50 propra Colton Ogden, por pli de kiuj estas muziko povas elŝuti ĉe soundcloud.com/cs50. Do hodiaŭ ni enfokusigi ĉiujn pli sur la arto de programado. Kaj ni prenos, kie ni lasis ekstere pasintsemajne, enfokusigante en Scratch, kio estis tiu grafika programlingvo. Kaj prenu tion malsupren al pli malalta nivelo, uzante pli tradicia programado lingvo konata kiel C. Sed survoje, rimarkante ke la samajn ideojn ni parolis lastan vendredon Mi ripetas, ne nur en tiu lingvo C, sed en plej ĉiun alia ke ni rigardu ĉi semestro. Do ni nomas tion jen kion lasta tempo? Tiu estas reprezentanto de komunikaĵo. Do ni nomas tiun deklaron. Kaj ĝi faras ion. Estas instrukcion ke komputilo aŭ Scratch povus ekzekuti. Kaj nun, ni ankaŭ komencas nomante iun kiel tiu funkcio, pro kialoj ni baldaŭ vidos. Dume, ni vidis tion kiel tio. Kaj tiuj estas ĝenerale konata kiel kio konstrui? Publiko: Loop. DAVID J. Malan: Do banton. Tiel bela simpla. Ĝi laŭvorte faras kion ĝi diras. Kaj en Scratch, se vi volas Cram pli puzlo pecoj en tie, la peco kreskos por persvadi ŝin. Kaj ni vidos en C kiu Ni povas fari la samon. Alia tipo de buklo, kvankam, en Scratch eble por ĉiam, aŭ ekzistas iu nombro de aliaj aliroj. Sed ni prenu pli generalista rigardo, kun vizaĝo tio estas probable sufiĉe familiara, ĉe loops pli ĝenerale. Mark Zuckerberg: Unu afero ke komputiloj Estas vere bona estas ripetante komandoj. Kiel persono, oni kredus akiri vere enuiga, se vi devis fari la saman aferon multajn fojojn en vico. Sed komputilo povas fari la saman aferon milionoj aŭ eĉ milionoj da fojoj, kaj ne enuiĝos, povos porti tion diveni vere bone. Do ekzemple, se mi volis deziri ĉiuj en Facebook feliĉan naskiĝtagon sendante ilin email, ĝi povus preni min pli ol jarcento por fakte skribi ekstere ĉiuj tiuj retpoŝtoj al ĉiuj. Sed kun nur kelkaj linioj de kodo, mi povas havi sistemon sendu retmesaĝon al ĉiuj en Facebook volante ili feliĉan naskiĝtagon. Do jen kion maŝojn estas kaj kial ili estas valoraj kaj iu ke komputiloj povas fari tre bone. DAVID J. Malan: Do se vi estis la ricevanto de kelkaj el CS50 aj kaj Dropbox estas spaco de malfrua, tio estas vere ĝuste kion ni fari, uzante kodo tute tiel. Ni esence havas grandan kalkultabelo en kiun uloj estis inputting ilia nomoj kaj retadresoj. Kaj ni skribis ete de kodo kiu povas persisti super tiuj adresoj kaj kraĉis unika adresoj en se iu donita multnombraj fojoj. Kaj poste, ni sendas aŭtomata retpoŝton de CS50 la bot, inkludante la kuponon kodo. Nun ni ankaŭ rigardis ĉi konstrui lasta tempo. Kaj tio estas aparta ekzemplo de kio? Do, jes, Bulea esprimo. Kaj la formo estas intencita kapti kiu siavice. Ĉiuj tiaj demandoj de la formi vera aŭ malvera en Scratch aspektos iom io tiamaniere. Kaj ni nomas tiun Bulea esprimo. Tio estas ja vera aŭ falsa, jes aŭ ne. Estas maniero de respondi demandon. Kaj dume vi povas uzi tiujn Buleaj esprimojn ene de konstruoj kiel tiuj, kiuj el Certe estas kondiĉoj aŭ branĉoj, proverba forkoj en la vojo. Ili povas rigardi ne nur kiel tiu, sed ili povas ankaŭ esti elses asociita kun ili. Kaj vi povas fakte havi tri vojon forko en la vojo aŭ kvar vojo forko en la vojo, simple nesti tion, kiel vi vidos en Scratch Se vi ne jam havas. Kaj kiel vi povas fari en C tiel. Ni prenu alian generalista rigardi kiel alumnist, tiel, kiu prezentu malsaman alproksimiĝon tion nomis kondiĉoj. Bill Gates: Popola fari decidoj ĉiutage. Ekzemple, antaŭ vi iru eksteren vin speco de havi se aserto kiu diras, se ĝi pluvas tiam mi bezonos akiri mian jakon. Kaj komputiloj estas mirinda iam vi decidi tiuj specoj de deklaroj, ke ili povas fidinde ekzekuti tiujn aferojn je nekredebla rapido. Kaj tiel komputila programo vere Estas iom da matematiko kaj kelkaj se deklaroj kie la decido prenas faris. DAVID J. Malan: Do kiel Vi sciu, tio estis ulojn kiel Bill Gates, Paul Allen, kaj aliaj ke vere piedbatis for la tiel nomata persona komputilo revolucio kelkaj jaroj. Mi pensis, antaŭ ni plonĝi en kelkaj administrivia, Ni volas raporti rakonton de la Albuquerque, Nova Meksiko muzeo de Natura Historio kaj scienco, kie iuj de Bill Gates kaj Paul Allen fruaj historioj ili rakontis, kiel ni havas nun hodiaŭa PC kaj Mac kaj pli. Por tio, kvankam, ni bezonas du volontuloj kiu havas tre bona rakonto voĉoj legi skripton laŭte. Bone, kiom pri en reen tie. Venu supren. Kaj kio pri antaux tie. Venu malsupren. Prenu vian lokojn tie. Kiel vi uloj supreniru, paro de administra anoncoj. sekci, la procezo elekti sekcion, komencos ĉi Merkredo tra vendredo. Pli sur tiu ĉi venanta Merkredo en prelego. Super sekcioj, dume, estas iu kiun ni proponos venontan semajnon per la tuta klaso estas invitita partopreni en sufiĉe granda skalo sekcioj, oni pli comfy, unu malpli komforta. Kaj ni anoncos la detaloj de kiu, siavice, poste tiun semajnon. Dume sekciojn, si, komencos en semajno tri de la kurso, nula indekson, kion signifas tiuj estas paro de semajnoj eksteren. Do ne zorgu. Vi ankoraŭ ne maltrafis ion kune tiujn liniojn. Dume dume, se vi havas demandojn administrativamente, retpoŝti min kaj Devon kaj Gabe kaj Rob ĉe tiu adreso tie. Laste problemo starigis 0 estas, kompreneble, el. Vi eble rimarkis ke en la kurso de afiŝinto. Ĝi devus provizi vin kun ĉiuj respondoj al demandoj vi eble havas kune la vojon akiranta komencita kun la problemo aro. Sed se vi trovas vin mem en bezono de si reciproke la manojn, per ĉiuj rimedoj ĉeesti oficejo horoj, Lundo, mardo, merkredo, ĵaŭdo de tiu semajno en la vespero en kvar manĝejojn. Vidu ke URL tie por la detaloj de kie oficejo horoj estos. Nun Ni renkontiĝu nian du gastoj ĉi tie hodiaŭ. Kio estas via nomo? JAY PAUL: Jay Paul. DAVID J. Malan: Jay Paul, agrable renkonti vin. Hikari: Hikari. DAVID J. Malan: Hikari? Hikari: Hikari. DAVID J. Malan: Hikari. Agrable renkonti vin ankaŭ. Jay Paul kaj Hikari havas en antaŭ ili sur tiuj muziko staras du skriptoj kiujn mi presita tiun matenon de la Nov-Meksiko muzeo de Natura Historio kaj Scienco. Kaj kion mi pensis Mi ŝatus fari en superkape estas akompani vian recitado de la skripto kaj tiu historio kun kelkaj vidaj bildoj, sen surprizoj. Kaj kion mi faris anticipe Estas prehighlight sur via skribo kion vi legas, kaj kion vi devas legi. Kaj ni esence nur alternaj alineoj. Do estas multe kiel vi povus faris en angla klaso. Tio vere devigas la aŭdienco kredi vian rakonton tie. CXu ni? Do la rakonto jen, ni havas BASIC, kaj ĝi komencas en Kembriĝo. JAY PAUL: Estis vintro, 1974, en Kembriĝo, Masaĉuseco kie vintroj povas esti malvarmaj. Barba, longaj haroj kolegio Dropout nomon Paul Allen drudging trans Harvard Kvadrata, sorbita en liaj pensoj. Lia ĉefa maltrankvilo en tiuj tagoj Estis kiel iri sian amikon, Bill Gates, forlasi lernejon kaj iru en negoco kun li. Hikari: La du estis jam irinta tra nombro de negocoj kune, komencante ĉe Lakeside lernejo en Seatlo kie ili pagis en libera komputila tempon testi PDP-10 komputiloj en loka tempo dividante kompanio. La plej freŝaj plano estis forlasi lernejo kaj formi programaro kompanio. Allen lasis Vaŝingtono Ŝtata Universitato. Sed en la lasta minuto, Gates decidis resti kun Harvard. JAY PAUL: Tiu tago, transirante Harvard Kvadrata, Allen ekvidita januaro, 1975 temo de Populara Elektroniko kun la tero halto subtitolo, Mondo Unua minicomputadora Kit rivali Komerca Models. Sub la subtitolo estis bildo de malgranda skatolo ornamita kun lumoj kaj ŝaltiloj. Ĝi estis nomita la MITS Altair 8800. Kaj Allen sciis tio kion li estis serĉanta. Hikari: Tagoj de diskuto sekvis. Allen kaj Gates komprenis la signifon de la Altair. Ili parolis ofte pri mikroprocesoroj kaj atendis por vidi kion estus farita kun ili. Kaj estis minicomputadora kit sur la portita de Populara Electronics. Ĝi ŝajne havis neniun programaro tamen. Ili imagis nacio programistoj malsuprenirantaj sur MITS. Kaj tiel ili nomis Ed Roberts, la estro de la kompanio, asertante havi version de la BASIC programlingvo preskaŭ preta por Altair. Ili ne. Kaj Roberts devas ekkoni ili ne plenumis. Li eniris la 10 alvokoj tago de homoj kiuj havis BASIC preskaŭ preta. Kaj lia stock respondo estis, "La unua persono kiu montras supren kun laboristino Basic akiras la kontrakton. " JAY PAUL: Gates kaj Allen neniam vidis Altair. Ili neniam eĉ vidis la Intel 8080 mikroprocesoro ĉe la koro de la Altair. Sed paro de jaroj antaŭe Allen estis skribinta programon sur komputilego komputilo kiu emulada la funkciadon de antaŭa Intel mikroprocesoro. Kaj ĉifoje ili farus la samon. Hikari: Kun Intel 8080 manlibro ĉe lia flanko, Allen sidiĝis ĉe Harvard PDP-10 komputiloj kaj skribis la emulador kaj programaro ilojn necesajn por fari la programadon. Dume Gates ĉesis iri por klasoj kaj sin dediĉis por desegni la BASIC, uzante ĉiun lertaĵo Li sciis akiri la grandecon malsupre 4 kilobajtoj. JAY PAUL: Out en Albuquerque, Ed Roberts ricevis alvokon de Gates petante detalojn pri kiel la Altair manipulis specifa rutinoj. Neniu iam petis ke antaŭe. Kaj Roberts komencis interesigxi. Hikari: Kun la disvolviĝo iloj kaj la dezajno preta, Gates kaj Allen skribis La kodo de la PDP-10, varbante alia Harvard studento, Monto Davidoff, skribi math rutinoj. Post fina nokto de programado, Allen ricevis sur ebeno transdoni iliajn BASIC al MITS. Li pasigis la ebeno rajdis maltrankviligante. Kaj reen en Kembriĝo Gates maltrankviligante. Ili estis provitaj ilia BASIC kaj ĝi estis laborinta en la emulador. Sed kion se la emulador eraris? JAY PAUL: Kiel la ebeno proksimiĝis Albuquerque, Allen rimarkis, ke iliaj BASIC, nun nete enhavis sur malgranda rulo de boris papero bendo, estus senutila sen separata programo, nomata loader, ke rakontus la Altair kiom legi la bendo de papero estaĵo nutrita en la teletipo maŝino. Li elprenis sian notlibron kaj rapide haste malsupren loader programo en Asembleo lingvo, tiam permane transportita en la 1s kaj _0s_ la Altair komprenus. Hikari: Allen atendis pura, iom, alta teknologio kompanio gvidata de viroj en negoco kostumoj. Do li estis surprizita kiam Roberts renkontis lin ĉe la flughaveno rigardante kiel rancho mano. Roberts estis same surprizita. Kiam li forlasis la Harvard programisto ĉe multekostan hotelon, Allen devis konfesi ke li ne povis permesi la ĉambron. JAY PAUL: MITS, sin, estis lokita en polva strio centro. Interne sur cluttered workbench estis Altair ŝarĝita kun 5 kilobajtoj de memoro kaj konektitaj per kablo al teletipo maŝino. Roberts kaj Chief Engineer, Bill Yates, atendis anticipante kiel Allen toggled sia loader programo en la Altair. La teletipo komencis chugging kiel tiris la papero bendo tra la bendo leganto. Ĝi prenis eble 15 minutoj ŝargi la programon. Tiam la teletipo abrupte presigis memoro prompto, do pretan prompto, kaj Allen komencis tajpi kelkaj testo ordonas. Por ĉies miro, La programaro funkcias. Esas cimoj, kompreneble. Sed la ĉefa afero funkciis. Hikari: Poste, sur la vojo al $ 3.00 tagmanĝo ĉe Pancho'S vespo flugis en la fenestro de la pickup kamiono kaj pikis Allen sur la brako. Sed ĉe tiu punkto nenio povus difekti la humoro. La Altair nun havis lian BASIC, La unua komerca programaro por hejmon komputilo, farita de Paul Allen kaj Bill Gates, fari negocon kiel Microsoft. DAVID J. Malan: Multaj danke al niaj du legantoj. [Aplaŭdo] DAVID J. Malan: Nun vi havas vian elekton, antaŭ ol forlasi, de sparkly aŭ glow en dark-- ho, atendi unu sek, wait-- sparkly kaj brilon en la mallumo elefanto el CS50 propra Cheng Gong. Hikari: Aw, dankon. DAVID J. Malan: Ĉiuj Bone, dankon tiom. [Aplaŭdo] DAVID J. Malan: Do veran historion. Ĉi tio estas kiu ĉiuj tiuj maŝinojn kaj la facileco kun kiu ni uzas gxin nun prenu por sidiĝita, vere komenciĝis ĉi tie, nur kelkajn paŝojn de tiu reala teatro. Kaj nun hodiaŭ, se vi ne estis, tio estas Maxwell Dworkin, la komputilo sciencoj konstruaĵo, ankaŭ ĉirkaŭ la angulo. Kaj sur la dua etaĝo de tiu konstruaĵo faras pendi tri paĝoj el la originala fontkodo ke Bill Gates kaj Paul Allen skribis. Fakte, se vi uzas zomi en vi povas vidi ne nur iliajn nomojn en la originalaj tipo, sed ankaŭ subskriboj kiuj garnis a malmultaj jaroj malantaŭen, kiam ili laste vizitis. Sed kio estis aparte konvinka pri tio, kion ili ekiris por fari estis skribi programon kiu farus ebligi aliaj homoj por skribi siajn proprajn programojn. Tiutempe ĉiuj tie estis kun ĉi Altair maŝino farita per MITS. Kaj cxiuj ili bezonis estis iu vojo de faciligi al ŝatantoj kaj popolo amas nin en tiun ĉambron por fakte programo ke sen nepre kompreni Asembleo kodo aux masxino kodo, aŭ Dio malpermesu, _0s_ kaj _1s_. Ni programistoj, kiel tiuj en tiun ĉambron, ni deziras povi esprimi nin multe pli kiel pseŭdo kodo eĉ se ĝi estas iomete pli nit postulema ol ni parolis lastan semajnon. Ni ne volas skribi kodon tiel, Paul Allen kaj Bill Gates faris. Ni, male, volas verki kodon kiu aspektas iom pli uzanto amika. Nun tiu estas lingvo konata kiel Basic. Kaj la linio nombroj estas kion vi uzi por simple kalkuli la linioj de kodo ke vi skribas. Ni eĉ ne devas faru, ke tiuj tagoj. Sed vi povas vidi ĉi tie kiom PRINT "saluton, mondo" estus ja supozeble presi nur tio. Kaj kio Bill kaj Paul faris estis povigi homojn skribi kodo kiel ĉi anstataŭ of-- se vi rigardu la komputiko wall-- kodo kiel ĉi. Fakte, CS50 lastatempe havis okazon sidigxi kun profesoro Harry Lewis en la Komputika fako, kiu efektive instruis Bill Gates kelkaj jaroj, kaj staras tie antaux tiuj tri paĝoj de ekstraktojn. Ni rigardu. Harry Lewis: Kion vi havas tie estas Printita de frua peco de programaro skribita de Bill Gates kaj Paul Allen, la fondintoj de Microsoft. Do la kodo estas interesa pro du kialoj. Unue, ĝi fariĝis Microsoft unuan produkton, kiu estis interpretisto la BASIC programlingvo. Kaj due, tio estis unu el la unuaj provoj krei interpretisto tiel ordinara homoj povus uzi personajn komputilojn. Do Bill Gates estis studento en Harvard. Mi komencis instrui ĉe Harvard en 1974. Ĉi tio estis farita en 1975. Tiel estis frue en lia kariero kaj frue en mia kariero. Mi vere instruis Bill en kurson ĉirkaŭ tiu tempo. Paul Allen ne estis Harvard studento, sed li estis alta lernejo samklasano de Bill Gates. Se vi venu kaj vidu ĉe la printita, vi efektive trovi trian nomo, Monto Davidoff, kiu estis Gates La samklasano tie en Harvard. OK, do jen oni Interesa komento ĝis tie. Ĝi diras "En 4K povas forviŝi kvadrata radiko sed por maŝojn devas ankoraŭ labori. " OK, do kion tio signifas estas ke estis du manieroj kompili tiun programon. Unu estis kuri en versio de tiu Altair komputilo ke nur havis 4K vortoj de memoro, 4.096 vortoj el memoro. Sed la granda versio havis 8K. Kaj kion tio diras estas ke en la 4K versio vi devis forigi kelkajn kodo por fari ĝin taŭga. Sed unu el la aĵoj kiu estus forigita estus la kvadrata radiko rutino. Sed ŝajne la por maŝojn devus ankoraŭ funkcios eĉ kiam vi kompili malsupren por nur la 4K versio de la komputilo. DAVID J. Malan: Do unu el la temoj, kiel ni vidos en komputiko, Estas ĉi nocio layering kaj abstraktaĵo kaj vere staras sur la ŝultroj el uloj, kiuj venis antaŭ ni, ne kontraste iuj de la Bill Gates kaj Paul Allen rakontaj tie. Kaj kion tio signifas estas ke hodiaŭ oni povas preni por koncedas ke tio estas vere facile por ni skribi kodon. Ja kodo, kiel ni diris vendredon, estas pli teknike konata kiel fontkodon. Kaj ĝi estas ĉi angla kiel sintakso tio estas pli taŭga kaj pli bone difinita ol iu kiel pseŭdo kodo, por kiu ne estas formala difino. Kaj hodiaŭ, kion ni iras enfokusigi estas fontkodo kiuj aspektas kiel tiu, kiu rekoni unuavide aspektas tute kamufla. Kaj sincere, estas vojo pli estetike kompleksa ol la suba programo. Ĉio ĉi programo faras, recall, estas kion ni diros? Ĝi simple presas "saluton mondo". Kaj tamen rigardu ĉiuj aĵoj ni bezonas envolver ĉirkaŭ tiu tre simplan frazon. Sed antaŭ longa ĉiuj tiujn liniojn kaj pli faros multe pli sentita vi. Kaj la fluo estas kiel sekvas. Kion ni bezonas por nia dispono estas preni kodon, kiel fonto kodo kiun ni ĵus vidis. Kaj ni bezonas novan programon kuri ĝin tra. Ni bezonas algoritmoj kiuj povas konverti fontkodon, kiel tiu, en celkodo, _0s_ kaj _1s_. Alivorte, kio ni lernos hodiaŭ Estas kiel fari tion, skribi fontkodon supren supro, fordoni kiel enigo al specialaj programo konata kiel kompililo, kaj ni tuj produkti objekton kodon. Kio estas nur ornama metodo dirante ni prenos ion kiuj aspektas kiel tiu, fordoni en programo nomita kompililon, produkti objekton kodo kiuj aspektas kiel tiu. Do tiuj estas laŭvorte la mastroj de _0s_ kaj _1s_ kiuj komprenis per Intel komputilo tiuj tagoj, ke se interpretitaj de la CPU, la cerbon ene de komputilo, estos laŭvorte presi, tute simple, "saluton mondo". Nun tie estas vojo pli _0s_ kaj _1s_ ol vi atendus eble necesa por tio. Sed tio estas ĉar ni konstruado sur bona interkonsento de komplekseco ke ni povas plu akceptas. En aliaj vortoj, multaj inteligentaj homoj donis al ni multajn malvarmeta iloj kaj potenca programaro, per kiu ni povas nun fari projektojn de nia propra. Do ni komencu. Dum lasta vendredo, kaj por Problemo Ara 0 tiun semajnon, vi estos ludante en mondo kiu aspektas kiel ĉi. De hodiaŭ kaj por Problem Ŝanĝu 1 proksima semajno, la kodo tuj serĉos iom pli kamufla, sed funkcie estas tuj estos la sama. Do rimarki, supre estas Scratch, malsupro estas C. Sincere Scratch Estas multe pli uzanto amika kaj atingebla. Sed se vi nun komparu vide supre fundo, estas speco de unu al unu korespondado inter la puzlo pecoj kaj la lingvo ni al ludi kun. En aparta, te la blua puzlo peco supren supro, estas ŝajne ekvivalento al kio ŝlosilvorto aŭ specialan frazon en tiu lingvo nomita C? Publiko: printf. DAVID J. Malan: printf. Tio signifas formatita presado. Kaj tio estas nur fantazio maniero diri printf en C tuj estos deklaro aŭ funkcio kiu presas ion por la ekrano. Kion tio presi la ekrano? Kion ajn vi rakontos ĝin interne de citaĵoj, ene de krampoj. Do denove, rekoni, ekzistas multe da taskoj ke vi devas teni en menso, parentezoj, citaĵojn, punktokomojn, kaj ĉio ĉi. Sed ĉiuj kiu estas speco de la flanko de la punkto. La interesa takeaway nun estas ke la vorton bloko en Scratch estas sufiĉe multa ekvivalenta al la printf deklaron en C. Dume, la flava puzlo peco supren supro, verdaj flago klakis, Estas verŝajne ekvivalenta kion ŝlosilvorto tie? Publiko: Ĉefa. DAVID J. Malan: Do ĉefa. Eble int, eble malplenon. Sed ĉefa klaso de sonoj kiel ĝi estas grava, kaj ja estas. Do kiam verdaj flago klakis estas, denove, la puzlo peco kiuj iniciatas kun tuta Scratch programo. Sed ni tuj nun komenci nomante ke ĉefa, tiu funkcio konata kiel ĉefa. Nun dume ni ĝeneraligi ĉi jene. Ni povus nomi diri funkcio. Kaj ĝi povus rigardi specife kiel ĉi. Nu, kio pri maŝojn? Se ni volas komenci konverto aŭ traduki pli en Scratch al C, tion ĉi tie ŝajne simple diras "saluton mondo" ĉiam. Do se vi asocii ĉi skriptoj kun kato en Scratch, ĝi estas nur tuj subteni dirante en iu speco de karikaturo bobelo, "Saluton mondo, saluton mondo, saluton mondon, "ad nauseum, ĉiam. Se ni volas fari ion similan en C, ĝi tuj aspekti iom kamufla. Sed ni povas atingi la saman rezultoj, kiel ni fine eltrovi, kun sintakso kiel ĉi. Mi tuj uzi printf denove, ĉar ĉe la fino de la tago Mi volas presi "saluton mondo". Kaj mi ŝajne uzante ŝlosilvorto ke ne ĉiam. Estas anstataŭ la vorton dum. Sed ĝuste semantike en Angla, dum ia sugestas ian buklo aŭ ciklo. Do kiu sekvinbero al esti la ŝlosilvorto ke C uzas. Kaj dum vera, kial faras dum veraj efike signifas ĉiam? Nu, dum, kiel ni baldaŭ estimi ĉiujn pli, havas ĉi parenthetical apud ĝi kie vi povas meti Bulea esprimo. Kaj tiel longe, kiel tiu esprimo estas vera, tiu kodo, kiel signifita inter tiuj du frizita krampoj kiel ni vokos ilin, simple subteni kurante denove kaj denove. Do veran veron. Do dum veraj rimedoj nur faru ĉi eterne. Estas preskaŭ stulte konstrui esprimi vin. Sed tie ne estis ĉiam ŝlosilvorto en C. Estis tempo. Kaj farigxis tre simpla Bulea esprimo kiel veraj. Kaj tiu, kiu vidos, atingas la saman rezulton. Kiel alie povus vin implementar buklo? Nu, en Scratch vi povus hard kodo specifa nombro de ripetoj en la buklo tie. Kaj tio estas ĝuste kion ni povus fari en tiu versio de C, per kiu ni havas tn por buklo. Kaj por buklo tie tuj persisti, iom enigme, de la valoro 0 sur supren al sed malpli ol 10. Nun variabloj en Scratch. Vi eble ne havis okazo por uzi tiujn. Sed kio estas la punkto, ĝenerale, de variablo ni diru pasintsemajne? Kio estas tio? Publiko: Punktoj. DAVID J. Malan: Al punkto? Ho, punktoj. OK, konservanta trako de punktoj, ekzemple, en ludo. Aŭ pli ĝenerale faras kio kun la varia? Kio estas la utileco de ili? Publiko: Memoro. DAVID J. Malan: Jes, tia memoro. Ĝi estas por stoki ion. Kaj la speco de stulta vida mi uzis lasta fojo estis tiamaniere glason bovlo. Kaj se ni volis gardi io interne de variablo, Ekzemple ĝuste nun la valoro estas ses ĉar Estas ses ping pong pilkoj en ĉi tie. Estas nur ia stokado ujo kiu sub la kapuĉo implementa kun bitoj, _0s_ kaj _1s_, tamen komputilo okazas fari tion. Do en Scratch, se ni volas havi variablo, ni povas uzi oranĝkolora bloko kiel ĉi. Ni nomas tion nombrilo en ĉi tiu aparta kazo. Mi inicializado al 0. Kaj kion mi faru? Forever, diru nombrilo, kiu se vi ludas kun tiu en Scratch, vi nur vidi Scratch. La kato aŭ ajna kostumo vi surmetis li parolos la nombro en demando. Ŝanĝo nombrilo de 1 estas kiel pliigante per 1. Kaj tiel ĉi tio tuj kalkulo kio do kio? De 0 til malfinio, aŭ ĝis Scratch paŭzoj, aŭ ĝis vi speco de perdi intereson en rigardante kiom alta li povas fakte rakonti. Do kiom eble ni konverti tion al C? Ĝi tuj aspekti iom kamufla. Sed denove, se vi rigardas ĉiun de tiuj linioj individue ili speco de alineación ĝenerale. Do ŝajne int tuj havi iun specialan signifon en C. Ni vidos ke denove. Kiel flanken signifas entjero. Do ĝi nur signifas numeron. Do tio estas la tipo de vitra bovlo Mi volas, oni kiu povas stoki numerojn, Ne ping pong pilkojn. Kaj mi tuj uzos la egalsigno tie atribui ĝin valoron de 0. Do tio estas tute kiel aro vendotablo al 0, sed en C. Dume, dum vero, kiu estis ekvivalenta, kompreneble, por ĉiam, kvankam ĝi estas iom kamufla, kaj tiam ene de la frizita krampoj. Kaj vi povas pensi pri tiuj frizita krampoj, kiun vi povas tajpi vian klavaron, kiel vere estante kiel la kurbeco en tiuj flavaj buklo blokoj en Scratch. Ĝi ampleksas plurajn liniojn de kodo. Printf estas prenanta iom timigas nun ĉar mi vidi ne nur citas en krampoj. Sed kio alia estas nova sintakse en tiu ekzemplo? Tie estas procento d. Kaj tiam backslash n estas tie. Ni vidas, ke antaŭe, eĉ kvankam mi ne menciis ĝin. Tiam tie estas komo. Kaj tiam tie estas nombrilo. Sed ni vidos en nur momento, ke tio estas nur norma maniero diri pres "Dekuma nombro," citaĵo, unquote, iuj dekuma nombro. Sed mi tuj rakontos al vi poste kion tio dekuma nombro estas. Do la fakto ke ekzistas komo en tiu linio diro printf, signifas antaŭeniri kaj presita iuj dekuma nombro. Ah, kaj sur la vojo, la cifero estas ajn la valoron de ĉi tiu variablo estas. Kaj tiel fari tion pli klara, ni vidos ekzemplon antaŭ longe engaĝante ekzakte printf en la kunteksto de realaj C programoj. Nun nur envolver supren iuj de tiuj konstruoj. Buleaj esprimoj, eble vi ne havas okazo por uzi ĉi tiuj en via programo sed vi povus tre bone, speciale se uzante kondiĉoj. Kaj tial tiuj du ekzemploj de Skrapi signifi se x estas malpli ol y, aŭ se x estas malpli ol y kaj y estas malpli ol z, kiel povus oni tradukas tion? Nu, en C estas nur tuj aspekti ĉi. Iom kripta, pli krampoj, iu bizara ampersands, sed fundamente La ideoj estas tiel simpla kiel oni estas en la puzlo peco mondo. Ni simple kontrolanta se io Estas malpli ol io alia. Kiom proksimume kondiĉoj? En malmultaj vortoj en angla, kion faras tiu chunk de Scratch kodo cxu vi dirus? Publiko: Komparas du ciferoj. DAVID J. Malan: Komparas du nombroj, kaj se x estas malpli ol y ĝi diras tiel. Se x estas pli granda ol y ĝi diras tiel, alie se x egalas al y diras tiel. Nun kien x kaj y venas? Kiu scias. Ĉi chunk de Scratch kodo estas ekster kunteksto. Sed kion ni volas fari nun estas traduki tion por nur momento vidi. Do kiel vi akiras komfortan ĉi tiu semajno en Problemo Ara 0 ludante en tiu mondo maldekstre, realigi ke la ideoj ne estas ŝanĝanta tiu semajno aŭ apud aŭ trans. Ni simple tuj komenci skribi tion alimaniere kun niaj klavaro anstataŭ nia muso. Do se x estas malpli ol y, kaj ekzistas iuj krampoj tie, tiam tie estas kelkaj frizita krampoj denove al speco de encapsular ĝi ĝuste kiel la flava puzlo pecoj fari. Kaj mi tuj printf x Estas malpli ol y ks. Kio estas agrabla pri C, kiel vi povas vidi ĉi tie, estas ke vi ne havas tian nestumado, nestumado, nestumante tio nepre tuj puŝi vian kodon por la dekstra. Vi povas anstataŭ havi ĉion alineación nete ŝatas ĉi. Sed tio estas nur estetika detalo ni vidos denove antaŭ longe. Bone. Do kiu alportas nin reen al ĉi kamufla rigardis programon. Ni efektive skribi iun kodon. Nun kiel vi iri pri skribi kodon? Ĉiuj tiuj jaroj ke vi posedita Mac aŭ PC, labortablo aŭ portebla komputilo, vi fakte havis la kapablon komenci skribi programado kodo. Sed vi verŝajne mankas speciala tipo de programo. Vi certe povas skribi kodon. Sed vi ne povas nepre, el la skatolo, konverti ke fontkodo en celkodo, _0s_ kaj _1s_ sen kia sur via komputilo? Publiko: Compiler. DAVID J. Malan: Do kompililon, dekstre. Nun plejparto de vi probable ne posedas kompililo, neniam elŝutis kompililon. Sed vi vidos vi povas elŝuti ĝin kiel plej ajna alia peco de programaro. En la mondo de Mac VIN, vi povus elŝuti aŭ malŝarĝis jam iu nomita Xcode aŭ GCC aŭ tin. Se vi venas de la Windows mondo vi povus malŝarĝis Vida Studio, Vida Baza, medioj tiel. Ekzistas dekoj de kompililoj tiuj tagoj kiujn vi povus uzi. Sed la mallonga de ĉi tie estas ke ĝi estus doloro kaj, sincere, teknologia koŝmaro por centoj de personoj kun malsamaj komputilo agordoj por ĉiuj agordi siajn maŝinojn en ĝuste la sama maniero tiel ke ni povas ĉiuj esti sur la sama paĝo. Do kion ni, anstataŭe, do en CS50 estas ni donos al vi norma medio, Linuksa medio tio tuj rigardi iomete iu kiel ĉi tio. Vi vidos pli de tio en la Problemo Ara 1 especificación kiu iros enreta tiu vendredo nokte. Kaj kion tio signifas estas ke vi nun tuj povos elŝuti kaj instali programon nomata CS50 Appliance. Kaj vi tuj malŝarĝos kaj instali alian programon nomata oni hypervisor, kiu estas nur fancy vojon realigi tion. Ĉu vi posedas Mac aŭ PC aŭ Linuksa komputilo aŭ Solaris komputilo, aŭ kion ajn freneza mastruma sistemon vi uzas, vi tuj elŝuti programon nomata hypervisor tio tuj kuras la CS50 Appliance sur via komputilo negrave kion via mastruma sistemo estas. A hypervisor alivorte konvertas niaj aĵoj al ĉiu lingvo, ajn instrukciojn via propra komputilo komprenas. Do tiu estas layering. Kaj cetere, jen estas ia de temática en komputilo scienco, la konstruaĵo sur supro de aĵoj. Vi povus havi Windows. Vi povus havi Mac VIN. Sed ekde la venonta semajno vi tuj malŝarĝis libera peco de programaro nomata hypervisor. Vi tuj malŝarĝis peco programaro nomata CS50 Appliance. Tio tuj kuras en la hypervisor, kiuj tuj kuras en via komputilo. Kaj la fina rezulto estas ke ĉiuj el ni volas havas simplan fenestro ŝatas tion en via Mac aŭ PC kiu donas al ni la iluzion de ĉiu kurante la sama mastruma sistemo, sen iu ajn alia trafo en via komputilo. Kaj vi povas tutekrana kaj esence konduti kvazaux vi kuras kun mastruma sistemo nomita Linukso, kiu estas kion la CS50 Appliance estas bazita sur. Do ni vere uzas ĉi nun skribi programon. Vi povas skribi programon uzante Microsoft Word. Vi povas skribi programon uzante TextEdit, aŭ Notepad, aŭ WordPad, aŭ sufiĉe tre ajna vorto prilaborado programo vi iam uzis. Sed la realaĵo estas kiu ne devus uzi vere neniu el tiuj programoj. Vi certe ne devus uzi iu kiel Microsoft Word, kiu havas aŭdacan Alfrontante kaj kursivo kaj grandaj tiparoj kaj malgrandaj tiparoj, ĉar la komputilo ne zorgas pri iu ajn el tio. Ĉiuj komputilo tuj zorgas pri estas Angla kiel instrukcioj skribitaj en C. Do kion ni faros interne de la CS50 Appliance estas uzi programon libere disponeblaj, kaj ĝi estas pre-instalita en tiu aparato, nomita Gedit. Kaj Gedit estas nur súper simpla tekstoredaktilo kiel Mac VIN la TextEdit, kiel Windows Notepad ke tuj aspektas iom io tiamaniere. Do ni vere ne rigardi diapozitivojn de tiu. Sed ni vere iru en la medio mem. Mi tuj iros antaŭen kaj ensalutu, en tiu alia fenestro al mia CS50 Appliance, kion mi havas pre-instalita sur mia tekkomputilo tie. Rimarku ke, kiel Windows kaj Mac VIN, ĝi estos akiris iujn menuoj. Kiel Windows metas ĝin tie anstataŭe de Mac VIN, kiu metas ĝin tie. Sed la realaĵo estas kiu estas ĉiaj la sama. Kaj tie estas tuta faskon da programaro. Ekzistas Dropbox. Ekzistas tuta fasko da akcesoraj, grafika programoj kiuj ni uzi poste en la termino por problemo aroj. Ekzistas foliumilo konstruita en tia ke tio estas plena fledged komputilo ene de komputilo. Sed mi tuj klaku ĉi maldekstra blanka ikono tie, kiu estas la ikono por Gedit. Kaj tuj malfermu fenestron kiu havas tri paneloj al ĝi, maldekstra unu, pinta, kaj fundo unu. Nun estas en ĉi supre dekstre kiu Mi iras al efektive skribi iun kodon. Do ni faru ĉi ,. Mi tuj iras al Dosierhistorio, Konservi. Kaj eble vi neniam vidis tiu aparta fenestro antaŭe. Sed ĉi tio estas kiel Mac OS aŭ Vindozo. Estas nur fenestro kun ĉiuj dosierujoj ke mi havas interne de tiu komputilo. Kaj mi tuj savos kiel la dosiero hello.c. Kaj mi tuj iros antaŭeniris kaj klaku Save. Kaj nun rimarkas Mi havas langeto ĉe supro maldekstra nomita hello.c. Do probable bela familiara, eĉ se vi havas ne uzas ĉi aparta programo antaŭe. Kaj nun mi iras al entajpi tiujn sufiĉe kamufla sekvenco de ordonoj ke ni vidis antaŭ momento. Inkluzivi, norma I / O.h. Pli sur kiuj poste. Mez ĉefa malplenon, malfermita krispa streĉa, fermita frizita krampoj. Kaj tiam ene de tie Mi opinias estas kie ni havis "saluton mondo" punktokomo. Kaj nun savas. Do tiu estas programo skribita en C, skribita, do, en fontkodon. Sed mi ne povas kuri ĉi programo. Mi ia volas duobligi klaku sur ikono ie, sed neniu ikono ekzistas aliaj ol la fonta kodo dosiero. Kion pli, estas la procezo nun Mi bezonas kuri ĉi tiun dosieron per? Publiko: Compiler. DAVID J. Malan: Do kompililon. Do en malsamaj komputiloj tion fari en diversaj manieroj. Sed kion ni faris ĉi tie en la CS50 Appliance tio reprezentanto de kiel vi povus faru tion en multaj malsamaj sistemoj, Estas mi simple tuj kuri komando nomis konsisto. Kaj ŝminko estas laŭvorte tuj faros. Faru al mi programon. Do fari tuj kuri kompililon por mi. Kaj la nomo de la programo Mi volas fari estas saluton. Nun faru estas programo. Kaj fari estas inteligenta sufiĉe por rimarkas ke se mi diras ke saluton, ĝi tuj rigardi aŭtomate por dosiero nomata hello.c simple ĉar tio estas la vojo ĝi estas agordita. Do kiam mi nun batis Entajpu tie ĉi freneza kamufla linion ĝuste got ekzekutita. Kaj fidi min, antaŭ longa, ene malmultaj tagoj, vi komprenas, kion ĉiuj de tiu sensencaĵo rimedoj. Sed nuntempe, nur scias ke fari deĉenigis ekzekuto de tradukilo. En aliaj vortoj, ĝi trovis kompililon sur mia komputilo tio estas pre-instalita sur la CS50 Appliance ke ni transdonu al vi en Problemo Ara 1. Kaj tiam prenis hello.c kiel enigo kaj produktis ŝajne _0s_ Kaj _1s_ kiel eligo. Kaj defaŭlte kio faras estas ĝi ŝparas tiuj _0s_ kaj _1s_ en dosiero nomita saluton. Kaj tamen tiu sintakso tro multobligita esti nova al vi, simple dirante dot slash hello tuj estos la signifas per kiu mi kuros ĉi programo. Por nun kaj por almenaŭ paro de semajnoj, preskaŭ ĉiuj de la programoj ni skribas tuj estos en nigra kaj blanka teksto fenestroj. Neniu musoj, neniu musklako, sen fenestroj, neniu ikonoj. Ni tuj konservi ĝin simpla kaj centri en la suba ideoj komence antaŭ ol atingi ion alta nivelo, ekzemple, kiel la rompo el ludo kiu parolis proksimume en la unua prelego pasintsemajne. Do kiam mi batis Entajpu tie, estas ekvivalenta en teksto nur medio duobligi klaki ikonon nomita saluton. Kion vi atendas volo okazi kiam mi batis Entajpu do? Publikon: ĝi devos presi "saluton mondo". DAVID J. Malan: Ojala ĝi presos "saluton mondo". Kaj ĝi efektive faris. Nun ekzistas jam kelkaj kamufla sintakso tie. Ni malantaŭenigi por ĝuste momenton kaj vidi se ni Ne povas komenci infiriendo nur laboreti, klopodante kaj senfortigxon, pri kio okazas tie. Kio se mi liveras de la backslash n? Nun iuj el vi, kiuj estas planita antaŭ probable scias instantáneamente kion tio signifas. Sed por tiuj el vi, kiuj estas neniam planita antaŭ, almenaŭ pensas al vi mem kio okazas ŝanĝi kiam mi rerun tiun programon? Do mi tuj reiri malsupren al mia iom nigra kaj blanka fenestro, kiu Estas la fenestro en kiu Mi povas kompili ĉi. Mi iras recompilar saluton. Ni tuj vidos la sama kamufla sekvenco de ordonoj. Kaj Mi faros dot oblikvo saluton. Kaj nun iu, se vi volas, kiuj neniam planita antaŭ, kio povus esti malsama tiu tempo? Yeah. Publikon: ĝi ne haltos presi "saluton mondo". DAVID J. Malan: Ĝi okazas to-- bedaŭras? Publikon: ĝi ne ĉesos presi ĝin? DAVID J. Malan: Ĝi ne faros halti presi "saluton mondo". Do ne estas malbona ideo. Aliaj ideoj? Yeah. Publiko: Eraro mesaĝo? DAVID J. Malan: Eraro mesaĝon, OK, povas esti. Kion alian? Publikon: ĝi povus presi la krampo kun punktokomo tiel? DAVID J. Malan: Might presi la krampo kun punktokomo tiel. Do eble tio backslash do estas iuj ia terminous ke gravas. Ajna alia pensoj? Do ĉiuj bonaj ideoj. Kaj fakte, ĝi okazas esti erarmesaĝon. Tio estas probable la plej verŝajna esti la respondo ĝenerale por la venontaj semajnoj kiel ni lernas kodigi tie. Sed nun memoras ke komputiloj nur fari kion vi diros al ili fari. Multe kiel la ridinda arakido butero kaj ĵeleo ekzemplo. Niaj homaj komputiloj nur supozis faru kion vi sciigis ilin fari. Do en ĉi tiu kazo, se vi Ne diru al la komputilo movi ke palpebrumante kursoron al la sekva linio, ĝi ne faros tion. Do kiam mi kuros ĉi programo nun rimarkos la diferencon. Aspektas kiel cimon. Estas estetika cimon, eble. Sed kio estas malsama pri ĉi eligo kontre la lasta evidente? Yeah. Publiko: Ne faru novan linion. DAVID J. Malan: Ne faru novan linion. Nun tiuj el vi, kiuj havas eble faris retpaĝoj antaŭe, eble vi scias pri la BR etikedo aŭ paragrafo etikedo, tre simila en spirito. A retumilo ignoros vin ĝis Vi rakontos ĝin precize kion fari. Simile, estas lingvo kiel C nur faros kion vi diros al fari. Do la kialo ke ĉiuj tiuj ekzemploj, tiel malproksime, havi specon de hazarde havis ĉi backslash en tie, tiu estas la rimedoj per kiu vi esprimas vin kiel novan linion karaktero, por tiel diri. Kaj vi povas ia dankas, eble, ke tio aspektus speco de stulta Se nenio alia. Se mi volus nova linio, nur bati Eniru kaj tiam speco de butchering la kodo kiel tiu ne vere frotas al vi la ĝustan vojon. Kaj eĉ se vi ne vere gravas je ĉi tiu punkto, Vi rimarkos ke tio ne estas aparte vetas koderon. Kaj kion la mondo decidis jaroj estas ke kiam vi volas meti la kursoro sur nova linio eksplicite, Vi devas eksplicite diri nova linio, backslash n. Kaj tie estas iu alia simboloj tiel. Sed nuntempe ni nur enfokusigi backslash n. Nun ni faru la programo iom pli interesa. Mi tuj iros antaŭen kaj tiu tempo malfermi novan dosieron. Mi iras por savi tion kiel saluton-1.c. Kaj ĝuste por piedbatoj, mi tuj iri metis ĝin en mian Dropbox dosierujo. Kiel vi vidas en la CS50 dokumentado por la aparato, poste tiun semajnon por Problem Ŝanĝu 1, ni kuraĝigas vin uzi Dropbox aŭ iu ekvivalenta servo, ĉar tiam ĉiu el via kodo estas tuj estos asist aŭtomate. Kaj tiel tio estas kial mi havas malaperis en tiun dosierujon tie. Kaj nun mi iras al skribi iomete malsaman programon. Inkluzivi, norma I / O.h, int ĉefa malplenon. Kaj poste tien printf, saluton mondo, kio estas ekzakte la sama kiel antaŭe. Sed nun mi volas presi ion ke estas iom malsama. Mi volas presi, diri, "Saluton, David." Bone, do evidente, devus espereble esti la kazo ke se mi recompilar tiu programo, rerun ĝi, ĝi tuj diru "saluton, David." Sed kio se mi volas enkonduki tiu speco de variablo, la nocio de kontenero kiu tuj stoki D-al-v-i-d kaj ne malfacile kodo en mia programo. Nu kio se mi komencas fari ion similan? String s, do tiu estas variablo. Se vi volas cxeno, a.k.a. vorton aŭ frazon. Vico da signoj estas kion ni en programado nomas ŝnureto. Ni nur tuj genéricamente alvoko ĝi s, ĉar ĝi estas bela simpla nomo. Sed mi povus nomi ĝi nenion. Mi tuj diros kordo s egaluloj citaĵo unquote, "Davido", punktokomo. Kaj nun mi volas enigi D-al-v-i-d al kio mi presado. Kaj antaŭ ol ni vidis teaser sur la ekrano de iuj specialaj sintakso ke ni permesis al anstataŭanto en valoro. Kio estis la speciala simbolo kelkaj diapozitivoj monato? Do procento. Siatempe estis procento d por dekuma nombro. Tio vere ne ŝajnas adekvata tie. Rezultas tie estas alia procento simbolo, kio procento s, kiu staras por lokokupilon por ŝnuro. Do nun, tre simple, mi tuj iros fari saluton-1, ĉar tiu dosiero nomiĝas hello-1.c kaj batis Enter. Kaj mi ŝraŭbita supren. Kio okazas? Nu, jen kie ni devas komenci estimi ke ni estas en tiu komando linio medio, tiu Nur teksto medio. Mankas musklako sur ikonoj kiel dosierujoj nun. Kaj pensi reen antaŭ momento. En kio dosierujo faris mi diras Mi gardas mian kodon? Do la Demetujo dosierujo. Povus esti nomata nenion. Sed pasas al nomi Dropbox. Do mi iel bezonas duobligi klaki sur ke Dropbox dosierujon por ricevi en ĝin kaj akiri ĉe Mian kodo nomita hello-1.c. Fakte, mi iros antaŭen kaj minimumigi fenestron por nur momento. Nur kiel Windows kaj Mac VIN, estas dosierujoj en Linukso. Esas dosierujoj en la CS50 Appliance. Estas nur ĝuste nun ni internigante nin al ĉi teksto medio. Sed se mi duobligi klaki en Dropbox, rimarki tie estas la dosiero kiun mi volas kompili. Sed mi bezonas tiun nigran kaj blankan fina fenestro, por tiel diri. Sed mi bezonas, sekve, movi en tiu dosierujo aŭ dosierujo. Do iomete arcane, sed Vi alkutimiĝos al tio tro. En la mondo de Linukso, kiu denove estas la mastruma Sistemo ni kuras ene de la CS50 Appliance, ekzistas komando nomita KD. Kio signifas ke mi povas fari KD, spaco, Dropbox. KD, ŝanĝo dosierujo. Ĝuste. Reen en la tago, kiam oni estis elpensi komputiloj kaj mastrumaj sistemoj kiel tiu, ili volis tajpi la malplej pulsbatoj eblas. Do la plej facila maniero por diri ŝanĝo dosierujo estis KD. Do se mi batis KD, spaco Dropbox, rimarki kio ŝanĝiĝis tie. Ene de krampoj La aparato estas afabla de humoring mi kaj memorigi min kie mi estas. Do la malferma dosierujo estas Dropbox. Se mi nun tajpas ls por lerta, denove konciza, ĉar la homo ne volas tajpi reen en la tago l-i-s-t. Do ili anstataŭe faris ls. Eniri. Rimarku ke mi vidas du aĵojn, saluton-1.c, kaj tiam ĉi kripta afero, fonto 1m. Tio estas nur mia maniero diri fontkodon por semajno 1 lundo. Tio estas la dosierujo mi elŝutis el CS50 la retejo kiun mi faris pli frue hodiaŭ kaj simple metu ĝin en la aparato anticipe. Sed nuntempe la sola afero ni zorgas pri faras ĉi programo. Do kiam mi tajpas fari saluton-1, Enter. Damn ĝin. Io misokazis. Do ni turmentus tiu aparte. Kaj bedaŭrinde tio estas kie aferoj preni iom estresante unue, almenaŭ se vi havas neniam planita antaŭe. Mia dio. Mi verkis du linio programo kaj Mi havas kvar liniojn de eraroj. Do kio okazas tie. Unuavice ĉiam rulumi reen supren kaj trovu la unuan erarmesaĝon, ĉar ofte tradukiloj simple akiri konfuzita per kio vi kaj mi. Kompililoj estas bela muta. Ili estos nur fari kion Vi rakontos ilin fari. Kaj se vi konfuzas ilin, ili estas nur tuj speco de ĵeti siajn manojn kaj eble ĵeti pli erarmesaĝojn ol estas reale grava. Do ni rigardu la unua. Super kamufla unue. Sed rimarki, jen la nomo de la dosiero, en kiu mi ŝraŭbita supren ŝajne. Dupunkto 5, dupunkto 5 simple signifas la linio 5, je la kvina karaktero. Do kvina kolumno de karakteroj, se vi volas, eraro. Uzo de nedeklarita ensalutilo kordo. Ĉu vi volas diri norma n? Ne, mi volis diri kordo. Kaj tiam ĝi estas speco de kopiado kaj interglui kion mi tajpis vere eltiros mian atenton kie mi ŝraŭbita supren. Do ial C, aŭ almenaŭ la tradukilo ne komprenas la vorton ŝnuro. Kaj tio estas ĉar ni faris ĝin. Do kordo ne ekzistas en C. Kio CS50 faras, por la unuaj malmultaj semajnoj nur de la klaso, Estas ni havigi iujn trejnado radoj, por tiel diri. Kaj ni metas tiujn trejnado radoj ene de speciala dosiero nomata CS50.h. Do tio estas la dua el du dosiero nomoj kiuj ŝajne finiĝi dot h. Ni malantaŭenigi. Printf estas deklaro aŭ funkcio kiu ŝajne presu ion al la ekrano. Sed vi ne vidos min, implementar printf, dekstre. Iu jarojn implementado printf. En kio dosieron vi Wager li aŭ ŝi metis la efektivigo por printf, la kodo por printf? En dosiero nomata norma I / O.h. Fakte, ĝi estas verŝajne en du dosierojn, standard I / O.h, kio signifas kaplinion dosiero, kaj norma I / O.c, kio signifas C fontkodon. Do li aŭ ŝi antaŭ kelkaj jaroj plopped la kodo kiun ili skribis en tiun dosieron tiel ke homoj kiel ni jarojn poste povas inkluzivi ĝin, por tiel diri, en nia propra programoj. Kaj efektive, jen kion la funto signo sekvata de la vorto inkluzivas faras. Ĝi aspektas sur la loka malmola disko, Trovas la dosiero nomata norma I / O.h, kaj tiam efike kopioj kaj pastoj gxin interne de mia propra dosiero. Do nun mia programo scias kiom presi al la ekrano. Do per tiu logiko, kie Estas kordo difinita? Publiko: CS50.h. DAVID J. Malan: CS50.h. Kaj efektive, jen kion ni, la kerno bastonon faris. Ni elpensis kelkajn datumtipoj, tiel diri, kiel kordo, krom tiuj kiujn vi akiri senpage, kiel int. Kaj ni vidos aliaj kiel signo por karaktero kaj kelkaj pli. Ene de CS50.h ŝajne estas almenaŭ iuj mencio de kordo. Do lasu min iri antaŭen kaj rerun make hello-1. Mi zomi denove kaj transiras la fingrojn. Nun farinte unu ŝanĝi Mi riparis plej aferoj. Sed malbenita ĝin. Pli cent da datumoj argumentoj. Kion mi faru malĝusta tiu tempo? Do estas ankoraŭ bela kamufla. Sed tiu eraro estas en linio 7 kaj karaktero 21. Do ni iru rigardi tien. Ĝi estas iom subtila. Sed se vi pensas pri kion la fundamentaj ideoj jen, eble ni povas turmentus tiu aparte. Do printf estas la nomo de la funkcio. Parentezoj, tiel malproksima, estas same kiel kion ni metis ĉirkaŭ La aĵoj ni pasante kiel enigoj al funkcio. Bone, nur arbitra homa konvencio. Uzu krampoj. Ene de tiuj krampoj ni estis metante citiloj, kaj do kiel cxeno "saluton mondo". Sed en tiu frua ekzemplo tre mallonge faris ni rigardas kun Scratch. Kaj ni havis la procento d, kion alian estis ene de tiuj krampoj ke mi vokis parole? Yeah. Publiko: Do ​​estas kion vi prenas [Inaudible] de ene [inaudible] kion tiuj [inaudible]? DAVID J. Malan: Ĝuste. Do ni havis la procento d. Sed tiam ni devis fermi citaĵo, komo, vendotablo. Ĝuste. Ni specifita kion ni volas fari kiel lokokupilon. Do kion mi faros ĉi tie komo Kion vi volas, ke mi metis? Publiko: S. DAVID J. Malan: S, ĉar s en tiu kazo estas la nomo de la stokado ujo. Ĝi estas la nomo de tiu glaso bovlo. Dum antaŭe estis nombrilo en tiu simpla Scratch ekzemplo ni rigardis. Do nun farinte du ŝanĝoj, lasu min zomi kaj provi ankoraŭfoje kompili tiun programon. Nun mi vidas ke kamufla lineo. Sed tio fakte nomo de la tradukilo. Tin estas la nomo de la tradukilo. Faru estas nur ŝparas min la kapdoloro de iam tajpado tiu longa freneza komando ekstere. Do nun se mi dot slash hello-1, Mi devas vidi "saluton, David." Bela underwhelming, kvankam, dekstra? Ni povis esti farita tio multe pli simple sen paroli pri variabloj kaj CS50.h kaj ĉiuj tion. Do ni faru ĝin iom pli interesa. Krom CS50.h, havi aĵojn kiel kordo deklaris, la CS50 biblioteko ankaŭ havas kelkajn funkciojn. Do ĝuste kiel antaŭ jaroj, iu skribis printf kaj metis ĝin en norma I / O.h kaj iu alia dosiero. Ni, la CS50 bastonon skribis funkcio nomata GetChar, GetDouble, GetFloat, GetInt, GetLongLong, GetString, kaj ni metu tiujn ene dosieron nomata CS50.h kaj CS50.c. Kaj ni metis ilin enen de la CS50 Appliance. Kaj homoj povas ankaŭ elŝuti ilin enreta se deziras meti ilin sur sian propraj komputiloj tiel. Kiu estas diri ke ni kreis funkcioj kiuj ricevas enigon el la uzanto. Mi ne scias kion ĉiuj de tiuj datumtipoj estas. GetInt estas speco de simpla, kiel ricevi entjero iel de la uzanto. Kaj GetString estas verŝajne kiel get vorto aux kondamno de la uzanto. Do ni enfokusigi tion. Kaj mi tuj iros reen en la aparaton kaj mi tuj iros antaŭen kaj savi la dosiero kiel, ni vokas ĝi hello-2.c kiel mia dua versio. Kaj ni faru kelkajn ŝanĝojn. Tiu tempo anstataŭ hard kodigo David, faras nekredeble konsekvenca sed underwhelming programo, kio se mi anstataŭ fari GetString? Nun rimarki GetString havas malferman parentezo, fermita parentezo, ĉar ĝi ne bezonas neniun enigaĵon. Ĝi simple tuj iros akiri ĉenon de la uzanto. Kaj nun unu vorton en alia sintakso. Punktokomojn nur fini linion de kodo. Vi ne bezonas ilin ĉie. Sed tio nur signifas min farita kun ĉi tiu linio de kodo. Lasu min movi al alia deklaro aŭ funkcio. String deklaras variablon. Kordo estas kiel diri donu al mi bovlon, bonvolu. Kaj lasu min metis ĉenon en ĝi. Kaj nun la egala signo. Kio estas la egalsigno esence ekvivalenta al? Publiko: Asigni. DAVID J. Malan: Jes, atribuante valoron. Do se mi, ekzemple, alvoko tiu funkcio GetString, kaj ni vidos en momento tio tuj instigas la uzanton por ŝnuro. Ĉi tio estas kiel lasi min tiam skribi D-al-v-i-d sur peco de papero. Kaj kiam mi diras kordo s egalas GetString, egala vere ne signifas egala en C programado. Ĝi signifas atribui la dekstra flanko al la maldekstra flanko. Do mi metis ĉenon. Kaj la egalsigno signifas meti ŝin en la stokado ujo nomata s. Kaj tiam pasas ĉi ekstere al printf por fakte faras lia afero. Do la fina rezulto tiam tuj rigardi iom malsama. Ni kreos hello-2. Ĉu povus funkcii. Vi sekvante kune. Faru hello-2 funkciis. Dot slash hello-2, Enter. Mi ŝajnas havi senfinan buklo aŭ io. Nenio okazas. Kial? Publiko: Ĝi faras senfinan banton. DAVID J. Malan: ĝi estas malfinia ciklo. Ĝi estas speco de atendu por mi efektive provizas ĝin per kelkaj enigo. Do lasu min antaŭeniri kaj tajpu en David, kaj batis Enter. Kaj nun diras "saluton, David." Se mi kuri denove. Ni entajpu Rob, "saluton, Rob." Nun tiu estas la plej malbona uzantinterfaco eterne. La uzanto estas ŝajne supozita scii kion fari. Sed ne gravas. Uzante tiujn sama konstruaĵo blokoj same kiel en Scratch, ni povas solvi tiun problemon kaj diru iu kiel via nomo bonvolu, dupunkto, spaco, fermita citaĵo, proksima parentezo, punktokomo. Tiel multa denove silliness kun la sintakso. Sed rimarki Mi ĵus aldonis puzlo peco super ĉi tiu kaj super tiu ĉi. Do nun se mi rerun ĉi, saluton-2, Enter. Atendu minuton. Kio okazas? Tio ne kondutas ajn malsame. Yeah. Publiko: Vi ne kuris fari denove. DAVID J. Malan: Mi ne kuri fari denove, dekstre. Do mi ŝanĝis mian fontkodon. Sed denove, ne estas tiu fluo. Fontkodo per la tradukilo donas vi novan celkodo aŭ _0s_ kaj _1s_. Do mi bezonas reale rerun make hello-2 Entajpu. OK, iu ŝajnas esti okazinta. Dot slash hello-2. Via nomo bonvolu. Kaj esti klara nun, kial la kursoron sur la sama linio? Ĝuste. Mi ne metis la backslash n supren tie en mia kodo. Do nun mi povas skribi iu kiel Daven, Enter. Mi povas kuri ĝin denove kaj tajpu iu kiel Gabe, Enter, kaj ni preni malsaman programon denove kaj denove kaj denove. Nun finfine ni tuj bezonas uzi kelkajn malsamajn kapablojn. Ni bezonas enkonduki finfine iuj kondiĉojn por fari tion kondiĉe. Eble loops do ni povas fari aferojn denove kaj denove. Eble estus bela se ni povus apliki niajn proprajn funkciojn, kiel ni povus apliki niajn proprajn printf aŭ nia propra versio de GetString kaj GetFlow, ĉar finfine eĉ uzante ĉi komandlinio medio ni povas fari eĉ la plej vide interesa aferoj. Efektive en konkludo lasu min fari tion. Mi tuj iros antaŭen kaj fermi tiujn fenestrojn kaj malfermi tiu piktogramo tie, kio estas nur granda versio de tiu inkrustita fina fenestro. Do Gedit havas ne nur la loko por Mia kodo, sed ankaŭ konstruita en fina fenestro, la nigra kaj blanka fenestro kie mi povas kuri ordonas. Mi ĵus okazis malfermi pli grandan version de tiu. Kaj nun mi iros en la dosierujo ke mi jam meti en antaŭas sur la kurso de afiŝinto. Kaj mi tuj iros antaŭen kaj malfermi dosieron nomatan thadgavin.c, kiu estis skribita de iu alia. Kaj se ni rigardas tiun, tiu ne estas la tipo de kodo ni skribos ekde La celo de ĉi tiu kodo estis skribi la plej belaj rigardas kodo kiu li aŭ ŝi povus, senkonsidere ĉu aŭ ne alia homo povus iam kompreni tiun kodon. Ja, ĉiu jaro estas kio estas nomata obfuscated C konkurson, kiu Estas por reala geeks kiu skribas kodo, ke neniu alia povas legi, sed kiu faras ion aŭ vere simplaj aŭ vere mirinda. Kaj ni pensis ke ni konkludi kun tiu rigardo en iu kiu estas sufiĉe miriga eble vi vidis iam antaŭe. Sed ni finos pri tiu noto, skalara oblikvo, thadgavin. Ĉi tiam estas kio atendas. Estas tio por CS50. Ni vidos vin merkredon. [MUZIKO Ludante]