[MUZIKO Ludante] DAVID Malan: Bone tiu estas CS50 kaj tio estas la fino de semajno unu. Do mi ŝatus enkonduki mia eksa konsilita, Andel Duff, kiu ne nur fabrikas iPhone 5 staras, tiel kiel tiu pupitro, li ankaux faras aŭtojn. Ansel Duff: Kiel fartas, ĉiuj? Mi nur volas diri al vi iom iom pri Formulo SAE, el kiu mi estas la kapitano. Estas MIT teamo. Mi nur volas diri al vi infanoj iomete pri ĝi kaj espereble generi iun intereson. Do lasu min nur forkurigas paro aferojn pri nia teamo. Do ni estas tute studento kuras, vagas cxiuj de la membroj dezajno, simuli, testo kaj Fabrikejo subsistemo de la aŭto. Ni havas niajn proprajn maŝino vendejo kaj garaĝoj kaj N52-- aŭ sorry, N51-- kiu estas la sama konstruaĵo kiel la MIT Science Museum. Kaj ni estas la popolo kiuj forpelos la aŭto. Ekzistas nacia konkurado en la komenco de la somero, kaj tiam estas pli malgranda pafado konkuroj tra la jaro. Kaj tiam ni faras pelilo trejnado tagojn por akiri novajn membrojn konatiĝis. Niaj muntaĵo tagoj estas je Sabatoj de 11 am ĝis 8 am. Lunĉo kaj vespermanĝo estas prizorgi de, de Bertucci aj kaj Beantown respektive. Ni havas semajnan kunvenon kaj seminario, kiu estas supozita kredito. Kio estas nova ekde ĉi semestro, kaj ankaŭ estos por la proksima duonjaro, tial vi povas transiri-reg por tio. Kaj tiam ni havas dezajno, butiko, kaj CAD tagojn dum la semajno, dum membroj volas sendepende CAD partojn, ordono stock ktp. Do por elektra inĝenierio ĉe la teamo ni havos niajn tirado, alta tensio sistemon, kiu kuras al nominalaj 300 voltoj, kio inkluzivas motorojn, la motoro controladores, kaj pilo packs. Tiam ni havas malaltan tensio sistemo, kiu kuras je 12 voltoj, kio inkluzivas kontroloj, POVAS nodoj, la cerbo skatolon kaj la panelo. Koncerne CS iras, ni faru havas retejon bontenado ke ni bezonas fari por eventoj, membraro ŝanĝoj, novaj bildoj kaj PR materialo. Kaj tiam ni havas kodon kiu kontrolas la aŭto por nia kontrolo de tirado, lanĉo kontrolo, haltostreko kontrolo, torque vectoring, kaj regenera bremsita sistemoj, kiuj kuri tipe en MATLAB, Simulink kaj LabVIEW. Rakontu vi iomete pri la aŭto. Do temas pri 500 funtoj. Estas reguloj limigita al 85 kilovatoj. Ĝi havas 2 EMRAX 207 motoroj en la dorso, unu por ĉiu rado trasera. Ĝi havas kutimon konstruita pilo packs el Prismaj A123 sako ĉeloj, totalizando 300 voltoj kaj 5.6 kilovato horoj. Kaj estas rekta disko kun oni 2,64 por 1 disko rilatumo. Jen kelkaj bildoj ni prenis ĝin je konkurado. Jen la dorso, nazon konuso, kaj jen la motoroj, tiuj grandaj nigraj diskoj sub la et mens manus. Jen lumbilda ke mi tiris el niaj konkurado skemo. Kaj tio estas nur komparante nia aŭto al kelkaj komerce havebla aŭtojn, kiel la KTM XBOW, Ariel Atom kaj Caterha M 7-280. Se vi estas familiara kun prezo, povo tiri pezon dolaroj por ĉevaloj, dolarojn po paro, kaj nia aŭto blovas cxiujn el la akvo. Se vi havas demandojn, jot malsupren tiu retpoŝtadreso. Pafu ni retmesaĝon ĉe fsae@mit.edu. Ni estas feliĉaj por paroli pri io vi ŝatus. Harvard studentoj estas afabla de la minoritato en la teamo. Se vi havas ajnajn demandojn pri ke bonvolu fari mortpafi nin retpoŝto, feliĉa paroli kaj mi tuj por estri reen al David. Dankon. Mi dankos, knaboj. [Aplaŭdo] DAVID Malan: Ansel pasigis la someron laborante kun ni ĉi tie sur campus en CS50 tiu somero. Kaj krom labori en aĵoj kiel la duuma bulboj, Li vere vere malfermis niajn eyes-- kaj mino particular-- al kio vere la komunaĵo de ne de aparataro kaj programaro povas esti. Fakte amaso de aĵoj simple turneis vin tra estas finfine kreita unue en programaro, kaj tiam finfine elpensitaj en la reala mondo en aparataro. Do se vi estas interesita en esplori ke komunaĵo, eble levu tiu grupo. Nun dume, tiuj de vi kiuj estas fanoj de la teknologio, kaj Apple produktoj aparta scias ke estis paro de anoncoj hieraŭ. Sed ni pensis, ke ni volas montri vi kiu eliris kelkajn tagojn antaŭ ke eble vi ne vidis. Jørgen EGHAMMER: Vi scias, unufoje en momenton ion venas kune ke ŝanĝu la vojon ni vivas. Artefakto tiel simpla kaj intuicia uzante sentas preskaŭ familiara. Introducing 2015 IKEA katalogo. Ne cifereca libro aŭ e-libro, estas libro-libro. La unua afero noti estas kabloj, eĉ potenco kablo. La 2015 IKEA katalogo venas plene ŝarĝita, kaj la kuirilaro estas eterna. La interfaco estas 7,5 por 8 coloj, sed povas etendi al 15 por 8 coloj. La navigado estas bazita sur táctil kontakto teknologio kiu povas vere senti. Enhavo venas preinstalado tra 328 alta difino paĝoj de inspiri hejmo furnishing ideojn. Komenci foliumantaj, simple tuŝi kaj trenas. Dekstra al maldekstra movi antauxen, maldekstre dekstren retroiri. Rimarkos ion alian? Tio pravas. Neniu lag. Ĉiu kristalo klara paĝo ŝarĝojn instantáneamente, negrave kiom rapide vi rulumu. Se vi volas ekhavi superrigardon, nur teni ĝin en la palmo de via mano, kaj uzante nur via dikfingro, rapido foliumi la enhavo. Se vi trovos ion vi volas ŝpari por poste, vi povas simple meti legosignon ĝin. Kaj eĉ se vi fermas la apliko, Vi povas facile trovi la legosigna denove. Mirinda. [Ridado] [Aplaŭdo] Do kiu alportas al ni la finon de semajno unu. Kelkaj anoncoj nun. Do Sekciigo nun en progreso. Iru al tiu URL tie iam inter nun kaj vendredo tagmeze por vere specifi se vi estas inter tiuj malpli komfortaj, pli komforta, aŭ ie en inter. Tio estas tipe unu el tiuj aĵoj kiujn vi ĵus speco de scii. Kaj fakte tiuj el vi, kiuj estas malpli komforta verŝajne scias tiel, tiuj de vi kiu estas pli komforta scias tiel, kaj denove se vi ne tute certas kion de tiuj siteloj vi falos en vi verŝajne ie en inter. Sed ripozo certigita povas interŝanĝi post kelkaj semajnoj se bezono esti. Dume, por la venonta semajno ni ne komencos sekciojn per, sed super sekcioj, kiuj estas malferma al ĉiuj studentoj. Ĉi veni dimanĉon ĉe situon anoncita je la paso retejo ni havos unu por tiuj malpli komfortaj, tiel kiel por tiuj pli komforta. Kaj tiuj ie en inter povas elekti kiu el tiuj du, aŭ ambaŭ se vi ŝatus, sidi-en sur. Kaj la fokuso de tiuj Estos fine sur C, kiun ni daŭrigos nian konversacio de hodiaŭ. Problemo starigis 0 dume estas espereble en viajn manojn. Oficiale pro morgaŭ Ĵaŭdo tagmeze. Se vi Cash en unu de via 5 malfrue tagoj, kiu alportus lin ĝis vendredo tagmeze. Problemo starigis 1 dume estos eldonita en la paso de afiŝinto. Kaj tio estos nia unua incursión kiel klaso en C. Kaj tiu problemo aro specifo irados vin tra multe de la mekaniko de kio Ni komencis paroli pri lunde, kaj ni daŭrigos parolas hodiaŭ. C, Linukso, la CS50 aparato, ĉiuj kiuj Mi atendos vin en la specifo. Oficejo horoj dume estas en progreso, en la pregrado manĝejo. Estrus al tiu URL tie por vidi la plani por ĉi tiu nokto kaj morgaŭ Se vi ŝatus partopreni. Demandojn dume, tiel ke vi havi ŝancojn por demandi demandojn asíncronamente, 24/7, realigi vi ne limigitaj sekcioj kaj oficejo horoj, sed prefere tiu ilo tie, CS50 Diskuti ĉe tiu URL Estos la kurso enreta bulteno tabulo programaro, per kiu Vi povas fari demandojn de samklasanoj kaj ankaux bastono. Do memoru, ke rimedo tiel. Dume tradicio komenciĝas ĉi vendredo. Kiel vi povas esti duonvidis el lasta merkreda teaser video, ni havas tradicion plej ĉiu vendredo dum termino preni iun 50 studentoj kaj stabo loka restoracio nomata Fajro kaj Ice, en kiu ni tipe kune iuj lernantoj aŭ amikoj de industrio ĝenerale aspiras fari granda klaso sentas malgrandaj. Do estas tute hazarda tagmanĝo. Faskon de ni, la ŝablono speciale, ludos muzikajn seĝoj kaj babili kun studentoj pri 50, vivo ekstere de 50, vivo en la estonteco, la reala mondo, Mi parolas pri laboro ŝancojn kun amikoj en industrio. Do se vi ŝatus aliĝi nin tiu vendredo, estras ĉi URL tie. Spaco estas limigita, sed ni faros tion recurringly tuta termino. Estras tie cs50.harvard.edu/rsvp. Kaj se vi ne metas en tiu tempo, ne maltrankviliĝu. Ni faru ĝin denove en la venontaj semajnoj tiel. Do tiu estas la bildo Ni pentris pasintsemajne, kaj vi probable estis dabbling en tiom. Sed ni provu konekti tiu nun kion ni faros hodiaŭ kaj plue. Ĉu mi havas unu vola? Bone, aŭ pluraj. Kiom proksimume tie sur la Fine, en la blua ĉemizo. Venu supren, kio estas via nomo? Alana: Alana. DAVID Malan: Alana. Do Alana, por simple moment-- agrable renkonti you-- tuj ludos la rolon de tiu funkcio ĉi tie. La purpura bloko ni nomita tiel malproksime funkcio. Do kion mi tuj iros antaŭen tie kaj proponi Alana Estas iom nomon etikedo, por fari certe kio rolon vi ludas. Tiel vi estos diru bloko. Se vi deziras iri antaŭen kaj metis tiun sur. Kaj ni tuj teni ĉi súper simpla. Se la celo en mano estas simple nun implementar kun Alana, tiu tn diru bloko, jen kiel tuj funkcios. Mi have-- ni nomas ĝin argumento aŭ parametro, ĝi estas vere nur malplenan paperfolion. Kaj estas blankaj al speco de esti rememorado el la blanka skatolo, en kiun vi povas skribi vortojn. Dume mi tuj iros tien. Mi tuj iros antaŭen kaj skribi H-E-L-L-O komo mondo. Kaj nun mi, kiel diras la programisto, ĉu ne vere scias kiel diri ion. Mi povas veni supren kun la vortoj: sed mi ne nepre scias kiel esprimi min parole nek sur la ekrano. Kaj kion mi tuj fari estas preni ĉi tiun pecon de funcionalidad, kies input-- aŭ argumento, kiel ni nomas ĝin, Mi skribis en ĉi tiu peco de paper-- kaj mi tuj subcontratar ĝin. Kaj efektive tio estas la rolo, kiun funkcioj en programlingvo povas ludi. Io kiel la vorton bloko povas outsourced al iu kiu vere scias kion ŝi aŭ li parolas. Do se vi Transpaŝi tie dum nur momento, Mi tuj pasos tiu eniro al Alana, kaj petas, ke vi diras tion enigo. Alana: Saluton, mondo. DAVID Malan: Estas tio. Por ke tie estas funkcio. Nun ni povas preni iom pli, Ni povas preni paŝon antaŭen tie. Ĉar tio estis klare underwhelming. Do ni nun konverti tion al iu iom pli kompleksa. Tiel ĉi sendube estas nia C versio. Do nun se vi volas preni tiun unu malproksime, tiu nomo etikedo for, kaj ni havas vi surmetis novan nomon. Sed fundamente vi estas ludis la saman rolon, tio tiel nur rezultas nomi printf nun. La historio estas, kompreneble, tuj be-- probable same underwhelming-- estas tuj estos la sekva. Vi estas nun la funkcio printf. Mi estas la llamador aux programisto, kiu volas stari sur la ŝultroj de homoj en la pasinteco kiel vi, kiuj jam eltrovis kiel por fakte skribi ion malsupren. Kaj tiu fojo, anstataŭ diri ni efektive uzi nian ekrano super tie. Do se vi ŝatus paŝo tien, mi tuj pasi denove ĉi tiel enigo al mia printf amiko. Se vi povus iri antaŭen kaj presi ke sur la ekrano, simple per desegnaĵo kun via Fingro sur la nigra ekrano. Bonega. Bone, do multaj ĉesigita por kiel kiu tuj ludos ekstere. Do nun ni prenu tion unu fina Mello, se ni povus, kiel sekvas. Do tiu estas C programon kiel ni diris lastan fojon. Kaj tio nur faras kion vi faris lin presas al la ekrano, saluton, mondo. Kvankam ekzistas klare multe de distrante stuff tie supre. Sed ni prenu tion supren muesca kaj enkonduki ĉi versio, kiun rememoran Estis la tria versio, kiu ni finis kun lasta tempo. Kaj nun ekzistas klare du uzojn de printf. Ekzistas 2 alvokoj al Alana en tiu kazo por printf, sed estas ankaŭ alvoko al alia funkcio. Kio estas tiu funkcio klare? Getstring. Ni akiros pli vola? OK, venu supren. Kio estas via nomo? KSAVERO: Ksavero. DAVID Malan: Ksavero, venu supren. Do Ksavero rolo estas papereton. Kiun mi tuj vokos genéricamente s. Nun tiu estas ŝanĝiĝema, estas de tipo kordoj, kiel implicita per tiu dua linio en la mezo tie. Kaj mi ŝatus ke vi iru min ĉenon. Specife kapo malsupren al la orkestro sekcio kaj min la nomon de iu, kaj revenu kun ŝanĝiĝema enhavas tiun valoron. Ĝi povas esti iu ajn vi volas. Ĉi tie ni iru. Bone, Ksavero estas notante la nomo. Bone. Ni povas ĉiuj verŝajne diveni kiom tio tuj ludi ekstere. Ni eble belaboring la punkto de kio funkcio estas faranta, sed tamen dankas vin tre multe. Do Ksavero revenis ĉi kordo tie, kiuj, ne tute vidas, Jonatan estas la kordo ke ni alvenas. Do, kion mi fakte tuj havigi al Alana kvankam Estas io iom malsama. Ĉar en ĉi tiu versio de la programo, unue ekzistas deklari vian nomon. Do la unua argumento Mi bezonas provizi Alana kun tiu tuj estos laŭvorte deklari vian nomon. Bone, tiel simpla Mi transdonos al vi. Kaj kiel mi redaktas la sekva argumento, se vi deziras antaŭeniri kaj skribos ĉi sur la tabulo, ni iru antaŭen kaj fari la fina ekzemplo tie fari purigi kio finfine alvenis al okazi. Do aserti vian nomon, skribi ĝin al la supro Se vi ne gravas, nur tial ke Ni havas lokon por dua linio. Ĉar la lasta afero mi iros nun provizas vin per ne estas unu, sed du pecoj de papero. Bone. H-E-L-L-O komo kaj tiam malplenan linion. Do kion mi volis transdoni Alana nun Estas io iom malsama. Ne nur estas ĝi ricevas tion, kie plenigi la malplenan reprezentas ke percent-- kio estis la lokokupilon ni uzis? Yeah, do procento s. Dume mi tuj pasos sxi en dua argumento, kiu Estas precize kion Ksavero ekstraktita el Jonatan. Do mi donos al vi tiujn du. Se vi ŝatus, antaŭeniri kaj printi tiun efekton. Kio finfine okazis nun estas, Alana denove ludas la rolon de printf. Ksavero ludis la rolo de GetString. Tial estos via memoro. Kaj finfine kio okazas, malgraŭ ĉi hello-- Yep antaŭeniri kaj komo. Alana: Ĉu mi ricevas tio ankoraux aux ne? DAVID Malan: Jes, vi ricevis ilin ambaŭ samtempe. Do la ideo estas ke vi Nun povas klaki la paĝo manipuli la dua de tiuj du eniroj. Do tio estas nur al martelo domo la noti ke dum Alana ekzekutita tiu verda linio tie, kaj poste Ksavero faris por ni kaj revenu al mi ion Ni vokos s, sed vere ĝuste tiu peco de papero de lia propra. Kaj nun Alana faris ĉi tria linio. Kaj eĉ se ĉio ĉi aspektas tiel nekredeble kamufla eble unuavide, ĝi vere estas tiel simpla kiel tio. Pasante enigoj ĉirkaŭe, akirante eliroj, ĉu esti fizike transdonitaj reen ion, aŭ vidi kromefikon ŝatas ĉi. Io vide skribita en la ekrano. Do ni iru antaŭen kaj danki Alana kaj Ksavero, kiu estis ĉi tie, por kunigi nin tie. [Aplaŭdo] Do nun ni prenu por koncedis kiom simpla ĉiuj kiuj povus esti. Kaj ni procedi al reale fari ion realan kodon. Do sur la ekrano tie estas ekrankopio de la tiel-nomata CS50 aparaton. Kaj se vi devis je, kiel 2:00 am merkrede posttagmeze, klarigi al iuj amikon kion la CS50 aparaton estas, kiel vi difinas en frazo? Iu frazo? Yeah? Student: Estas kiel programon kiu faras ĉies komputilo kuri kun la sama sistemo. DAVID Malan: Bone! Ĝi estas programo kiu ebligas ĉies komputilo kuri kun la sama sistemo. Ĝi estas speco de via propra Kopio de mastruma sistemo kiu okazas nomata Ubuntu Linukso. Kaj kuras efike interne fenestro sur via Mac aŭ PC, tiel ke tiu vojo dekstre el la pordego en semajno 1, ĉiuj ĉi tie en la klaso havas aliron al la samaj iloj, la sama agordo, kaj ekzistas neniu lernado kurbo specifa por Mac aŭ PC en aparta. Nun ni malfermis, ene de la CS50 aparato lunde, tiu programo tie. Okazas al nomi gedit. Sed tio vere nur grafika redaktilo. Ĝi estas io kiel Notepad aŭ Text Redaktu sur Windows aŭ Mac VIN respektive. Mi proponis, ke vere tri gravajn partojn al tiu ekrano. La supro flanko estas kie vi skribus vian kodon. Kaj tio estas kie ni pasigis multe de niaj tri ekzemploj en lundo la prelego. La fundon ni nomas kion, tiu nigra fenestro, yeah? Student: Compiler? DAVID Malan: Kompililo ni alirita tra tiu fenestro. Sed pli ĝenerale. Jes, tio estis simple fina fenestro. Tiu estas evo malnova termino kiu nur Priskribas esence parpadeo prompto, kiu antaŭ jaroj kutimis esti en unu el tiuj grandaj CRT stilo monitoroj. Sed nuntempe ĝi estas speco de virtualaj en softvaro. Kaj la fina fenestroj Atendu nin tajpi komandojn. Ĝi ia la simpligita versio de la uzantinterfaco aŭ UI. Ne grafika uzantinterfaco aŭ GUI, ĝi estas teksto-bazita interfaco aŭ komandlinio interfaco. Kaj ĝuste tiu estas kie finfine Mi povis skribi iun kodon. Iam mi skribis iujn kodo kvankam, memoras ke mi uzis cxi tiun ordonon. Kaj kiel la nomo ia sugestas, tiu permesas al mi fari programo nomita Hello. Sed kio vere faras? Nu make prenis mian enigo, mia fontokodo, kaj konverti ĝin al kio, finfine? Objekto kodon. Kaj objekto kodo estas nur fantazio maniero diri nuloj kaj. Kaj tiam unufoje mi volis kuri tiu objekto kodo, fojon mi volis pasi kiel enigo tiuj nuloj kaj en mia komputilo cerbo, la tn CPU aŭ centra prilaborado unueco, Mi devis kuri la programon. Sed estis ne tute simpla lunde kiel nur duobligi klaki kelkajn ikono. Kion anstataŭ ĉu mi devas faru por kuri programon? Kio estis tiu dua ordono? Mi aŭdi iom slashes? Jes, jes? Student: Dot slash kaj la programo nomo. DAVID Malan: Ĝuste. Dot slash kaj la programo nomo. Nun kion tio signifas? Nu dot estas nur arcane vojo diri nuna dosierujo. Kion ajn dosierujo vi estas en estas referenciado kiel, estas reprezentita kiel punkto. La oblikvo estas ĝuste kion vi vidis en Mac CIN kaj Windows por jaroj, ĝi estas apartigilo inter dosierujo aŭ dosierujo kaj la reston de iu nomo. En Vindozo okazas iri malantaŭen, en Linukso kaj Mac VIN okazas iri antaŭen. Sed estas ĝuste la apartigilojn, do estas simple neinteresa sintaksaj detaloj. La sukaj parto kompreneble estas la nomo de la programo, Saluton. Kaj tio estas kion faras kreis por ni. Ĝi outputted tiu dosiero por ni. Sed kiel ni atingos tiun punkton? Ni nun demandas la demando, kio vere okazas ĉi tie, almenaŭ kun rilate al iuj de ĉi sintakso? Do en frazo aŭ tiel, kiamaniere ni klarigos for tiu unua linio tio reliefigis en verda? Kio estis tiu unua linio faranta, kun respekto al mia programo? Yeah? Student: [inaudible]. DAVID Malan: Diru ĝin denove? Student: Inkludita kaj elŝuti pasintaj funkcioj [inaudible]. DAVID Malan: Bone. Inkluditaj: Mi ne diras elŝutanta, sed diru inkludante funkcioj kiuj homoj skribis en la pasinteco. Kaj tiuj funkcioj estas implementado ie en mia komputilo. Iu skribis dosieron jarojn, kaj tiu dosiero estas ie interne de la CS50 aparato, nek sur mia malmola disko pli ĝenerale. Kaj tiu linio estas esence dirante iru trovi ke dosiero, standard I / O dot h, kaj kopio kaj almeti ĝia enhavo ĝuste ĉi tie sur la pinto de mia dosiero tiel ke mi ne devas fari tion permane mem. Kaj inter la juiciest pecoj interne ke dosier ni asertis estis kio funkcio? Kio funkcio ni diru deklaris aŭ menciitaj en normo / S dot h plej probable? Printf, dekstra? Ni ne skribis printf en Lundo, ĝi apenaŭ ekzistis. Multe ŝatas Alana ĵus supren sur scenejon kaj ŝi nur ekzistis kaj sciis desegni ion sur la ekrano, tial ne printf ekzistas por multaj jaroj. Kaj jen kiel ni aliras. Nun se ni movas en ĉi tie, ĉefa estis analoga ni diris al la puzlo peco nomita kiam verdaj flago klakis en la mondo de Scratch. Estas nur speco de defaŭlta nomo kiu homoj decidis reprezentus la default enirpunkto al programo. La eron de programado kodo kiuj prenas ekzekutita unue. Dume tiuj buklaj krampoj estas speco de kiel la kurba formo de multe el tiuj flavaj nulo pecoj. Ili ia encapsular tutaj faskon da instrukcioj kune. Do ĝuste ia ligas kune iu rilatanta funcionalidad. printf kompreneble estas funkcio kiu presas la ekrano, kiel ni ĵus faris. Kio pri tiuj krampoj? Kiel vi define-- eĉ se vi havas neniam planita antaŭe, sed nur bazitaj nun kreskanta espereble intuicio, kio estas la krampoj fari por ni ĉi tie? Aŭ kion ili ĉirkaŭas? Yeah? Student: Ili diris kion vi tuj presi kun printf. DAVID Malan: Jes, ili diras, kion vi tuj presi kun printf. Aŭ pli ĝenerale, ili estas ĉirkaŭis la eniroj por la funkcio. Do vi povas preskaŭ opinias de tiuj krampoj kiel estante kiel la metalo detranĉi sur ĉi tondujo. Estas kio tenante, estas kio estas tuj estos uzita provizi argumentoj en la funkcio, kiu en tiu kazo nomas printf. Do ĝenerale preskaŭ ajnan tempo ni nomas funkcio, Ni tuj vidos paron krampoj. Eble io en ĝi, kiel nun, eble nenio en ĝi. Sed tio estas kie vi metus la eniroj aŭ tn argumentoj al funkcio. Jen unu tian argumenton. Mi reliefigis ĉio inter la citiloj, ĉar ĝi rezultas en tiu lingvo nomata C, kiam vi volas reprezenti string-- kiu estas vorto aŭ frazo aŭ eĉ paragraph-- vi devas ĉirkaŭi per duoblaj citiloj. Ne citiloj, citiloj. Kaj tio estas precize kion mi faris tie. Dume estas funky simbolon al la fino. La backslash n. Kion ni diru ke reprezentis? Yeah? Student: Nova linio. DAVID Malan: Nova linio. Ĝuste, vi ne Ĝenerale batis Entajpu kiam Vi volas ke la programo kracxi el nova linio. Prefere vi diru eksplicite kun tiu rekoni arcane peco de sintakso, backslash n, ke Vi volas novan linion iri tien. Fine la punktokomo. Ni ne vere parolas tro multe pri tio, kaj nepre tio estos la Bane de iu de via ekzistado pro la unua problemo aro, kiam vi ĵus sukcesis realigi vi forgesis ion kiel stulta kiel punktokomo. Kaj ĝenerale metante ŝin tie fiksos tiun problemon. Sed kio estas tio faras por ni, vi dirus? Student: [inaudible]. DAVID Malan: Pardonu? Student: [inaudible]. DAVID Malan: Finante komunikaĵo. Ĝi estas speco de kiel la periodo je la finon de la angla frazo, dum kiu en tiu lingvo C ĝi estas finaĵo komunikaĵo. Instruo de programado kodo kiun vi volas nur diri, Mi finis tion. Nun rimarkos ke estas la sola ĉi tie. Do vi ne volas meti en kutimon de meti punktokomojn post ĉiu fermita parentezo. Ekzemple ekzistas neniu apud detruos, kaj ni revenu estonte kion void signifas. Sed en ĉi tiu kazo via printf estas funkcio, aŭ aserto uzas, kaj tiaj ni volas havi tiun finstacio ĉe la fino de ĝi. Kaj mi intence pluki sur C. Kaj sincere multajn lingvojn kiel C, C ++, Java, JavaScript, kaj ajna numero de aliaj lingvoj havas amason de tiuj speco de sintaksa detaloj. Tio certe se vi estas nova al programado povas malfalse trip vin. Kaj vi, atentu mian vortoj, iuj el vi volos havas tiun sperton en oficejo horoj aŭ malfrue nokto laborante sur iu p-aro, kie via malbenita programo simple ne kompili, ĝi ne kuras, vi havas neniun ideon kio estas erara, ŝajnas tute logike ĝusta por vi. Kaj estas pro vi forgesis iu kiel bati punktokomo ĉe la fino de iu linio. Sed jen estas la specoj de aferoj vi tuj tuj lerni vidi. Kaj ja tiuj estas la aferoj ke la CA-aj kaj TF informoj havas estis speco de trejnitaj vidi multe pli rapide ol vi. Kaj tiu estas nur por diri, kiel vi dive en problemo starigis 1 speciale, ne frustras de ĉi stuff. Iam vi speco de alklimatigi al la mondo, vi komenci vidi tion, ke vi ne fariĝu vidi ĉe la unua rigardo tiu unua semajno. Do fontkodo estas io kiel tio. Ni volas pasi ĝin la tn tradukilo. Kaj tiu tradukilo kiel Ni diris provizas eligo konata kiel objekto kodo, la tn nuloj kaj. Sed de tie, kio faras ke al ni? Nu donas al ni tiuj ŝablonoj. Kaj denove vian komputilon, via Intel ene, Komprenas tekso de nuloj kaj. Kaj kelkfoje la ŝablono reprezentas realan dekuma nombro kiel ni vidis lastan semajnon, kelkfoje reprezentas literon kiel ni vidis lastan semajnon, kelkfoje reprezentas instrukcion, kiel presi ion por la ekrano. Do printf por instance-- sed prefere lasu min malantaŭenigi. Ni estis prenante por koncedis ke tiuj nuloj kaj aĵoj estas produktitaj de tiu komando make. Sed fakto estas ne tradukilon. Faru ne estas la afero en la mezo ke tio produktante la nuloj kaj. Anstataŭ fari estas simple tre oportune nomata programo kies celo en la vivo Estas esence elkompreni kiel kompili via programo. Kaj ni uzas ĝin en tiuj unuaj semajnoj ĉar simple ŝparas al ni multajn problemojn. Sed kion fari estas vere faras kiam vi kompili saluton, estas, kiel ni diris lasta fojo, ĝi estas rigardante vian malmolan diskon aŭ en la nuna dosierujo, por dosiero nomata kio, ŝajne? Hello.c, dekstra? Tio estas ĝuste speco de konvencio. Ĝi estas arbitra, sed jen kiaj aferoj estas. Faru, se vi nur specifi la nomon de programo kiu ankoraŭ ne ekzistas, ĝi tuj serĉos la fontkodo en dosiero, implicite signifas hello.c. Kaj se li trovas gxin, grandaj. Ĝi konvertos tiu fonto kodon en celkodo por vi. Sed ĉiufoje mi batis Enter post kuri fari saluton, ĉu vi memoras vidante lasta fojo sufiĉe longa kaj kamufla sekvenco el aliaj blankaj literoj kaj signoj sur la ekrano? Nu, kiu estis la reala ordono, la reala tradukilo, kiu kuras. Do la reala tradukilo ni uzos la plimulto de La semestro estas iu nomita tin. Iuj el vi eble uzis Vida Studio antaŭ, aŭ GCC, aŭ ajna numero el aliaj tradukiloj. Ni uzos tin. Kaj tin nin permesas reale konverti ke fontkodon kontestas kodo. Kion tio reale signifas en la praktiko? Nu lasu min iri al unu el miaj dosierujoj de lasta tempo. Ene de la CS50 aparaton. Kaj lasu min antaŭeniri kaj krei ĉi sama dosiero, inkluzivi normo / S dot h. Mez ĉefa malplenon. Kaj ni revenos en la estonteco kiel kio int signifas kaj kion void signifas. Sed nuntempe ni faru saluton mondo backslash n, nur ŝatas ni faris en la estraro. Lasu min savi dosiero nomata hello.c. Kaj nun se mi volas traduki ĉi Mi could-- lasu min zomi in-- run fari saluton eniri. Kaj tio denove estis ke tre kamufla lineo. Sed nun almenaŭ unu vorton verŝajne elsaltas ĉe vi. Tin trovas tiun linion ni vidis antaŭe. Nun ekzistas multajn aliajn aferojn sincere ke ni skuu niajn manojn hodiaŭ. Sed estas kelkaj subaroj, kelkaj karakteroj tien kiuj estas de intereso. Sed mi tuj iros antaŭen kaj fari tion. Mi iras al la unuaj run saluton, nur por pruvi ke tio funkcias kiel estis lundo. Sed nun mi iros al viŝi la programo. Kaj multe kiel ni havis tiujn mallongajn nomojn lasta fojo, la komandon por forigi io estas rm, demeti, eniru. Vi tuj akiri iom sufiĉe kamufla demandoj. Malfacile kredi, ke vi povas fari eĉ tiu demando malfacile komprenebla. Sed forigi regulaj dosiero saluton ĝuste per vi volas forviŝi saluton. Kaj mi povas iri antaŭen kaj tajpu y por jes, Enter, kaj nun ĝi foriĝis. Kion tio signifas nun, se mi purigi mian ekranon, estas ke anstataŭ fari fari hello-- vin scias kion, mi ricevas bonan ĉe ĉi. Mi tuj kuros al la tradukilo mem. Mi ne bezonas iun programon elkompreni mia dosiero estas nomata. Mi skribis hello.c, mi scias kio ĝi nomiĝas, Mi klare kapablas tajpi tion. Do mi tuj iros antaŭen kaj do tin hello.c Entajpu. Ŝajnas funkcii. Kaj ne estas aldona eliro, ĉar tin estas la kompililo. Estas kio konverti fontkodon nuloj kaj. Do se mi nun faru dot slash hello Enter, hm. Novaj erarmesaĝon hodiaŭ. Do bash estas nur la nomo de la palpebrumante prompto ke ni uzas. Tio estas malneta simplificación, sed nuntempe tio estas ĉio tio estas, ĝi estas la palpebrumantaj prompto. Kaj tio estas kial ĝi estas kriante al ni. Ne tia dosiero aŭ dosierujo estas iom pli simpla. Sed certe mi faris tiun celon kodon. Sed la ruzo estas, ke se mi tajpas la ordonon printi la enhavo de ĉi tiu dosierujon, kiu estas kiu? ls por lerta. Ekzistas aro da aĵoj en ĉi tie, kelkaj el kiuj venis kun la aparato, kiel mia Labortablo dosierujo, Downloads dosierujo, Dropbox dosierujo, kaj ĉiuj ke stuff. Sed kio estas interesa Estas hello.c, kiu Mi kreis antaŭ momento kun gedit. Kaj kio estas la plej stranga rigardas nomo tien, eble, ke ni ne vidu lasta tempo tute? a.out, dekstra? Do reen en la tago, ĵus decidis ke kiam vi kompili programon por la unua fojo, kaj vi ne indikas la nomon de dosiero, ni nomas ĝin. Kaj a.out simple signifas tio la eligo de la tradukilo. Do estas hida nomon por programo. Sed per tiu logiko, ĝi pentras slash por kuranta dosierujo, slash a.out, devus signifi ke estas fakte Mian saluton mondo programo. Nun iom hejti ekzerco, ankaŭ. Se mi volas renomi ĉi dosiero, rezultas ke vi movi dosieron el unu nomon al alia. Do mv a.out, kaj tiam mi povas nomi ĝin hello Entajpu. Do tio estas Linuksa komando. DOS havis ĉi jaroj, Windows havas terminalfenestro ia ke aspektas kiel tiu, Linukso kaj Mac komputiloj havas ĉi palpebrumante prompto. Kvankam la plimulto de ni probable malofte, se iam, uzu ĝin. Sed kion mi faris estas kuri programon, kies nomo estas mv, kaj mi havigis ĝin du argumentoj, por tiel diri. Du enigoj. a.out estas la originala nomo. Saluton estas la nova nomo. Do se mi nun faru dot oblikvo saluton, Enter, kiu ekzistas. Kaj se mi faros dot oblikvo a.out, Kion vi atendas mi vidas? Bash, neniu tia dosiero aŭ dosierujo. Ĉar mi ĵus renomita ĝin. Do tio prenas iom de akiranta uzita al. Sed la problemo starigis 1 specifo volas vere teni vian manon per iuj de ĉi minutae. Ĉar tiu estas kompleta intelekta distro el la pli interesaj ideoj ĉe mano, kiu fakte kreas ion el kodon. Sed ni faros unu modifo Nun al tiu programo. Memoru ke la lasta tempo mi faris ion kiel tiu, printf deklari vian nomon. Kaj efektive ni ĵus faris tion en la granda ekrano tie. Kaj poste mi faris ĉenon s ricevas GetString malfermita paren, proksime paren. Kaj paren nur stenografio skribmaniero por parentezo. Do ne GetString preni ajnan argumentoj? Neniu enigoj ne, sed bezonas la krampoj, ĉar tio estas kion demarca kunvokado de funkcio. Do mi tuj iros antaŭen kaj provu kuri la tradukilo tiu programo nun. Tin hello.c, ĉar mi ne ŝanĝis lian nomon por nun. Kaj mi ricevis faskon da eraroj. Ni malzomi tie. Se mi rulumu supren denove, kiel mi diris lasta fojo, al la unua, sama eraro ke mi alvenis lastan fojon. Sur la linio 6 de hello.c mi havis nedeklarita ensalutilo kordo, ĉu mi signifas normon? Mi ne faris. Pro kio eraro Mi faris en tiu programon, se vi memoras de lasta tempo? Jes, ni bezonis la tn trejnado radoj ke ni simple uzu dum kelkaj semajnoj. Sed mi bezonos specifi ke ankaŭ, ie interne de la aparato, Jen dosiero kiun ni skribis nur kelkaj jaroj. Ene de kio estas funkcioj kiel ŝajne GetString. Do nun, se mi reirus malsupren tie, zomi, kaj re-kuri tin hello.c. Malbenita, alia eraro. Sed ni ne vidis ĉi tiun antaŭe. Ĉi tiu estas iom pli esotera elkompreni. Sed tio estas intence sur la ekrano, ĉar ni volis rakonti tiun historion. Kiam vi kompili hello.c, kiel la bildo de antaŭ sugestis, vi nur konverti ke fontkodon nuloj kaj. Nun CS50 bastonon antaŭ kelkaj jaroj skribis CS50.h kaj respondan dosieron, CS50.c. Kaj ni, antaŭ kelkaj jaroj, kompilis tiujn dosierojn en dosieron kiu okazas esti nomata CS50.o. Aŭ ĝi povas esti renomita al kelkaj malsamaj aferoj. Sed tio estas simpla vojo pensi pri ĝi. Do ni kompilis CS50 La biblioteko en nuloj kaj. Sed nenie mi specifita ke mi volas kombini mia nuloj kaj bonaj por miaj saluton mondo programo kun la nuloj kaj ke CS50 bastonon kreis kelkajn jarojn monato en unu kompletan programon. Ĉiuj mi specifita de skribo tin hello.c estas kompili hello.c. Mi ne diris tin por ligilo en la nuloj kaj ke CS50 bastonon kreitaj cxar vi faras iun tempon. Do estas facile ripari, interfrapigos l por ligilo, CS50. Kaj ni denove vidas tiun nelonge denove kaj denove. Sed rimarki nun ne ekzistis plendoj. Do nun se mi kuros dot oblikvo saluton, nun laboras. Kvankam tio estas iom iluzia ĉar mi simple amuzis kio dosieron? a.out. Do lasu min malantaŭenigi por nur momento. La programo ni ĵus kompilis havas la tri linioj de kodo. Kiam mi kuris saluton mondo, saluton momenton monatoj, mi ne vidis deklari vian nomon. Kaj tio estas ĉar mi kuris la malnovan version de la programo. Sed se mi ja kuras dot oblikvo a.out Enter, deklari vian nomon, Rob, saluton, mondo. Hm. Tio estas speco de cimo. Verŝajne volis diri Rob, dekstra? Do kio estas la solvon tie en kodo. Student: [inaudible]. DAVID Malan: Ĝuste. Do mi simple bezonas fari ke fina tweak tial mi pasante en lokokupilon, kiel plenigi la malplenan, kiel ni faris antaŭ momento. Sed procento s nun ke plenigi la malplenan. Tiel persiste ni malkaŝi unu lastan detalo por ke ne estas magio. Mi tuj iros antaŭen kaj liveri de hellow. Mi tuj iros antaŭen kaj liveri de a.out. Do nun mi havas neniun programoj, nur mian fontkodon. Kaj mi tuj kuri iomete plu komando, tin interfrapigos o saluton hello.c haltostreko LCS50. Nun tiu komencas ia iri en unu orelon kaj el la aliaj eble. Sed ĝuste turmentus aparte kion tiu faras. Tin estas la kompililo, haltostreko LCS50 intence en la fino agados en frazo? Ligiloj al la CS50 biblioteko. Kroĉas la nuloj kaj kiuj la ŝablono faris kaj premas ilin en mian propran programon. Do la lastan demandon mano, kio estas haltostreko o saluton probable faras, eĉ se vi neniam vidis tiun sintakson antaŭ? Elira Programo kiu estas ne enoficigis la defaŭlta a.out. Prefere ĝi estas nomata saluton. Do nun estas nenia a.out. Ne tia dosieron aŭ dosierujon, ĉar mi eksplicite diris nomas tiun programon saluton, por ke Mi povas nun entajpi nomon kiel tiu kaj ilin konduti. Nun sincere, knabo estas ke seninteresa havi memori ĉiuj, ke iom minutia, dekstra? Do ni iru antaŭen kaj forigi saluton denove. Kaj ni nun revenas al mondo en kiu sufiĉas diri fari saluton. Sed jen la magion kiu fari faras por vi, tio estas la tedium ke ĝi estas fari por vi. Kaj kiel niaj programoj kaj problemoj akiri pli kompleksa, fari sincere via amiko. Ĉar ne tro longa de nun ni iras havi programojn skribitajn ne kun unu dosiero, sed plurajn dosierojn, kaj fari estos aŭtomatigi la procezon de kompili ĉiujn ke ni kune. Do nun presi. printf estas ene de tiu dosiero, normo I / O dot h, kiun ni vidis antaŭe, sed pri pli printf ol tio. Ekzistas backslash n, sed estas ankaŭ faskon da aliaj eskapo sekvencoj. Kaj eskapo vico estas nur fancy maniero diri ion kiu komenciĝas per backslash, ne antauxen oblikvo, deklivo, kaj faras iujn specialajn afero. Kaj ni ne volas logxi sur plejparto de tiuj, sed kial estas tie backslash citilon, Kion vi opinias? Kial estas tie ĉi bizara vico de karakteroj, backslash citilon, kial povus tiu esti utila? Student: [inaudible]. DAVID Malan: Ĝuste, dekstra? Pensu reen al nia saluton mondo programo ke ni vidis sufiĉe da fojoj nun, ĉiufoje ni vidis ke saluton mondo programo ni devis citiloj ene el kiuj estas hello komo mondo backslash n. Sed pensu mem, kio se vi reale volis printi citaĵo markon? Via unua instinkto povus esti, mi ne scias kial mi povus voli do-- tie, ni povas esti iom pasiva agresema, saluton amiko. Ni volus fari ion tian. Sed kial estas tiu nun problema? Ignorante la krispa citaĵoj flanken ke keynote faris por ni aŭtomate. Kial tiu problema? Ĝuste. Ĉar ni havas kiel 4 citiloj. Nu la unua probable iras kun la dua, kaj eble la kvara iras kun la tria, aŭ, mi volas diri Mi ne eĉ certas, nek estas la komputilo tuj estos. Komputiloj denove, tradukiloj denove, estas sufiĉe stulta. Ili estos nur fari kion Vi rakontos ilin fari. Se vi ne estas unusenca ili verŝajne volus ĵeti eraro. Se vi ne estas unusenca kiel al kiel fari arakido butero kaj ĵeleo sandviĉo mirindajxojn povus alveni. Ĝi estas la sama ideo. Nun sufiĉas diri ke estas iuj aliaj eskapo sekvencoj, sed ni atingos tiujn antaŭ longe. Esence tiuj eskapo sekvencoj reprezentas ion ke vi eble ne povos tro facile ĉe la klavaro, sen konfuzante la komputilo. Nun dume ni havas anstataŭiloj en printf. Elcento d, kiuj povas ankaŭ esti skribita en preskaŭ ĉiuj kazoj kiel procento i, Estas lokokupilon por kio tipo de datumoj? Kia valoro? A dekuma nombro. Do efektive ni komencu uzante procento i ĉar estas iom pli simple, kiel entjero. Elcento i. Entjero kiu sekvinbero al esti dekuma. Elcento s jam diris estis oni lokokupilon por ŝnuro. Kio estas nur vorto, frazo, alineo, eseo, kion ajn. Estas sinsekvo de signoj de iu longo. Kaj ni vidos post nelonge iuj el tiuj aliaj. Sed procento c estas por sola karaktero. Elcento f estas por glitpunkta nombro kiel reela nombro kiu havas dekuma punkto en ĝi, kion Kompreneble ne estas entjero. Kaj tie estas tuta faskon da aliaj. Dume en C, kaj en multajn lingvojn, ni havos malsamajn datumtipoj. Malsamaj tipoj de vitro pelvojn, se vi volas. La bovlo mi uzis lasta fojo estis por ping pong pilkoj, sed ni ankaŭ povas stoki malsamaj valoroj kiel signoj kaj kordoj kaj entjeroj en ujo, kiel variablon, kaj C havas ĉi tiujn. Char estas la tipo de datumoj, la tipo de variablo, kiun vi povas stoki karaktero. Float estas tipo de variablo en kiun vi povas stoki reela nombro. Int estas kompreneble por int. Kaj iom ridinde nomata longa tempo Tie estas kie vi povas stoki esence vere longa numero, kun eĉ pli ciferoj tiam Tipa int heroajxoj vendejo. Sed ni revenu al tio antaŭ longe. En CS50 dot h dume la aliaj kaplinion dosieron ke ni vidis paro fojojn en uzo, estas du aliaj datumtipoj ke ne ekzistas en C tipe. Unu estas ŝnuro, kaj ni vidos en kelkaj semajnoj kion kordoj vere estas sub la kapuĉo. Kaj oni trovas bool. Kaj bool estas variablo kiu povas nur preni sur certaj valoroj. Kaj ĝuste surbaze lasta semajno klarigo de Scratch, kaj pli freŝdate C, Kion vi imagas estas la du eblaj valoroj por iu ujo kiu estas de tipo bool? Jes kaj ne. Kaj nulo. Vera aŭ malvera. Kaj ja estas la lasta kiu inklinas esti ŝablona programado lingvo, dirante ion kiel vera aŭ malvera. Dume la CS50 biblioteko venas kun fasko de funcionalidad ke la ŝablono skribis por vi, krom nur prenanta kordo. Ni skribis anticipe funkcioj kiuj povas akiri entjero de la uzanto, akiri sola karaktero, akiri kaleŝego, ke estas nur numeron kun la dekuma punkto. Get longa tempo, vere granda valoro de la uzanto. Do ni nur vidis tiun en agado en la formo de GetString. Sed per tiuj funkcioj baldaŭ povos skribi programoj kiuj ricevas enigon el la uzanto. Dume konsideras ĉi programo, kaj opinias kiel ni povus nun komencas aldonu ĝin kun novaj konstruoj. Rapida ventego tour kaj do ni rigardu en iu skribi iujn programoj permane mem. Nun, se ni volas implementar kondiĉo, tio ne tuj aspekti nice iom bela puzlo peco. Ĝi tuj rigardi iomete pli arcano. Sed tio estas la kanonaj strukturo de kondiĉo en C. La vorto se du krampoj, ene de kiu tuj estos ia de Bulea esprimo. Nun la oblikvo oblikvo en la mezo, tiu estas ĉe la momento speco de kiel _pseudocode_ kodo lokokupilon. Sed pli konvene, neniun linion de kodo en C kiu komenciĝas kun oblikvo oblikvo Estas komenton. Estas kvazaŭ glueca noto ke vi povus surmetis eseo, presita sur papero. Estas noto al vi mem. Ĝi ne havas funkcian trafo sur la programo. Ĝi estas speco de recordatorio, tio estas via propra dokumentaro pri kio okazas. Do fari tion por la momento Estas speco de lokokupilon por kiaj estas interne de tiuj buklaj krampoj eventuale tuj fari ion. Dume vi havas du forkoj en la vojo, oni se alie konstrui ŝatas ĉi. Vi povas se elseif, alia. Nun indas rimarki, speciale se vi estis Googling ĉirkaŭe rete por resursoj el scivolemo, aŭ se vi repreni unu el la kurso rekomenditaj libroj sur C, vi vidos ke la homoj havas multan de malsamaj preferoj por kiel esprimi sin en kodo. Kelkaj homoj ŝatas meti la frizita krampoj, kiel mi faris tie. Kelkaj homoj ŝatas meti la krispa krampoj ekzemple tien. Kelkaj homoj ŝatas meti la elses tie supre kaj tiam ĉi tie. Ekzistas neniu nombro de manieroj registran kodo, kaj neniu el ili pravas mem. Kvankam ekzistas kelkaj kiuj estas sufiĉe malbone. Sed estas no-- se tiu estas fine tre religia debato. Fakte, unu el la plej ĝenaj aferojn pri komputiko Tiel opiniema komputilo sciencistoj povas esti. Kaj vi trovos la tempo ke eĉ vi evoluigi personajn preferojn kiel al kiel via kodo devus rigardi. Ne ĝuste kondutas, ne nur krei eligon, sed kial devus rigardi estetike. Do kion ni faros estas gvidi vin kune la direkto, nuntempe almenaŭ, norma CS50 stilo kiu almenaŭ subtenas tion uniformo kaj facila por legi. Sed pli sur tiujn distingoj antaŭ longe. Bulea esprimo en C, se vi volis diri se ĉi tiu kondiĉo estas vera kaj tiu alia kondiĉo estas vera, Vi ne skribas la vorton kaj, kiel vi farus en la angla. Vi anstataŭe uzu signon signon, pro kialoj ni revenos al. Se vi volas diri aŭ vi uzas du vertikalajn liniojn, kiuj sur usona klavaro Estas ĝenerale super la Entajpu ŝlosilo apud la backslash. Kaj tio nur signifas, ke se tiu kondiĉo aŭ tiu alia kondiĉo estas vera faros. Dume estas tio freneza afero, kiu vi havos okazon uzi unufoje en momento. Sed estas nur alternativo manieron esprimi vin. Tio, nuntempe, ni kondiĉas, estas nur alia funky maniero esprimi se, elseif, elseif, elseif, elseif. Ĝi simple formatita en terminoj de kazoj, kie vi laŭvorte numeri la valoroj kiujn vi eble volas kontroli. Dume loops. Ni vidis komparo Skrapi kun buklo. Kaj mi tuj skuos mian manon je kio ĉiu de ĉi tiuj aferoj signifas. Sed rimarki ke buklo volas tre ofte komenciĝas per la ŝlosilvorto por. Aŭ ĝi komencos kun la ŝlosilvorton samtempe. Aŭ ĝi komencos kun la ŝlosilvorto faru, kaj fini kun la ŝlosilvorton samtempe. Sed kion ni estas proksimume vidi estas aferoj pli similaj ĉi. Jen, ĝenerale en C, kiom vi povus deklari variablon kaj doni valoron. En C ne sufiĉas, kiel en Scratch, vi simple diru al mi variablo nomis ion. Vi devas diri al C, kaj diru via kompililo, pli specife, kio tipo de valoro vi volas meti en la vitra bovlo. Ĉu entjeron? Se jes, vi devas laŭvorte diras int kaj tiam la nomo de la variablo, tiam punktokomo. Se vi anstataŭe volis kordo kaj vokis ĝi s kiel mi faris mian kodo tie hodiaŭ, vi dirus kordoj s punktokomo. Iam vi volas doni valoron Vi povas tiam uzi la egalsigno, alie konata kiel la asigno operatoro. Kaj rimarki kiom ĉiu de tiuj linioj de kodo havas la punktokomo ĉe la fino de ĝi. Sed sincere tiu simple aspektas iom malbela. Kial mi ne povas diri al la komputilo, donu Min variablo kaj pravalorizi ĝin al nulo. Tio estas, doni min malplena vitra bovlo. Dum vi povas. Kaj unu el la juĝon nomas vi devi fari stile tempo estas, vi skribas vian kodo kiel ĉi tiu, aŭ vi speco de purigi ĝin kaj impresi homoj skribante du liniojn kiel nur unu. Kaj tio estus konsideritaj ĝenerale pli eleganta maniero skribi vian kodon stile. Funkcioj ni kompreneble vidis. Ili tuj prenos tiun formaton. La nomo de funkcio, iuj krampoj, kaj tiam eble iuj stuff enen. Aŭ vi povus vidi uzoj de multnombraj funkcioj flanko ĉe flanko, kiel iu kiel ĉi tio. Nun kiel tangento, faras tiu ŝerco jam havas sencon? [Ridado] Ĝi ne signifas ke estas amuza, sed ne eble fari iom pli sentita. Do nun ni iru en la CS50 aparaton dum momento. Kaj lasu min malfermi unu teaser tie. Kaj efektive unu el la kialoj por enkonduki IKEA katalogo kaj brilantaj la foton de la iPhone iom monato estis efektive kunordigis kune la fakto, ke nur kelkaj jaroj antaŭe, en 2007, tiu peco de kodo estis liberigita, kiu estis unu el la tre unua efektivigo de peco de programaro kiuj faras kion oni nomas jailbreaking. Por kiuj ne konas, jailbreaking iu kiel telefono aŭ iPhone signifas esence imagante el kiel fari tion kun tio ke la kompanio farinto ne intencas. Kiel vi volas instali iun programaro kiu ne estas en la App Store, jailbreaking via telefono kiu vi faru tion kiel tio kaj multe pli. Sed kio estis amuzo 2007-- kaj tie jam dekoj de malsamaj versioj pri tiuj aferoj de tiam, ĉiaj languages-- estas ke tiu programo tie ĉi, nomita iUnlock, fakte skribitaj en C. Do mi tiris supren la fontkodon por tiu, nur speco de montri al vi iom de la similecojn kun la konstruojn ni estis diskutante tiom. Nun tie estas vojo pli complejidad tie ol ni vidis jam en klaso. Lasu min rulumi supren malmulta tie. Sed rimarki these-- bone ni rimarkos kelkajn things-- rimarki tiujn liniojn tie, inkludante normo / S dot h. Kaj all-- linio 24, please-- rimarki normo / S dot h kaj tuta aro de aliaj dosierojn kiuj ŝajne aliaj personoj skribis. Kaj se ni rulumu malsupren tra tiu, iom arbitre, Rimarku ke mi ne scias kiel skribi ĉion ĉi mi nepre ankoraŭ, sed estas se. Do ŝajne tiu havas branĉon. Kaj se mi rulumu malsupren iom plu ekzistas alia se. Se mi rulumu supren, mi pensas ĉirkaŭ linio 100 Mi vidis por. Do mi ne estas tute certa kiel tio funkcias tamen, sed tio estas por buklo ke tuj lasu min persisti iu nombro da fojoj. Kaj se mi rulumu ĉiuj la vojo al la fundo Mi vidas, ke tie estas funkcias cxi tie nomata ĉefa, kaj kelkaj pliaj kreditoj por via legado plezuro. Do tio estas nur por say-- kaj ni metos tiu linio inter la kurson fonto kodo today-- ke eĉ kelkaj el tiuj mekanismoj kiujn ni prenas por donita, ĉe la fino de la tago vi daŭre uzante tiujn bazajn konstruojn ke ni estis enkondukante jam tiom. Tio estas suficxe de tiu. Bone, do nun ni fakte konstrui ion. Ni iru trans iu kiel hello.c, kaj malfermu ĉi, ni skribos ĉi programo tie. Mi tuj iros antaŭen kaj verki programon nomitan adder.c, kies celo en la vivo tuj estos kiel mia unua súper simpla kalkulilo ke nur aldonas kelkaj nombroj. Ne pro tio estas malfacile problemo, sed ĉar permesas al mi nun ligas kune kelkon. Do mi tuj iros antaŭen kaj inkluzivi standard I / O dot h kaj CS50 dot h. Mi intencis diri int ĉefa malplenon. Kaj denove en la estonteco ni revenos al ĝi en ĉi tiu kunteksto kaj dezerta rimedoj. Kaj nun mi iras diri ion kiel printf, donu al mi entjero. Kaj nun mia dua linio, kiel mi min esprimi tiajn ke mi volas deklari variablon ke tuj stoki int? Laŭvorte kion mi tajpas se mi volas krei variablon kiu stokas la int vi dirus? int a egalas getint. Certe, tiel ke funkcias. Kaj ĝuste pro consistencia kun la kodo Vi vidi en linio, lasu min ŝanĝo tio al x, nur ĉar x estas komuna nomo de la variablo uzi, almenaŭ en algebro. Nun lasu min antaŭeniri kaj ne printf denove. Donu al mi alian entjero. Kaj nun mi iras al speco de lerni de tiu ŝablono, Mi intencis diri int y alvenas al GetInt. Kaj ni ne uzis GetInt antaŭe, sed nur kiel GetString iras kaj ricevas kordo, kiel Ksavero faris el la spektantaro, simile faras GetInt komenci palpebrumante la prompto. Kaj efektive atendas la uzanto doni ĝin entjero, tajpante ĝin kaj bati Eniru. Nun persiste mi faros tiu, printf sumo of-- lasu min preni fancy now-- procento i kaj procento i ĉeestas i ekkrion punkto backslash n. Kaj kion vi pensas ke mi tuj metita nun kiel aldona enigoj al printf? Mi ne volas diri laŭvorte citi unquote x. Mi volas klaso en x kaj tiam, kaj nun ni iru fantazio kaj ni nur supozi ni povas fari kion ni volas. Kion vi volas diri poste? x plus y. Kaj ĝuste tiu laboros. Ĝi estas minimume programlingvoj do komprenu baza aritmetiko, kaj tiel ĉi devus fakte laboro. Do lasu min antaŭeniri kaj ne fari Cerasto cxe mia nigra kaj blanka fenestro malsupren tie, Enter. Kamufla linio sed neniu eraro mesaĝo, do tio estas bona. Dot slash aspido, donu al mi entjero, 1. Donu al mi alian entjero, 2. La sumo de 1 kaj 2 estas 3. Bone, do bela banalaj programo, sed kion gxi faris? Ĝi permesis al mi uzi funkcio nomos tie nomas alian funkcion tie, du alvokojn al GetInt, oni tria alvoko al printf, kaj tiam uzanta tiujn anstataŭiloj. Do estas iom pli kompleksa ol lastfoje. Sed kio se mi volas preni iom amatoro? Lasu min nun faros. Lasu min kaj krei nova dosiero nomata kondiĉoj nulo. Kaj mi tuj savos iu tempo por klasoj sake kaj simple almeti en tiu kodo kiel deirpunkto. Kaj nun mi simple tuj metos io nova ĉi tie en la mezo. Do printf Mi ŝatus entjero bonvolu. Kaj ĉiu tiu kodo estas disponebla en la kurso de afiŝinto, Vi ne bezonas tajpi ĉion en klaso, se vi preferus ne. int, kaj nun mi iras al uzi, anstataŭ x kaj y, Mi tuj uzos n, kiu estas probable la plej komuna nomo por entjero en komputila programo. Kaj nun mi volas fari iom juĝo tie. Mi tuj vidos se n estas pli granda ol 0, tiam Mi tuj diros printf-- Whoops, printf-- vi plukis pozitiva nombro, ekkrion punkto backslash n. Fermu tion. Alie Mi tuj presi printf vi plukis negativa nombro. Kaj antaux vi krias al mi, ni kuros ĉi programo. Lasu min iri malsupren tie. Kaj kiel mi kompili programon nomitaj kondiĉoj haltostreko 0? Faru kondiĉoj haltostreko 0. Speco de stulta nomo, but-- Dammit. OK, bona instruado momento. Kial tiu rompi? Kion mi hazarde nomas tiun dosieron? Vi povas ia konkludi de la langeto tien. Do ĝi ne estas malbone ke mi faris tion, ĉar tio okazos eble iuj el vi. Do mi hazarde nomis mia fontkodon kondiĉo 0. Sed mia fontkodo per konvencio devus esti en dosiero nomita kondiĉo 0 haltostreko c, aŭ kio punkto c. Do lasu min korekti tiun. Ĝuste kiel Microsoft Word mi povas iri supren to Save As kaj do kondiĉo 0 dot c. Nun nur esti ordigita min tuj iros antaŭen kaj forigi kondiĉo 0, kiu estis mia malnova versio. Kaj nun ni ne faru kondiĉo 0, Enter. OK, ŝajnas bona. Kondiĉo 0, Enter. Mi ŝatus entjero bonvolu, 50, vi plukis pozitiva nombro. Nun kio pri negativaj 50? Vi plukis negativa nombro. Kion pri nun, 0. Sufiĉe certa 0 ne negativa. Do ĉi tiu estas speco de logika eraro. Kjel mi ripari tion? Alie, se n estas malpli ol 0, faru tion, alie Ni povas havi tri vojon branĉo tie, printf vi plukis 0. Do nun se mi rerun ĉi programo, post kompilante ĝi denove kun ŝminko, kaj nun rerun kondiĉo 0, kion mi vidos tie Estas 0 donas min ke eligo. Do kie ni iras kun tio? Nu tio estas tre facile perdi vido de la arbaro por la arboj. Kaj tial ni permesas konkludi kun tiu 2 kaj 1/2 minuto video ke finfine estas iom de anoncon de Google, sed tio vere estas testamento al kio eĉ uzante tiujn bazajn konstruaĵo blokoj ni povos finfine fari unufoje ni havos iom da programado savvy sub nia rimenoj. [MUZIKO Ludante] SAROO BRIERLEY (VoiceOver): Ĝi havis 26 jarojn, kaj mi estis nur proksimume turni 5. Ni alvenis al la stacidomo kaj ni eniĝis nia trajno kune. Mia frato ĵus diris Mi timige resti ĉi tie, kaj mi revenos. Kaj mi nur pensis, nu vi scias, Mi povus tiel nur iri dormi kaj li havos nur veki min. Kiam mi vekiĝis la sekvantan tago, la tutan kaleŝon estis malplena je arrollador trajno, fantomo trajno prenas min Mi ne scias kie. Mi estis adoptita al Aŭstralio, al aŭstralia familio. Kaj panjo estis ornamita mia ĉambro kun la mapo de Hindio, kiun sxi metas apud mia lito. Mi vekiĝis ĉiumatene vidante ke mapon kaj tie Ĝi ia gardis la memoroj vivas. Homoj dirus, vi estas provante trovi kudrilo en fojnamaso, Saroo Vi neniam trovos gxin. Mi ŝatus esti ekbrilis el la lokoj kiujn mi kutimis iri, la ekbriloj de mia familio alfrontas. Tie estis la bildo de mia patrino, sidiĝante kun ŝi kruroj transiritaj, nur rigardante sian krion. Vivo estas ĝuste tiel forte. Tio estis mia trezoro. Kaj mi serĉis en Google-mapo kaj realigita ekzistas Google Earth tiel. En mondo kie povis zomi en, Mi komencis havi ĉiu de tiuj pensoj kaj kion ebloj ke tio povus fari por mi. Mi diris al mi, vi scias, vi havas kunvenigis tiujn fotografia memoroj kaj limŝtonoj, kie vi estas, kaj Vi scias, kion la urbo aspektas. Tio povus esti apliko kiu vi povas uzi por trovi vian vojon reen. Mi pensis, bone mi metos dot en Calcutta stacidomo, kaj radiuso linio, vi scias, ke vi devus esti serĉanta ĉirkaŭ tiu areo. Mi ia ektrovis tiuj trajno trakoj. Kaj mi komencis sekvante lin, kaj Mi venis al la stacidomo de trajno kiu reflektis la sama bildo kiu estis miaj memoroj. Ĉio parigitaj. Mi ĵus pensis Yep, mi scias kien mi iras. Mi simple tuj lasu la mapo kiun mi havas en mia kapo gvidu min kaj preni min reen al mia hejmurbo. Mi venis al la sojlo de La domo, kiun mi naskiĝis. Kaj ekpromenis sur 15 metroj ĉirkaŭ la angulo, tie estis tri sinjorinoj staris ekstere, apuda al ĉiu alia. Kaj la meza paŝis antaŭen, kaj Mi ĵus pensis, tiu estas via patrino. Ŝi venis antaŭen, ŝi brakumis min kaj ni restis dum ĉirkaŭ kvin minutoj. Ŝi kaptis mian manon kaj ŝi prenis min al la domo kaj ricevis telefone, kie ŝi sonoris mia fratino kaj mia frato diri, ke vi scias, via frato havas nur ĉiuj subita aperis kiel fantomo. Kaj tiam la familio kunvenis denove. Ĉio estas tute bona, Mi helpis al mia patrino eliris, ŝi ne devas esti slaving for. Ŝi povas vivi la reston de ŝia vivo en paco. Estis kudrilo en fojnamaso, sed la nadlo tie. Ĉio estas tie. Ĉion kion ni havas en la mondo estas ĉe la krano de butono. Sed vi devas havi la volon kaj la determino voli ĝin. [MUZIKO Ludante] DAVID Malan: mirinde dolĉa atestaj al precize kion vi povas nun faru kun teknologio. Ni vidos vin proksima semajno.