[VIDEO reprodukto] -A Triumfo de matematika kaj mekanika lerteco estas tiu granda nova aŭtomata kalkulilo ĉe Harvard University. Malsimplaj problemoj en matematiko meti tra la maŝinon en kodita formo sur bendo estas precize solvitaj en minuto frakcio de la tempo bezonata por homa kalkulo. Desegnita por agilizar ĉiajn matematika kaj scienca esplorado, la giganta mekanika cerbo laboros por Usono Mararmeo ĝis milito finiĝi. [FINO reprodukto] DAVID J. Malan: Ĉi, estas CS50. La pasinteco estis magia loko, sed se vi iam scivolis kion tiu aparato estas en Harvard Science Center, ĝi estas ja parto de la Harvard Mark I, kaj ĝi estas sur ekrano tie nun dum la pasintaj multaj jaroj. Kaj kion vi vidos enigita en problemo aro unu estas rigardo malantaŭ la scenoj ĉe kio tiu aparato faris kaj faras, de Profesoro Harry Lewis, kiu estas en la komputika fako tie. Do pli en kiuj en nur iom. Sed hodiaŭ ni komencas transiro de lasta semajno al tiu, kaj ni alportos mencio de unu foton tie tio estas vere sufiĉe fama. Ĉu iu scias kion tiu jen sur la ekrano? Almenaŭ laŭ mito. Yeah. Publiko: La unua viruso. DAVID J. Malan: Do ĝi estis supozeble la unua fakta eraro en komputilo. Nun en realo la vorto cimo, por eraro en programo, estis kun ni dum kelkaj tempo en la fizika mondo, kaj tiu estis unu el la unuaj dokumentis tempoj kie iu reale deŝiris grandan tineo el la Mark II komputilo, metis ĝin en la aglutinante, kaj tiam registris ĝin kiel la unua konata cimon esti reale trovis fizike. Do tiele eniris ke en hodiaŭa popolscio. Ĉion de lasta semajno estas havebla rete. Aparte rimedoj kiujn vi eble ne nepre rimarki, speciale se venos tien en persono. Do unu el la instruado uloj ĉiun jaro faras kanonaj aro de notoj, tial vi ne bezonas teni vian kapon malsupren, provante transskribi plej ion kiu eble okazos ĉi tie en klaso. Do rimarkas ke tiuj tn [? Scribd?] Notoj estas rete, certe la lumbildojn kaj fontkodon ke ni uzas en klaso. Ni faras plenan tekston transskriboj havebla ankaŭ. Do se vi pigre memoras iuj termino, kaj volas rigardi ĝin iom pli vole, rimarkas ke ĉiuj de kiu estas serĉeblaj rete. Tiel kiel walkthroughs ankaŭ. Efektive, hodiaŭ ni komencas rigardi pli malalta nivelo programlingvo, baldaŭ por esti konata al ni kiel C, kaj ĝi estas tre facila al ia perdiĝas post nur kelkaj momentoj tempo, kaj tiam ia miraklo kiom ni efektive atingis iun pli kompleksa ekzemplo de la plej simplaj. Kaj tiel realigi Ni ĉerizo pick dum klaso iuj de la reprezentaj ekzemploj, sed konscias ke tiel pli ankaŭ havebla enreta do vi povas labori tra ĝi ĉe via propra ritmo, tamen vi estas plej komforta. Sed ni cxesis kun programoj kiuj estis ĝuste tiu. Do mi klakas la verdan flagon, kaj kion signifas tiu programo fari? Diras, saluton, mondo. Ĝi faras la kato diri saluton en sia malgranda mondo sur la supron maldekstra flanko el Scratch la uzulinterfaco. Sed ni komencis enkonduki iuj terminologio pasintsemajne. Kaj do, aferoj tiel ni nomas kion? Kio povus esti la termino genérico por tio? Yeah. Maniero aŭ deklaron. Certe, ĝi estas ago. Ĉu ĉi. Kaj tamen ekzistis aliaj formoj grati, krom tiuj tn deklaro, ili ankaŭ aferojn tiel, ke ni nomas kion? Yeah. Do buklo. Kaj en ĉi tiu kazo, ĉi tiu afero ripetoj, evidente, 10 fojojn. Tie estas ĉiam bloko. Ekzistas kelkaj aliaj. Kaj hodiaŭ ni tuj vidos kiel traduki tion al pli moderna mondo, se vi volas, eĉ se ĝi estas tuj aperas unuavide esti multe pli arcano. Sed estis ĝuste cikloj. Kaj tiam ni havas aferojn kiel tiu, kiun havis tiu formo, kaj esence demandoj. Kaj ni rilatis al tiuj kiel kio? Publiko: Bulea esprimo. DAVID J. Malan: Yeah. Bulea esprimo. Iu kiu estas vera aŭ falsa, jes aŭ ne, unu aŭ nul, tamen vi volas vidi la mondon. Sed ni nomis tiujn Bulea esprimoj, kaj ni ilin ŝtopi en kondiĉoj, aŭ branĉoj. Kaj en la mondo de Nulo, ĉio bele interlocks laŭ ĝia formo, se ĝi faras logikan sencon tion fari, sed vi ne devas halti ĉe nur farante unu afero kondiĉe, vi povas havi proverba forko en la vojo kaj do ĉu tiu aŭ se la kondiĉo estas vera aŭ ne. Kaj tiam, kiel vi vidos, se vi ne jam, Vi povas eĉ nesto tiujn blokojn. Do Scratch kreskas plenigi la formoj ke vi eble volas enmeti en ĝin, tiel vi povas fakte esprimi plej ajna logiko ke vi volus fari. Nun kelkajn vortojn de anonco por ambaŭ tie kaj New Haven. Do Sekciigo komenciĝas hodiaŭ. La URL por ĉi tiu estas sur la kurso la retejo, por tiuj nekonataj. Sekcioj estos ŝanco kunvenu en multe pli intima medio ol [? Sanders?] Permesas, kun 10 al 20 samklasanoj kun instruante ulo ĉe malsamaj aŭtoveturejoj, kaj malsamaj paŝoj, se vi tiel elektos. Efektive la kurso proponojn malsamaj sekcioj por tiuj malpli komfortaj, pli komforta, kaj ie inter, kaj la rolo de thumb tie, estas ekzistas neniu formala difino, sed se vi estas malpli komfortaj, vi ia scias. Vi estas iom kuraĝa pri la ideo de tretante piede, eble, reen en la klasĉambro, aŭ montrante supren al intere sekcio. Se vi estis programado ekde vin estis ses jaroj maljuna, pli komfortaj, eble al vi. Kaj se ĝi estas speco de ĵeton-supren, Tio estas ĝuste kio la intere estas intencita esti. Nun, intertempe, por klaso tiu grandeco, ĝi prenas nin sufiĉe tempo por sekcio ĉiuj, tiel ni tn, súper sekcioj, venante ĉi semajnfino kaj frua sekvanta semajno, Sekve preni rigardi la kurson de afiŝinto por tiuj, kiuj estas kompreneble larĝe, kaj ankaŭ filmita por tiuj kiuj ne povas fari ilin. Kaj sekcioj mem komencos en semajno tri de CS50 nulo indekso. Problemo aro 0 estas jam sur la kurson de afiŝinto. Kaj rimarki ke vi ja devas naŭ malfrue tagoj ĉi semestro. Do tio estas ĝisdatigo de fina jaro, kiam ni havis kvin malfrue tagoj. Do se vi scivolas, ni havos naŭ problemo aroj. Vi havas naŭ malfrue tagoj, ĉiu el kiuj vi povas nur elspezi por semajno plu. Tio efike faras ĉiuj la problemo aroj pro vendredo, sed la celo estas meti iom bita de psikologia premo sur vin provi akiri aferojn en ĵaŭde ĉar kiel vi baldaŭ malkovros, por bone aŭ por malbone, plej ĉio en la programara mondo finas prenante multe pli longe ol vi anticipas. Do konsideras ian de ŝanco por helpi mem celi Sportoj sed preni komforto en tiu, jes, ĉiu debeto Vendredo. Se vi submetas ilin sur Ĵaŭdo, jen mirinda. Mankas bonus punktoj aŭ ekstra kredito por renkonti tiun templimon. Ĝi signifis esti lambastono nur. Kaj oficejo horoj, ambaŭ tie kaj en New Haven, persone, se vi ŝatus renkonti kun iu el niaj kursoj instruado uloj kaj CAS por asistado. Bone. Do nun, ni faru ĉi pli reala. Kaj dum momento ĝi tuj komencos preni iom pli arcano, sed tre rapide vendrede kaj sekva semajno ni estos kapablis fari tiel multe pli ol ni povis tiel malproksima en Scratch. Do ni enkondukis kodon lasta semajno, kvankam pictoral. Estis enigmo pecojn. Kaj ni formaligita ke estas iu nomita fontkodon, sed estus ja aspektas? Nu, ĝi aspektis iom io tiamaniere. Kaj, fakte, nur speco de turmentus kie ni povas iri kun ĉi tiu. Mi tuj iros antaŭen kaj malfermu fenestron tie, kaj mi simple tuj elekti novan dosiertipon. Kaj mi tuj savi ĉi dosiero kiel ion kiel saluton dot c. Pli sur tiu elekto de vortoj en nur momento. Kaj jen kiel iu povus irad skribanta programon. Inkluzivas normo / S skalara h, int main malplenon, kaj tiam malfermita krispa streĉa, proksime krispa krampoj, printf saluton komo mondo, backslash n, punktokomo, Konservi, farita. OK. Mi verkis mian unuan programo, sed tuj esti nekredeble underwhelmed ĉar kiam mi reale kuri ĉi programo, kompreneble, per unua skribo fari saluton, kaj tiam dot oblikvo saluton, kaj ni iri tra tiu en multe pli detale en momento, nenio faras. Ne krevas malferma ajna fenestroj. Ĝi ne faras nenion aparte imago. Ĉiuj faras estas kion mi rakontis al fari, sed kiel ni atingos tion? Kiel do ni konstruos sur tiu? Nu, ni enkonduki kelkajn malsamaj konceptoj tie. Do unu, ni estas komenconta uzante programon nomata tradukilo. A tradukilo ekzistas por Mac VIN, Windows, Linukso, ajna kvanto de mastrumaj sistemoj, kaj ni baldaŭ prezentos vin al la medio kiun ni uzos, sed tradukilo estas nur ĝenerala termino por peco de programaro kiu prenas fontkodo kaj produktas celkodo el ĝi. Alivorte, se vi havas kiel enigo via fonto kodo, simile kiel tio Mi nur tajpitaj, ĝi finfine produktas celkodo. Kaj celkodo estas vere nur fantazio maniero diri ĝi eligas nulo aj kaj onian. Alivorte, fonto kodon, kvankam ĝi estas tuj serĉos iom arcano, kaj iom malpli amika ol Scratch unuavide, ĝi estas almenaŭ io ke ni homoj povas kompreni. Ĉio aspektas kaj sonas Angla kvankam ĝi estas tre konciza. Dum programado en nulo aj kaj onian, kiel niaj antaŭuloj devis vidi, antaŭ kelkaj jaroj, ne estis aparte amuza defio. Kaj tamen, jen kion la komputilo ankoraŭ komprenas. Do kompililo prenas nin de fontkodon celkodo. Estas kiel malfermante dosieron kun la tradukilo, kaj kiam vi konservos ĝin, vi ricevas tiujn nuloj kaj aĵoj. Do ni vidos kiel fari ke en nur momento. Sed ni nun provos havigi transponti inter pasintsemajne kaj tiu, por ke tiel same, kiel ni akiras pendigis sur aĵoj kiel krispa krampoj, kaj punktokomojn kaj krampoj, kaj ĉiuj tiuj intelekte interesa aspektoj de programado, kiu tre kompreneble stumbli personoj frue sur, konscias ke ĉiuj la ideoj hodiaŭ, estas la sama kiel lasta. Do lasta, ni vidis tiun ekzemplon tie, Saluton Mondo programo. Nu, hodiaŭ, se ni volas implementar tiu sama programo, ĝi tuj aspekti iom io tiamaniere. Kaj ni klarigos antaŭ longa kion int, kaj ĉefa kaj dezerta, kaj ĉiuj de tiu estas, sed almenaŭ mi vidas tie jam la familiara Saluton Mondo. Dume, aferoj kiel funkcio, diri saluton, Estas tre simple tuj estos tre simpla aserto kiel tio. Printf saluton mondo, kun iuj citaĵoj, kun backslash, kun punktokomo, sed pli sur la venonta. Masxojn, dume, tiu estas ciklo, kiu, kompreneble, diras saluton mondo eterne, kaj ĉi tiu tuj aspekti iom weirder ol en la lasta, sed se mi diru ion kiel, dum veraj, mi tiam povas presi Saluton mondo denove kaj denove kaj denove kaj denove. Kaj tiam kiel vi povas speco de komenci konkludi tie, ĉi konvencio uzi krispa krampoj estas speco de kiel brakumante la dentado linion de kodo tie. La printf linion de kodo tre kiel la flava enigma peco super. Do ni ne tuj diri ĉiam, Ni tuj diru dum vera, sed ni vidos kial tio estas en nur iom. Dume, se ni havas buklo kiel tiu, kie vi ripetu ion finia numeron fojojn, ĉi tiu estas tro tuj prenos iom alkutimiĝi al, sed ĝi tuj diros por int i ricevas nulon, mi malpli ol 10, i ++, kaj tiam printf denove. Sed tuj estos ŝablonoj. Kaj por tiuj de vi konataj kun AP Computer Science, aŭ Java, aŭ ajnan numeron de aliaj lingvoj, preskaŭ ĉiuj el ĉi tiuj konstruoj tiel longe aspektu plejparte familiara. Do variablo. Do jen simpla Scratch eltiraĵo ke prende variablon nomis nombrilo al nulo, kaj tiam por ĉiam diras la vendotablo, kaj tiam ŝanĝu la nombrilo de unu. Do ĝi komencas kun nul, kaj tiam unu, du, tri. Nu, kiel povus ni enkonduki ke en tiun novan lingvon iom simile? Int counter egalas nulo, dum vero, kiu estas tiu sama ideo de antaux fari ion por ĉiam, kaj mi simple tuj printf. Kaj nun ĝi iĝas iom stranga, procento i, sed pli sur tiu estonta, sed tiuj ideoj estas tute samaj. Ni ĝuste nun havas adheri al la sintakso ke la komputilo estas tuj postulos de ni. Bulea esprimo, ion kiel sx malpli ol y, aŭ x malpli ol y, kaj y malpli ol z. Ĝi tuj rigardi iom io kiel tiun, kun krampoj nur kiel en matematiko por bona mezuro al ĵus certigi ke la ordo de operacioj kiel ni intencas. Kaj nun, kondiĉoj. Do se x malpli ol y, parolu x estas malpli ol y, alie se x estas pli granda ol y, diru x estas pli granda ol y, alikaze logike, x devas esti egala al y. Do vi povus apliki io tiamaniere en Scratch, aŭ vi povus apliki en ĉi tiu sintakso. Kaj denove, la krispa krampoj estas speco de donante nin la sama formo kiel la enigmo pecoj, sed la sintakso, nun, estas eble komencante sekvi iuj ŝablonoj. Do, kion signifas ĉi al ni ĉi tie? Do ni estas reen tiam ĉe nia ĉefa programo. Ni fakte, nun, fari ion per ĝi. Do en tiu unua linion ni vidas akraj inkluzivas, normo / S, dot h, kaj tiam iuj strangaj angulo krampoj sub tiu. int main malplenon, kaj tiam printf saluton mondo. Do simple prenas paŝon. Iu kiu neniam planita antaŭe, almenaŭ klarigi unu el tiuj linioj. Uzante eble iuj el la ĵargono de lasta semajno. Kio estas printf, ekzemple? Yeah. Spektantaro: [inaudible] DAVID J. Malan: Yeah. Estas funkcio, aŭ deklaron, de lasta semajno terminologio. Kaj ĝi estas ago ke estas fari ion. Nun ĉi tiu funkcio, aŭ ĉi deklaro, faras ĝi ŝajnas preni ian enigo? Kaj en kiu senco faras ŝajnas preni enigo, se jes? Enigo, kion mi celas per tio? Yeah. Spektantaro: [inaudible] DAVID J. Malan: Yeah. Do Scratch el kelkaj puzlo pecoj kie vi povas parametrize ĝin. Vi povus rakonti la ripeto bloki kiomfoje ripeti, tiel ke estis enigaĵoj de varoj, kaj ĝuste kiel Scratch havis iom blanka lokokupilo cxar la nombron vi tajpas, do ni uzu en ĉi teksto mondo krampoj doni al ni ke cirkla formo en kiun ni povas konekti nia enigo. Post ĉiu, dekoj da jaroj kiam tiu lingvo, nomata C, estis inventita neniu anticipis ĝi estas unu el ni, tiuj kelkaj jaroj poste, ni preferus bezona funkcio kiu diras saluton. Dekstra? Estus agrable, se estus aro enigmo pecon, aŭ ŝlosila vortoj, ke nomiĝas saluton, ke laŭvorte nur diras saluton. Sed ni ne bezonas tiun. Ni povas havi ion multe pli malalta nivelo, kiel genérico presaĵo komando, kiu prenas enigo, kaj presas kion ajn ni volas. Do rimarki nun la mastro ke komencos aperi. Malfermita paren, proksime paren estas ŝajne brakumante la enigo, kaj tiam mi vidas duoble citaĵoj sur ambaŭ finoj. Ankoraŭ stranga backslash n, sed espereble nun vi povas komenci bildigi almenaŭ tio printf prenas en iu formo de enigaĵo. Ne kiel uzanto amika kiel Skrapi, sed estas nur kiel esti ŝtopita en iun valoron tie. Bone, nun ni vere fari ion kun tiu. Do iuj el vi povus scii de havanta shopped la klaso antaŭ, babilis kun amikoj, ke por multaj jaroj ni uzis ion nomatan la CS50 aparaton. Ĉi estis termino priskribanta teknologio nomita virtuala maŝino, kiu estas peco de programaro kiu via antaŭuloj estus elŝuti off la kurson de afiŝinto senpage. Ili ankaŭ elŝuti libera peco de programaro nomita hypervisor, iu nomita kiel VMware, aŭ VirtualBox, aŭ ajna nombro de aliaj iloj, kaj sur ilia Mac aŭ PC aŭ kio ajn komputilo ili havis pasintjare kaj en la jaroj pasintaj, ili duobligus klaku ikono kuri ĉi programaron nomata hypervisor. Kaj tiam ene de tiu programo ili malfermus la CS50 aparaton. Kaj la efiko estis ke ĉu antaŭulo de la via estis kurante Mac VIN aŭ Fenestroj, li aŭ ŝi tiam poste havis novan fenestron sur iliajn ekrano kuranta CS50 la medio. Do virtualan maŝinon permesas kuri unu operaciumo ene de alia, kaj tio estas ĝuste kion ni faris. Dum la plejparto de la kurso ni uzi mastruma sistemo nomita Linukso, specife Ubuntu Linukso kaj ĉi Estas tre agrabla maniero en jaroj pasintaj de certigante ke ĉiuj en la kurso nur havis la saman medion. Kaj vi povas uzi ajnan tipon de komputilo ke vi efektive volas. Inter la downsides, kvankam, estis ĝi estis kiel du gigabajtoj elŝuti ĉi afero. Ĝi ne nepre laboros super bone sur personoj kies komputiloj kiuj eble nur havis gigon aŭ tiel de RAM, aŭ ne tro multaj gigaherco de CPU rapido, kaj tial ĉi tiu jaro, por ĉi tiu kaj aliaj kialoj, ni estis transitioning al tiu medio. La tielnomata CS50 IDE, kiu estas bazita sur libera programaro, kaj apogita platformo ke entrepreno nomita Cloud9 subtenas en Eŭropo, kiu permesas nin havi esence ke ĝusta sama medio kiel en jaroj pasintaj, sed en la tn nubo. Do kio estas la nubo? Vi verŝajne klakis lia ikono en via Mac aŭ PC. Kio estas la nubo? Yeah? Iom pli laŭte. Yeah. Ĝi estas nur aro de komputiloj aliloke ke stoki datumojn kaj kuro programaro kaj similaj. Do estas vere nur al la vorto de jure priskribi [? rentable?] komputiloj kiuj vivas aliloke. Ke vi mem, ne nepre posedi. Do kiam viajn datumojn, aŭ via programoj estas en la nubo, ĝi nur signifas ke estas sur iu alies komputilojn aliloke, kaj ne, plej verŝajne, en via fizika tekkomputilo aŭ surtabla. Kaj tiel tio estas kion CS50 IDE nun estas. Nun vi devos iri al certa URL kiu enkondukos vin al, en problemo starigis 1, poste tiu semajno, ke tiam, sur ensalutadon, al vi tiun medion. Kaj multe kiel Scratch havis kelkaj malsamaj paneloj implikita, Do faras CS50 la IDE havas ekzakte tion. Sur la supron maldekstra flanko ĉi tie, vi estas tuj vidos familiara dosieron retumilo. Do iu el la dosieroj kiujn vi metis en tiun medion estas ĝuste tuj estos listigitaj tie. Dosieroj kaj dosierujoj. En la supra dekstra tie, vi tuj vidos lokon kie vi povas reale skribi vian kodon. Komence en C, poste en la termino en PHP kaj Javascript, kaj, eble por fina projektoj, Ruby aŭ Java aŭ Python aŭ ajna nombro de lingvoj estas apogita en tiu medio. Ĝi ne estas ĉe ĉiuj ligitaj al CS50 specife. Kaj poste en la fundo angulo tie, speciale por tiuj pli komforta, vi havas ion nomata terminalprograo. Kaj tiu fina fenestro permesas vi ekzekuti iu komando ke vi deziras en ĉi tiu nubo medio. Ĝi permesas vin instali neniu plia programaro ke vi volas ĉar vi tn radiko, aŭ administranto privilegiojn. Do alivorte, eĉ se tiu estas finfine gastigita en la nubo, kaj kvankam ni havas simpligita ĝin iagrade defaŭlte, laŭvorte enkondukante, danke al Dan Armendáriz, kaj Dino, kaj Dan Bradley sur CS50 la teamo super la pasinteco multaj monatoj, malpli komforta mode kiu kaŝas multajn de la komence konfuza distroj. Ĉio tie ekzistas al reprezentas tipan komputilon sistemo ke vi povus uzi en la reala mondo. Do kio faras ĉi ĉiuj signifas, kaj kion ni povas reale fari kun ĝi? Ni fakte preni peek ĉe programo. Do mi tuj malfermos la fakta medio tie, kiu estas nur nia Chrome retumilo, kiu povus esti Firefox, povus esti Internet Explorer, aŭ alian retumilon tiel. Ĝi estas plena kribrita tie por la momento. Kaj mi volas reale turmentus dise kion tiu programo estis. Do ni rigardu, de zoom en supren pinti, ĉe kio mi faris, kiel mi alvenis tie. Do jen tiuj ĝusta samaj linioj de kodo. Do tiu estas la deklaro, kiel vi menciis antaŭe. La funkcio kiu diras saluton. La buklaj krampoj, sur linio kvar kaj linio ses, supozeble speco de envolver tiu linio asocii ĝin kun la esenco de mia programo. Do ja, ĉi ŝlosilvorto ĉefa, tio estas supren tie sur linio tri, Vi povas pensi ke kiel la ekvivalento de kiam verda flago clicked, bloki en Scratch. Do jen ĉio ni havas ĉi tie, estas kiam verda flago clicked, presi, aŭ diri, saluton mondo. Sed ni prenu diveno, nun, ĉe kio tiu unua, pli arcano linio, estas. Sharp inkludas, malferma angled krampo, normo / S skalara h, fermi angled krampo. Kio estas ke eble faras, speciale se vi planas antaŭe en iu alia lingvo. Yeah? Spektantaro: [inaudible] DAVID J. Malan: Yeah. Ekzakte. Do tiu estas donanta vin aliri al biblioteko, por tiel diri, de funkcioj. Kaj biblioteko de funkcioj estas funkcioj ke iu alia skribis, ĉu ĵus aŭ antaŭlonge, por ke vi ne devas reinventi la radon. Ekzemple, ni ne devas scii, en 2015, kiel skribi kodon kiu metas karaktero sur mia ekrano. Iu alia kalkulis ke evi la printf funkcio por ke mi povas ordigi de abstrakta for de tiu, aŭ tavolo aldone lian aŭ ŝian kodo, kaj nun nur prenu por donita ke ajna programo mi skribas povas printi ion por la ekrano. Do tiu unua linio tie en paŝo unu inkludas la tn kaplinio dosiero por la norma biblioteko. Do vidu, la lingvo en kiu ni nun laboras havis norma biblioteko kun multaj funkcioj. Printf estas unu el ili, kaj tiu unua linio de kodo signifas doni al mi utiligi tiuj funkcioj, tiel ke mi ne devas reinventi ke rado. Nun ni iru al la malsupra fenestro kaj fari precize kion mi faris antaŭe. Antaŭ momento, kiam mi estis whizzing tra la kodon, tajpante ĝin unuafoje, Mi tre rapide tajpas, fari saluton. Kio estis tio ĉio pri vi divenas? Kion mi faris? Yeah? Ne gravas. Estas bone. Yeah. Publiko: Kompilado ĝin. DAVID J. Malan: Yeah. Estis nur kompili ĝin. Dekstra? Eĉ se tio estas tute nekonataj al vi, estas sufiĉe Angla kiel. Ĝi certe ne nuloj kaj aĵoj, do mi ankoraŭ devas kuri ĝin tra tiu tn programo, compilador, ke tuj preni ĝin kiel enigo kaj produktas eligo. Kaj almenaŭ, nuntempe, en tiu Linuksa medio, sed tio ne estas kondiĉo, ĉi estas ĝuste kie ni komencu, vi ĝenerale interrilati kun komputilaj sistemoj kiel ĉi per tn komandlinio. Do kun parpadeo prompto kaj via klavaro, kaj ne tiom via muso, kaj ne tiel fenestroj kaj ikonoj kaj menuoj, prefere ĉiu estas teksta. Kaj eĉ se ĉi sentas, unue rigardo, eble, kiel paŝo malantaŭen, ĝi estas fakte multe pli potenca kaj esprimplena maniero de kontrolado de komputilo precipe ĉar vi mem, fariĝis pli komforta de malpli. Ĝi tuj permesos fari multajn pli da aferoj ol nur kion Microsoft aŭ Apple permesas fari kun ilia grafika mastruma sistemo. Do kiam mi batis Enter, nun, nenio okazas ĉi tempo ĉar ŝajne la programo saluton estas ĝisdata. Kaj kio estis la komando Mi kuris post tio? Dot oblikvo saluton kaj saluton mondo. Nun ni prenu paŝo malantaŭeniri por nur momento. Ĝi rezultas ke fari saluton estas nur simpligita formo de kompili programo. Ni simple enkonduki unu peco de slango, sed poste malproksimigi de ĝi, ĉar ĝi ne estas ĉiuj ke interesa por hodiaŭa celoj. La tradukilo ni tuj ekuzi nomata Clang, por la C lingvo. Kaj tiu estas programo kiu estas kuri nur kiel ni faris ĉe la komandlinio tie. Kaj do se mi volas kompili programon kiu mi skribis en dosiero nomata saluton punkto c, mi laŭvorte simple tajpu tin saluton c eniri. La amuza afero estas, pro historiaj kialoj, se mi ne specifas la nomo de la programo ke mi volas elirigi, se mi ne agos specifi dosiernomon por nulojn kaj aĵoj, tre stranga konvencio estis adoptita jarojn kie sentis specon de bona respondo tiutempe, bone ni nur arbitre nomi la unua programo ni kompilos punkto ekstere. A venas unue en la alfabeto. Ekstere, ĝi estas la eligo. Do ni nomos la programo defaŭlte punkto ekstere. Kaj tio estas bone ĉar se mi volas ruli la programon en tiu teksto bazita medio, mi nur tajpas dot oblikvo punkto eksteren eniri. Kaj ĝi kurus precize kiel antaŭe. Do ni vidas ke reala rapida. Do se mi reiros al mia fontkodon en CS50 IDE, kaj mi anstataŭ fari tion, tin saluton lito c eniri, avizo nenio ŝajnas okazi, sed preskaŭ ĉiam en tiu Linuksa medio, kiam nenio malbona ŝajnas okazi, ke signifas ion bonan reale okazis. Se vi ne vidas eraron mesaĝo, ĉiuj estas probable bone. Kaj efektive, se mi nun faros dot oblikvo punkto eksteren eniri, mi kuros mia sama programo. Mi ankoraŭ havas la saluton programo el fruaj ĉar ja ĝi estas tuj estos tiel multe pli agrable ĵus tajpi fari anstataŭ memorante tiujn sorĉojn de komandojn, sed ni vidu kiel ni povus plibonigi sur tiu, tamen. Do, tiu estas la komando kompili la kodon. Jen la komandon lanĉendan la kompilita kodo poste. Kiel mi povas specifi dosiernomo? Nu ni nur enkonduki pli peco de slango. Kiam vi estas en tiu teksto bazita medio, vi tuj volas specifi aĵoj nomata komandliniajn argumentojn. Kiu estas nur fantazio maniero diri: Alivorte ĉe la prompto ke tweak la konduto de ajn programo vi uzas. Do konkrete la programo mi estas kurante, skribante la nomon tin, estas la programo nomata Clang. Do tiu estas aŭ la malnova lernejo ekvivalento de duobla musklako sur Microsoft Word aŭ iu programo piktogramon. Mi anstataŭe simple tajpante lia nomo, sed en ĉi tiu versio de la comandos, Mi tiam havi haltostreko o spaco saluton spaco saluton dot c. Do eĉ se vi neniam ludita en tiu mondo antaŭ, nur preni diveni kion does haltostreko o saluton fari? Aŭ kio faras ĝi diri tin fari? Yeah. Spektantaro: [inaudible] DAVID J. Malan: Yeah. Ĝi simple metas la dosiero eligo esti saluton anstataŭ la pli stultaj punkto ekstere. Kaj efektive, ni provu tion. Do, se mi nun faras, unue ni faru tion, r m saluton. Tio forigos. Kaj ĝi tuj diros forigu regula dosiero saluton, kiu estas nenecese arcano, sed nur per ĉu vi volas forigi la dosieron, kaj mi tajpas y por jes. Kaj rimarki, se vi ekrigardante supro maldekstra, ĝi malaperos el tie supre. Permesu al mi fari tin haltostreko o, kaj Mi tuj iros antaŭen kaj fari saluton, en ĉiuj kaskedoj, saluton dot c. Nun, se mi faros dot oblikvo saluton, kion vi atendus? Eble estas usklecodistinga. Eble estas ne. Ni vidu. Ne tia dosiero aŭ dosierujo. Kaj ni povas ia cheat per nur rigardante supre maldekstre. Kion faris mi evidente savi la programon kiel? Ĉiuj ĉapoj saluton. Do efektive, jen irante por fari diferencon. Do nun saluton mondo estas reen. Nun tiu estas ĉiuj belaj kaj bonaj kaj ĉiuj tre menso-numbing, al ia get enkaĉiĝis en tiuj detaloj, sed komprenu ilin estas bona. Tajpado el tiuj pli longa sorcxojn ne tuj estos aparte amuzo, do homoj en la mondo inventis alia programo, antaŭ kelkaj jaroj, nomitan fari, ke sufiĉe simple permesas tajpi konsiston, la nomo de la programo vi volas fari, kaj fari estas inteligenta en tio ĝi aspektos en la aktuala dosierujo, alinome dosierujon, kaj se vi havas dosieron nomata saluton punkto c, kiu estas la dosiero ĝi kompilos por vi en programo nomata saluton. Do estas multe pli simpla maniero de fari la pli kripta komandojn ke ni faris antaŭe. Kaj ni havas pre-konfigurita CS50 IDE scii Ke gxi faru haltostreko o kaj kelkaj aliaj flagoj, aŭ komandlinio argumentoj, ke ni vidos post nelonge. Sed ni nun reale fari io pli interesa. Nur tajpanta eksteren saluton mondo tuta la tempo ne estas ĉiuj ke konvinka. Do lasu min antaŭeniri kaj ŝanĝo tiu programo kaj dirus, saluton David. Nun mi tuj iros malsupren tie. Mi tuj iros antaŭen kaj ja faras saluton. Kaj denove nun vi vidas fari estas montranta vin la longaj sekvenco de ordonoj kiuj ĝi estas faras ĉar ni antaŭ-agordita ĝin tiel, sed ni bezonas ne maltrankviliĝu nun kio ĝi estas faranta alia kiu estas kompilado dot oblikvo saluton, saluton mondo. Kio okazas? Yeah. Spektantaro: [inaudible] DAVID J. Malan: Jes. Do, noobie eraro. Mi rimarkas ĉi estas ekstra subtila, sed la asterisko tie, en la langeto, nur signifas ke vi ne savis lin, kaj retumiloj kaj aliaj programoj fari tion kelkfoje. Do kontrolo s aŭ komando s devus savi ĝin. Nun lasu min antaŭeniri kaj re-ruli la programon. Recompiled. Bone, do ĝi estas multi-paŝa procezo. Neniu el kiuj estas aparte kompleksa, sed iam ni ŝanĝi la dosieron, ni bezonas ŝanĝi la rezultan nuloj kaj, kaj dot oblikvo saluton. Ravi. Do tiu estas tre underwhelming ke ni ĵus presita ekster tiu. Ni fari aferojn iom pli dinamika, nun. Nu rezultas, ke ŝatas Scratch, C subtenas variabloj. Kaj ĝi rezultas, se vi volas havi variablo kiu stokas, Ne nombro kiel ni tipe faris kun Scratch, sed kiel vorto, aŭ frazo, aŭ nomo, vi povas specifi ŝanĝiĝema esti de tipo kordo. Do ni vidos pli de tiujn en nur momente, sed ĝi rezultas ke C, kaj multajn lingvojn kiel ĝi, havas tre specifajn tipojn de variabloj. Ĝi estas ne nur ŝatas algebro, kie vi ricevas x, y, kaj z kaj tiuj estas nur ĉiam numerojn, en programlingvo vi povas stoki numerojn, vi povas stoki individuajn karakterojn, vi povus stoki tutaj vortoj, vi povis stoki tutaj bildoj, tutaj sondosieroj, kaj similaj. Do ni bezonos specifi kia la tipo de variablo estas niaj. Kaj per konvencio Mi tuj alvokos Mian ŝanĝiĝema s nur ĉar ĝi estas konciza, kaj s staras por kordoj. Kaj tiam mi tuj stoki ene de ĉi variablo, nur ŝatas kun Scratch kiam mi uzas la aro bloko, Mi tuj uzos la asigno operatoro en C, kiu bele sufiĉa estas la egala subskribi, sed la egalsigno tion faras. Ĝi movas ion de dekstre en la maldekstra flanko de la esprimo. Do kion mi faris, puraj linio kvin, estas mi deklaris variablon. Mi jam rakontis la komputilo, donu al mi memoro por variablo, nomu ĝin s, kaj scii anticipe, ke mi tuj esti metante ĉenon en ĝi. Kaj linio estas nur sekvenco de karakteroj. Estas vorto, aŭ frazo, aŭ paragrafo, sed estas sekvenco de karakteroj. Ĝi ne estas nombroj. Kio kordoj estas mi iranta esti metante en tiun variablon? Nu, ŝajne citi unquote, "Hannah". Nun rimarkas la mastro kiu estas aperanta. Ekzistas maldekstra mano esprimo. Ekzistas dekstra mano esprimo, disigitaj de la egalsigno. Kaj nur preni diveni, se nekonata tamen, kun kio la punktokomo estas faranta. Kio ĝi supozeble faras por ni? Yeah? Spektantaro: [inaudible] DAVID J. Malan: Yeah. Ĝi simple finanta la linio. Dekstra? La komputiloj volas esti malkaŝeme rakontis, laŭvorte, kion fari. Kiel la arakido butero kaj ĵeleo sandviĉo ekzemple, se vi ne specifas precize kion vi intencas, ĝi povus esti lasita al juĝo aŭ eraro. La punktokomo signifas, jen ĝi por tiu komando. Ĝi estas estanta ekstra preciza, kaj ĝi estas tre facila afero halti. Do nun tiu programo ne ŝajnas esti kondutanta ajna malsame ol mi fari ĝin pli dinamika. Do anstataŭ malfacile povis miajn proprajn citi, lasu min metis lokokupilo valoro. Kaj ĝi rezultas ke, kaj mi konas ĉi el leginte la dokumentadon, kaj uzis la funkcion por jaroj, ke printf estis desegnita esti dinamika. Vi ne devas scii anticipe kio vortojn vi volas meti en ĝin. Vi povas anstataŭ havi lokokupilo, kiel procento s, kiu tuj rakontos la komputilo, metis ĉenon tie. Kiun kordoj do ni volas meti tie? Volo rezultas ke inter tiuj parentezoj, kiu memoras, DeMarco la enigaĵo al funkcio, se vi havas komo apartigis liston de aferoj tie, ni efektive pasas en multoblaj enigoj al funkcio. Do simple deziras iom Scratch blokojn, vi eble ne ludis kun ili por viaj projektoj ankoraŭ aŭ tute ne, iuj Scratch blokoj havas du enigoj. Du blankaj skatoloj vi povas tajpu nombroj aŭ vortoj en. Do por tio C havas funkciojn kiel printf kiu povas preni du enigoj. Kaj denove, ĉi komo disigas ilin. Do en la angla, denove eĉ se vi neniam planita antaŭe, per tiu logiko printf estas funkcio, prenas du enigoj, unu el kiuj estas lokokupilo, kion vi esperas printf tuj faros kun ĉi enigo? Ĝi tuj diri saluton Hannah, espereble. Do fari tion ni bezonas por savi ŝin. Mi tuj malzomi. Mi tuj reiri malsupren tie kaj diri, fari saluton eniri. Oh. Io malĝustas, kaj reale ĉi estas tute blindiga. Mi havas ses liniojn de kodo kaj kiel 12 linioj de eraroj. Do, atendas tion. Do kio okazas ĉi tie? Do la plej bona regulo de thumb tie, Precipe kiam vi estas elkomencanta, ne get distritaj de la frandajxojn cxe la malsupro. Fakte, mi tre konscie nur scrolled supren ĉar tre ofte, komputilo estas Ne ĉiuj kiuj brile de aparato. Ĝi tuj get konfuzita. Se ĝi vidas unu afero ĝi ne komprenas, ĝi povus miskompreni aliaj linioj de kodo kiel malĝusta, eĉ se ili estas perfekte bone. Do vi ĉiam volas labori pinti malsupren tra la eraroj. Kaj rekoni ĉi estas súper arcano nuntempe. Eraro, uzo de nedeklarita ensalutilo kordo. Ĉu mi signifas normo en? Ne, mi volis diri kordo. Kaj ĝi estas indikante ĉe, eble estas tajperaro. Ia kiel, literumado en tre geeky maniero, sed la kialo tie, kaj vi rekonos tiun nur praktikon, estas ke ĝi rezultas ke kordoj ne ekzistas en C. Fakte, C estas aparte malnova lingvo, kaj ĝi estas tre malalta nivelo, kaj ĝi faras ne multaj trajtoj ke vi eble kreskis kun se vi havas, fakte, planita en Javo, kiel iuj el vi havas, sed vi povas instrui ĝin novajn aferojn. Kaj efektive, ni faris tiun CS50, kvankam antaŭ la fino de la semestro, ĉiuj tiuj trejnado radoj estos prenita for, kion ni faras en ĉi tiuj unua paro de semajnoj komence estas ni ankaŭ havas vi inkluzivas CS50 skalara h. Kiu estas kaplinio dosiero. Pli sur tiu en la estonteco. Ĝi estas dosiero kiu enhavas funkciojn ke ni skribis por vi. Kaj inter tiuj funkcioj estas funkcioj por interesigi enigo de la uzanto, kiel kordoj, kaj nombroj, kaj reelaj nombroj, kaj pli. Sed ĝi ankaŭ havas kelkaj fulmoklavoj. Ĝi difinas Bulea kiel datumtipo. C ne havas vera aŭ malvera. Sed ni povas doni al ĝi la nocio de vera aŭ malvera per vojo de ĉi tiu biblioteko. Kaj ĝi ankaŭ ne havas ĉenon enkonstruita ĝis ni inkluzivas tiun linion. Do ĉi tiu linio de kodo diras la tradukilo, hej, Clang, rigardi en ĉi dosieron por tuta faskon de kodo ke CS50 skribis por ke iu ajn uzanta tiun dosieron povas preni por donita la ĉefaĵoj ili aldonis. Do nun mi antaŭeniri kaj liberigi la ekrano, kaj se scivolema Mi nur diras kontrolo l ĉiu tempo liberigi la ekrano, aux vi povas tajpi klara. Mi simple tuj iri antaŭen nun kaj tipo fari saluton, kaj ĉio estas bone. Ankoraŭ arcano eligo, sed ĝi ne estas erara mesaĝo. Sed se mi faras dot oblikvo saluton, kaj kiel flanken, dot oblikvo estas nekonataj al plej. Ĝi simple signifas, dot rimedoj la aktuala dosierujo. Do se vi iam uzis DOS, aŭ Linukso aŭ Unikso vi eble faris ion kiel cd dot dot, kie dot dot signifas retropaŝi en tempo, aŭ iri al malantaŭen, aŭ pli alte en via dosierujo. Dot nur signifas rigardi la aktuala dosierujo. Mi volas saluton, kiu estas tie. Kaj efektive, nun diras saluton Hannah. Kaj se mi ŝanĝas denove al Maria, rekompili farus saluton, dot oblikvo saluton, la programo konstante ŝanĝiĝas. Sed tio estas ankoraŭ sufiĉe stulta programo. Se mi volas ekspedi ĉi programo, aŭ doni ĝin al amiko, aŭ doni ĝin al Maria aŭ Hannah por tiu afero, tio estas bone. Mi povas personecigi ĝin por ambaux, sed ĝi estas neniam iranta esti dinamika. Ili ne povas ŝanĝi ĝin iam ĝi kompilis suben al tiuj nuloj kaj aĵoj. Do kion ni faris ion pli lertan? Kio se, anstataŭ malmola-kodigon en la programo ĉi persono nomo, kio se ni nur akiras la kordo laŭpete? Do alivorte, lasu min fari tion. Mi tuj rekompili ĉi programo. Kaj lasu min zomi funde nun. Faru saluton dot oblikvo saluton. Nun nenio okazas. Ĉu ni povas ekhavi volontulon fari ion okazi? Venu supren. Kio estas via nomo? Pancho: Pancho. DAVID J. Malan: Pacho? Venu supren. Unufoje vi akiras ĉi tie, ĉi tiu estas tuj estos tre underwhelming, sed estas pli interesa ol mi tajpas ĝin. Se vi volas antaŭeniri kaj entajpu vian nomo, mi faris tiun programon nur por vi. Simple tajpu vian nomon. Enter. Mirinda. Bone, dankon. Pancho: Koran dankon. DAVID J. Malan: Bone. [Aplaŭdo] Tio estis tre afabla. Ĉi tie vi iras. Kion ni faru? Do ni fine, almenaŭ, faris tiun programon dinamika. Nun estas ankoraŭ certe projekte underwhelming, sed ni fine havas la kapablon nun skribi kodon anticipe, multe kiel la aŭtoroj de printf, kaj tiam dinamike Adapti bazita sur la enigo ni estas enmanigis, ĉu per la programisto, aŭ per la homo kiu fakte interagante kun la programo. Do ni vere nun provu fari kelkajn aliajn konstrukciojn kaj vidi se ni ne povas fari la programojn sin pli altnivela. Do ni iru antaŭen kaj anstataŭ skribi ĉi unu el nenio, Mi tuj iros en la hodiaŭa fontkodon, kaj ĉio ĉi Estas disponebla en la kurso retejo, kaj vi povas treni kaj faligi ĝin en via propra medio veni vendrede iam problemo aro 1 donas al vi la instrukciojn, aŭ vi povis fari ĝin en la komandlinio kiel bone, sed pli veni en p starigis 1. Ni vidu kio estas en tiu programo tie nomita, Cerasto punkto c. Nun mi jam komentis ĝin, sed kio novas? Je unua rigardo, kion linio de kodo estas absolute nova? Probable ne fundamente nekonataj nun. Spektantaro: [inaudible] DAVID J. Malan: Yeah, tiel int x egalas akiri n. Ni neniam vidis iun ajn de ĉi antaŭe, sed estas verŝajne int la simbolo por kia variablo, [? el?] entjero. Do int por entjero. Ĝi simple estante pli konciza. x estas simple arbitra. x kaj y kaj z estas ankoraŭ bela racia por nombroj, sed ĝenerale ni uzas vortojn iam niaj programoj akiri pli kompleksa. Get int, kompreneble, multe kiel get kordoj, Estas probable ricevos int de la uzanto, kaj tiam ni tuj fari la samon kun y. Kaj ŝajne, eĉ se tiu lasta linio, 24, aspektas pli kompleksa, ĝi tuj diri la rezulton de tiu kaj kiu estas tiu alia afero. Kaj rimarki procentoj i probable signifas kion? Kio rolo faras procento i ŝajne servas? Estas nur anstataŭiloj. Dekstra? Elcento s estis por arĉinstrumenta, procento i estas por entjero. Tie tuj estos procentoj f por flosanta punkto valoro, kiun estas nur nombro kun dekuma punkto. Alivorte, reela nombro. Do ni vere kompili ĉi plani reala rapida kaj ja faras vipuro. Whoops. Bonan ŝancon. Do rimarki tie, ĉiu ĉi tiu tempo mia uzanto nomo por tiu konto estas jharvard. Mi estas en CS50 IDE, alinome IDE50. Kaj nun en blua tie, estas mencio, sed de la medio, de kie mi estas. Kaj fakte, se mi zomi ĝis la supro tie, rimarki ke mi havas IDE50 kaj mi vidas tiun vorton, se vi ia turni vian kapon al la flanko, laborspaca. Unuvorte, la fakto ke Mi vidas supersigno oblikvo laborspaca signifas ke en ĉi tiu teksto bazita komando medio, Mi estas en la teksto ekvivalento de tiu grafika leterujo tien. Do kiam mi faras dot oblikvo vipuro, ĝi estas jene neniu regulo fari celo Cerasto haltejo. Mi ne scias kion tio signifas, sed estas malbone por iu kialo. Ne tia dosiero aŭ dosierujo estas eĉ pli klara. Kie do estas? Bazita sur kie mi klakis malfermi la dosieron antaŭe. Kie povus esti? Estas probable en fonto unu w, por merkredo, kaj mi povas vidi gxin ja se mi malfermas tion elpensis. Estas vipuro punkto c, sed en tiu teksto-bazita medio, denove, mi devas esti super eksplicita. Se mi volas ŝanĝi dosierujojn en fonto unu merkredo, mi bezonas tajpi, kd spaco fonton oni Merkredo eniri kaj nun mia prompto ŝanĝojn donu al mi vida cue ke Mi ja aliloke en mia medio, sed nun mi povas ja faras vipuro, ĝi ŝajnas funkcii, dot oblikvo vipuro, donu al mi entjero. Unu. Du. La sumo de unu kaj du estas tri. Sed se mi ne kunlaboros, ni vidu kio ricevas int faras. Donu entjero. No. Reprovi. OK. Fine. 50. 50. Bone. Do fine kunlaboras. Kaj tio estas iuj de la funcionalidad kiu tiuj funkcioj povas esti konstruita por vi. Do ene la efektivigo de atingi int, kion programado konstrui de lasta semajno estas probable en tie devigi ĉi konduto de Retry, reprovi, reprovi? Jes, tie estas verŝajne ia buklo. Ĝi tuj rigardi sintakse malsama de Scratch la blokoj, sed tio estas ja kio estas ene de la dosiero. Kaj post kelkaj semajnoj ni estos fakte rigardi la CS50 biblioteko kiel al kio estas ene, sed ekzistas buklo impona ĝuste tion. Ni ludas stulta iom ludo tie kun tiu dosiero. Kondiĉo nula punkto c. Ni nur tuj ĝenerale komenci kalkulon je nulo. Mi observos rulado pasinteco iuj de la aĵoj ĉe supro. En blua tie, limis kun ĉiuj de tiuj steloj kaj la slashes, tiuj el vi kiuj plani antaŭe, kio estas tio? Kial ni tenas saltante trans ĝi? Kio? Publiko: Estas komenton. DAVID J. Malan: Yeah. Estas nur komenton. Jen komento por homoj legi, ke en nia kazo, Diras nin kio la nomo de la dosiero estas, kiu verkis ĝin, kaj kion ĝi faras, por ke vi ne havas por tralegi la kodon scii kion tiu dosiero temas. Estas nur priskribo, sed funkcie estas pala. Kaj mi eĉ povas forigi ĝin el mia dosiero kaj ĝi havas neniun efikon. La sukaj linioj estas tiuj unuaj du ĉi tie, nun. int main malplenon estas la ekvivalenta de niaj kiam verda flago clicked, do ni tuj forlasi tiun estu por hodiaŭ, kaj ni revenos, eventuale, kia int kaj dezerta estas, sed nun, rimarki kion mi faris ankaŭ ĉi tie, vi povas ankaŭ, se vi havas en linio komenti, se vi havas Penso vi volas dividi pri aparta linio de kodo, konvencio en C estas plenumi oblikvo oblikvo, kaj poste de kelkaj konciza vortoj, Ne plena frazo, ĝenerale ne alineo, ke nur klarigas al vi, aux via TF, aŭ aliaj legantoj aŭ kolegoj, kion via kodo estas faranta. Do anstataŭ devi serĉi pro tio kaj konkludi el linioj naŭ kaj 10, kio estas tion farante, en linio ok Mi nur doni rimarkon demandi la uzanton por entjero, tiam mi ne bezonis pensi tro forte pri kio linioj naŭ kaj 10 estas. Mi nur scias ke tio estas kion kolektive ili faras. Kiom? Nu, jen la prompto. Jen estas la ricevado de la int. Kaj surbaze de la antaŭa konduto, ĝi ŝajnas kiel get int estas sufiĉe lerta por certigi ke la homa kunlaboru kaj donas entjero. Sed nun ni vidu tion. Kaj tiu estas rememoriga de Scratch. Mi asertas ke mi estas analizi la uzanto enigo, sed iom neĝuste. Kaj tiu ŝajne en C estas kiom ni esprimas se alie, branĉo, forko en la vojo, sed mi diri ion neĝuste. Kio estas la bug en tiu programo? Pri pli malantaŭe? Yeah. Spektantaro: [inaudible] nulo. DAVID J. Malan: Yeah. Do se mi tajpas en nulo, ni konsideru ĝuste tiu kazo, aŭ angulo kazo, se vi volas. Do se mi tajpas en nulo, kiu el la blokoj tuj ŝajne ekpreni ĝin? La se aŭ la alia? La alia, kaj ĝi tuj diros, vi prenis negativa nombro. Kaj efektive, nulo ne supozis esti pozitiva aŭ negativa, kaj tial estus erare. Estus cimon. Do kiel ni povas ripari tion? Iu kiu neniam planita antaŭe? Ĉu vi want-- Spektantaro: [inaudible] DAVID J. Malan: Retracting? Spektantaro: [inaudible] DAVID J. Malan: Ah, vi havas? Iu kiu neniam planita antaŭe. Volas provi vian manon ĉe tiu, en la ruĝa ĉemizo? Venu supren. Oh yeah, venu supren, se vi ne ĝenas. Do neniam esti planita antaŭe, kio estas via nomo? Lauren Lauren. DAVID J. Malan: Lauren, tute certe. Do ripari tiun cimon ni. Vi ne vidis C, supozeble, kaj verŝajne neniu alia lingvo. Do korekti tiun programon por ni. Agrable renkonti ya. Neniu premo. Lauren: Yeah. DAVID J. Malan: Sed denove, se tiu vetludo iras laŭ plano, la takeaway tie volo estu, nur denove, komenci rimarki ŝablonoj kaj konkludi el ekzistantaj sintakso kiel alie vi povus esprimi mem, Neniu vortludo celita, en ordo kapti iun suplementan scenaro. Do ni dirante alie se. printf, bone. Kaj rimarki kun CS50 IDE kaj frankly-- IDE staras por Integrita Disvolviĝo Medio. Estas nur fantazio maniero diri programo kiu helpas vin programo. Ĝi faras uzanto amika aĵojn kiel kiam vi tajpas iun parentezo, ĝi aŭtomate donas al vi la alian. La supozo estanta ke vi estas eventuale tuj volas tajpi ke, kaj ĝi ankaŭ faras lin kun citaĵoj. Do mi ŝatas linio 23. 99% de la vojo. Iu volas Chime kun trinkmonon? Mi aŭdis punktokomo de la spektantaro. Bona. Do kiu kompletigas tion. Kaj nun, mi nur havos iom konsternon kun linio 21. Kiel ni volas esprimi tion? Kion demando ĉu ni volas demandi, ĉu vi pensas? Do ni antaŭe demandis, se n estas pli granda ol nulo, faru tion. Alie, faru tion. Do ni devas elekti demando demandi tie. Spektantaro: [inaudible] DAVID J. Malan: Bonan. Do se n egalas nulo. Bonege. Do ni paŭzi tie. Dankon tiom por braving ĉi. Lasu min donu al vi iom merititan streso pilkon, eble tie. Do ni estas preskaŭ tie. Fakte, Lauren, se vi ne faras menso, lasu min fari unu tweak tie, nur esti konsekvenca eĉ kun kion ni vidis en Scratch, kion do mi volas fari kun linioj 21 kaj 24, ĵus denove bazita sur kiel ni faris tion en Scratch, eble? Publiko: Movu ĝin. DAVID J. Malan: Yeah, movi ĝin. Do la alia kondiĉo, la tria, aŭ kvara, aŭ kvina, aŭ fina branĉo, devus ja venis poste, kaj tio estas nur konvencio, nur cxar se vi volas. Do mi bezonas fari ĉi tweak. Mi bezonas meti mian krispa streĉa tien. Kaj nun ĉi programo kompilos. Ni estas tiel proksimaj, sed ekzistas tre, tre subtila cimon. Ni vidu kio okazas. Unue, lasu min antaŭeniri kaj malzomi. Mi tuj iros antaŭen kaj tajpi fari kondiĉo nulo. Ho, mi mensogis. Nun la tradukilo estas efektive sufiĉe inteligenta. Kaj mi ne vere komprenas ĝi estas erarmesaĝon. Uzante la rezulton de asigno kiel kondiĉo sen krampoj, estas ŝajne malbona. Sed kion tio signifas? Nu denove, serĉante mastrojn en kodo kiun ni vidis antaŭe, kio estas linio 17 reale faras, kvankam Lauren intencis iomete alie? Yeah. Spektantaro: [inaudible] DAVID J. Malan: Yeah. Do memoru la egalsigno, ŝajne kiel ni uzis ĝin antaŭe, ĉu ne egalas. Lia farita, de dekstra al maldekstra. Do linio 17 en la momento estas kondiĉo, kaj estas ekzekuti kodon ene la parantezoj, sed kiam tiu kodo ekzekutas, kio okazas al la valoro de nulo? Kio okazas al la valoro de n? Becoming nulo. Do se n iĝas nul, kaj denove, kiel po pasintsemajne, ni ĝenerale diras, ke nulo estas falsa kaj unu estas vera, aŭ jes estas oni kaj ne estas nulo. Tiel vera kaj falsa, kaj 0. Se n kiel de linio 17 estis donita la valoron 0, estas nulo vera? No. Per difino, nulo estas malvera. Tio estas la konvencio ni estas tuj alkroĉiĝas al emocia avanulo. Sekve volas linioj 18, 19, kaj 20 iam apliki nun, logike? Ili ne povas. Do ni demandis sed ne tute precize, kaj vi ne scias tion, se vi vidis ĝin, la solvo en C Estas kiam vi volas esprimi egaleco, vi diru egalas egalas. Do egalsigno estis jam foruzitaj per asigno, de dekstra al maldekstra. Egalas egalas rimedoj egalas. Kaj se vi vere deziras ke viaj menso esti fleksita, en JavaScript kaj PHP, ekzistas egalas egalas egaluloj, kiu signifi ion alian entute, sed ni ricevos por tio antaŭ longe. Do tiu estas simpla solvon, sed realigi super facile fari la miskompreno, kaj tiam scivolas kaj lukto por minutoj, se ne horon, Kial mia kodo ne ekzekutinte kiom mi intencas? Ĝi estas ĉar vi ne diris ĝi precize kion vi celas. Do kiu estis preskaŭ perfekta, kaj estis granda ke ni stumblis trans tiuj du iom aferojn ĉar nun se ni korektos ilin, kaj mi ja faras kondiĉo nulo dot oblikvo kondiĉo nulo, Mi ŝatus entjero bonvolu. Ni vidu. No. Ĝi tuj devigos min fari tion. Do 42. Mi plukis pozitiva nombro. Do nun kiel mi pruvi ĉi programo korekta? Se vi estas matematikisto, vi ne povas vere pruvi tion per provo kaj eraro, dekstra? Vi povas ne nur pruvo per Ekzemple, sed almenaŭ kiel programisto ni ne provos pruvi nuntempe ke tio estas fakte korekta, sed mi devus verŝajne testi iuj reprezentaj kazoj. Mi provis 42. Mi povus provi 43. Mi povus provi 44. Testa 45. Dekstra? Sed mi povus fari tion vere longa tempo. Kio estus iu pli interesaj kazoj provi? Spektantaro: [inaudible] nulo. DAVID J. Malan: Do nulo. Certe. Kaj bone, ni havas ĝin ĉi tempo, danke al Lauren la nova kodo. Kio estas alia bona kazo provi? Spektantaro: Negativaj unu. DAVID J. Malan: Negativa unu, kaj eble iu pli granda, do eble negativaj 42, sed ĝenerale, kiam elprovanta viaj programoj movanta antaŭen, vi estas tuj volas pensi al vi mem, kiel kion estas la fundamentaj malsamaj kazoj. Kaj mi kuraĝas diri negativa kazo, pozitivan kazon, kaj nulo kazo preskaux preterpasas tiujn ekstere. Ni rigardu varianto de tiu tamen. Kondiĉoj unu. Jen ĝusta solvo tie, por ke vi vidos du kaj rete, se vi iros en walkthroughs, volo ĝenerale pliigo tiuj _stepwise_ ĝis ni preni akurate la dekstra alproksimiĝo. Kio se ni volis demandi du demandoj tuj? Lasu min malfermi ĉi anstataŭ. Non-ŝaltilo, por kialoj ni vidos alian fojon. Kio novas sintakse tie? Mi nuntempe ludas ludon kie la komputilo estas diranta mi, donu al mi entjero inter kaj 10, kaj tiam mi jugxante la uzanto enigo. En la angla, bazita sur la kodo vi vidas ĉi tie en blua, kio tiu programo faras? Spektantaro: [inaudible] plukis granda aŭ malgranda nombro. DAVID J. Malan: Yeah. Ĝi simple adjudicating ĉu Mi plukis granda aŭ meza, aŭ malgranda nombro bazita sur tre arbitra difino de malgrandaj, mezaj, kaj granda tie, sed avizo la sintakso ke novas estas tiu. Mankas malpli ol aŭ egala al int subskribi, aŭ pli granda ol aŭ egala al subskribi, kie estas super la aliaj, ke vi povas esprimi en kiel Microsoft Word. Do en programlingvo vi tipe nur faru du karakteroj, unu post la alia. Kaj kion faras tiu probable reprezenti, ampersand kaj-signo. Spektantaro: [inaudible] DAVID J. Malan: Yeah. Ĝi nur signifas kaj ĉar Rezultas ke la aŭtoroj de C uzata sola ampersand, kiu vi povus pensi estus perfekta por la nocio de kaj, jam elĉerpitaj, tiel ampersand ampersand reale kaptas la kazo ni fakte volas. Do ni nun faletas trans du aferoj. Lasu min kaj malfermu unu. Iu kiu estas iom preocupante. Imprecision punkto c. Mi prezentas du aferojn tie. Unu, rimarki ke ni povas fari math, kiel ĵus kiel antaŭe kiam ni faris pli de du nombroj x kaj y. Kio estas ĉi tiu programo ŝajne faras? Mi ne komentis ĝin, kaj mi enkondukis procentoj f, sed mi rapide diris antaŭe procento f signifas Flosanta punkto valoro, kiu estas reala nombro. Io kun dekuma punkto, kio ne estas entjero. Kion vi opinias ĉi programo estas provante montri al mi sur la ekrano? Yeah? Publiko: La rezulto de unu super 10. DAVID J. Malan: Yeah. Kio estas la rezulto de unu dividite per 10. Bone, ĉar vi ĉiuj havas probable plenkreska sciante ke unu super 10 Estas kio? Jes, ĝi estas nur 1/10 aŭ 0.1. Dekstra? Do ni vidu kion tio vere estas. Do lasu min antaŭeniri kaj savi tion. Lasu min iri cxi tie. Faru imprecision dot oblikvo imprecision kaj avizo, tro, en Linuksa medio, vi ne devi tajpi el imprecision kaj preni tutan tagon. Ĝi ĝenerale, se vi frapis Tab, ĝi finos vian penson por vi, bazita sur la vortoj, kiuj estas disponebla en la nuna dosierujo. OK. Do vi pravis. Unu dividita per 10 estas, fakte, 0.1. Sed mi estas iom scivolema. Kaj ĝi rezultas printf Elportas iuj karakterizaĵoj whereby vi povas specifi pli ol la defaŭlta nombro de decimalaj punktoj. Do se mi volas vidi 10 dekuma punktojn mi povas fari procentoj, por la lokokupilo simbolo, punktas 10 por, donu min 10 dekuma punktoj, kaj tiam ankoraŭ flosanta punkto valoro, kaj, kiel flanken, kian backslash n ŝajne ni daǔre uzanta? Rezultas ĝi estas simbolo por nova linio. Estas la tre eksplicita maniero diri al la komputilo, movi la kursoron al la sekvanta linion post vi faris. Kaj ni vidos kion okazas kiam ni ne faru tion. Lasu min rekompili fari imprecision. Nun dot oblikvo imprecision. OK. Ankoraŭ pravas. Unu dividita per 10. Nun mi ricevas iom stranga, kvankam. Kio se mi rigardas 20 dekuma atentigas, rekompili, rerun, kaj kiel flanken por rapido, Vi povas ankaŭ uzi vian supren kaj malsupren sagojn rulumi tra via historio, tial vi ne devas teni retyping tiujn ordonojn, eniru. Huh. Mi ne lernis ke en grado lernejo. Bone, do lasu min vidi kiel 29 lokoj el. Eble ĝi estas nur hazardo. Eble mia komputilo agas stranga. Tio ne estas afero, ĉu ne? Oni faras ion deterministically. Do fari imprecision. OK, tio paneas. Do kio estas daŭriganta? Do ŝajne via instruisto estis kuŝanta al vi ĉion ĉi tempo por kialoj kiujn ni vidos post nelonge. Sed ni finos kun tiu alia programo. Jen iom programoj iu skribis antaŭ kelkaj jaroj, kaj ĝi estas fakte parto de konkurso. Neniu vere skribas kodo kiel tiun, kaj se vi faros, ĉi estas stile problemo. Sed homoj faras tion por bragging rajtoj. Skribi la plej konfuzanta rigardante programo kiu tamen faras ion interesan. Kaj la noto mi pensis ke ni lasos sur hodiaŭ, antaŭ Colton ludas nin el ĉi tie, estas kuri ĉi programo, kiu, eĉ en nur uzante C en ĉi tekstajn medio, donas al ni tiun. Dammit. [Ridado] Stand by. [Inaudible] c haltostreko l m. Vi tuj vidos la magia sorĉdiron ke ni vidos post nelonge. [Inaudible] Bone. Kaj nun vi povas eĉ faranta similaĵojn. Jen ĝi. Por CS50 ni, vidos vi vendrede. [MUZIKO Ludante] [Aplaŭdo]