David J. Malan So dit is CS50. En dit was CS50 se eie Colton Ogden, vir meer van wie se musiek kan laai op soundcloud.com/cs50.
So vandag fokus ons al die meer op die kuns van die ontwikkeling. En ons neem waar ons links af verlede week, met die fokus op nuuts af, wat hierdie grafiese programmeertaal. En neem die dinge af na 'n laer vlak, gebruik van 'n meer tradisionele ontwikkeling taal bekend as C. Maar langs die pad, besef dat dieselfde idees wat ons gepraat oor verlede Vrydag weer sal voorkom nie net in hierdie C, maar in die meeste elke ander dat ons kyk na hierdie semester.
So ons het hierdie ding laaste keer hier wat? Dit is 'n verteenwoordiger van 'n verklaring gesê. So ons noem dit 'n verklaring gesê. En dit doen iets. Dit is 'n opdrag wat 'n rekenaar of krap kan voer. En nou af, laat ons ook begin roep iets soos hierdie 'n funksie, om redes wat ons sal binnekort te sien.
Intussen het ons gesien dinge soos hierdie. En dit is in die algemeen bekend as wat bou?
David J. Malan So 'n lus. So redelik eenvoudig. Dit beteken letterlik wat dit sê. En in Scratch, as jy wil gedrang meer stukke van die legkaart in daar, die stuk sal groei dit aan te pas. En ons sal sien in C wat Ons kan dieselfde ding doen.
Nog 'n tipe van lus, al is, in Scratch kan wees vir ewig, of daar is 'n aantal ander benaderings. Maar laat ons neem 'n meer generiese voorkoms, met 'n gesig dit is waarskynlik redelik bekend, by lusse meer algemeen. Mark Zuckerberg: Een ding wat rekenaars is regtig 'n goeie by is herhaal bevele. As 'n persoon, sal jy regtig verveeld as jy het dieselfde ding om te doen baie keer in 'n ry. Maar 'n rekenaar kan dieselfde ding doen miljoene of selfs miljarde kere, en nie verveeld, en in staat wees om wat baie goed uit te voer.
So byvoorbeeld, as ek wou almal te wens op Facebook 'n gelukkige verjaarsdag deur die stuur van hulle 'n e-pos, dit kan my meer as 'n neem eeu eintlik skryf al dié e-pos aan almal. Maar met net 'n paar reëls van die kode, kan ek 'n stelsel stuur 'n e-pos aan almal op Facebook wat hulle 'n gelukkige verjaardag. So dit is wat loops is en waarom hulle is waardevol en iets dat rekenaars baie goed kan doen.
David J. Malan So as jy is die ontvanger van sommige van CS50 en Dropbox se ruimte laat, dit is eintlik presies wat ons doen, met behulp kode hou nie. Ons wese het 'n groot spreadsheet waarin mense is die skryf van hul name en e-pos adresse. En ons het 'n klein bietjie van die kode wat kan Itereer oor die adresse en spoeg uit unieke adresse in geval iemand voorgelê verskeie kere. En daarna, stuur ons 'n outomatiese e-pos van CS50 se bot, insluitend die koepon kode.
Nou het ons ook gekyk na hierdie bou laaste tyd. En dit is 'n besondere voorbeeld van wat? So, ja, 'n Boole-uitdrukking. En die vorm is bedoel wat om te vang so goed. Alle vrae van die vorm waar of vals in Scratch sal kyk 'n bietjie iets soos hierdie. En ons noem dit 'n Boole-uitdrukking. Dit is inderdaad waar of vals, ja of nee. Dit is 'n manier om 'n vraag beantwoord.
En Intussen kan jy die Boole gebruik uitdrukkings binnekant van konstrukte soos hierdie, wat van Natuurlik is voorwaardes of takke spreekwoordelike vurk in die pad. En hulle kan kyk nie net soos hierdie, maar hulle kan ook het elses wat verband hou met hulle. En jy kan eintlik 'n drie wyse vurk in die pad of 'n vierrigting vurk in die pad, net deur nes hierdie dinge, as jy sien in Scratch As jy nog nie het nie. En as jy kan doen in C as well.
Kom ons neem 'n ander generiese kyk na 'n alumnist, asook, wat dalk 'n ander benadering te bied hierdie dinge genoem voorwaardes.
Bill Gates: Mense maak besluite elke dag. Byvoorbeeld, voordat jy na buite gaan jy soort van 'n if-stelling wat sê, As dit dan reën Ek moet my baadjie te kry. En rekenaars is amazing wanneer jy besluit dié soort stellings, dat hulle betroubaar kan uitvoer daardie dinge teen ongelooflike spoed. En so 'n rekenaar program werklik is 'n bietjie wiskunde en 'n paar As state waar die besluit kry het.
David J. Malan So as jy dalk weet, was dit mense soos Bill Gates, Paul Allen, en ander wat werklik afgeskop die sogenaamde persoonlike rekenaar rewolusie 'n paar jaar gelede. Ek het gedink, voordat ons duik in 'n paar Administrivia, ons wil 'n verhaal verband uit die Albuquerque, New Mexico Museum van Natuurlike Geskiedenis en wetenskap, waar sommige van Bill Gates se en Paul Allen se vroegste stories word vertel hoe ons nou vandag se rekenaars en Macs en nog baie meer. Vir hierdie, al is, moet ons twee vrywilligers wat 'n baie goeie vertelling stemme 'n script om hardop te lees.
Alle reg, hoe oor in terug daar. Kom op. En hoe oor voor hier. Kom af. Neem jou plekke hier. As julle kom, 'n paar administratiewe aankondigings. snitte, die proses van die keuse van 'n artikel, sal hierdie begin Woensdag tot Vrydag. Meer oor wat hierdie komende Woensdag in lesing.
Super afdelings, intussen, is iets wat ons bied volgende week waardeur die hele klas betrokke is om deel te neem in redelike groot skaal afdelings, een meer gemaklik, een minder gemaklik. En ons sal die besonderhede aankondig van daardie, asook, later hierdie week.
Intussen afdelings, self, sal begin in week drie van die kursus, zero-indeks, wat beteken dit is 'n paar weke uit. So moenie bekommerd wees nie. Jy het nog nie gemis iets langs die lyne. Intussen is in die tussentyd, as jy enige vrae administratiewe, e-pos my en Devon en Gabe en Rob by hierdie adres hier.
Laastens probleem stel 0 is, natuurlik, uit. Jy kan opgemerk het dit op die kursus se webblad. Dit moet jy met alle antwoorde op vrae jy mag hê langs die pad vir net begin met die probleem stel. Maar as jy jouself in die behoefte van 'n helpende hand, deur al beteken kantoorure woon, Maandag, Dinsdag, Woensdag, Donderdag hierdie week in die aand in vier eetsale. Sien dat URL daar vir die besonderhede waar kantoorure sal wees.
Nou laat kom om ons twee gaste hier vandag. Wat is jou naam?
JAY PAULUS: Jay Paul.
David J. Malan Jay Paul, lekker om jou te ontmoet.
David J. Malan Hikari?
David J. Malan Hikari. Nice om jou te ontmoet. Jay Paul en Hikari het in voor hulle op hierdie musiek staan ​​twee skrifte wat ek gedruk vanoggend uit die New Mexico Museum van Natuurlike Geskiedenis en Wetenskap. En wat ek gedink het Ek wil nie op die oorhoofse word vergesel jou voordrag van die script en die geskiedenis met 'n paar visuele beelde, geen verrassings.
En wat ek vooraf gedoen het is prehighlight op jou script wat jy moet lees, en wat jy moet lees. En ons sal in wese net alternatiewe paragrawe. So dit is baie soos jy kan in Engels klas gedoen het. Dit is die gehoor werklik dwing hier glo in jou verhaal. Sal ons? So het die storie hier is, het ons 'n BASIC, en dit begin in Cambridge.
JAY PAULUS: Dit was winter, 1974, in Cambridge, Massachusetts waar winters koud kan wees. 'N bebaarde, lang hare kollege dropout vernoem Paul Allen was drudging oor Harvard Square, in sy gedagtes geabsorbeer. Sy grootste besorgdheid in daardie dae was hoe sy vriend, Bill Gates te kry, skool te hou en gaan in die besigheid met hom. Hikari: Die twee het reeds weg deur 'n aantal sake-ondernemings saam, van Lakeside skool in Seattle, waar hulle in 'n vrye rekenaar tyd om te betaal toets 'n PDP-10 rekenaar by 'n plaaslike tyd deel maatskappy. Die mees onlangse plan was om op te hou skool en vorm 'n sagteware maatskappy. Allen het Washington verlaat State University. Maar op die laaste minuut, Gates besluit om te hou met Harvard.
JAY PAULUS: Daardie dag, die kruising van Harvard Square, Allen sien die Januarie 1975-uitgawe van Popular Electronics saam met die aarde stop kop, Wêreld se eerste Minicomputer Kit Kommersiële Models te kan teenstaan. Onder die opskrif was 'n foto van 'n klein boks versier met liggies en skakelaars. Dit was bekend as die MITS Altair 8800. En Allen het geweet dit is wat hy is op soek na.
Hikari: Dae van bespreking gevolg. Allen en Gates verstaan ​​die betekenis van die Altair. Hulle het dikwels gepraat oor mikroverwerkers en wag om te sien wat sal gedoen word met hulle. Nou was daar 'n mini-stel op die voorblad van Gewilde elektronika. Dit het blykbaar geen sagteware het nie. Hulle het 'n nasie van programmeerders neerdaal op MITS. En so het hulle geroep Ed Roberts, die hoof van die maatskappy, beweer 'n weergawe van die te hê BASIC-programmeertaal byna gereed vir die Altair. Hulle het nie. En Roberts moes geweet het wat hulle gedoen het nie. Hy was besig om 10 oproepe per dag vanaf mense wat 'n basiese byna gereed gehad. En sy voorraad reaksie was, "Die eerste persoon wat opdaag met 'n werkende BASIESE kry die kontrak. "
JAY PAULUS: Gates en Allen nog nooit gesien het 'n Altair. Hulle het nog nooit gesien dat die Intel 8080 mikroprosesseerder in die hart van die Altair. Maar 'n paar jaar vroeër Allen 'n program geskryf het op 'n hoofraamrekenaar wat nagevolg die bedryf van 'n vorige Intel mikroverwerker. En hierdie keer het hulle dieselfde sou doen.
Hikari: Met 'n Intel 8080 handleiding aan sy kant, Allen sit op 'n Harvard PDP-10 rekenaar en het die emulator en sagteware gereedskap wat nodig is om die ontwikkeling te doen. Intussen Gates gestop gaan aan klasse en wy homself te ontwerp om die basiese, gebruik elke truuk Hy het geweet dat die grootte te kry af onder 4 kilogrepe.
JAY PAULUS: Out in Albuquerque, Ed Roberts het 'n oproep van Gates vra vir besonderhede oor hoe die Altair hanteer spesifieke roetines. Niemand het ooit gevra wat voor. En Roberts begin te kry belangstel.
Hikari: Met die ontwikkeling gereedskap en die ontwerp gereed is, Gates en Allen het die kode op die PDP-10, mobilisering ander Harvard student, Monte Davidoff, wiskunde roetines te skryf. Na 'n finale aand van ontwikkeling, Allen het op 'n vliegtuig Hul basiese te MITS te lewer. Hy het die vliegtuig ry uit kommerwekkend. En terug in Cambridge Gates is kommerwekkend. Hulle het getoets hul basiese en dit op die emulator gewerk het. Maar wat as die emulator is verkeerd? JAY PAULUS: As die vliegtuig genader Albuquerque, Allen het besef dat hul BASIC, nou netjies vervat op 'n klein rolletjie geslaan papier tape, sou wees nutteloos sonder 'n afsonderlike program, bekend as 'n loader, wat sal vertel die Altair hoe die papier tape wese te lees gevoer in die telex masjien. Hy het uit sy notaboek en vinnig neergekrabbel n loader program in Vergadering taal, dan die hand vertaal wat in die 1s en 0s die Altair sal verstaan.
Hikari: Allen verwag 'n skoon, bietjie, hoë-tegnologie maatskappy loop deur mans in besigheid pas. So hy was verbaas toe Roberts ontmoet hom op die lughawe lyk soos 'n plaas hand. Roberts was ook verras. Toe hy laat val die Harvard programmeerder by 'n duur hotel, Allen het dat om te bely Hy kon nie die kamer kan bekostig nie.
JAY PAULUS: MITS, self, was geleë in 'n stowwerige strook mall. Binne 'n deurmekaar werkbank was 'n Altair gelaai met 5 kilogrepe van geheue en verbind deur 'n kabel 'n telex masjien. Roberts en Chief Engineer, Bill Yates, gewag verwagting as Allen omgeschakeld sy loader program in die Altair. Die telex begin chugging as dit getrek die papier band deur die band leser. Dit het miskien 15 minute die program te laai. Toe het die telex skielik gedruk 'n geheue vinnige, dan is 'n gereed vinnige, en Allen begin tik 'n paar toets beveel. Tot almal se verbasing, die sagteware gewerk. Daar was foute, natuurlik. Maar die belangrikste ding was dit gewerk het.
Hikari: Later, op pad na 'n $ 3,00 middagete by Pancho se, 'n perdeby gevlieg in die venster van die bakkie vragmotor en gesteek Allen op die arm. Maar op daardie stadium niks kon die bui bederf nie. Die Altair nou het sy basiese, die eerste kommersiële sagteware vir 'n huis rekenaar, wat deur Paul Allen en Bill Gates, om sake te doen as Microsoft.
David J. Malan Baie dank aan ons twee lesers.
David J. Malan Nou jy het jou keuse, voordat jy vertrek, van 'n sparkly of 'n gloed in die dark-- o, wag 'n sekonde, wait-- sparkly en 'n gloei in die donker olifant van CS50 se eie Cheng Gong. Hikari: Ag, baie dankie. David J. Malan Alle reg, baie dankie. [Applous] David J. Malan So ware verhaal. Dit is om te sê dat al hierdie masjiene en die gemak waarmee ons gebruik hulle nou en neem vanselfsprekend, regtig begin hier, net 'n paar treë Van hierdie werklike teater. En nou vandag, as jy nie het al, dit is Maxwell Dworkin, die rekenaar Wetenskappe-gebou, ook om die draai. En op die tweede verdieping van die gebou nie hang drie bladsye uit die oorspronklike bron kode wat Bill Gates en Paul Allen geskryf het. In werklikheid, as jy gebruik vergroot in wat jy kan sien nie net hul name in die oorspronklike tipe, maar ook hul handtekeninge dat hulle versier 'n n paar jaar terug toe hulle laaste besoek.
Maar wat was veral dwingende oor dit is wat hulle het om te doen was 'n program wat dit wil te skryf ander mense in staat stel om te skryf hul eie programme. Teen die tyd al was daar saam met hierdie Altair masjien gemaak deur MITS. En al wat hulle nodig het, is 'n manier van maak dit maklik vir amateurs en mense hou ons in hierdie kamer eintlik program dat sonder noodwendig verstaan Vergadering kode, of masjien kode, of God verbied, 0e en 1e. Ons programmeerders, soos diegene in hierdie kamer, ons wil in staat wees om uit te spreek onsself baie meer soos pseudo-kode selfs al is dit 'n bietjie meer neet kieskeurig as ons gepraat het verlede week. Ons wil nie die kode te skryf soos hierdie, wat Paul Allen en Bill Gates het. Ons, in plaas daarvan, wil die kode te skryf wat lyk 'n bietjie meer gebruikers vriendelik.
En dit is 'n taal bekend as 'n basiese. En die lyn nommers is daar wat jy gebruik om net tel die reëls van die kode wat jy skryf. Ons het nie eens te doen hierdie dae. Maar jy kan hier sien Hoe druk "Hello, World" sou inderdaad vermoedelik druk net dat. En ja, wat Bill en Paul het was mense bemagtig kode te skryf soos hierdie plaas of-- as jy 'n blik op die Rekenaarwetenskap wall-- kode soos hierdie.
In werklikheid, CS50 onlangs het 'n geleentheid om te gaan sit met Professor Harry Lewis in die Rekenaarwetenskap departement, wat eintlik Bill geleer Gates 'n paar jaar gelede, en hier staan ​​voor die drie bladsye van uittreksels. Kom ons neem 'n blik.
HARRY LEWIS: Wat jy hier het is 'n notering van 'n vroeë stuk sagteware geskryf deur Bill Gates en Paul Allen, die stigters van Microsoft. So het die kode is interessant vir twee redes. Eerste van alles, dit het Microsoft se eerste produk, wat was 'n tolk vir Die basiese programmeringstaal. En tweedens, dit was een van die eerste pogings 'n tolk sodat gewone te skep mense kan gebruik om persoonlike rekenaars.
So Bill Gates was 'n voorgraadse aan Harvard. Ek begin skoolhou by Harvard in 1974. Dit is in 1975 gedoen. So dit was vroeg in sy loopbaan en vroeg in my loopbaan. Ek het eintlik Bill geleer in 'n kursus om hierdie tyd. Paul Allen was nie 'n Harvard student, maar hy was 'n hoërskool klasmaat van Bill Gates. As jy kom kyk op die lys, sal jy eintlik vind 'n derde naam, Monte Davidoff, wat Gates se klasmaat hier by Harvard.
OK, so hier is 'n interessante opmerking hier. Dit sê: "In 4K kan vierkantswortel verwyder maar vir sirkelroetes moet nog werk. " OK, so wat dit beteken, is dat daar was twee maniere om hierdie program op te stel. Een was om te loop op 'n weergawe van hierdie Altair rekenaar dat slegs 4K woorde van gehad geheue, 4096 woorde van die geheue. Maar die groot weergawe het 8K. En ja, wat hierdie sê is wat in die 4K weergawe jy het 'n paar te verwyder kode dit geskik te maak. En een van die dinge wat wat geskrap moet word sou die vierkantswortel roetine. Maar blykbaar die vir sirkelroetes moet steeds werk, selfs wanneer jy die opstel van down vir net die 4K weergawe van die rekenaar. David J. Malan So een van die temas, soos ons sal sien in Rekenaarwetenskap, is hierdie idee van lae en onttrekking, en regtig staan ​​op die skouers van die mense wat voor ons gekom het, nie in teenstelling met sommige van die Bill Gates en Paul Allen verhaal hier. En wat dit beteken is dat ons vandag kan neem vir verleen dat dinge eintlik makliker vir ons kode te skryf. Inderdaad kode, soos ons sê op Vrydag, is meer tegnies bekend as bron-kode. En dit is hierdie Engelse soos sintaksis dit is meer behoorlike en meer goed gedefinieer as iets soos pseudo-kode vir waarvoor daar geen formele definisie.
En vandag is wat ons gaan om te fokus op die bron-kode wat lyk soos hierdie, wat weliswaar met die eerste oogopslag lyk heeltemal kriptiese. En eerlik, dit is manier om meer esteties kompleks as die onderliggende program is. Al hierdie program doen, Onthou, is wat het ons dan sê? Hy druk net "hallo wêreld." En tog kyk na al die dinge wat ons nodig het om te draai om dit baie eenvoudig frase. Maar kort voor lank al hierdie lyne en meer sal baie beter sin maak.
En die vloei is soos volg. Wat ons nodig het tot ons beskikking is die kode te neem, soos bron kode wat ons nou net gesien het. En ons het 'n nuwe program dit uit te voer deur middel van. Ons moet algoritmes wat kan omskep bron-kode, soos hierdie, in voorwerp-kode, 0e en 1e. Met ander woorde, wat ons gaan vandag om te leer is hoe om dit te doen, skryf bron-kode op die top, slaag dit as insette tot 'n spesiale program bekend as 'n vertaler, en ons gaan voorwerp kode te produseer. Wat net 'n fancy manier sê ons sal iets doen wat lyk soos hierdie, gaan dit in 'n program genaamd 'n samesteller, vervaardiging voorwerp kode wat lyk soos hierdie.
So dit is letterlik die patrone van 0'e en 1'e wat verstaan ​​word deur 'n Intel rekenaar deesdae, dat indien vertolk deur die CPU, die brein binnekant van 'n rekenaar, sal letterlik uit te druk, eenvoudig, "hallo wêreld." Nou is daar 'n manier om meer 0e en 1e as jy hoop nodig want dit mag wees. Maar dit is omdat ons bou op 'n goeie deel van die kompleksiteit dat ons voortaan as vanselfsprekend kan aanvaar. Met ander woorde, 'n baie slim mense het 'n baie van die koel gereedskap aan ons gegee en kragtige sagteware waarmee ons kan nou projekte van ons eie.
So laat ons begin. Terwyl verlede Vrydag, en vir Probleem Stel 0 hierdie week, jy sal speel in 'n wêreld wat lyk soos hierdie. Begin vandag en vir Probleem Stel 1 volgende week, die kode gaan 'n bietjie meer kyk kriptiese, maar funksioneel is gaan dieselfde wees. So kennisgewing top is nuuts af, onderkant is C. Die waarheid te sê Scratch is 'n baie meer gebruiker vriendelik en toeganklik. Maar as jy nou vergelyk visueel bo na bodem, daar is soort van 'n 1-1 korrespondensie tussen die stukke van die legkaart en die taal ons is oor om te speel met. In die besonder, sê die blou legkaart stuk tot bo, is glo gelykstaande aan wat navraag of spesiale woord in hierdie taal genoem C? Publiek: printf. David J. Malan printf. Dit beteken geformatteerde druk. En dit is net 'n fancy manier om te sê printf in C gaan 'n verklaring of 'n funksie te wees dat druk om iets aan die skerm. Wat beteken dit druk op die skerm? Wat jy vertel dit aan die binnekant aanhalings, binnekant van hakies. So weer, weliswaar, daar is 'n baie dinge wat jy in gedagte moet hou, hakies, aanhalingstekens, kommapunte, en al hierdie dinge. Maar dit alles is soort van langs die punt. Die interessante afhaal vir nou is dat die seggenskap blok in Scratch is redelik baie soortgelyk aan die printf verklaring in C.
Intussen het die geel legkaart stuk tot bo toe groen vlag gebruik het, is waarskynlik ekwivalent na wat hier navraag? Publiek: Main. David J. Malan So belangrikste. Miskien int, miskien nietig. Maar belangrikste soort van klanke soos dit is belangrik, en inderdaad is dit. So wanneer groen vlag gekliek is, weer, die legkaart stuk wat skop af 'n hele Scratch program. Maar ons gaan nou begin bel wat hoofsaaklik die funksie bekend as hoof.
Nou intussen het ons sal veralgemeen dit soos volg. Ons kan noem sê 'n funksie. En dit kan sien spesifiek soos hierdie. Wel, wat van sirkelroetes? As ons wil hê om te begin die omskakeling of vertaling meer in Scratch na C, hierdie ding hier blykbaar net sê: "Hello World" vir ewig. So as jy assosieer hierdie skrifte met 'n kat in Scratch, dit is net gaan om te sê hou in 'n soort van strokiesprent borrel, "Hallo wêreld, hallo wêreld, welkom wêreld, "ad nauseum, vir ewig. As ons wil hê om iets soortgelyk in te doen C, dit gaan om te kyk 'n bietjie kripties. Maar ons kan dieselfde bereik lei, soos ons sal uiteindelik vind uit, met sintaksis soos hierdie. Ek gaan weer printf te gebruik, want aan die einde van die dag Ek wil om te druk "hallo wêreld." En ek glo die gebruik van 'n navraag wat nie vir ewig. Dit is eerder die woord, terwyl. Maar net semanties in Engels, terwyl soort dui 'n soort van loop of fietsry.
So dit gebeur te wees die term wat C gebruik. En terwyl waar is, waarom doen terwyl ware effektief vir ewig beteken? Wel, terwyl, soos ons sal gou waardeer al hoe meer, het hierdie hakies langs dit waar jy kan sit 'n Boole-uitdrukking. En so lank as wat uitdrukking is waar, die kode as aangedui tussen hierdie twee krulhakies as ons hulle sal noem, sal hou net weer en weer hardloop.
So waar is, is waar. Dus, terwyl die ware middel net doen dit vir ewig. Dit is amper 'n dom bou jouself uit te druk. Maar daar was geen ewig navraag in C. Daar was terwyl. En daar was 'n baie eenvoudige Boole-uitdrukking soos ware. En so gaan dit, ons sal sien, bereik dieselfde resultaat.
Hoe anders kan jy dalk 'n lus te implementeer? Wel, in Scratch jy dalk hard-kode 'n spesifieke aantal iterasies in die loop hier. En so dit is presies wat ons kan doen in hierdie weergawe van C, waardeur ons 'n sogenaamde vir lus. En die lus vir hier gaan te Itereer, ietwat kripties, van die waarde 0 op tot te, maar minder as 10.
Nou veranderlikes in nuuts af. Jy kan nie gehad het geleentheid om dit te gebruik. Maar wat is die punt, in die algemeen, van 'n veranderlike het ons gesê verlede week? Wat is dit?
David J. Malan te wys? O, wys. OK, die dop van die punte, byvoorbeeld, in 'n wedstryd. Of meer algemeen doen wat met die veranderlike? Wat is die nut van hulle?
David J. Malan Ja, so geheue. Dit is vir die berging van iets. En die soort van dom visuele Ek gebruik laaste keer was soos hierdie glas bak. En as ons wou stoor iets binnekant van 'n veranderlike, byvoorbeeld nou die waarde is ses omdat daar ses tafeltennis balle in hier. Dis net 'n soort van die stoor houer wat onder die enjinkap geïmplementeer word met stukkies, 0e en 1e, egter 'n rekenaar gebeur om dit te doen.
So in Scratch, as ons wil 'n veranderlike te hê, Ons kan 'n oranje blok soos hierdie gebruik. Ons sal daardie toonbank noem in hierdie spesifieke geval. Ek geïnisialiseer dit na 0. En wat is dit wat ek dan doen? Forever, sê toonbank, wat as jy speel met dit in Scratch, jy sal net sien nuuts af. Die kat of wat ook al kostuum jy sit op hom sal die nommer in die vraag te praat.
Verandering teen te werk deur 1 is soos die verhoog deur 1. En so dit gaan tel van wat so what? Van 0 til oneindig, of totdat Scratch breek, of totdat jy soort belangstelling verloor in die kyk hoe hoog hy eintlik kan tel.
So, hoe kan ons skakel dit na C? Dit gaan om te kyk 'n bietjie kripties. Maar weereens, as jy kyk na elke van hierdie lyne individueel hulle soort besetting algemeen. So glo Int gaan het 'n paar spesiale betekenis in C. Ons sal weer sien. As 'n eenkant beteken dit heelgetal. So dit beteken net nommer. So dit is die tipe glasbak ek wil hê, een dat getalle kan stoor, nie tafeltennis balle. En ek gaan die gelyke teken te gebruik daar is dit toe te ken 'n waarde van 0. So dit is nogal soos stel toonbank tot 0, maar in C.
Intussen, terwyl die ware, wat ekwivalent, natuurlik, vir ewig, selfs al is dit 'n bietjie kripties, en dan binnekant van die krulhakies. En jy kan dink van hierdie krulhakies, wat jy kan tik op jou sleutelbord, as werklik om soos die kurwe in hierdie geel lus blokke in nuuts af. Dit sluit verskeie reëls van die kode.
Printf is om 'n bietjie nou skrikwekkend omdat ek sien nie net haal in hakies. Maar wat anders is nuut sintakties in hierdie voorbeeld? Daar is 'n persent d. En dan agteroorskuinsstreep N is daar. Ons het sien wat voor, selfs al het ek nie noem dit. Dan is daar 'n komma. En dan is daar 'n toonbank.
Maar ons sal sien in net 'n oomblik dat dit net 'n standaard manier om te sê 'n gedrukte "Desimale getal," quote, unquote, sommige desimale getal. Maar ek gaan om jou te vertel later wat dit desimale getal is. So die feit dat daar 'n komma in hierdie lyn gesegde printf, beteken gaan voort en druk sommige desimale getal. O ja, en by the way, is die getal wat die waarde van hierdie veranderlike is. En so gaan dit meer te maak duidelik is, sal ons 'n voorbeeld te sien kort voor lank met presies printf in die konteks van die werklike C-programme.
Nou net om te draai 'n paar van hierdie boustene. Boolse uitdrukkings, kan jy nie ' geleentheid om dit te gebruik in jou program maar jy kan baie goed, veral as die gebruik voorwaardes. En so hierdie twee voorbeelde uit Krap beteken as x is minder as y, of as x is minder as y en y is minder as Z, hoe kan ons vertaal dit?
Wel, in C is dit net gaan lyk soos hierdie. 'N bietjie kripties, meer hakies, 'n paar vreemde-karakters, maar fundamenteel Die idees is so eenvoudig soos dit is in die legkaart stuk wêreld. Ons is eenvoudig te keur as iets minder is as iets anders.
Hoe oor die toestande? In 'n neutedop in Engels, wat beteken hierdie stuk van Scratch-kode sal jy sê nie?
GEHOOR: Vergelyk twee getalle.
David J. Malan vergelyk twee getalle, en as x is minder as y sê dit soveel. As x is groter as y dit sê soveel, anders as x gelyk aan y sê dit soveel. Nou waar het x en y vandaan? Wie weet. Hierdie stuk van Scratch kode is uit konteks. Maar wat ons nou wil doen, is om te vertaal hierdie vir net 'n oomblik om te sien.
So as jy gemaklik hierdie week in Probleem Stel 0 speel in hierdie wêreld aan die linkerkant, besef dat die idees is nie verander hierdie week of volgende of buite. Ons is net gaan om te begin skryf dinge in 'n ander manier met ons sleutelbord in plaas van ons muis.
So as x is minder as y, en daar is 'n paar hakies daar, dan is daar 'n paar krulhakies weer soort van omsluit dit net soos die geel stukke van die legkaart te doen. En ek gaan printf x minder as y en so meer.
Wat is lekker oor C, as jy hier kan sien, is dat jy nie hierdie nes kry nie, nes, nes dit is noodwendig gaan jou kode te stoot aan die regterkant. Jy kan plaas alles besetting netjies soos hierdie. Maar dit is net 'n estetiese detail sal ons weer sien voor lank.
Alle regte. So dit bring ons terug na hierdie kriptiese soek program. Kom ons eintlik 'n paar kode skryf. Nou hoe gaan jy oor die skryf van kode? Al hierdie jaar wat jy besit 'n Mac of PC, lessenaar of laptop, jy het eintlik gehad het die vermoë om te begin skryf programmeringskode. Maar jy waarskynlik mis 'n spesiale tipe van die program. Jy kan seker skryf kode. Maar jy kan nie noodwendig nie, uit die boks, omskep daardie bron-kode in voorwerp-kode, 0e en 1e sonder wat op jou rekenaar? Publiek: samesteller. David J. Malan So 'n samesteller, reg. Nou die meeste van julle seker besit nie 'n vertaler, het nog nooit 'n samesteller afgelaai. Maar jy sal sien dat jy dit kan aflaai soos die meeste enige ander stuk sagteware. In die wêreld van die Mac OS, kan jy aflaai of reeds afgelaai iets genoem Xcode of GCC of klang. As jy kom uit die Windows wêreld jy dalk Visuele Studio afgelaai, Visual Basic, omgewings soos dit. Daar is dosyne van opstellers hierdie dae wat jy kan gebruik. Maar die kort van dit hier is dat dit 'n pyn wees en eerlik, 'n tegnologiese nagmerrie vir honderde van mense met verskillende rekenaar konfigurasies aan alle instel om hul masjiene in presies dieselfde manier sodat ons almal kan wees op dieselfde bladsy.
So wat ons, in plaas daarvan, doen in CS50 is ons gee jou 'n standaard-omgewing, 'n Linux omgewing wat gaan 'n bietjie om te kyk iets soos hierdie. Jy sal meer van hierdie in die sien Probleem Stel 1 spesifikasie wat aanlyn gaan hierdie Vrydagaand.
En wat dit beteken is dat jy voortaan gaan in staat wees om te aflaai en 'n program installeer genoem die CS50 toestel. En jy gaan om af te laai en 'n ander program genaamd installeer 'n hypervisor, wat net 'n fancy manier om dit te. Of jy 'n Mac of PC of 'n Linux rekenaar of 'n Solaris rekenaar, of wat ook al gek bedryfstelsel stelsel jy hardloop, jy gaan 'n program af te laai genoem die hypervisor wat gaan die CS50 te hardloop Toestel op jou rekenaar maak nie saak wat jou bedryfstelsel is. 'N hypervisor in ander woorde vat ons dinge te ongeag taal, watter instruksies om jou eie rekenaar verstaan.
So dit is 'n lae. En weer, hierdie is 'n soort tematiese in rekenaar wetenskap, die gebou op die top van die dinge. Jy kan hê Windows. Jy kan hê Mac OS. Maar begin volgende week is jy gaan afgelaai 'n gratis stukkie sagteware genoem die hypervisor. Jy het 'n stuk afgelaai gaan sagteware het die CS50 toestel.
Dit gaan om te hardloop in die hypervisor, wat gaan om te loop op jou rekenaar. En die eindresultaat is dat ons almal sal het 'n eenvoudige venster soos dit op jou Mac of PC Dit gee vir ons die illusie van alle loop dieselfde bedryfstelsel, sonder enige ander impak op jou rekenaar. En jy kan die volle screen dit en wese optree asof jy met 'n bedryfstelsel Linux genoem, en dit is wat die CS50 Toestel is gebaseer op.
So laat ons eintlik gebruik hierdie nou 'n program te skryf. Jy kan 'n program te skryf Microsoft Word. Jy kan 'n program te skryf gebruik Text Editor, of Notepad, of WordPad, of pretty much enige woord verwerking program wat jy al ooit gebruik het. Maar die werklikheid is dat jy nie gebruik regtig enige van die programme. Jy moet beslis nie gebruik iets soos Microsoft Word, wat het vet gesig staar en kursief, en groter fonts en kleiner fonts, omdat die rekenaar nie omgee oor enige van daardie. Al die rekenaar gaan omgee is Engels soos instruksies in C.
So, wat sal ons in doen van die CS50 toestel is 'n program gebruik vrylik beskikbaar is nie, en dit is pre-geïnstalleer in hierdie toestel, genaamd gedit. En gedit is net 'n super eenvoudige teks editor soos Mac OS's Text Editor, soos Windows Notepad wat gaan kyk 'n bietjie iets soos hierdie.
So laat ons eintlik nie kyk na skyfies van hierdie. Maar laat ons eintlik gaan in die omgewing self. Ek gaan om voort te gaan en meld in hierdie ander venster om my CS50 toestel, wat ek pre-geïnstalleer op my laptop hier.
Let daarop dat, soos Windows en Mac OS, is dit 'n paar spyskaarte. Soos Windows dit sit dit af daar plaas Mac OS, wat dit stel daar. Maar die werklikheid is dat dit al die soort van dieselfde. En hier is 'n hele n klomp van die sagteware. Daar is Dropbox. Daar is 'n hele klomp van bykomstighede, grafiese programme wat ons sal later gebruik in die term vir die probleem stelle. Daar is 'n webblaaier gebou in so dat dit 'n volwaardige rekenaar binnekant van 'n rekenaar.
Maar ek gaan om dit te kliek linker wit ikoon hier wat is die ikoon vir gedit. En dit gaan 'n venster oop te maak wat drie panele om dit, 'n linker een, 'n boonste een, en 'n onderste een.
Nou is dit in hierdie top regte een wat Ek gaan eintlik 'n paar kode skryf. So laat ons dit doen ,. Ek gaan om te gaan na File, Save. En jy mag nie ooit gesien het hierdie spesifieke venster voor. Maar dit is soos Mac OS of Windows. Dit is net 'n venster met al die dopgehou dat ek binnekant van hierdie rekenaar.
En ek gaan om te spaar die lêer as hello.c. En ek gaan om te gaan voort en klik op Save. En nou sien ek 'n blad op links bo genoem hello.c. So waarskynlik redelik bekende, selfs as jy het nie gebruik hierdie spesifieke program voor.
En nou gaan ek om te tik in die redelik kriptiese volgorde van instruksies dat ons 'n oomblik gelede. Sluit, standaard I / O.h. Meer oor wat binnekort. Int belangrikste leemte, oop krullerige stut, gesluit krullerige stut. En dan binnekant van daar dink ek is waar ons "hallo wêreld," kommapunt. En nou red.
So dit is 'n program wat geskryf is in C, geskryf, dus, in die bron-kode. Maar ek kan nie net loop hierdie program. Ek het soort van wil te verdubbel Klik op 'n ikoon iewers, maar geen ikoon bestaan ​​ander as die bron-kode lêer. Wat, weer, is die proses nou dat Ek moet hierdie leer uit te voer deur middel van? Publiek: samesteller. David J. Malan So 'n samesteller. So in verskillende rekenaars wat jy doen dit op verskillende maniere. Maar wat ons hier gedoen in die CS50 toestel wat verteenwoordiger van hoe jy doen dit op baie verskillende stelsels, is ek net gaan om te loop 'n opdrag genoem nie. En maak letterlik gaan om dit te doen. Maak my 'n program.
So maak gaan loop 'n vertaler vir my. En die naam van die program Ek wil maak, is hallo. Nou maak is 'n program. En maak, is slim genoeg om te besef dat as ek sê maak hallo, dit gaan outomaties na 'n lêer genaamd hello.c net omdat dit is die manier waarop dit ingestel.
So toe ek nou druk Enter hier, hierdie gek kriptiese lyn het net uitgevoer word. En glo my, voordat lank, binne enkele dae, sal jy verstaan ​​wat al van daardie nonsens beteken. Maar vir nou, weet net wat afgesette uitvoering van 'n samesteller. Met ander woorde, is dit gevind 'n samesteller op my rekenaar dit is pre-geïnstalleer op die CS50 toestel dat ons sal die hand aan jou in Probleem Stel 1. En dit het toe hello.c as insette, en wat blykbaar 0e en 1e as uitset.
En by verstek wat dit doen, is dit spaar diegene 0e en 1e in 'n lêer genaamd hallo. En alhoewel hierdie sintaksis ook kan wees vir jou nuut, net deur te sê dot streep hallo gaan die wees beteken deur wat ek hierdie program.
Vir nou en vir ten minste 'n paar weke, byna almal van die programme Ons skryf gaan wees in swart en wit teks vensters. Geen muise, geen klik, geen vensters nie, geen ikone. Ons gaan dit eenvoudig te hou en fokus op die onderliggende idees aanvanklik voor ons kry om iets 'n hoër vlak, byvoorbeeld, soos die breek uit spel wat ons gepraat oor in die eerste lesing verlede week.
So toe ek Tik hier, dis ekwivalent in 'n teks net omgewing dubbel klik op 'n ikoon genoem hallo. Wat verwag jy wil gebeur wanneer ek druk Enter dan?
Publiek: Dit sal druk "hallo wêreld."
David J. Malan Hopelik dit sal druk "hallo wêreld." En inderdaad is dit gedoen het. Nou is daar 'n paar kriptiese sintaksis hier. Kom ons rewind net vir 'n oomblik en kyk of ons kan nie begin afleidings net deur geknutsel, probeer en versuim, oor wat hier aangaan nie. Wat gebeur as ek ontslae raak van die agteroorskuinsstreep n? Nou sommige van julle wat nog geprogrammeer voor waarskynlik dadelik weet wat dit beteken. Maar vir dié van julle wat nog nooit geprogrammeer, ten minste dink aan jouself wat gaan om te verander wanneer ek tik hierdie program? So ek gaan om terug te gaan na my klein swart-en-wit venster, wat is die venster waarin Ek kan stel nie. Ek gaan hallo te hercompileren. Ons gaan om dieselfde te sien kriptiese volgorde van instruksies. En ek gaan dot streep te doen hallo. En nou het iemand, as jy wil, wat nog nooit geprogrammeer voor, wat dié keer anders sou wees? Ja.
Publiek: Dit sal nie ophou druk "hallo wêreld."
David J. Malan Dit gaan aan- jammer?
Publiek: Dit sal nie ophou om dit te druk?
David J. MALAN: Dit sal nie stop druk "hallo wêreld." So nie 'n slegte idee nie. Ander idees? Ja.
Publiek: Fout boodskap?
David J. Malan Fout boodskap, OK, kan wees. Wat anders? Publiek: Dit mag dalk druk die bracket met die kommapunt asook? David J. Malan dalk druk die bracket met die kommapunt as well. So miskien is dit agteroorskuinsstreep is dan 'n paar soort terminous wat belangrik is. Enige ander gedagtes?
So al die goeie idees. En in die feit, dit gaan 'n fout boodskap te wees. Dit is waarskynlik die mees waarskynlike die antwoord in die algemeen te wees vir die volgende paar weke as ons leer om hier kode.
Maar vir nou onthou dat rekenaars alleen doen wat jy vir hulle sê om te doen. Baie soos die belaglike grondboontjiebotter botter en jellie voorbeeld. Ons menslike rekenaars is net veronderstel om te doen wat jy het om dit te doen. So in hierdie geval, as jy nie die rekenaar vertel dat flikkerende wyser beweeg na die volgende lyn, dit is nie van plan om dit te doen. So toe ek hierdie program nou, let op die verskil.
Lyk soos 'n fout. Dit is 'n estetiese fout, miskien. Maar wat is anders omtrent hierdie uitset teenoor die laaste een natuurlik? Ja.
Publiek: Dit het nie 'n nuwe reël.
David J. Malan Dit het nie 'n nuwe reël. Nou die van julle wat het miskien gemaak webblaaie voor, kan jy weet van die BR tag of die paragraaf tag, baie soortgelyk in die gees. 'N webblaaier sal jou ignoreer tot vertel dit presies wat om te doen nie. Net so is 'n taal soos C slegs gaan om te doen wat jy vertel om dit te doen.
So die rede dat al hierdie voorbeelde, Tot dusver het soort terloops het hierdie agteroorskuinsstreep daar, dit is die middel deur wat jy jouself uitdruk as 'n nuwe lyn karakter, om so te praat. En jy kan soort van verstaan, miskien, dat hierdie soort van dom sou lyk Indien niks anders nie. As ek wou 'n nuwe lyn, net slaan Tik en dan soort van butchering die kode soos dit behoort nie regtig vryf jy die regte manier. En selfs as jy dit nie doen nie regtig omgee op hierdie punt, sal jy besef dat dit is nie 'n besonder goeie soek stukkie van die kode.
En ja, wat die wêreld besluit jaar gelede is dat wanneer jy die te sit wyser op 'n nuwe reël uitdruklik jy moet uitdruklik sê nuwe lyn, agteroorskuinsstreep n. En daar is 'n paar ander simbole soos dit. Maar vir nou sal ons net fokus op agteroorskuinsstreep n.
Nou laat maak die program 'n bietjie meer interessant. Ek gaan om voort te gaan en hierdie tyd oopmaak om 'n nuwe lêer. Ek gaan dit as hallo-1.c te red. En net vir die skop, ek gaan om te gaan steek dit in my Dropbox gids.
As jy sal sien in die CS50 dokumentasie vir die toestel, later hierdie week vir Probleem Stel 1, sal ons moedig jy Dropbox te gebruik of sommige gelykstaande diens, want dan al jou kode se gaan gerugsteun word outomaties. En so dit is hoekom ek het in hierdie gids hier.
En nou gaan ek 'n te skryf effens anders program. Sluit, standaard I / O.h, int main nietig. En dan in hier printf, hallo wêreld, dit is presies dieselfde as voorheen.
Maar nou wil ek iets te druk dit is 'n bietjie anders. Ek wil uit te druk, sê, "Hallo, David." Alle reg, so duidelik, dit moet hopelik die geval dat as ek heropstel hierdie program, tik dit, dit gaan om te sê "hallo, David."
Maar wat as ek wil in te voer hierdie soort van veranderlike, die idee van 'n houer wat gaan te stoor D-'n-v-i-d en nie moeilik kode dit in my program. Wel, wat as ek begin om iets te doen soos hierdie?
String s, so dit is 'n veranderlike. As jy wil 'n string, a.k.a. 'n woord of 'n frase. 'N volgorde van die karakters is wat ons in ontwikkeling noem 'n string. Ons is net gaan om te generies oproep dit is nie, want dit is 'n mooi eenvoudige naam. Maar ek kan dit noem nie.
Ek gaan string s gelykes te sê quote unquote, "David," kommapunt. En nou wil ek voeg D-'n-v-i-d in wat ek druk. En voor ons het 'n teaser op die skerm van 'n paar spesiale sintaksis wat toegelaat om ons te plaasvervanger in 'n waarde. Wat was die spesiale simbool 'n paar skyfies gelede?
So persent. Teen die tyd was dit persent d vir desimaal nommer. Dit maak nie regtig lyk relevant hier. Blyk daar se nog persent simbool, wat persent s, wat staan vir 'n plekhouer vir 'n string.
So nou, baie eenvoudig, ek is gaan om te gaan maak hallo-1, omdat hierdie lêer genoem hallo-1.c, en druk Enter. En ek geskroef. Wat gaan aan? Wel, hier is waar ons moet begin om te besef dat ons in hierdie opdrag line omgewing, hierdie Slegs teks omgewing. Daar is geen klik op ikone soos dopgehou nou. En dink terug 'n oomblik gelede. In watter gids het ek sê Ek is deur my kode? So het die Dropbox gids. Kon niks genoem het. Maar dit gebeur genoem te word Dropbox. So ek een of ander manier moet dubbel kliek op dat Dropbox gids in orde te kry in dit en kry my kode genoem hallo-1.c. In werklikheid, laat my voort te gaan en die minimum te beperk hierdie venster vir net 'n oomblik. Net soos Windows en Mac OS, daar is dopgehou in Linux. Daar is dopgehou in die CS50 toestel. Dit is net reg nou is ons beperk onsself na hierdie teks omgewing.
Maar as ek dubbel kliek op Dropbox, let daar is die lêer wat ek wil op te stel. Maar ek moet dit swart en wit terminale venster, om so te praat. Maar ek nodig het, dus om te beweeg in die gids of gids. So effens arcane, maar jy kry gebruik om dit ook.
In die wêreld van Linux, wat weer die bedryfstelsel stelsel wat ons loop binnekant van die CS50 Toestel, daar is 'n opdrag genoem CD. Wat beteken dat ek kan CD, ruimte, Dropbox doen. CD, verander die gids. Right. Terug in die dag wanneer mense was uitvind rekenaars en bedryf stelsels soos hierdie, hulle wou tik die minste toetsaanslagen moontlik. So die maklikste manier om te sê verander die gids was CD.
So as ek getref CD, ruimte Dropbox, sien wat hier verander. Binnekant van hakies die toestel is 'n soort van humoring my en herinner my waar ek is. So het die oop gids is Dropbox. As ek tik nou ls vir lys, weer bondige, want die mense wou nie tik terug in die dag l-i-s-t. So het hulle in plaas daarvan het dit LS.
Betree. Let sien ek twee dinge, hallo-1.c, en dan is dit kriptiese ding, bron 1m. Dit is net my manier om te sê bron-kode vir week 1 Maandag. Dit is 'n gids wat ek afgelaai van CS50 se webwerf wat ek gemaak het vroeër vandag en net sit dit in die toestel in advance.
Maar vir nou die enigste ding wat ons omgee is die maak van hierdie program. So wanneer ek tik maak hallo-1, Tik. Damn dit. Iets het skeefgeloop. So laat se terg hierdie uitmekaar. En dit is ongelukkig waar dinge 'n bietjie stresvol op die eerste, ten minste as jy het nooit geprogrammeer voor.
My god. Ek het 'n twee lyn program en Ek het vier lyne van foute. So, wat gaan hier aan. In die eerste plek altyd terug blaai en vind die eerste fout boodskap, want dikwels opstellers net deurmekaar raak deur wat ek en jy doen. Opstellers is redelik dom. Hulle sal net doen wat jy hulle vertel om te doen. En as jy hulle verwar, hulle is net gaan soort van gooi hul hande en miskien gooi meer fout boodskappe as eintlik relevant.
So laat ons kyk na die eerste. Super kriptiese by die eerste. Maar kennisgewing, hier is die naam van die lêer waarin ek verfrommeld blykbaar. Kolon 5, kolon 5 beteken net op lyn 5 op die vyfde karakter. So vyfde kolom van die karakters, as jy wil, fout. Gebruik van swart identifikasie string. Het jy bedoel standaard n?
Nee, ek bedoel string. En dan is dit soort kopieer en plak wat ek getik regtig trek my aandag aan waar ek geskroef. So vir een of ander rede C, of ten minste die samesteller verstaan ​​nie die woord string. En dit is omdat ons dit op. So string bestaan ​​nie in C. Wat CS50 doen, vir die eerste paar weke net van die klas, is ons 'n mate van opleiding wiele, om so te praat. En ons het hierdie opleiding wiele binnekant van 'n spesiale lêer genaamd CS50.h.
So dit is die tweede van twee lêer name wat blykbaar eindig in dot h. Kom ons rewind. Printf is 'n verklaring of funksie wat blykbaar druk iets aan die skerm. Maar jy het my nie sien implementeer printf, reg. Iemand jaar gelede geïmplementeer printf. In watter lêer sal jou verbintenis hy of sy die implementering vir printf, die kode vir printf?
In 'n lêer genaamd standaard I / O.h. In werklikheid, is dit waarskynlik in twee lêers, standaard I / O.h, wat staan ​​vir kop lêer, en standaard I / O.c, wat staan ​​vir C bron-kode. Sodat hy of sy 'n paar jaar gelede plons die kode wat hulle geskryf het in daardie lêer sodat mense soos ons jaar later kan dit sluit, so te sê, in ons eie programme.
En inderdaad, dit is wat die pond teken gevolg deur die woord sluit nie. Dit lyk op die plaaslike hardeskyf, bevind dat die lêer genaamd standaard I / O.h, en dan effektief afskrifte en plak dit in my eie lêer. So nou is my program weet hoe om te druk op die skerm.
So deur daardie logika, waar word string gedefinieer?
David J. Malan CS50.h. En inderdaad, dit is wat ons, die kern personeel, gedoen het nie. Ons het uitgevind 'n paar data tipes, om so te praat, soos 'n string, bykomend tot dié wat jy kry vir gratis, soos 'n int. En ons sal ander sien soos 'n kar vir 'n karakter en 'n paar meer. Binnekant van CS50.h blykbaar is ten minste 'n melding gemaak van tou.
So nou laat my voort te gaan en tik make hallo-1. Ek sal vergroot weer en kruis my vingers. Nou deurdat hulle een gemaak verander ek vaste die meeste dinge. Maar damn dit. Meer Procenten as data argumente. Wat het ek verkeerd doen hierdie tyd?
So dit is nog redelik kriptiese. Maar hierdie fout is op reël 7 en karakter 21. So laat ons gaan kyk hier. Dit is 'n bietjie subtiel. Maar as jy dink oor wat die fundamentele idees hier is, miskien kan ons hierdie terg uitmekaar.
So printf is die naam van die funksie. Hakies, tot dusver, is net soos wat ons het rondom die dinge wat ons verby as insette tot 'n funksie. Alle reg, net 'n arbitrêre menslike konvensie. Gebruik hakies. Binnekant van die hakies ons het om dubbele aanhalingstekens, en dan 'n string soos "hallo wêreld."
Maar in daardie vroeër byvoorbeeld baie kortliks het ons na met nuuts af. En ons het die persent d, wat anders was binnekant van die hakies dat ek uitgeroep mondelings? Ja.
Publiek: So dit is wat jy neem [Onhoorbaar] vanuit [onhoorbaar] wat hierdie [onhoorbaar]? David J. Malan Presies. So het ons die persent d. Maar dan moet ons het noue quote, komma, toonbank. Right. Ons gespesifiseerde wat ons wil om te doen as die plekhouer. So wat ek gaan om hier te doen, is om komma, doen wat jy wil hê ek moet sit? Publiek: S. David J. Malan S, omdat s in hierdie geval is die naam van die stoor houer. Dit is die naam van die glas bak. Terwyl voordat dit was toonbank in daardie eenvoudige Scratch voorbeeld wat ons gekyk het. So nou het het twee veranderinge, laat my zoom in en probeer weer te stel hierdie program.
Nou sien ek dat kriptiese lyn. Maar dit is eintlik die Naam van die samesteller. Klang is die naam van die samesteller. Maak net spaar my die hoofpyn van al tik dat die lang gek opdrag uit. So as ek nou streep dot nie hallo-1, Ek moet sien "hallo, David."
Pretty underwhelming, al is, reg? Ons kon gedoen het dit 'n baie meer eenvoudig sonder om te praat oor die veranderlikes en CS50.h en al wat. So laat ons maak dit 'n bietjie meer interessant.
Benewens CS50.h, met dinge soos string verklaar, die CS50 biblioteek het ook 'n paar funksies. So net soos jare gelede, het iemand geskryf printf en sit dit in 'n standaard I / O.h en 'n paar ander lêer.
Ons, die CS50 personeel, het 'n funksie genoem getChar, GetDouble, GetFloat, GetInt, GetLongLong, GetString, en ons het die binnekant van 'n lêer genoem CS50.h en CS50.c. En ons het hulle binne van die CS50 toestel. En mense kan ook laai dit aanlyn as hulle wil sit hulle op hul eie rekenaars sowel. Wat is om te sê dat ons geskep funksies wat insette van die gebruiker. Ek weet nie wat al van hierdie data tipes is. GetInt is soort van maklik, soos kry 'n heelgetal een of ander manier van die gebruiker. En GetString is waarskynlik soos get 'n woord of 'n sin van die gebruiker.
So laat ons fokus op dit. En ek gaan om terug te gaan na die apparaat en ek gaan om voort te gaan en stoor die, kom ons noem dit hallo-2.C as my tweede weergawe. En laat ons 'n paar veranderinge.
Hierdie keer in plaas van hard kodering David, wat maak 'n ongelooflike strook maar underwhelming program, Wat gebeur as ek in plaas doen GetString? Nou sien GetString het 'n oop hakies, geslote hakies, want dit maak nie enige insette nodig. Dit is net gaan om te gaan kry 'n string van die gebruiker.
En nou 'n woord oor die ander sintaksis. Kommapunte einde net 'n reël van die kode. Jy hoef dit nie oral. Maar dit beteken net ek is gedoen met hierdie lyn van kode. Laat my skuif na 'n ander verklaring of funksie. String verklaar 'n veranderlike. String is soos om te sê gee my 'n bak, asseblief. En laat ek 'n string in dit.
En nou het die gelyk teken. Wat is die gelyke teken wese soortgelyk aan?
David J. Malan Ja, toeken van 'n waarde. So as ek, byvoorbeeld, call hierdie funksie GetString, en ons sal sien in 'n oomblik wat gaan die gebruiker vir 'n string te vinnig. Dit is soos die verhuring van my skryf dan D-'n-v-i-d op 'n stuk papier. En as ek sê string s gelyk GetString, gelyk nie regtig beteken gelyk in C-programmeertaal. Dit beteken toewys van die reg kant aan die linkerkant.
So ek het gekry 'n string. En die gelyke teken beteken dit in die stoor houer genoem is. En dan slaag om dit uit te printf eintlik sy ding doen.
So het die eindresultaat dan gaan om te kyk 'n bietjie anders. Kom ons maak hallo-2. Óf kan werk. Jy volgende saam. Maak hallo-2 gewerk. Dot streep hallo-2, Tik.
Dit lyk asof ek 'n oneindige te hê lus of iets. Niks gebeur. Hoekom?
Publiek: Dit maak 'n oneindige lus. David J. MALAN: Dit is 'n oneindige lus. Dit is soort van wag vir my om te eintlik gee dit met 'n paar insette. So laat my gaan voort en tik Dawid, en druk Enter. En nou is dit sê "hallo, David." As ek loop dit weer. Kom ons tik in Rob, "hallo, Rob."
Nou is dit die ergste user ooit. Die gebruiker is blykbaar veronderstel is om te weet wat om te doen nie. Maar maak nie saak. Die gebruik van hierdie dieselfde gebou blokke net soos in Scratch, ons kan die probleem op te los en sê iets soos jou naam asseblief, kolon, ruimte, gesluit quote, naby hakies, kommapunt. So 'n baie weer dwaasheid met die sintaksis.
Maar let ek het net bygevoeg 'n legkaart stuk bo hierdie een en behalwe hierdie een. So nou as ek tik hierdie, hallo-2, Tik. Wag 'n minuut. Wat is verkeerd? Dit is nie 'n tree verskillend. Ja.
Publiek: Jy het nie weer uit te voer nie.
David J. Malan ek het nie loop om weer reg. So ek het my bron-kode verander. Maar weereens, daar is dat die vloei. Bron-kode deur die opsteller gee jy 'n nuwe voorwerp kode, of 0'e en 1'e. So ek moet eintlik tik make hallo-2 Tik. OK, lyk iets om te gebeur. Dot streep hallo-2. Jou naam asseblief. En nou duidelik te wees, hoekom is die wyser op dieselfde lyn? Presies. Ek het nie die agteroorskuinsstreep sit N hier in my kode. So nou kan ek skryf iets soos Daven, Tik. Ek kan dit weer uit te voer en tik iets soos Gabe, Tik, en ons kry 'n ander program weer en weer en weer.
Nou uiteindelik gaan ons nodig 'n paar verskillende vermoëns te gebruik. Ons moet uiteindelik 'n paar te stel voorwaardes dinge voorwaardelik doen. Miskien loops, sodat ons kan doen dinge weer en weer.
Miskien sal dit lekker wees as ons ons eie funksies kan implementeer, soos ons kan implementeer ons eie printf of ons eie weergawe van GetString en GetFlow, want uiteindelik selfs die gebruik van hierdie opdrag lyn omgewing kan ons doen om selfs die mees visueel interessante dinge.
Inderdaad ten slotte laat my dit doen. Ek gaan om voort te gaan en sluit die vensters en maak hierdie ikoon hier wat net 'n groter weergawe van wat ingebed terminale venster. So gedit het nie net die plek vir my kode, maar ook 'n ingeboude in terminale venster, die swart en wit venster waar ek kan hardloop beveel.
Ek het net gebeur om oop te maak 'n groter weergawe van hierdie. En nou is ek gaan om te gaan na die gids wat ek reeds sit vooruit op die kursus se webblad. En ek gaan om voort te gaan en 'n lêer genaamd thadgavin.c oopmaak, wat geskryf is deur iemand anders.
En as ons kyk na hierdie, Dit is nie die soort van die kode ons sal skryf, aangesien Die doel van hierdie kode was die mooiste te skryf soek kode wat hy of sy kan, ongeag of 'n ander mens kan ooit hierdie kode te verstaan.
Trouens, elke jaar is daar is wat genoem 'n verborge C-wedstryd, wat is vir ware geeks wat skryf kode wat niemand anders kan lees, maar dat iets óf werklik 'n eenvoudige of regtig ongelooflik. En ons het gedink ons ​​sou sluit af met hierdie voorkoms op iets wat redelik amazing jy dalk een keer vantevore gesien het. Maar ons sal die einde van hierdie noot, dot streep thadgavin. Dit is dan wat wag.
Dit is dit vir CS50. Ons sal jy sien op Woensdag.