>> [Musik spiller]
>> DAVID MALAN: Okay dette er CS50 og dette er i slutningen af ​​uge én.
Så jeg vil gerne introducere min tidligere advisee, Andel Duff, der ikke kun gør
iPhone 5 stande, såvel som dette talerstol, gør han også biler.
ANSEL DUFF: Hvordan går det, alle sammen?
Jeg vil bare fortælle dig lidt lidt om Formula SAE, som jeg
er kaptajnen.
Det er en MIT hold.
Jeg vil bare fortælle dig fyre en lille smule om det
og forhåbentlig generere en vis interesse.
>> Så lad mig bare køre gennem en par ting om vores team.
Så vi er helt studerende løb, hvor alle
af medlemmernes design, simulere, test, og producenten et delsystem
af bilen.
Vi har vores egen maskine butik og garager, og N52-- eller ked af det,
N51-- som er den samme bygning som MIT Science Museum.
Og vi er de mennesker, at køre bilen.
Der er en national konkurrence i begyndelsen af ​​sommeren,
og så er der mindre shootout konkurrencer i løbet af året.
Og så gør vi kørekursus dage at få nye medlemmer bekendtskab.
>> Vores bygge dage er på Lørdage fra 11:00 til 08:00.
Frokosten og aftensmaden kan tage sig af, fra Bertucci-og Beantown
henholdsvis.
Vi har et ugentligt møde og seminar, der er til kursus kredit.
Hvilket er ny som i dette semester, og det vil også være til næste semester,
så du kan krydse-reg for.
Og så har vi designe, butik, og CAD-dage i løbet af ugen,
mens medlemmerne vil selvstændigt CAD-dele, ordrebeholdning et cetera.
>> Så for elektrisk ingeniør på holdet
vi har vores trækkraft, højspændingsnet,
som kører til en nominel 300 volt, som omfatter
motorer, kontrolapparater, og batteripakker.
Så vi har en lav spænding system, som løber
ved 12 volt, som omfatter kontroller kan knudepunkter hjernen
kasse, og instrumentbrættet.
Så vidt CS går, gør vi har hjemmeside vedligeholdelse
at vi har brug gjort for arrangementer, medlemskab forandringer, nye billeder og PR-materiale.
Og så har vi kode, der styrer bil for vores trækkraft kontrol, lancering
kontrol, tankestreg kontrol, drejningsmoment vectoring, og regenerative bremsesystemer, der
løber typisk i MATLAB, Simulink, og LabVIEW.
>> Fortælle dig en lille smule om bilen.
Så det er omkring 500 pounds.
Det er regler, der er begrænset til 85 kilowatt.
Det har 2 EMRAX 207 motorer i tilbage, en for hvert baghjul.
Den har specialbyggede batteripakker fra Prismatiske A123 pose celler
på 300 volt og 5.6 kilowatt-timer.
Og det er direkte drev med en 2,64-1 udvekslingsforhold.
Her er nogle billeder, vi tog af det på konkurrencen.
Her er ryggen, næse kegle, og her er de motorer,
de store sorte skiver under et herre manus.
Her er et dias, jeg trak ud af vores konkurrence ordningen.
Og det er bare at sammenligne vores bil til en par af kommercielt tilgængelige biler,
ligesom KTM XBOW Ariel Atom, og Caterha M 7-280.
Hvis du er fortrolig med pris, magt pull vægt, dollars per hestekræfter,
dollars per drejningsmoment, og vores bil blæser dem alle ud af vandet.
Hvis du har spørgsmål, notere ned denne e-mailadresse.
Skyde os en mail på fsae@mit.edu.
>> Vi er glade for at tale om noget, du gerne vil.
Harvard-studerende er venlige mindretallets på holdet.
Hvis du har spørgsmål om der bedes du skyde os en mail,
glad for at tale, og jeg har tænkt mig til hovedet tilbage over til David.
Tak.
Jeg sætter pris på det, gutter.
[Applaus]
>> DAVID MALAN: Ansel tilbragte sommeren arbejde sammen med os her på campus i CS50
denne sommer.
Og ud over at arbejde på ting som binære løg
han faktisk virkelig åbnet vores eyes-- og minen i particular--
til hvad der virkelig skæringspunktet ikke af hardware og software kan være.
Faktisk en masse af de ting, han bare turnerede dig igennem er i sidste ende
skabte først i software, og så i sidste ende fabrikerede
i den virkelige verden i hardware.
Så hvis du er interesseret i udforske denne skæring,
måske tage op denne gruppe.
>> Nu mellemtiden de af jer der er fans af teknologi,
og Apple-produkter i navnlig ved, at der
var et par annonceringer i går.
Men vi troede, vi ville vise du en, der kom ud
et par dage før, at du måske ikke har set.
>> JORGEN EGHAMMER: Du ved, en gang i et stykke tid noget
kommer sammen at ændrer den måde, vi lever på.
En enhed, så enkel og intuitiv bruger det føles næsten bekendt.
Introduktion 2015 IKEA kataloget.
Det er ikke en digital bog eller en e-bog, er det en bog-bog.
>> Den første ting at bemærke er nej kabler, ikke engang et strømkabel.
2015 IKEA kataloget kommer fuldt opladet,
og batteriets levetid er evig.
Interfacet er 7,5 med 8 inches, men kan udvide til 15 ved 8 inches.
Navigationen er baseret på taktil berøring teknologi, som du rent faktisk kan føle.
>> Indholdet kommer præinstalleret via 328 high-definition-sider
af inspirerende boligindretningsprodukter ideer.
Sådan startes browsing, blot trykke og trække.
Højre til venstre for at bevæge sig fremad, venstre til højre for at flytte tilbage.
>> Læg mærke noget andet?
Det er rigtigt.
Ingen forsinkelse.
Hver krystalklar side belastninger øjeblikkeligt,
uanset hvor hurtigt du ruller.
Hvis du ønsker at få et hurtigt overblik, bare holde det i din hule hånd,
og med tommelfingeren, hastighed gennemse indholdet.
>> Hvis du finder noget, du vil gemme til senere, kan du blot bogmærke det.
Og selv hvis du lukker programmet, du kan nemt finde bogmærket igen.
Forbløffende.
>> [Latter]
[Applaus]
Så det bringer os til i slutningen af ​​uge et.
Et par annonceringer nu.
Så sektionering er nu i gang.
Gå til denne webadresse her engang mellem nu og fredag ​​ved middagstid
til rent faktisk at angive, om du er blandt dem mindre behagelig, mere
komfortabel, eller et sted i mellem.
>> Det er typisk en af ​​dem ting, som du lige slags kender.
Og i virkeligheden dem, der er mindre komfortable nok vide så meget,
dem af jer, der er mere komfortabel vide så meget,
og igen, hvis du ikke er helt sikker på, hvilken af disse spande du falder ind du er
sandsynligvis et sted i mellem.
Men forvisset om du kan bytte efter et par uger, hvis det bliver nødvendigt.
>> I mellemtiden, for den kommende uge Vi starter ikke dele per se,
men super sektioner, som er åbne for alle studerende.
Det kommende søndag på et sted blive annonceret på kursets websted
vi vil have en for dem mindre behagelig,
samt en for dem mere komfortabel.
Og dem et sted i mellem kan vælge, hvilken af ​​de to,
eller begge dele, hvis du gerne vil, at sidde-in på.
Og fokus på dem vil i sidste ende være på C,
som vi vil fortsætte vores samtale i dag.
>> Problem sæt 0 mellemtiden er forhåbentlig i dine hænder.
Officielt skyldes i morgen, Torsdag kl.
Medmindre du kontanter i en af dine 5 sene dage,
hvilket vil bringe det indtil fredag ​​ved middagstid.
Problem sæt 1 mellemtiden vil være lagt på kursets hjemmeside.
Og dette vil være vores første strejftog som en klasse i C.
Og det problem sæt spec vil gå dig gennem en masse mekanik hvad
vi begyndte at tale om på mandag, og vi vil fortsætte med at tale om i dag.
C, Linux, CS50 apparat, bliver alle
vil afvente dig i specifikationen.
>> Kontortid i mellemtiden er i gang, i bachelor spisesal.
Hovedet til denne webadresse her for at se den planlægge for i aften og i morgen,
Hvis du gerne vil deltage.
Spørgsmål mellemtiden, så du få mulighed for at stille spørgsmål
asynkront, 24/7, indser du er ikke begrænset til sektioner og kontor
timer, men snarere dette værktøj her, CS50 Diskuter på denne webadresse
vil være kursets online opslagstavle software via hvilke
du kan stille spørgsmål klassekammerater og også personale.
Så husk på, at ressource som godt.
Imens en tradition starter denne fredag.
Som du måske har et glimt fra sidste onsdag teaser-video,
Vi har en tradition mest hver fredag ​​i løbet af sigt
tage omkring 50 studerende, og personale til en lokal restaurant kaldet
Fire and Ice, hvor vi er typisk følgeskab af nogle alumner
eller venner fra industrien generelt stræbe
at gøre en stor klasse føler mindre.
Så det er en helt afslappet frokost.
En flok af os, ansatte især vil spille musikalske stole
og chatte med elever om 50, livet udenfor på 50,
liv i fremtiden, den virkelige verden, Jeg taler om jobmuligheder
med venner i industrien.
>> Så hvis du gerne vil slutte sig til os denne fredag, hoved til denne webadresse her.
Pladsen er begrænset, men vi vil gøre dette recurringly hele sigt.
Leder der til cs50.harvard.edu/rsvp.
Og hvis du ikke får i denne gang, ikke at bekymre dig.
Vi vil gøre det igen i de kommende uger så godt.
>> Så det er billedet vi malet i sidste uge,
og du har sikkert været fuske i hidtil.
Men lad os prøve at forbinde dette nu til, hvad vi skal gøre i dag
og fremefter.
Kan jeg få en frivillig?
Okay, eller flere.
Hvordan omkring her på ende, i den blå skjorte.
Kom op, hvad er dit navn?
ALANA: Alana.
DAVID MALAN: Alana.
Så Alana, for bare en moment-- rart at møde dig--
kommer til at spille den rolle, af denne funktion her.
Den lilla blok vi har kaldet hidtil en funktion.
Så hvad jeg har tænkt mig at gå forude her og tilbyde Alana
er en lille navneskilt, at klart, hvilken rolle, du spiller.
>> Så du skal være sige blok.
Hvis du ønsker at gå videre og sætte det på.
Og vi vil holde dette super enkel.
Hvis målet ved hånden er simpelthen nu at gennemføre med Alana,
denne såkaldte sige blok, her er hvordan det kommer til at fungere.
Jeg have-- lad os kalde det et argument eller parameter,
det er egentlig bare et blankt stykke papir.
Og det er hvide til at slags være minder af den hvide boks, hvor du
kan skrive ord.
>> Imens jeg har tænkt mig at gå her.
Jeg har tænkt mig at gå videre og skrive H-E-L-L-O komma verden.
Og nu vil jeg, som siger programmøren, ikke faktisk ved, hvordan at sige noget.
Jeg kan komme op med ordene: men jeg gør ikke nødvendigvis
vide, hvordan at udtrykke mig mundtligt eller på skærmen.
Og så hvad jeg har tænkt mig gøre er at tage dette stykke
funktionalitet, hvis input-- eller argumenter, som vi vil kalde det,
Jeg har skrevet om dette stykke paper-- og jeg har tænkt mig at outsource det.
>> Og ja det er den rolle, som fungerer i et programmeringssprog
kan spille.
Noget ligesom sige blok kan outsources
til en person, der virkelig kender hvad hun eller han taler om.
Så hvis du vil gå over her for et øjeblik,
Jeg vil videregive dette input til Alana, og beder om, at du siger dette input.
>> ALANA: Hej, verden.
DAVID MALAN: Det er det.
Således at der er en funktion.
Nu kan vi tage det lidt mere, vi kan tage et skridt fremad her.
Fordi det var tydeligt underwhelming.
Så lad os nu konvertere dette til noget lidt mere sofistikeret.
>> Så dette er naturligvis vores C-version.
Så nu, hvis du ønsker at tage den en off, det navneskilt slukket,
og lad os få dig sat på et nyt navn.
Men fundamentalt er du spiller den samme rolle,
det bare så sker til kaldes printf nu.
>> Historien er, selvfølgelig, vil være-- sandsynligvis
ligesom underwhelming-- er vil være den følgende.
Du er nu den funktion printf.
Jeg er den, der ringer, eller programmør, der ønsker
at stå på skuldrene af folk i fortiden som dig,
der allerede har regnet ud, hvordan til rent faktisk at skrive noget ned.
Og så denne gang, snarere end at sige det lad
faktisk bruger vores skærm herovre.
Så hvis du gerne vil træde herovre, jeg vil
at passere igen som input til min printf ven.
Hvis du kunne gå videre og udskrive det på skærmen,
simpelthen ved at trække med din finger på den sorte skærm.
Fremragende.
Okay, så masser af spænding for hvordan der skulle spille ud.
>> Så lad os nu tage tingene op en endelig hak, hvis vi kunne, som følger.
Så dette er et C-program som vi sagde sidste gang.
Og det gør bare, hvad du gjorde, det udskriver til skærmen, hej, verden.
Selvom der er helt klart en masse af distraherende ting deroppe.
Men lad os tage tingene op et hak og indføre denne version, som husker
var den tredje version, vi endte med sidste gang.
>> Og nu er der klart to anvendelser af printf.
Der er 2 opkald til Alana i dette tilfælde til printf,
men der er også en opfordring til en anden funktion.
Hvad er denne funktion klart?
GetString.
>> Kan vi få en mere frivillig?
OK, kom op.
Hvad er dit navn?
>> JAVIER Javier.
>> DAVID MALAN Javier, kom op.
Så Javier rolle er på dette stykke papir.
Hvilket jeg har tænkt mig at kalde generisk sek.
Nu er det en variabel, er det af typen string, som underforstået
denne anden linje i midten der.
Og jeg vil gerne have dig til at gå få mig en streng.
Specifikt hovedet ned til orkester sektion og få mig navnet på en person,
og komme tilbage med en variabel indeholder den værdi.
Det kan være hvem som helst, du ønsker.
>> Her går vi.
Okay, Javier er skrive ned navnet.
Okay.
Vi kan alle sikkert gætte hvordan Dette kommer til at spille ud.
Vi er måske belaboring det punkt, hvad
en funktion er at gøre, men ikke desto mindre mange tak.
>> Så Javier er vendt tilbage denne streng her, hvilket kan ikke helt se,
Jonathan er streng at vi har fået.
Så nu, hvad jeg rent faktisk vil at give Alana selv
er noget lidt anderledes.
Fordi der i denne version af program, der først er dit navn.
Så den allerførste argument Jeg har brug for at give Alana
med vil være bogstaveligt oplyse dit navn.
Okay, så enkelt er det Jeg ville aflevere det til dig.
Og som jeg skriver op næste argument, hvis du
ønsker at gå videre og skrive dette på tavlen, lad os gå videre
og gøre det sidste eksempel her for at gøre klart, hvad der i sidste ende kom til at ske.
Så oplyse dit navn, skrive det mod toppen
hvis du ikke har noget imod, bare så at Vi har plads til en anden linje.
Fordi det sidste jeg har tænkt mig nu give dig, er ikke én,
men to stykker papir.
>> Okay.
H-E-L-L-O komma og derefter en blank linje.
Så hvad jeg er ved at aflevere Alana nu er noget lidt anderledes.
Ikke alene er hun ved at blive det, hvor udfylde det repræsenterer
det percent-- hvad var pladsholder vi har brugt?
Ja, så procent sek.
Imens jeg har tænkt mig at passere hende i et andet argument, som
er netop, hvad Javier hentes fra Jonathan.
>> Så lad mig give dig disse to.
Hvis du gerne vil, gå videre og udskrive denne virkning.
Hvad er i sidste ende sker nu er, Alana igen
spiller rollen som printf.
Javier spillede rolle getString.
Så det vil være din souvenir.
Og i sidste ende, hvad der sker, på trods af dette hello-- yep gå videre og komma.
ALANA: Har jeg modtager denne endnu eller nej?
DAVID MALAN: Jep, du modtog dem begge på én gang.
Så ideen er, at du kan nu vende side
til at håndtere den anden af de to indgange.
Så dette er blot at hammer hjem peger, at mens Alana henrettet
denne grønne linje her, og derefter Javier gjorde denne ene for os
og vende tilbage til mig noget vi vil kalde s, men det var virkelig
bare det stykke papir af hans egne.
Og nu Alana har gjort dette tredje linje.
>> Og selvom alt dette ser så utroligt kryptisk måske
ved første øjekast, det virkelig er så simpelt er det.
Passing indgange rundt, få udgange, enten
bliver fysisk afleveret noget tilbage, eller se en bivirkning som denne.
Noget visuelt skrevet på skærmen.
Så lad os gå videre og takke Alana og Javier,
der var hernede, for slutter sig til os her.
>> [Applaus]
>> Så lad os nu tage for givet, hvor ligetil alt dette kunne være.
Og lad os gå videre til rent faktisk gøre noget i den faktiske kode.
Så op på skærmen, her er et screenshot af den såkaldte CS50 apparatet.
Og hvis du skulle på, som en 02:00 onsdag eftermiddag,
forklare nogle ven hvad CS50 apparatet,
hvordan vil du definere det i en sætning?
Enhver en sætning?
Ja?
STUDENT: Det er ligesom et program der gør alles computer
drives med det samme system.
DAVID MALAN: Godt!
Det er et program, der gør det muligt for alles computer til at køre med samme system.
Det er en slags din egen kopi af et operativsystem
system, der sker for kaldes Ubuntu Linux.
Og det fungerer effektivt inde i et vindue på din egen Mac eller pc,
så denne måde lige ud af porten i uge 1, alle her i klassen
har adgang til de samme værktøjer, den samme konfiguration,
og der er ingen indlæringskurve specifik til en Mac eller en PC i særdeleshed.
>> Nu er vi åbnet, indersiden af ​​CS50 apparatet på mandag, dette program her.
Det sker at blive kaldt gedit.
Men det er egentlig bare en grafisk editor.
Det er noget som Notesblok eller Text Redigere på Windows eller Mac OS hhv.
Og jeg foreslog, at der var virkelig tre vigtige dele til denne skærm.
Oversiden er, hvor du ville skrive din kode.
Og det er, hvor vi tilbragte meget af vores tre eksempler i mandagens forelæsning.
Bunden vi kaldte det, denne sorte vindue, ja?
>> STUDENT: compiler?
>> DAVID MALAN: Compiler vi tilgås ved hjælp af vinduet.
Men mere generelt.
Ja, det var bare en terminal vindue.
Dette er en meget gammel begreb, der bare beskriver hovedsagelig en blinkende
hurtig, at år siden bruges til at være på en af ​​de store CRT-stil skærme.
Men i dag er det slags virtuelle i software.
Og terminalen vinduer Lad os skrive kommandoer.
Den slags af den forenklede udgave brugergrænsefladen eller UI.
Det er ikke en grafisk brugergrænseflade eller GUI
Det er en tekst-baseret interface eller en kommandolinje brugerflade.
>> Og ja det er der i sidste ende Jeg var i stand til at skrive noget kode.
Når jeg havde skrevet noget kode selv, husker, at jeg brugte denne kommando.
Og som det navnet slags antyder, er dette
tillader mig at lave en program kaldet Hej.
Men hvad var det egentlig gør?
Godt gøre tog min input min kildekode,
og omdanne det til det i sidste ende?
>> Objekt kode.
Og objekt kode er bare en fancy måde at sige nuller og ettaller.
Og når jeg ønskede at køre den objektkode,
når jeg ønskede at videregive som input de nuller og ettaller i computerens
hjerne, den såkaldte CPU eller centralenhed,
Jeg var nødt til at køre programmet.
Men det var ikke helt en enkel på mandag som bare dobbeltklikke på nogle ikonet.
Hvad i stedet skulle jeg gøre for at køre et program?
>> Hvad var det anden kommando?
Jeg hører lidt skråstreger?
Ja, ja?
>> STUDENT: Dot skråstreg og programmets navn.
DAVID MALAN: Præcis.
Dot skråstreg og programmets navn.
Nu, hvad gjorde det?
Nå prik er bare en mystisk måde sige aktuelle mappe.
Uanset mappe, du er i, er opført som er repræsenteret prik.
Skråstregen er lige, hvad du har set i Mac OS og Windows i årevis,
det er en separator mellem en mappe eller mappe og resten af ​​nogle navn.
I Windows det sker at gå baglæns, i Linux og Mac
OS det sker at gå fremad.
Men det er bare den separator, så det er bare et uinteressant syntaktisk detalje.
>> Den saftige del af kurset er navnet på det program, Hej.
Og det er, hvad gør skabt for os.
Det udsendes filen for os.
Men hvordan vi kommer til det punkt?
Lad os nu spørge spørgsmål, hvad var virkelig
foregår her, i hvert fald med hensyn til nogle af denne syntaks?
>> Så i en sætning eller deromkring, hvordan vi bortforklare
denne første linje, der er markeret med grønt?
Hvad var det første linie gør, med hensyn til mit program?
Ja?
>> STUDENT: [uhørligt].
DAVID MALAN: Sig det igen?
STUDENT: Inklusive og download tidligere funktioner [uhørligt].
DAVID MALAN: Godt.
Herunder vil jeg ikke sige downloading, men lad os sige
herunder funktioner, som folk har skrevet tidligere.
Og disse funktioner er implementeret et eller andet sted i min computer.
Nogen skrev en fil år siden, og filen
er et eller andet sted inde i CS50 apparat, eller på min harddisk
mere generelt.
Og så denne linje er hovedsagelig sige, gå finde filen, standard I / O-prik
h, og kopiere og indsætte dens indhold lige her på toppen af ​​min fil
så jeg ikke behøver at gøre det manuelt selv.
>> Og blandt de mest saftige stykker inde i den fil vi hævdede var, hvad funktion?
Hvad funktion vi sige blev erklæret eller i standard I / O-prik t nævnt
mest sandsynligt?
Printf, right?
Vi ikke skrive printf på Mandag, det bare eksisterede.
Meget gerne Alana bare kom op på scenen, og hun bare
eksisterede og vidste hvordan man tegner noget på skærmen,
så gør printf eksistere i mange år.
Og så dette er, hvordan vi adgang til det.
Nu, hvis vi går videre her, vigtigste var analog vi
sagde til brik kaldes, når grønt flag klikkede
i verden af ​​Scratch.
Det er bare slags af standard navn, at mennesker
besluttet ville repræsentere standard indgang til et program.
Den bid af programkode der bliver udført først.
>> Imens disse krøllede parenteser er slags ligesom den buede form
en masse af disse gule scratch stykker.
De slags indkapsle hele bundt af instruktioner sammen.
Så det lige slags binder sammen nogle relaterede funktionalitet.
printf selvfølgelig er en funktion, udskriver på skærmen, som vi lige gjorde.
>> Hvad om disse parenteser?
Hvordan ville du define-- selvom du har aldrig programmeret før, men blot baseret
nu en stigende Forhåbentlig intuition, hvad
er parenteser gør for os her?
Eller hvad er de omkringliggende?
Ja?
>> STUDENT: De siger, hvad du vil udskrive med printf.
>> DAVID MALAN: Ja, de siger hvad du vil udskrive med printf.
Eller mere generelt, de er omkring input til funktionen.
Så du kan næsten tænke disse parenteser
som værende ligesom metal klip på denne klippebordet.
Det er, hvad der holder, men det er hvad der er skal bruges til at give argumenter
i funktionen, hvilket dette tilfælde kaldes printf.
>> Så i almindelighed næsten enhver gang vi kalder en funktion,
vi kommer til at se et par parenteser.
Måske med noget i det, ud nu, måske noget i den.
Men det er, hvor du ville sætte de input eller såkaldte argumenter
til en funktion.
>> Her er et sådant argument.
Jeg har fremhævet alt mellem anførselstegnene,
fordi det viser sig i dette sprog kaldes
C, når du ønsker at repræsentere en string-- der er et ord eller en sætning
eller endda en paragraph-- du nødt til at omgive det med anførselstegn.
Ikke enkelte anførselstegn, dobbelte anførselstegn.
Og det er præcis, hvad jeg har gjort her.
>> I mellemtiden er der en funky symbol mod slutningen der.
Den omvendte skråstreg n.
Hvad gjorde vi sige, der er repræsenteret?
Ja?
>> STUDENT: En ny linje.
>> DAVID MALAN: Ny linje.
Højre, du ikke generelt hit Enter, når
du ønsker, at programmet at spytte en ny linje.
Snarere du fortælle det udtrykkeligt med dette ganske mystiske stykke
af syntaks, backslash n, at du ønsker en ny linje til at gå der.
Endelig semikolon.
Vi har ikke rigtig snakke for meget om dette,
og langt dette vil være den bane af nogle af din eksistens for første problem
indstillet, når du bare kunne indse du har glemt noget så dumt
som et semikolon.
Og generelt sætte det der vil løse dette problem.
Men hvad er det gør for os, ville du sige?
>> STUDENT: [uhørligt].
>> DAVID MALAN: Undskyld?
>> STUDENT: [uhørligt].
DAVID MALAN: Finishing en erklæring.
Det er lidt ligesom den periode på enden af ​​en engelsk sætning,
hvorimod i dette sprog C er det slutter en erklæring.
En instruktion af programmeringen kode, som du bare ønsker at sige,
Jeg er færdig med dette.
Bemærk nu det er den eneste her.
Så du behøver ikke ønsker at komme i en vane med at sætte semikolon
efter hver lukket parentes.
For eksempel er der ingen næste til at annullere, og vi vil
vende tilbage i fremtiden hvad ugyldige midler.
Men i dette tilfælde din printf er en funktion, eller en erklæring, der anvendes,
og så vil vi have, at endestation i slutningen af ​​det.
>> Og jeg bevidst plukke på C. Og helt ærligt en masse sprog som C, C ++
Java, JavaScript og et antal andre sprog har en masse af disse
slags syntaktiske detaljer.
Det er bestemt, hvis du er ny til programmering kan virkelig rejse dig op.
Og du vil markere min ord, nogle af jer vil
har denne erfaring i kontortiden eller sen
natten arbejder på nogle p-sæt, hvor Deres forbandede program bare ikke kompilere,
det kører ikke, du har ingen idé om, hvad der er galt,
det forekommer helt logisk korrekt at dig.
Og det er fordi du har glemt noget som rammer
et semikolon i slutningen af ​​nogle linje.
>> Men disse er den slags ting, du er vil straks lære at se.
Og faktisk er disse ting at CA-og TF s har
blevet slags uddannet til at se meget hurtigere end dig.
Og så dette er kun at sige, som du dykke ned i problemet sæt 1 især,
ikke får frustrerede over det her.
Når du slags akklimatisere til verden, du
begynde at se ting, som du måske ikke se ved første øjekast denne første uge.
>> Så kildekode er noget lignende.
Vi ønsker at videregive den i den såkaldte compiler.
Og det compiler som sagde vi giver output
kendt som objektkode, den såkaldte nuller og ettaller.
Men derfra, er, hvad det giver os?
Jamen det giver os disse mønstre.
Og igen din computer, Intel indeni,
forstår disse mønstre af nuller og ettaller.
Og nogle gange mønsteret repræsenterer det faktiske decimaltal
som vi så i sidste uge, undertiden det repræsenterer et brev
ligesom vi så i sidste uge, undertiden det repræsenterer en instruktion,
som udskriver noget til skærmen.
>> Så printf til instance-- men snarere, lad mig spole tilbage.
Vi har taget for givet at disse nuller og ettaller er
produceret af denne kommando gøre.
Men tag ikke en compiler.
Gør ikke den ting i midten der er producerer nuller og ettaller.
Snarere gøre er bare en meget bekvemt navngivne program, hvis formål i livet
er væsentligt at finde ud af hvordan man kompilerer dit program.
Og vi bruger det i disse første uger, fordi det bare
sparer os for en masse besvær.
>> Men hvad gør virkelig gør, når du kompilere hej,
er, som vi sagde sidste gang, det er kigge på din harddisk
eller i den aktuelle mappe, fil kaldet hvad tilsyneladende?
Hello.c, right?
Det er bare sådan et konvent.
Det er vilkårligt, men det er den måde, tingene er.
Gør, hvis du bare angive navn af et program, der endnu ikke eksisterer,
det kommer til at kigge efter kildekoden i en fil, som standard betyder hello.c.
Og hvis den finder det, stor.
Det kommer til at konvertere denne kilde kode i objekt kode til dig.
>> Men hver gang jeg har ramt Enter efter at have kørt gøre hej,
gør du huske at se sidste gang en temmelig lang og kryptisk sekvens
af andre hvide bogstaver og tegn på skærmen?
Tja, der var den egentlige kommando, faktiske compiler, der kørte.
Så den reelle compiler vi vil bruge det meste af semestret er noget der hedder klang.
Nogle af jer måske har brugt Visual Studio før eller GCC,
eller en række andre oversættere.
Vi bruger klang.
>> Og klang giver os mulighed for rent faktisk at konvertere at kildekoden til objektkode.
Hvad betyder dette faktisk betyde i praksis?
Jamen så lad mig gå ind i en af mine mapper fra sidste gang.
Inde i CS50 apparatet.
Og lad mig gå videre og skabe denne samme fil, omfatter standard I / O prik time.
Int main tomrum.
Og vi vil komme tilbage i fremtiden hvad int midler og hvilke void midler.
Men lad os nu gøre hej verden omvendt skråstreg n
ligesom vi gjorde på brættet.
>> Lad mig gemme denne fil kaldet hello.c.
Og nu, hvis jeg ønsker at kompilere dette Jeg could-- lad mig zoome in-- løb
gøre hej ind.
Og dette var igen at meget kryptiske linje.
Men nu mindst ét ​​ord sandsynligvis springer ud på dig.
Dunk er denne linje, vi har set før.
Nu er der en masse andre ting ærligt at vi vil vinke vores hænder på for i dag.
Men der er et par delmængder, nogle få tegn i her
der er af interesse.
Men jeg har tænkt mig at gå videre og gøre dette.
Jeg har tænkt mig at første kørsel hej, bare for at bevise
at dette virker som det var mandag.
Men nu har jeg tænkt mig at slette programmet.
Og meget ligesom vi havde disse korte navne sidste gang,
kommando til at fjerne noget er rm, fjerne, enter.
Du kommer til at få nogle temmelig kryptiske spørgsmål.
Svært at tro, at du kan gøre selv dette spørgsmål svært at forstå.
Men fjern almindelig fil hej bare midler gøre du ønsker at slette hej.
>> Og jeg kan gå videre og skrive y for ja, Enter, og nu er det væk.
Hvad dette betyder nu, hvis jeg rydde min skærm,
er, at i stedet for gør make hello-- dig
Ved I hvad, jeg får god til dette.
Jeg har tænkt mig at køre compiler selv.
Jeg har ikke brug for nogle program til regne ud, hvad min fil hedder.
Jeg skrev hello.c, jeg vide, hvad det hedder,
Jeg er helt klart i stand til at skrive det.
Så jeg har tænkt mig at gå videre og gør clang hello.c Enter.
>> Synes at virke.
Og der er ingen ekstra udgang, fordi clang er compileren.
Det er, hvad der omdanner kildekoden til nuller og ettaller.
Så hvis jeg nu gør prik slash hej Enter, hm.
Ny fejlmeddelelse dag.
Så bash er bare navnet på den blinkende prompt, vi bruger.
Det er en grov forsimpling, men for nu det er alt der er,
det er den blinkende prompt.
Og det er derfor, det er råben på os.
>> Ingen sådan fil eller mappe er lidt mere ligetil.
Men sikkert jeg gjorde det objekt kode.
Men fangsten er, at hvis jeg skriver kommandoen
at vise indholdet af denne mappe, hvilket er hvad?
LS til listen.
Der er en masse ting her, hvoraf nogle kom med apparatet,
ligesom min Desktop mappe, downloads mappe, Dropbox mappe, og alle
at stuff.
Men hvad er interessant er hello.c, som
Jeg har oprettet et øjeblik siden med gedit.
Og hvad er de mærkeligste søger navn på her,
måske, at vi ikke gjorde se sidste tid overhovedet?
>> a.out, right?
Så tilbage i dag, er det var netop besluttet, at når
du samler et program for første gang,
og du behøver ikke angive navn af en fil, lad os kalde det en.
Og a.out betyder bare dette var produktionen af ​​compileren.
Så det er en forfærdelig navn for et program.
Men ved denne logik, dot skråstreg til aktuelle mappe, skråstreg a.out,
bør betyde, at der er i virkeligheden mit hej verden program.
Nu lidt varme op motion, også.
Hvis jeg ønsker at omdøbe dette fil, viser sig, at du
flytte en fil fra et navn til en anden.
Så mv a.out, og så er jeg kan kalde det goddag Enter.
Så dette er en Linux kommando.
DOS havde dette år siden, Windows har en terminal vindue
af en slags, der ser som dette, Linux og Mac
computere har denne blinkende prompt.
Selv om de fleste af os nok sjældent, om nogensinde, bruge det.
>> Men hvad jeg har gjort er at køre en program, hvis navn er MV,
og jeg har givet det med to argumenter, så at sige.
To indgange.
a.out er det oprindelige navn.
Hej er det nye navn.
Så hvis jeg nu gør prik skråstreg hej, Enter, der eksisterer.
Og hvis jeg gør prik skråstreg a.out, hvad forventer du jeg skal se?
>> Bash, ingen sådan fil eller mappe.
Fordi jeg bare omdøbt det.
Så det tager en smule tilvænning.
Men problemet sæt 1 specifikation vil virkelig
holde din hånd gennem nogle af denne minutae.
Da dette er en komplet intellektuelle distraktion
fra mere interessant ideer ved hånden, som
er faktisk at skabe noget ud af koden.
Men lad os gøre en modifikation nu i dette program.
>> Husk, at sidste gang jeg gjorde noget som dette, printf oplyse dit navn.
Og faktisk vi bare gjorde det på den store skærm derovre.
Og så gjorde jeg streng s får GetString åbne paren, close paren.
Og paren bare stenografi notation for parentes.
Så betyder getString tage nogen argumenter?
Ingen indgange Nej, men det brug for de parenteser,
fordi det er hvad afgrænser kaldelsen af ​​en funktion.
>> Så jeg har tænkt mig at gå videre og forsøge at køre compileren på dette program nu.
Dunk hello.c, fordi jeg ikke ændre sit navn for nu.
Og jeg fik en masse fejl.
Lad os zoome ud her.
Hvis jeg rulle op igen, som jeg sagde sidste gang,
til den første samme fejl at jeg fik sidste gang.
På linje 6 af hello.c havde jeg en kaldenavn streng,
jeg mener standard i?
Jeg gjorde ikke.
For hvad fejl jeg har lavet i denne program, hvis du husker fra sidste gang?
Ja, vi har brug for såkaldt støttehjul
at vi bare skal bruge et par uger.
Men jeg har brug for at angive, at også et eller andet sted inde i apparatet,
er en fil, som vi skrev blot et par år siden.
Inde der er funktioner ligesom tilsyneladende getString.
Så nu hvis jeg gå tilbage ned her, zoome ind, og re-run klang hello.c.
Damn, en anden fejl.
Men vi har ikke set denne ene før.
>> Denne ene er lidt mere esoterisk at regne ud.
Men det er med vilje på skærmen, fordi vi ønskede at fortælle denne historie.
Når du kompilerer hello.c, ligesom billedet fra før foreslået,
du kun at konvertere, at kildekoden til nuller og ettaller.
Nu CS50 personale et par år siden skrev CS50.h, og en tilsvarende fil,
CS50.c.
Og vi, et par år siden, udarbejdet disse filer
i en fil, der sker at blive kaldt CS50.o.
>> Eller det kan omdøbes en par forskellige ting.
Men det er en enkel måde af at tænke over det.
Så vi kompileret CS50 s bibliotek i nuller og ettaller.
Men ingen steder har jeg specificeret at jeg ønsker at kombinere mine nuller
og dem for min hej verden program med nuller og ettaller
at CS50 personale skabte et par år siden i et komplet program.
Alt, hvad jeg har angivet ved at skrive klang hello.c er kompilere hello.c.
>> Jeg har ikke fortalt Klang til linket i nuller og ettaller
at CS50 personale skabte for dig for nogen tid siden.
Så det er en let rettelse, dash l for linket, CS50.
Og vi vil igen se denne inden længe igen og igen.
Men bemærk nu var der ingen klager.
Så nu hvis jeg løber dot skråstreg hej, nu er det virker.
Selvom der er en smule vildledende da jeg lige genskabt hvad fil?
a.out.
>> Så lad mig spole tilbage for bare et øjeblik.
Det program, vi lige har kompileret har de tre linjer kode.
Da jeg løb hej verden, hallo et øjeblik siden vidste jeg ikke se dit navn.
Og det er fordi jeg kørte ældre version af programmet.
Men hvis jeg rent faktisk køre prik skråstreg a.out Enter, oplyse dit navn, Rob, hallo,
verden.
Hm.
Det er lidt af en bug.
Sandsynligvis ville sige Rob, right?
Så hvad er rettelsen her i kode.
STUDENT: [uhørligt].
DAVID MALAN: Præcis.
Så jeg skal bare tage det sidste tweak så jeg passerer i en pladsholder,
ligesom en udfylde det, ligesom vi gjorde for et øjeblik siden.
Men procent s er nu at udfylde det.
Så endelig lad os afsløre en sidste detaljer, så der er ingen magi.
Jeg har tænkt mig at gå videre og slippe af hellow.
Jeg har tænkt mig at gå videre og slippe af a.out.
Så nu har jeg ingen programmer, bare min kildekode.
Og jeg har tænkt mig at køre en lidt længere kommando, klang
dash o hej hello.c tankestreg LCS50.
>> Nu er dette er begyndt at slags gå i det ene øre og ud ad det andet måske.
Men bare drille hinanden, hvad det gør.
Dunk er compileren, bindestreg LCS50 bevidst til allersidst
gør hvad i en sætning?
Links til CS50 biblioteket.
Griber nuller og dem, at personalet gjort
og crams dem ind i mit eget program.
Så det sidste spørgsmål ved hånden er, hvad er streg o hej sandsynligvis
laver, selvom du har aldrig set denne syntaks før?
>> Udlæsning af et program, der er ikke navngivet standard a.out.
Snarere det er opkaldt hej.
Så nu er der ingen a.out.
Ingen sådan fil eller mappe, fordi jeg sagde udtrykkeligt
kalder dette program hej, så Jeg kan nu indtaste et navn som dette
og har det opfører sig.
>> Nu ærligt, drengen er at uinteressant at have
at huske alle at lille minutia, right?
Så lad os gå videre og slippe af hej igen.
Og lad os nu vende tilbage til en verden i som er det tilstrækkeligt at sige gøre hej.
Men det er den magi, der gøre gør for dig,
Det er det kedelige, at det gør for dig.
Og da vores programmer og problemer får mere komplekse,
gøre vil virkelig være din ven.
Fordi ikke alt for længe fra nu vil vi
at have programmer, der er skrevet ikke med en fil, men flere filer,
og gøre automatiserer processen kompilere alt dette for os sammen.
>> Så nu udskrive.
printf er inde i denne fil, standard I / O-prik t, at vi har set før,
men der er mere at printf end det.
Der er omvendt skråstreg n, men der er også en masse andre escape-sekvenser.
Og undvigesekvens er blot en fancy måde at sige noget
der starter med en omvendt skråstreg, ikke en skråstreg, en omvendt skråstreg,
og gør nogle særlige ting.
Og vi vil ikke dvæle ved de fleste af disse, men hvorfor er der omvendt skråstreg dobbelt citat,
tror du?
Hvorfor er der denne underlige sekvens af tegn, omvendt skråstreg dobbelt citat,
hvorfor kan det være nyttigt?
STUDENT: [uhørligt].
DAVID MALAN: Præcis, right?
Tænk tilbage til vores hello world program at vi har set helt et par gange nu,
hver gang vi har set, at hej verden program, vi har haft anførselstegn inde
som er hej komma verden backslash n.
Men tænk på dig selv, hvad nu hvis du rent faktisk
ønskede at udskrive en anførselstegn?
Din første indskydelse kan være, det gør jeg ikke vide, hvorfor jeg måske ønsker at do-- her,
vi kan være lidt passiv aggressiv, hej ven.
Vi vil måske gøre noget lignende.
>> Men hvorfor er det nu problematisk?
Ignorerer de krøllede anførselstegn til side, at Keynote foretaget for os automatisk.
Hvorfor er det problematisk?
>> Præcis.
Fordi vi har ligesom 4 anførselstegn.
Nå den første sandsynligvis går med den anden,
og måske den fjerde går med den tredje,
eller, jeg mener, jeg er ikke engang sikker, heller ikke computeren vil være.
Computere igen, oversættere igen, er temmelig dum.
De vil kun gøre, hvad du fortælle dem at gøre.
Og hvis du ikke er entydig, de sandsynligvis vil kaste en fejl.
>> Hvis du ikke er entydig med hensyn til, hvordan man lave en jordnøddesmør og gelé sandwich
mærkelige ting måske ankommer.
Det er den samme idé.
Nu er det tilstrækkeligt at sige, at der er nogle andre escape-sekvenser,
men vi vil komme til dem inden længe.
Hovedsagelig disse flugt sekvenser repræsenterer noget
at du måske ikke være i stand for let på tastaturet,
uden at forveksle computeren.
>> Nu i mellemtiden har vi pladsholdere i printf.
Procent d, som også kan skrives i næsten alle tilfælde som procent i,
er en pladsholder for hvilken type data?
Hvilken type af værdi?
Et decimaltal.
Så egentlig begynder vi hjælp procent i, fordi det er
lidt enklere, ligesom et heltal.
Procent i.
Et heltal, der sker for at være decimal.
>> Procent s vi allerede sagt var pladsholder for en streng.
Hvilket er bare et ord, en sætning, et afsnit, et essay, uanset hvad.
Det er en sekvens af tegn i en vis udstrækning.
Og vi vil se inden længe nogle af disse andre.
Men procent c er et enkelt tegn.
Procent f er en decimaltal,
som et reelt tal, der har et komma i det, som
er naturligvis ikke et heltal.
Og der er en hel flok andre.
>> I mellemtiden i C, og i en masse sprog,
Vi har forskellige typer af data.
Forskellige typer af glasskåle hvis du vil.
Skålen jeg brugte sidste gang var for ping pong bolde,
men vi kan også gemme forskellige værdier som tegn og strygere
og heltal i en container, som en variabel og C har disse.
Char er den type data, den type variabel,
hvor du kan gemme en karakter.
Float er en type variabel i hvor du kan gemme et reelt tal.
>> Int er naturligvis til en int.
Og temmelig latterligt opkaldt en lang lang
er, hvor du kan gemme hovedsageligt en virkelig lang række, med endnu
flere cifre derefter en typisk int måske butik.
Men vi vil vende tilbage til det inden længe.
>> I CS50 dot h i mellemtiden den anden header fil
at vi har set et par gange i brug, er der
to andre datatyper, der ikke findes i C typisk.
Den ene er streng, og vi vil se på et par uger hvilke strings virkelig
er under motorhjelmen.
Og man er bool.
Og en bool er en variabel, kun kan tage på visse værdier.
Og blot baseret på sidste uges forklaring af Scratch,
og for nylig C hvad ville du gætte
er de to mulige værdier for nogle beholder, der er af typen bool?
>> Ja og nej.
En og nul.
Sandt eller falsk.
Og ja det er den sidste, der har tendens at være konventionel i et programmeringssprog
sprog, siger noget ligesom sandt eller falsk.
>> I mellemtiden CS50 biblioteket kommer med en flok af funktionalitet
at personalet skrev til dig, udover blot at få en streng.
Vi skrev i forskud funktioner, kan få et heltal fra brugeren,
få et enkelt tegn, få en float, at
er blot et tal med kommaet.
Få en lang lang, en virkelig stor værdi fra brugeren.
Så vi har kun set det i handling i form af getString.
Men via disse funktioner vil snart være i stand til at skrive
programmer, der får input fra brugeren.
>> I mellemtiden overveje dette program, og overveje
hvordan vi kan nu begynde at tilføje til det med nye konstruktioner.
En hurtig hvirvelvind turné og så vil vi se
på nogle skrive nogle programmer manuelt selv.
Fremover hvis vi ønsker at gennemføre en tilstand,
er det ikke kommer til at ligne en dejlig lille smuk brik.
Det kommer til at se lidt mere mystisk.
Men dette er den kanoniske struktur af en tilstand i C.
>> Ordet hvis to parenteser, inden i hvilken
kommer til at være en slags af boolsk udtryk.
Nu skråstreg skråstreg i midten, dette er
på det tidspunkt, lidt ligesom pseudokoden kode pladsholder.
Men mere korrekt, enhver linje kode i C, der starter med skråstreg skråstreg
er en kommentar.
>> Det er ligesom en gul seddel, som du måske sat på et essay, trykt på papir.
Det er en note til dig selv.
Det har ingen funktionelle indvirkning på programmet.
Det er en slags en påmindelse, er det din egen dokumentation for, hvad der foregår.
Så gør det i øjeblikket er en slags pladsholder
uanset er inde af disse krøllede parenteser
til sidst kommer til at gøre noget.
>> I mellemtiden har du to gafler i vej, en hvis ellers konstruere som denne.
Du kan If, ElseIf, ellers.
Nu er det værd at bemærke, især hvis du har været Googling omkring
online ressourcer ud af nysgerrighed, eller hvis du afhente
en af ​​kursets anbefalede bøger om C,
vil du se, at mennesker har masser forskellige præferencer for, hvordan
til at udtrykke sig i kode.
Nogle mennesker kan lide at sætte krøllede parenteser, som jeg har gjort her.
Nogle mennesker kan lide at sætte krøllede seler for eksempel op her.
>> Nogle mennesker kan lide at sætte den andens op her og derefter det herovre.
Der er en række forskellige måder at skrive kode, og ingen af ​​dem
er lige sådan.
Selvom der er et par der er temmelig forkert.
Men der er no--, hvis dette er i sidste ende en meget religiøs debat.
Faktisk en af ​​de mest irriterende ting om datalogi
er hvordan påståelig dataloger kan være.
Og du vil finde over tid, der selv du udvikle personlige præferencer
, hvordan din kode skal se ud.
>> Ikke bare opfører sig, ikke bare skabe output, men hvordan det skal se æstetisk.
Så hvad vi vil gøre, er at guide dig sammen vejen mod, for nu i det mindste
en standard CS50 stil, at mindst holder tingene ensartet og let at læse.
Men mere om dem, sondringer inden længe.
>> En boolesk udtryk i C, hvis du ønskede at sige, om denne betingelse er sand
og denne anden betingelse er sandt, behøver du ikke skrive ordet
og, som du ville på engelsk.
Du stedet bruge tegnet tegnet, af grunde, vi vil vende tilbage til.
Hvis du ønsker at sige, eller du bruge to lodrette stænger, der på et amerikansk tastatur
er generelt over Enter tasten ved siden af ​​den omvendte skråstreg.
Og dette blot betyder, at hvis denne betingelse eller denne anden betingelse er sand gøre dette.
>> I mellemtiden er der denne skøre ting, som
har du lejlighed at bruge en gang i et stykke tid.
Men det er bare et alternativ måde at udtrykke dig.
Dette for nu, lad os fastsætte, det er bare
anden funky måde at udtrykke If, ElseIf, ElseIf, ElseIf, elseif.
Det er bare formateret i form af tilfældene, hvor du bogstaveligt talt
opregne de værdier, du måske ønsker at kontrollere for.
>> I mellemtiden sløjfer.
Vi så en sammenligning af Scratch med en løkke.
Og jeg har tænkt mig at vinke min hånd på hvad hver af disse ting betyder.
Men bemærk, at en løkke vil meget ofte starte med nøgleordet for.
Eller det vil begynde med søgeordet mens.
Eller det vil begynde med nøgleordet gøre, og ender med søgeordet mens.
>> Men hvad vi er ved at se er tingene mere som dette.
Her er generelt i C, hvordan du kan erklære en variabel og give det en værdi.
I C er det ikke tilstrækkeligt, ligesom i Scratch, du bare
sige give mig en variabel kaldes noget.
Du er nødt til at fortælle C, og fortælle din compiler, mere specifikt,
hvilken type værdi gør du ønsker at sætte i glasskålen.
>> Er det et heltal?
Hvis ja, du er nødt til at bogstaveligt sige int og derefter
navnet på den variable, derefter et semikolon.
Hvis du i stedet ønsker snor og kaldte det s ligesom jeg gjorde min kode her i dag,
ville du sige streng s semikolon.
Når du ønsker at give det en værdi Du kan derefter bruge lighedstegnet,
ellers kendt som opgave operatør.
Og bemærk, hvordan hver af disse linjer kode
har semikolon i slutningen af ​​det.
>> Men helt ærligt det bare ser lidt grimt.
Hvorfor kan jeg ikke sige til computeren, giver mig en variabel og initialisere den til nul.
Det vil sige, giv mig en tom glasskål.
Mens du kan.
Og så en af ​​dommen kalder du nødt til at gøre stilistisk over tid
er, skriver du din kode som denne, eller behøver du slags rense det og imponere
mennesker ved at skrive to linjer som kun én.
Og dette ville blive betragtet generelt en mere elegant måde
skrive din kode stilistisk.
>> Funktioner er vi jo set.
De kommer til at tage dette format.
Navnet på en funktion, nogle parenteser, og så måske nogle
ting inde.
Eller du kan se anvendelser af flere funktioner side
side, som noget som dette.
Nu som en tangent, gør denne vittighed nu mening?
>> [Latter]
Det betyder ikke, det er sjovt, men det gør måske gøre lidt mere mening.
Så lad os nu gå ind i CS50 apparatet et øjeblik.
Og lad mig åbne en teaser her.
>> Og faktisk en af ​​grundene for at indføre IKEA kataloget
og blinkende billedet af iPhone lidt siden
var faktisk binde i sammen faktum, at bare et par år siden, i 2007,
dette stykke kode var frigives, hvilket blev
en af ​​de allerførste gennemførelse af et stykke software
der gør, hvad der kaldes jailbreaking.
For dem bekendt, jailbreaking noget som en telefon eller en iPhone
betyder i realiteten, at regne ud, hvordan man gør tingene
med det, at selskabet der gjorde det ikke havde til hensigt.
Ligesom du ønsker at installere visse software, der ikke er i app store,
jailbreaking din telefon, som du gøre ting som dette og meget mere.
Men hvad var sjovt i 2007-- og der har været
snesevis af forskellige versioner af disse ting siden da,
i alle mulige languages-- er, at dette program, som kaldes iUnlock,
faktisk blev skrevet i C. Og så jeg trukket op kildekoden til dette,
bare at slags vise dig nogle af lighederne med konstruktionerne
vi har diskuteret hidtil.
Nu er der langt mere kompleksitet her end vi har set allerede i klassen.
Lad mig rulle op bare en lille smule her.
>> Men bemærk these-- godt vi bemærke et par ting-- men bemærker disse linjer her,
herunder standard I / O prik time.
Og all-- linie 24, please-- bemærke standard I / O
dot t og en hel masse andre filer, der tilsyneladende andre mennesker
har skrevet.
Og hvis vi rulle ned gennem denne lille vilkårligt
Bemærk, at jeg ikke ved, hvordan man skriver alt dette selv nødvendigvis endnu,
men der er hvis.
Så tilsyneladende dette har en filial.
>> Og hvis jeg rulle ned lidt yderligere er der en anden, hvis.
Hvis jeg rulle op, tror jeg omkring linie 100 Jeg så efter.
Så jeg er ikke helt sikker hvordan det fungerer endnu,
men dette er en for-løkke, der kommer til Lad mig gentage nogle antal gange.
Og hvis jeg rulle hele vejen til bunden
Jeg kan se, at der er en fungere hernede kaldet
vigtigste, og nogle yderligere kreditter for din læsning nydelse.
>> Så dette er blot at sige--, og vi vil sætte dette online blandt kursets kilde
kode today--, at selv nogle af disse enheder, som vi tager for givet,
ved slutningen af ​​den dag, du stadig ved hjælp af disse grundlæggende konstruktioner, som vi har
været at indføre allerede hidtil.
Det er nok af det ene.
Okay, så lad os nu faktisk bygge noget.
>> Lad os gå ud over noget lignende hello.c, og åbne op for dette,
lad os skrive dette program her.
Jeg har tænkt mig at gå videre og skrive et program kaldet adder.c,
hvis formål i livet vil være ligesom min første super simpel regnemaskine
der blot tilføjer et par numre.
Ikke fordi det er en hård problem, men fordi det
tillader mig at nu binde sammen et par ting.
Så jeg har tænkt mig at gå videre og inkludere standard I / O prik t og CS50 prik time.
Jeg har tænkt mig at sige int main tomrum.
Og igen i fremtiden vi vil vende tilbage til det
ind i denne sammenhæng, og ugyldige midler.
>> Og nu jeg har tænkt mig at sige noget ligesom printf, giv mig et heltal.
Og nu på min anden linje, hvordan kan jeg udtrykke mig sådan
at jeg ønsker at erklære en variabel der kommer til at gemme en int?
Bogstaveligt talt, hvad skal jeg skrive, hvis jeg vil oprette en variabel, der gemmer en int
ville du sige?
int a er lig getint.
Sikker på, så der virker.
Og bare for konsistens med den kode, du skal
se online, lad mig forandring dette til x, bare fordi x
er en almindelig variabel navn at bruge i det mindste i algebra.
Lad mig nu gå videre og gøre printf igen.
Giv mig en anden heltal.
Og nu vil jeg slags af lære af det mønster,
Jeg har tænkt mig at sige int y får at GetInt.
>> Og vi har ikke brugt GetInt før, men blot
ligesom getString går og får en streng, ligesom Javier gjorde fra publikum,
ligeledes gør GetInt begynder at blinke prompten.
Og effektivt og venter på brugeren at give det et heltal, ved at skrive det i
og trykke Enter.
Nu endelig jeg har tænkt mig at gøre dette printf summen af--
og lad mig få lyst nu-- procent i og procent i er til stede
Jeg udråbstegn backslash n.
Og hvad tror du, jeg har tænkt mig at sat i nu, som de ekstra indgange
at printf?
>> Jeg ønsker ikke at sige bogstaveligt citerer ikke citere x.
Jeg ønsker at klassen i x og da, og lad os nu komme fancy
og lad os bare antage vi kan gøre hvad vi vil.
Hvad du ønsker at sige næste?
x plus y.
Og ja, der vil arbejde.
Det er minimalt programmeringssprog forstår grundlæggende aritmetik,
og så det bør faktisk arbejde.
>> Så lad mig gå videre og gør adder i min sorte og hvide vindue
hernede, Enter.
Cryptic linje, men ingen fejl budskab, så det er godt.
Dot skråstreg adder, giv mig et heltal, 1.
Giv mig en heltal, 2.
Summen af ​​1 og 2 er 3.
>> Okay, så en temmelig triviel program, men hvad gør man?
Det har tilladt mig at bruge en funktion call her, hent en anden funktion her,
to opkald til GetInt, en tredje indkaldelse til printf,
og derefter bruge disse eksempler.
Så det er lidt mere sofistikeret end sidste gang.
Men hvad hvis jeg ønsker at få en smule mere avanceret?
>> Lad mig gå videre og nu gør det.
Lad mig gå videre og skabe en ny fil kaldet betingelser nul.
Og jeg har tænkt mig at spare lidt tid for klasser skyld
og bare indsætte i det kode som udgangspunkt.
Og nu skal jeg bare kommer til at sætte noget nyt her i midten.
Så printf jeg vil gerne et heltal venligst.
Og alt denne kode er tilgængelig på kursets hjemmeside,
du behøver ikke skrive det hele ud i klasse, hvis du hellere vil ikke.
int, og nu jeg har tænkt mig at bruge, i stedet for x og y,
Jeg har tænkt mig at bruge n, hvilket er nok den mest almindelige navn
til et helt tal i et computerprogram.
Og nu jeg ønsker at gøre en lille dom her.
Jeg har tænkt mig at se, om n er større end 0,
Jeg har tænkt mig at sige printf-- hovsa, printf-- du valgte et positivt tal,
udråbstegn backslash n.
Luk det.
Else Jeg har tænkt mig at printe ud printf du valgte et negativt tal.
>> Nu, før du råber på mig, lad os køre dette program.
Lad mig gå ned her.
Og hvordan kan jeg kompilere et program kaldet betingelser Dash 0?
Gør betingelser Dash 0.
Slags en dum navn, men-- fanden.
OK, god undervisning øjeblik.
Hvorfor gik det i stykker?
>> Hvad gjorde jeg ved et uheld kalde denne fil?
Du kan slags udlede fra fanen heroppe.
Så det er ikke slemt, at jeg gjorde dette, fordi dette
vil ske måske til nogle af jer.
Så jeg ved et uheld opkaldt min kildekode tilstand 0.
Men min kilde kode ved konventionen, bør være i en fil kaldet tilstand 0 bindestreg C,
eller hvad prik c.
>> Så lad mig ordne dette.
Ligesom Microsoft Word jeg kan gå op Gem som og gøre betingelse 0 prik C.
Nu bare for at være ryddelig jeg kommer til at gå videre og fjerne
tilstand 0, hvilket var min gamle version.
Og lad os nu gør tilstand 0, Enter.
OK, synes godt.
>> Betingelse 0, Enter.
Jeg vil gerne have et heltal venligst, 50, du valgte et positivt tal.
Nu, hvordan om negativ 50?
Du valgte et negativt tal.
Hvad med nu, 0.
Temmelig sikker 0 er ikke negativ.
>> Så dette er lidt af en logisk fejl.
Hvordan kan jeg løse dette?
Andet, hvis n er mindre end 0, skal du gøre dette, ellers vi kan få en trevejs filial her,
printf du valgte 0.
Så nu, hvis jeg kør dette program, efter at kompilere den
igen med fabrikat, og nu kør tilstand 0, hvad jeg vil se her
er 0 giver mig, at produktionen.
Så hvor skal vi hen med dette?
>> Jamen det er meget nemt at miste synet af skoven for bare træer.
Og så tillade os at konkludere med dette 2 og 1/2 minutters video
der i sidste ende er en smule af en annonce fra Google,
men det er virkelig bevis på hvad selv bruger disse grundlæggende bygning
blokke, vi i sidste ende kan gøre, når vi har en smule programmering
kyndige under vores bælter.
>> [Musik spiller]
>> SAROO BRIERLEY (voiceover): Det var 26 år siden,
og jeg var lige ved at slå 5.
Vi fik til togstationen og vi bordede vores tog sammen.
Min bror sagde bare jeg vil bo her, og jeg vil vende tilbage.
Og jeg tænkte bare, godt du kender, Jeg kan lige så godt bare gå på vågeblus
og han vil bare vække mig op.
Og da jeg vågnede næste dag, hele transport
var tom på et løbsk tog, et spøgelse Toget tager mig, jeg ved ikke hvor.
>> Jeg blev vedtaget ud til Australien, til en australsk familie.
Og mor havde dekoreret min værelse med kortet over Indien,
som hun satte ved siden af ​​min seng.
Jeg vågnede hver morgen se, at kort, og dermed
det slags holdt minderne i live.
Folk ville sige, er du forsøger at finde en nål
i en høstak, Saroo du vil aldrig finde den.
>> Jeg ville have blinkede af de steder, jeg bruges til at gå, de glimt af min familie
ansigter.
Der var billedet af min mor, sidder med korslagte ben,
bare at se hende græde.
Livet er bare så hårdt.
Det var min skat.
Og jeg søgte på Google Map og indså, at der er Google Earth så godt.
I en verden, hvor du kan zoome ind, Jeg begyndte at have alle disse tanker
og hvilke muligheder at dette kunne gøre for mig.
Jeg sagde til mig selv, du ved, du har fik alle de fotografiske erindringer
og vartegn, hvor du er fra, og du ved, hvad byen ser ud.
Dette kunne være et program, der du kan bruge til at finde vej tilbage.
>> Jeg tænkte, jeg vil sætte en prik på Calcutta togstation,
og en radius linje, du ved, at du bør være at søge omkring dette område.
Jeg slags kom på tværs disse toget spor.
Og jeg begyndte at følge det, og Jeg kom til en togstation, som
afspejlede det samme billede der var i mine erindringer.
Alt matchet.
Jeg tænkte bare jep, jeg ved, hvor jeg skal hen.
Jeg vil bare lade kort, jeg har i mit hoved
lede mig og tage mig tilbage til min hjemby.
>> Jeg kom til døren af det hus, jeg blev født.
Og vandrede rundt omkring 15 meter rundt om hjørnet,
Der var tre damer stående udenfor, der støder op til hinanden.
Og den midterste trådte frem, og Jeg troede bare, det er din mor.
Hun kom frem, hun omfavnede mig, og vi var der i cirka fem minutter.
>> Hun greb min hånd og hun tog mig til huset
og fik på telefonen, hvor hun ringede min søster og min bror
at sige, at du ved, din bror har lige
alle pludselig lignede et spøgelse.
Og så blev familien genforenet igen.
Alt er alle gode, Jeg hjalp min mor ud,
hun ikke skal slider væk.
Hun kan leve resten af sit liv i fred.
>> Det var en nål i en høstak, men nålen var der.
Alt er der.
Alt, hvad vi har i verden er ved tryk på en knap.
Men du er nødt til at have viljen og viljen til at ville det.
>> [Musik spiller]
DAVID MALAN: Vidunderligt sød vidnesbyrd
til lige hvad du kan nu gøre med teknologien.
Vi vil se dig i næste uge.