>> [MUSIK SPELA]
>> DAVID MALAN: Okej detta är CS50 och detta är i slutet av vecka ett.
Så jag skulle vilja presentera min tidigare advisee, Andel Duff, som inte bara gör
iPhone 5 står, liksom detta talarstol, också gör han bilar.
Ansel DUFF: Hur går det, alla?
Jag vill bara berätta lite lite om Formula SAE, som jag
är kapten.
Det är en MIT laget.
Jag vill bara berätta för dig Killarna lite om det
och förhoppningsvis generera en del intresse.
>> Så låt mig bara gå igenom en par saker om vårt team.
Så vi är helt elev körning, varvid alla
av medlemmarna konstruktion, simulera, testa och tillverkare ett delsystem
av bilen.
Vi har vår egen verkstad och garage och N52-- eller ledsen,
N51-- vilket är samma byggnad som MIT Science Museum.
Och vi är folket att köra bilen.
Det finns en nationell tävling i början av sommaren,
och sedan finns det mindre straffar tävlingar under hela året.
Och sedan gör vi förarutbildning dagar för att få nya medlemmar bekanta.
>> Våra byggdagar är på Lördagar från 11:00 till 08:00.
Lunch och middag tar hand av, från Bertuccis och Beantown
respektive.
Vi har ett veckomöte och Seminariet, som är för kurs kredit.
Vilket är nytt från och med denna termin, och Det kommer också att vara till nästa termin,
så att du kan passera-reg för det.
Och då har vi designa, shoppa, och CAD-dagar under veckan,
medan medlemmarna kommer självständigt CAD-delar, orderstock et cetera.
>> Så för elektrisk teknik vid laget
Vi har vår drag, högspänningssystemet,
som löper med en nominell 300 volt, vilket inkluderar
motorer, motorskåp, och batterier.
Sedan har vi en låg spänningssystemet, som löper
vid 12 volt, som inkluderar kontroller, CAN-noder, hjärnan
rutan och instrumentbrädan.
Så långt CS går, vi gör har hemsida underhåll
att vi behöver göras för evenemang, medlemskap förändringar, nya bilder och PR-material.
Och så har vi kod som styr bil för vår antispinn, lansering
kontroll, instrumentstyrning, torque vectoring, och regenererande bromssystem, som
brukar köras i MATLAB, Simulink och LabView.
>> Berätta lite om bilen.
Så det är cirka 500 pounds.
Det är regler som är begränsade till 85 kilowatt.
Den har 2 EMRAX 207 motorer i tillbaka, en för varje bakhjul.
Den har specialbyggda batterier från Prisma A123 påse celler,
totalt 300 volt och 5.6 kilowattimmar.
Och det är direktdriven med en 2,64-1 utväxling.
Här är några bilder vi tog av den på konkurrensen.
Här är baksidan, noskon, och här är motorerna,
de stora svarta diskar nedanför et mens manus.
Här är en bild som jag drog av vår tävling system.
Och det är bara att jämföra vår bil till en par av kommersiellt tillgängliga bilar,
liksom KTM XBOW, Ariel Atom, och Caterha M 7-280.
Om du är bekant med priset, makt dra vikt, dollar per hästkraft,
dollar per moment, och vår bil blåser dem ur vattnet.
Om du har några frågor, skriva ned denna e-postadress.
Skjut ett mail till fsae@mit.edu.
>> Vi är glada att tala om något du skulle vilja.
Harvard studenter är snäll av minoriteten i laget.
Om du har några frågor om att vänligen skjuta oss ett mail,
gärna prata, och jag ska att huvudet tillbaka över till David.
Tack.
Jag uppskattar det, grabbar.
[Applåder]
>> DAVID MALAN: Ansel bringade sommaren arbeta med oss ​​här på campus i CS50
i sommar.
Och förutom att arbeta på saker som de binära lökar,
han faktiskt verkligen öppnat våra eyes-- och gruvan i particular--
vad egentligen korsningen av inte av hårdvara och mjukvara kan vara.
I själva verket en hel del av de saker som han bara turnerade igenom är ytterst
skapades först i mjukvara, och sedan slutligen tillverkas
i den verkliga världen i hårdvara.
Så om du är intresserad av utforska denna korsning,
kanske ta upp den gruppen.
>> Nu under tiden de av er som är fans av teknik,
och Apple-produkter i Särskilt vet att det
fanns ett par Meddelanden från igår.
Men vi trodde att vi skulle visa du en som kom ut
ett par dagar innan det du kanske inte har sett.
>> JORGEN EGHAMMER: Du vet, gång på ett tag något
dyker upp som förändrar vårt sätt att leva.
En anordning så enkelt och intuitivt använder det känns nästan bekant.
Introduktion 2015 IKEA katalogen.
Det är inte en digital bok eller en e-bok, det är en bok-bok.
>> Det första att notera är inget kablar, inte ens en strömkabel.
Den 2015 IKEA katalogen är fullt laddat,
och batteriets livslängd är evigt.
Gränssnittet är 7,5 efter 8 inches, men kan expandera till 15 från 8 inches.
Navigeringen är baserat på taktil beröring teknik som du faktiskt kan känna.
>> Innehållet kommer förinstallerat via 328 HD-sidor
av inspirerande heminredningsidéer.
Börja surfa, tryck på och dra.
Höger till vänster för att gå framåt, vänster till höger för att gå bakåt.
>> Lägg märke till något annat?
Det stämmer.
Ingen fördröjning.
Varje kristallklar sida belastningar omedelbart,
oavsett hur snabbt du bläddrar.
Om du vill få en snabb överblick, bara hålla den i handflatan,
och med bara tummen, hastighet bläddra i innehållet.
>> Om du hittar något du vill spara för senare, kan du helt enkelt bokmärke.
Och även om du stänger programmet, kan du lätt hitta bokmärket igen.
Fantastiskt.
>> [LAUGHTER]
[Applåder]
Så det leder oss till slutet av vecka ett.
Några meddelanden nu.
Så snitt Nu pågår.
Gå till denna URL här någon gång mellan nu och fredag ​​vid lunchtid
att faktiskt ange om du är bland dem mindre bekväm, mer
bekväm, eller någonstans däremellan.
>> Detta är typiskt en av de som saker som du bara typ av vet.
Och faktiskt de av er som är mindre bekväm förmodligen vet så mycket,
de av er som är mer bekväm veta så mycket,
och igen om du inte är riktigt säker på vilken av dessa hinkar du tillhör du är
förmodligen någonstans mittemellan.
Men lita på att du kan byta efter ett par veckor om det behövs.
>> Under tiden för den kommande veckan Vi börjar inte avsnitten i sig,
men super avsnitt som är öppna för alla studenter.
Denna kommande söndag på en plats till meddelas på kursens hemsida
Vi kommer att ha en för de som är mindre bekväm,
samt en för dem mer bekväm.
Och de någonstans mellan kan välja vilken av dessa två,
eller båda, om du vill, att sitta in på.
Och i fokus för de kommer att vara ytterst på C,
som vi kommer att fortsätta vår samtal i dag.
>> Problem set 0 under tiden är förhoppningsvis i dina händer.
Officiellt på grund av i morgon, Torsdag, kl.
Om du inte kontanter i en av dina fem sena dagar,
som skulle föra det fram till fredag ​​kl.
Problem set 1 under tiden kommer att vara anslås på kursens hemsida.
Och detta kommer att vara vårt första razzia som en klass i C.
Och det problemet satt spec kommer att gå igenom en hel del mekaniken i vad
Vi började prata om på måndag, och vi ska fortsätta prata om idag.
C, Linux, den CS50 apparaten, allt detta
väntar dig i beskrivningen.
>> Kontorstid tiden pågår, i grund-matsalen.
Chef till denna URL här för att se Schema för ikväll och i morgon,
om du vill delta.
Frågor under tiden, så att du ha möjligheter att ställa frågor
asynkront, 24/7, inser att du är inte begränsat till avsnitt och kontor
timmar, utan snarare detta verktyg Här, CS50 Diskutera på webbadressen
blir kursens nätet anslagstavla mjukvara, via vilken
Du kan ställa frågor klasskamrater och även personal.
Så tänk på att resurs också.
Under tiden en tradition startar denna fredag.
Som du kanske har skymtat från förra onsdagens teaser video,
Vi har en tradition mest varje fredag ​​under terminstid
att ta omkring 50 elever och personal till en lokal restaurang som heter
Fire and Ice, där vi är vanligtvis sällskap av några alumner
eller vänner från industrin att generellt aspirera
för att göra en stor klass känner sig mindre.
Så det är en helt avslappnad lunch.
Ett gäng av oss, personalen framför allt, kommer att spela stormar
och chatta med eleverna om 50, liv utanför 50,
liv i framtiden, den verkliga världen, Jag talar om arbetstillfällen
med vänner i branschen.
>> Så om du vill gå med oss denna fredag, gå till denna URL här.
Utrymmet är begränsat, men vi ska göra det här återkommande och hela uttrycket.
Bege där för att cs50.harvard.edu/rsvp.
Och om du inte får in den här gången, inte oroa dig.
Vi kommer att göra det igen i de kommande veckorna också.
>> Så det här är bilden Vi målade förra veckan,
och du har förmodligen varit syssla med hittills.
Men låt oss försöka att ansluta denna nu vad vi ska göra idag
och framåt.
Kan jag få en volontär?
Okej, eller flera.
Vad sägs om här på slut, i blå skjorta.
Kom upp, vad heter du?
ALANA: Alana.
DAVID MALAN: Alana.
Så Alana, för bara en moment-- trevligt att träffa dig--
kommer att spela rollen av denna funktion här.
Den lila blocket vi har heter hittills en funktion.
Så vad jag ska gå framåt här och erbjuda Alana
är en liten namnbricka, för att göra klart vilken roll du spelar.
>> Så du ska vara säg blocket.
Om du vill gå vidare och lägga det på.
Och vi ska hålla denna super enkelt.
Om målet till hands är helt enkelt nu att genomföra med Alana,
denna så kallade säga blocket, här är hur det kommer att fungera.
Jag have-- låt oss kalla det ett argument eller parameter,
det är egentligen bara ett tomt pappersark.
Och det är vit till typ av vara som påminner i den vita rutan där du
kan skriva ord.
>> Under tiden ska jag gå här.
Jag kommer att gå vidare och skriver H-E-L-L-O kommatecken världen.
Och nu har jag, som säger programmeraren, inte faktiskt vet hur man säger något.
Jag kan komma med ord, men jag gör inte nödvändigtvis
vet hur man uttrycka mig verbalt eller på skärmen.
Och så vad jag ska göra är att ta denna pjäs
av funktionalitet, vars input-- eller argument, som vi kallar det,
Jag har skrivit om denna bit av paper-- och jag kommer att lägga ut den.
>> Och faktiskt det är den roll som fungerar i ett programmeringsspråk
kan spela.
Något som att säga block kan läggas ut på entreprenad
till någon som verkligen vet vad hon eller han talar om.
Så om du kommer att kliva över här bara ett ögonblick,
Jag kommer att vidarebefordra denna ingång till Alana, och ber att du säger den här ingången.
>> ALANA: Hej, värld.
DAVID MALAN: Det är allt.
Så att det finns en funktion.
Nu kan vi ta det lite mer, Vi kan ta ett steg framåt här.
Eftersom det var uppenbart underwhelming.
Så låt oss nu omvandla detta till något lite mer sofistikerat.
>> Så det här är naturligtvis vår C-versionen.
Så nu om du vill ta det en av, att namnskylt utanför,
och låt oss ha du sätter på ett nytt namn.
Men i grunden är du spela samma roll,
det råkar vara så att kallas printf nu.
>> Berättelsen är, naturligtvis, kommer att vara-- förmodligen
lika underwhelming-- är kommer att vara följande.
Nu är funktionen printf.
Jag är den som ringer, eller programmerare, som vill
att stå på axlarna av människor i det förflutna som du,
som har redan listat ut hur att faktiskt skriva ner något.
Och så den här gången, snarare än att säga det vi
faktiskt använda vår skärm här.
Så om du vill kliva hit kommer jag
att passera igen detta som ingång till min printf vän.
Om du kunde gå vidare och skriva ut den på skärmen,
helt enkelt genom att dra med fingret på den svarta skärmen.
Utmärkt.
Okej, så massor av spänning för hur det skulle spela ut.
>> Så nu ska vi ta upp saker man Slut notch, om vi kunde, enligt följande.
Så detta är ett C-program som vi sade förra gången.
Och detta bara gör vad du gjorde, det skriver ut till skärmen, hej, värld.
Även om det är helt klart en hel del av störande grejer där uppe.
Men låt oss ta upp saker ett snäpp och införa denna version, som minns
var den tredje versionen som vi slutade med förra gången.
>> Och nu finns det helt klart två användningar av printf.
Det finns två samtal till Alana i det här fallet för printf,
men det finns också ett samtal till en annan funktion.
Vad är det funktionen tydligt?
GetString.
>> Kan vi få ytterligare en volontär?
OK, kom upp.
Vad heter du?
>> JAVIER: Javier.
>> DAVID MALAN: Javier, kom upp.
Så Javier roll är på detta papper.
Vilket jag ska ringa allmänt s.
Nu är det här en variabel, det är av typen sträng, vilket antyds
genom att andra raden i mitten finns.
Och jag vill att du gå och hämta mig en sträng.
Specifikt huvudet ner till orkestern avsnitt och få mig namnet på någon,
och komma tillbaka med en variabel innehåller detta värde.
Det kan vara vem du vill.
>> Nu kör vi.
Okej, är Javier skriva ner namnet.
Okej.
Vi kan alla nog gissa hur detta kommer att spela ut.
Vi kanske belaboring punkten för vad
en funktion är att göra, men ändå tack så mycket.
>> Så Javier har återvänt här strängen här, som inte kan riktigt se,
Jonathan är den sträng att vi har fått.
Så nu vad jag faktiskt kommer att lämna till Alana men
är något lite annorlunda.
För i denna version av program, först finns ditt namn.
Så det allra första argumentet Jag måste ge Alana
med kommer att bli bokstavligen uppge ditt namn.
Okej, så enkelt är det Jag skulle lämna detta till dig.
Och när jag skriver upp nästa argument, om du
vill gå vidare och skriva detta på bordet, låt oss gå vidare
och gör det sista exemplet här för att göra rensa vad slutligen fick hända.
Så skall namn, skriva det mot toppen
Om du inte gör något, bara så att Vi har utrymme för en andra raden.
Eftersom det sista jag tänker att nu ge dig är inte en,
men två pappersbitar.
>> Okej.
H-E-L-L-O kommatecken och sedan en tom rad.
Så vad jag är på väg att lämna Alana nu är något lite annorlunda.
Inte bara är hon få detta, där fylla i de tomma representerar
det percent-- vad var platshållare vi har använt?
Ja, så procent s.
Under tiden kommer jag att passera henne i ett andra argument, som
är just det som Javier hämtas från Jonathan.
>> Så låt mig ge er dessa två.
Om du vill, gå vidare och skriva ut detta.
Vad slutligen händer nu är, Alana igen
spelar rollen som printf.
Javier spelade roll GetString.
Så det kommer att vara din souvenir.
Och i slutändan vad som händer, trots Detta hello-- Japp gå vidare och kommatecken.
ALANA: Gjorde jag får detta ännu eller nej?
DAVID MALAN: Japp, du fått dem båda på en gång.
Så tanken är att du kan nu vända sidan
att hantera den andra dessa två ingångar.
Så det här är bara för att slå fast påpeka att medan Alana avrättades
denna gröna linjen här, och sedan Javier gjorde detta en för oss
och återgå till mig något Vi ringer er, men det var verkligen
just det papper som han själv.
Och nu Alana har gjort denna tredje raden.
>> Och även om allt detta ser så otroligt kryptisk kanske
vid första anblicken, det verkligen Så enkelt är det.
Passerar ingångar runt, få utgångar, antingen
är fysiskt lämnas tillbaka något, eller se en bieffekt som denna.
Något visuellt skrivet på skärmen.
Så låt oss gå vidare och tacka Alana och Javier,
som var här nere, för ansluter sig till oss här uppe.
>> [Applåder]
>> Så nu ska vi ta för givet hur okomplicerad allt detta skulle kunna vara.
Och låt oss gå vidare till faktiskt göra något i själva koden.
Så upp på skärmen här är en skärmdump av den så kallade CS50 apparaten.
Och om du var tvungen att på, som en 02:00 på onsdag eftermiddag,
förklara för någon vän vad CS50 apparaten,
Hur skulle du definiera den i en mening?
Någon mening?
Yeah?
STUDENT: Det är som ett program som gör allas dator
köras med samma system.
DAVID MALAN: Bra!
Det är ett program som gör att allas dator för att köra med samma system.
Det blir liksom en egen kopia av ett operativsystem
system som händer kallas Ubuntu Linux.
Och det körs effektivt inuti ett fönster på din egen Mac eller PC,
så att detta sätt direkt ur porten i vecka 1, alla här i klassen
har tillgång till samma verktyg, samma konfiguration,
och det finns ingen inlärningskurva specifik till en Mac eller PC i synnerhet.
>> Nu har vi öppnat upp, inne i CS50 apparaten på måndag, det här programmet här.
Det händer att kallas gedit.
Men det är egentligen bara en grafisk editor.
Det är något som Anteckningar eller Text Redigera i Windows eller Mac OS respektive.
Och jag föreslog att det var riktigt tre viktiga delar till denna skärm.
Den övre sidan är där du skulle skriva din kod.
Och det är där vi tillbringade mycket av vår tre exempel i måndagens föreläsning.
Botten kallade vi det, denna svarta fönster, ja?
>> STUDENT: Compiler?
>> DAVID MALAN: Kompilator vi nås med hjälp av det fönstret.
Men mer allmänt.
Ja, det var bara ett terminalfönster.
Detta är en ålder gammal term som bara beskriver i huvudsak en blinkande
tolken, att år sedan brukade vara på en av de stora CRT stil monitorer.
Men numera är det slags virtuell i mjukvara.
Och terminalfönster Äntligen går det att skriva kommandon.
Den typ av den förenklade versionen av användargränssnittet eller UI.
Det är inte ett grafiskt användargränssnitt eller GUI,
Det är ett textbaserat gränssnitt eller ett kommandoradsgränssnitt.
>> Och faktiskt det är där i slutändan Jag kunde skriva lite kod.
När jag hade skrivit en del kod men, minns att jag använde detta kommando.
Och som det namnet slags antyder detta
tillåter mig att göra en program som heter Hej.
Men vad var det egentligen?
Väl make tog min ingång, min källkod,
och omvandla den till vad, i slutändan?
>> Objektkod.
Och objektkod är bara en fancy sätt att säga nollor och ettor.
Och sedan när jag ville att köra den objektkod,
när jag ville passera som inmatning de nollor och ettor i datorns
hjärna, den så kallade CPU eller central behandlingsenhet,
Jag var tvungen att köra programmet.
Men det var inte helt enkel på måndag som bara dubbla klicka viss ikonen.
Vad istället var jag tvungen att göra för att köra ett program?
>> Vad var det andra kommandot?
Jag hör lite snedstreck?
Ja, ja?
>> STUDENT: Dot slash och programmets namn.
DAVID MALAN: Exakt.
Dot snedstreck och programmets namn.
Nu vad gjorde det?
Tja dot är bara ett svårbegripliga sätt att säga aktuell katalog.
Oavsett mapp du befinner dig i är kallad, representeras prick.
Det snedstreck är precis vad du har sett i Mac OS och Windows i flera år,
det är en separator mellan en katalog eller mapp och resten av vissa namn.
I Windows händer det att gå bakåt, i Linux och Mac
OS det råkar gå framåt.
Men det är bara separatorn, så det är bara en ointressant syntaktiska detaljer.
>> Den saftiga delen är naturligtvis namnet på programmet, Hej.
Och det är vad gör skapat för oss.
Det matas ut som hos oss.
Men hur kom vi till den punkten?
Låt oss nu be frågan, vad var egentligen
händer här, åtminstone med När det gäller en del av denna syntax?
>> Så i en mening eller så, hur har vi bortförklara
denna första linje som är markerad i grönt?
Vad var det första raden gör, med avseende på mitt program?
Yeah?
>> STUDENT: [ohörbart].
DAVID MALAN: Säg det igen?
STUDENT: Inklusive och nedladdning senaste funktionerna [ohörbart].
DAVID MALAN: Bra.
Inklusive, kommer jag inte säga nedladdning, men låt oss säga
inklusive funktioner som människor har skrivit tidigare.
Och dessa funktioner genomförs någonstans i min dator.
Någon skrev en fil år sedan, och den filen
är någonstans inne i CS50 apparat, eller på min hårddisk
mer allmänt.
Och så denna linje är i grunden säger, gå hitta filen, standard I / O-dot
h, och kopiera och klistra in innehållet här på toppen av min fil
så att jag inte behöver göra det manuellt själv.
>> Och bland de saftigaste bitarna inuti den filen vi påstod var vilken funktion?
Vilken funktion har vi säga förklarades eller som nämns i standard I / O dot h
mest troligt?
Printf, eller hur?
Vi skrev inte printf på Måndag, det bara fanns.
Ungefär som Alana bara kom upp på scenen och hon bara
existerade och visste hur man tecknar något på skärmen,
så existerar printf i många år.
Och så detta är så vi åt det.
Nu om vi går vidare här, viktigaste var analogt vi
sade till pusselbit kallas när grön flagga klickas
i världen av Scratch.
Det är bara typ av standardnamn som människor
beslutade skulle representera standard ingång till ett program.
Den bit av programkod som blir avrättade först.
>> Under tiden dessa klamrar är ungefär som den böjda formen
en hel del av dessa gula skrap bitar.
De slags kapsla helhet gäng instruktioner tillsammans.
Så det bara typ av binder samman vissa tillhörande funktionaliteter.
printf naturligtvis är en funktion som skriver på skärmen, som vi just gjorde.
>> Hur är dessa parenteser?
Hur skulle du define-- även om du har aldrig programmerat förut, men bara baserat
nu en ökande förhoppningsvis intuition, vad
är parenteserna gör för oss här?
Eller vad är de omgivande?
Yeah?
>> STUDENT: De säger vad du ska skriva ut med printf.
>> DAVID MALAN: Ja, de säger vad du ska skriva ut med printf.
Eller mer generellt, de är omgivande insignalerna till funktionen.
Så du kan nästan tro av dessa parenteser
som vara liknande metallen klipp på den här klippbordet.
Det är vad som håller, det är vad som är kommer att användas för att ge argument
i funktion, vilket i det här fallet kallas printf.
>> Så generellt nästan alla När vi kallar en funktion,
vi kommer att se ett par parenteser.
Kanske med något i den, som nu, kanske något i det.
Men det är där du skulle sätta ingångarna eller så kallade argument
till en funktion.
>> Här är ett sådant argument.
Jag har markerat allt mellan citat,
eftersom det visar sig på detta språk kallas
C, när du vill representera en string-- det är ett ord eller en fras
eller ens en paragraph-- du måste omge den med dubbla citattecken.
Inte apostrof, citationstecken.
Och det är precis vad jag har gjort här.
>> Samtidigt finns det en funky symbol mot slutet där.
Det omvända snedstrecket n.
Vad gjorde vi säger att representeras?
Yeah?
>> STUDENT: En ny linje.
>> DAVID MALAN: Ny rad.
Rätt, du behöver inte generellt trycka Enter när
du vill att programmet att spotta ut en ny rad.
Snarare du berätta det uttryckligen med detta förvisso ockult bit
av syntax, bakstreck n, att du vill ha en ny linje att åka dit.
Slutligen semikolon.
Vi visste inte riktigt prata för mycket om det här,
och överlägset det blir bane vissa om din existens för första problemet
ställa, när man bara misslyckats med att inse du har glömt något så dumt
som ett semikolon.
Och generellt tar den Det kommer att fixa det problemet.
Men vad är det gör för oss, skulle du säga?
>> STUDENT: [ohörbart].
>> DAVID MALAN: Förlåt?
>> STUDENT: [ohörbart].
DAVID MALAN: Finishing ett uttalande.
Det är ungefär som den period på I slutet av en engelsk mening,
I detta språk C det slutar ett uttalande.
En instruktion för programmering kod som du vill bara säga,
Jag är klar med det här.
Nu märker att det är den enda här.
Så du vill inte komma in en vana att sätta semikolon
efter varje sluten parentes.
Till exempel finns det ingen bredvid annullera, och vi kommer
komma tillbaka i framtiden vad void medel.
Men i detta fall ditt printf är en funktion, eller en förklaring som används,
och så vill vi ha det terminalen i slutet av den.
>> Och jag avsiktligt plocka på C. Och ärligt talat en hel del språk som C, C ++,
Java, JavaScript, och valfritt antal andra språk har en hel del av dessa
slags syntaktiska detaljer.
Att särskilt om du är ny på programmering kan verkligen resa dig upp.
Och du kommer, markera min ord, några av er kommer
har denna erfarenhet i kontorstid eller sent
nattetid arbetar på en p-set, där din jävla program bara inte kompilera,
Det går inte, du har ingen aning om vad som är fel,
det verkar helt logiskt korrekt för dig.
Och det är för att du har glömt något som slår
ett semikolon i slutet av en rad.
>> Men det är dessa typer av saker du är ska genast lära sig att se.
Och faktiskt det är dessa saker att CA: s och TF: s har
varit sorts utbildade för att se mycket snabbare än du.
Och så det här är bara för att säga, som ni dyka in problemet set 1 synnerhet,
Bli inte frustrerad av det här.
När du typ av vänja till världen, du
börja se saker som du kanske inte se vid första anblicken denna första vecka.
>> Så källkod är något liknande.
Vi vill ge det till den så kallade kompilator.
Och den kompilator som Vi sa ger utdata
kallas objektkod, den så kallade nollor och ettor.
Men därifrån, vad betyder det ger oss?
Jo det ger oss dessa mönster.
Och återigen din dator, Intel inuti,
förstår dessa mönster av nollor och ettor.
Och ibland mönstret representerar ett faktiskt decimaltal
som vi såg i förra veckan, ibland den representerar ett brev
som vi såg förra veckan, ibland den representerar en instruktion,
som att skriva ut något på skärmen.
>> Så printf för instance-- utan snarare, låt mig spola tillbaka.
Vi har tagit för givet att dessa nollor och ettor är
produceras av det här kommandot make.
Men gör inte en kompilator.
Gör inte saken i mitten som är att producera nollor och ettor.
Snarare gör är bara en mycket bra namngav program vars syfte i livet
är i huvudsak att räkna ut hur man kompilerar ditt program.
Och vi använder det i dessa första veckorna eftersom det bara
sparar oss en massa problem.
>> Men vad gör egentligen gör när du kompilerar hej,
är, som vi sade förra gången, det är tittar på din hårddisk
eller i den aktuella mappen, för fil som heter vad, tydligen?
Hej.c, eller hur?
Det är bara lite av en konvention.
Det är godtyckligt, men det är så det är.
Gör, om du bara ange namnet på ett program som ännu inte finns,
det kommer att leta efter källkoden i en fil, som standard innebär hej.c.
Och om den finner det, bra.
Det kommer att konvertera den källan kod i objektkod för dig.
>> Men varje gång jag har tryck Enter efter att ha kört göra hello,
minns du se förra gången en ganska lång och kryptisk sekvens
andra vita bokstäver och tecken på skärmen?
Det var väl själva kommandot, den faktiska kompilator, som var igång.
Så själva kompilatorn vi använder de flesta av terminen är något som kallas klang.
Några av er kanske har använt Visual Studio innan eller GCC,
eller valfritt antal andra kompilatorer.
Vi använder klang.
>> Och klang ger oss möjlighet att faktiskt konvertera att källkoden till objektkod.
Vad detta faktiskt i praktiken?
Bra låt mig gå in i en av mina mappar från förra gången.
Inne i CS50 apparaten.
Och låt mig gå vidare och skapa detta samma fil, innefattar standard I / O-dot h.
Int main ogiltiga.
Och vi ska återkomma i framtiden vad int medel och vad void medel.
Men nu ska vi göra hallå världen backslash n,
precis som vi gjorde i styrelsen.
>> Låt mig spara filen som heter hej.c.
Och nu om jag vill sammanställa denna Jag kan-- låt mig zooma in-- körning
gör hello anger.
Och detta igen var det väldigt kryptisk linje.
Men nu minst ett ord troligen hoppar ut på dig.
Klang är den linjen vi såg tidigare.
Nu finns det massor av andra saker ärligt att vi ska vifta händerna på för idag.
Men det finns några undergrupper, några tecken i här
som är av intresse.
Men jag ska gå vidare och göra det.
Jag ska till första körningen Hej, bara för att bevisa
att detta fungerar som det var måndag.
Men nu ska jag ta bort programmet.
Och mycket som vi hade dessa korta namn förra gången,
kommandot för att ta bort något är rm, ta bort, ange.
Du kommer att få några ganska kryptiska frågor.
Svårt att tro att du kan göra även denna fråga svår att förstå.
Men avlägsna vanlig fil hej bara sätt vill du ta bort hej.
>> Och jag kan gå vidare och skriva y för Ja, Enter, och nu är det borta.
Vad detta betyder nu, om jag rensa min skärm,
är att i stället för gör make hello-- du
Vet du vad, jag får bra på det här.
Jag kommer att köra kompilatorn själv.
Jag behöver inte något program för att räkna ut vad min fil heter.
Jag skrev hej.c jag vet vad den heter,
Jag är helt klart kapabel att skriva det.
Så jag ska gå vidare och gör klang hej.c Enter.
>> Verkar fungera.
Och det finns ingen extra utgång, eftersom klang är kompilatorn.
Det är vad som omvandlar källkod till nollor och ettor.
Så om jag nu dot slash hello Enter, hm.
Nytt felmeddelande idag.
Så bash är bara namnet på den blinkande prompt som vi använder.
Det är en grov förenkling, men nu det är allt det är,
det är den blinkande prompten.
Och det är därför det skriker på oss.
>> Ingen sådan fil eller katalog är lite mer okomplicerat.
Men säkert jag gjorde det objektkod.
Men kruxet är att om jag skriver kommandot
att lista innehållet i denna katalog, vilket är vad?
ls för listan.
Det finns en massa saker här inne, varav en del kom med apparaten,
som min skrivbordsmapp Downloads mapp, Dropbox-mappen, och alla
det där.
Men det som är intressant är hej.c, som
Jag skapade nyss med gedit.
Och vad är den konstigaste söker namn här,
kanske att vi inte se sista tid alls?
>> a.out, eller hur?
Så tillbaka i dag, det ades just beslutat att när
du kompilerar ett program för första gången,
och du inte anger namnet av en fil, låt oss kalla det en.
Och a.out innebär just detta var utsignalen från kompilatorn.
Så det är en hemsk namn för ett program.
Men genom den logiken, dot slash för aktuella katalogen, snedstreck a.out,
bör innebära att det finns faktiskt min hello world-program.
Nu lite värma upp motion också.
Om jag vill byta namn här fil, visar sig att du
flytta en fil från ett namn till en annan.
Så mv a.out, och sedan jag kan kalla det hej Enter.
Så detta är en Linux-kommando.
DOS hade det år sedan, Windows har ett terminalfönster
av något slag som ser så här, Linux och Mac
datorer har denna blinkande prompt.
Även om de flesta av oss antagligen sällan, om någonsin, använder det.
>> Men vad jag har gjort är att köra en Programmet, vars namn är mv,
och jag har försett den med två argument, så att säga.
Två ingångar.
a.out är det ursprungliga namnet.
Hej är det nya namnet.
Så om jag nu dot snedstreck Hej, Enter, existerar det.
Och om jag gör dot slash a.out, vad förväntar jag ska se?
>> Bash, ingen sådan fil eller katalog.
Eftersom jag precis bytt namn det.
Så det här tar lite tid att vänja sig.
Men problemet set 1 specifikation kommer verkligen
hålla din hand genom en del av denna minutae.
Eftersom detta är en fullständig intellektuell distraktion
från mer intressant idéer till hands, vilket
är faktiskt att skapa något ur koden.
Men låt oss göra en ändring Nu till det här programmet.
>> Minns att förra gången jag gjorde något så här, printf uppge namn.
Och faktiskt gjorde vi just detta på den stora skärmen där borta.
Och sedan gjorde jag string s blir GetString öppna Paren, nära Paren.
Och Paren bara short notation för parentes.
Så tar GetString tar några argument?
Inga ingångar Nej, men det behöver parentes,
eftersom det är vad avgränsar kallelse en funktion.
>> Så jag ska gå vidare och försöka kör kompilatorn på detta program nu.
Klang hej.c, eftersom jag ändrade inte sitt namn nu.
Och jag fick en massa fel.
Låt oss zooma ut här.
Om jag rulla upp igen, som jag sa förra gången,
till den första, samma fel att jag fick förra gången.
På rad 6 i hej.c hade jag en odeklarerat identifieringssträng,
jag menar standard i?
Det gjorde jag inte.
För vad misstag har jag gjort i denna programmet, om du minns från förra gången?
Ja, vi behöver sk stödhjul
att vi bara kommer att använda för ett par veckor.
Men jag måste precisera att även, någonstans inne i apparaten,
är en fil som vi skrev bara några år sedan.
Inuti vilken är funktioner som tydligen GetString.
Så nu om jag går tillbaka hit, zooma in, och åter springa klang hej.c.
Fan, ett annat fel.
Men vi har inte sett det här förut.
>> Den här är lite mer esoterisk att räkna ut.
Men detta är avsiktligt på skärmen, eftersom vi ville berätta den här historien.
När du kompilerar hej.c, precis som bilden från tidigare föreslagits,
du bara omvandla denna källkod till nollor och ettor.
Nu CS50 personal för några år sedan skrev CS50.h, och en motsvarande fil,
CS50.c.
Och vi, för några år sedan, sammanställt dessa filer
i en fil som händer att kallas CS50.o.
>> Eller det kan döpas ett några olika saker.
Men det är ett enkelt sätt att tänka på det.
Så vi sammanställt CS50 s biblioteket till ettor och nollor.
Men ingenstans har jag specificerat att jag vill kombinera mina nollor
och de för min hallå världen program med nollor och ettor
att CS50 personal skapade några år sedan i ett komplett program.
Allt jag har angett genom att skriva klang hej.c är kompilera hej.c.
>> Jag har inte sagt klang till länk i nollor och ettor
att CS50 personal skapade för dig för en tid sedan.
Så det är en enkel fix, dash l för länk, CS50.
Och vi kommer igen ser detta snart igen och igen.
Men märker nu fanns det inga klagomål.
Så nu om jag kör dot snedstreck Hej, nu det funkar.
Även om det är lite missvisande eftersom jag precis åter vilken fil?
a.out.
>> Så låt mig spola tillbaka för bara ett ögonblick.
Programmet vi bara sammanställt har de tre rader kod.
När jag körde hallå världen, hej en stund sedan såg jag inte uppge ditt namn.
Och det är för att jag sprang gamla versionen av programmet.
Men om jag verkligen köra dot slash a.out Enter, ange ditt namn, Rob, hej,
världen.
Hm.
Det är lite av en bugg.
Troligen menade Rob, eller hur?
Så vad är det fix här i koden.
STUDENT: [ohörbart].
DAVID MALAN: Exakt.
Så jag behöver bara göra det sista tweak så att jag passerar i en platshållare,
som en fylla i de tomma, som vi gjorde för en stund sedan.
Men procent s är nu som fyller i de tomma.
Så slutligen låt oss avslöja en sista detalj så att det finns ingen magi.
Jag kommer att gå vidare och bli av hellow.
Jag kommer att gå vidare och bli av med a.out.
Så nu har jag inga program, bara min källkod.
Och jag kommer att köra en något längre kommando, klang
dash o hej hej.c streck LCS50.
>> Nu börjar slags gå i ena örat och ut genom det andra kanske.
Men bara retas isär vad detta gör.
Klang är kompilatorn, streck LCS50 medvetet i slutet
gör vad i en mening?
Länkar till CS50 biblioteket.
Griper nollor och de som personalen gjort
och crams dem i mitt eget program.
Så den sista frågan till hands är, vad som är streck o hello troligen
göra, även om du har aldrig sett detta syntax innan?
>> Utmatning av ett program som är inte namnstandard a.out.
Snarare det som heter hej.
Så nu finns det ingen a.out.
Ingen sådan fil eller katalog, eftersom jag uttryckligen sagt
kalla detta program hej, så att Jag kan nu skriva in ett namn som detta
och har det beter sig.
>> Nu ärligt talat, är pojken som ointressant att ha
att komma ihåg allt det lite minutia, eller hur?
Så låt oss gå vidare och bli av hello igen.
Och låt oss nu återvända till en värld vilket det räcker att säga att hej.
Men det är den magi som gör gör för dig,
det är tråkjobbet som det gör för dig.
Och som våra program och problemen blir mer komplexa,
gör kommer verkligen vara din vän.
Eftersom inte alltför länge från och med nu ska vi
ha program som är skrivna inte med en fil, men flera filer,
och gör kommer att automatisera processen sammanställa allt detta för oss samman.
>> Så nu ut.
printf är inne i den här filen, standard I / O-dot h, som vi har sett tidigare,
men det finns mer till printf än så.
Det finns backslash n, men det finns också ett gäng andra escape-sekvenser.
Och escape-sekvens är bara en fint sätt att säga något
som börjar med ett omvänt snedstreck, inte ett snedstreck, ett omvänt snedstreck,
och gör lite speciell sak.
Och vi kommer inte att uppehålla mig vid de flesta av dessa, men varför är det omvänt snedstreck dubbla citationstecken,
tror du?
Varför denna konstiga sekvens av tecken, bakstreck dubbla citationstecken,
Varför skulle det vara användbart?
STUDENT: [ohörbart].
DAVID MALAN: Exakt, hur?
Tänk tillbaka till vår hallå världen program att vi har sett ganska många gånger nu,
varje gång vi har sett att hallå världen program som vi har haft dubbla citationstecken inne
av vilka är hej kommatecken världen snedstreck n.
Men tänk på dig själv, tänk om du faktiskt
ville skriva ut ett citationstecken?
Din första instinkt kanske, jag vet inte vet varför jag kanske vill do-- här,
Vi kan vara lite passiv aggressiva, hello vän.
Vi kanske vill göra något liknande.
>> Men varför är det nu problematiskt?
Att ignorera de typografiska citattecken åt sidan att keynote gjort för oss automatiskt.
Varför är detta problematiskt?
>> Exakt.
Eftersom vi har som 4 citattecken.
Jo den första troligen går med den andra,
och kanske den fjärde en går med den tredje,
eller, jag menar jag är inte ens säker på, inte heller är datorn kommer att bli.
Datorer igen, kompilatorer igen, är ganska dum.
De kommer bara göra det som du berätta för dem att göra.
Och om du inte är entydig de förmodligen kommer att kasta ett fel.
>> Om du inte är entydiga om hur man gör en jordnötssmör och gelé smörgås
konstiga saker kan komma fram.
Det är samma idé.
Nu räcker det att säga att det finns några andra escape-sekvenser,
men vi kommer till dem snart.
I huvudsak dessa escape sekvenser representerar något
att du inte skulle kunna alltför lätt på tangentbordet,
utan att förväxla datorn.
>> Nu under tiden vi har platshållare i printf.
Procent d, som också kan skrivas i nästan samtliga fall som procent i,
är en platshållare för vilken typ av data?
Vilken typ av värde?
Ett decimaltal.
Så egentligen ska vi börja använder procent i eftersom det är
lite enklare, som ett heltal.
Procent i.
Ett heltal som råkar vara decimal.
>> Procent s vi redan sagt var en platshållare för en sträng.
Vilket är bara ett ord, en fras, ett stycke, en uppsats, vad som helst.
Det är en sekvens av tecknen i viss längd.
Och vi får se snart vissa av dessa andra.
Men procent c är för ett enda tecken.
Procent f är en flyttal,
som ett reellt tal som har ett decimaltecken i den, vilket
är naturligtvis inte ett heltal.
Och det finns en hel gäng andra.
>> Under tiden i C, och i många språk,
Vi har olika datatyper.
Olika typer av glas skålar om du kommer.
Skålen jag använde förra gången var för pingisbollar,
men vi kan också spara olika värden som tecken och strängar
och heltal i en behållare, som en variabel, och C har dessa.
Char är den typ av data, vilken typ av variabel,
där du kan lagra ett tecken.
Float är en typ av variabel i där du kan lagra ett reellt tal.
>> Int är naturligtvis för en int.
Och ganska löjligt namngav en lång lång
är där du kan lagra i huvudsak en riktigt lång rad, med ännu
fler siffror sedan en typiska int kanske butik.
Men vi ska återkomma till det inom kort.
>> I CS50 dot h under tiden den andra huvudfil
att vi har sett ett par tider i användning, det finns
två andra datatyper som finns inte i C normalt.
En är sträng, och vi kommer att se i några veckor vilka strängar verkligen
är under huven.
Och en är bool.
Och en bool är en variabel som kan bara anta vissa värden.
Och bara bygger på förra veckans förklaring av Scratch,
och på senare tid C, vad skulle du gissa
är de två möjliga värdena för vissa behållare som är av typen bool?
>> Både ja och nej.
Ett och noll.
Sant eller falskt.
Och faktiskt är det sista som tenderar vara konventionell i en programmerings
språk, säger något som sant eller falskt.
>> Under tiden CS50 biblioteket kommer med ett gäng funktioner
att personalen skrev för dig, Förutom att bara få en sträng.
Vi skrev i förskott funktioner som kan få ett helt tal från användaren,
få en enda karaktär, få en flottör, som
är bara ett nummer med decimalkommat.
Få en lång lång, en riktigt stort värde från användaren.
Så vi har bara sett detta i åtgärder i form av GetString.
Men via dessa funktioner kommer snart att kunna skriva
program som får input från användaren.
>> Samtidigt anser detta program, och överväga
hur vi nu kan börja lägga att det med nya konstrukt.
En snabb virvlande tur och sedan kommer vi att titta
någon skriver något program manuellt själva.
Hädan om vi vill genomföra ett villkor,
det kommer inte att se ut som en fin liten nätt pusselbit.
Det kommer att se lite mer svårbegripliga.
Men detta är den kanoniska strukturen av ett tillstånd i C.
>> Ordet om, två parenteser, inuti vilken
kommer att bli någon form av Booleskt uttryck.
Nu snedstreck snedstreck i mitten, det är
för tillfället ungefär som pseudokod platshållare kod.
Men mer korrekt, varje kodrad i C som börjar med snedstreck snedstreck
är en kommentar.
>> Det är som en klisterlapp som du kanske sätta på en uppsats, som skrivs ut på papper.
Det är en notering till dig själv.
Den har ingen funktionell inverkan på programmet.
Det blir liksom en påminnelse, det är ditt eget dokumentation om vad som händer.
Så gör du för tillfället är typ av platshållare
oavsett finns inuti av dessa klammerparenteser
så småningom kommer att göra något.
>> Under tiden du har två gafflar i väg, en om annat konstruera så här.
Du kan om, elseif, annars.
Nu är det värt att notera, speciellt om du har googla runt
online resurser av nyfikenhet, eller om du plockar upp
en av kursens rekommenderade böcker om C,
kommer du att se att människor har massor olika inställningar för hur
att uttrycka sig i kod.
Vissa tycker om att sätta klamrar som jag har gjort här.
Vissa tycker om att sätta lockigt hängslen till exempel här uppe.
>> Vissa tycker om att sätta annans upp här och sedan det här.
Det finns ett antal sätt att skrivkoden, och ingen av dem
är rätt per se.
Även om det finns några som är ganska fel.
Men det finns no-- om detta är i slutändan en mycket religiös debatt.
I själva verket är en av de mest irriterande saker om datavetenskap
är hur påstridig datavetare kan vara.
Och hittar du över tiden som även du utveckla personliga preferenser
hur din kod ska se ut.
>> Inte bara beter sig, inte bara skapa utdata, men hur det ska se estetiskt.
Så vad vi ska göra är att guida dig längs vägen mot, för nu åtminstone,
en standard CS50 stil som åtminstone håller saker enhetligt och lättläst.
Men mer om dem distinktioner kort.
>> Ett booleskt uttryck i C, om du ville säga om detta villkor är sant
och detta andra villkor är sant, du behöver inte skriva ordet
och, som du skulle i engelska.
Du använder i stället och-tecken et-tecken, av skäl som vi ska återkomma till.
Om du vill säga eller om du använder två vertikala barer, som på ett amerikanskt tangentbord
är i allmänhet över på Enter nyckel bredvid backslash.
Och det betyder bara om detta villkor eller det andra villkoret är sant gör detta.
>> Samtidigt finns det här galen sak, som
du har tillfälle att använda gång på ett tag.
Men det är bara ett alternativ sätt att uttrycka sig.
Detta, för nu, låt oss stipulerar, det är bara
annat funky sätt att uttrycka om, elseif, elseif, elseif, elseif.
Det är bara formateras i termer av fallen, där du bokstavligen
räkna upp de värden som kanske du vill kontrollera.
>> Under tiden loopar.
Vi såg en jämförelse av Skrapa med en slinga.
Och jag ska vinka min hand på vilken var och en av dessa saker betyder.
Men märker att en slinga kommer mycket ofta börjar med sökordet för.
Eller kommer det att börja med sökordet tag.
Eller kommer det att börja med sökordet göra, och avslutas med sökordet tag.
>> Men vad vi håller på att se är saker mer som denna.
Här är i allmänhet i C, hur du kanske deklarera en variabel och ge den ett värde.
I C det inte räcker, som i Scratch, du bara
säger ge mig en variabel som heter något.
Du måste tala om för C, och berätta din kompilator, mer specifikt,
vilken typ av värde gör du vill sätta i glasskålen.
>> Är det ett heltal?
I så fall måste du bokstavligen säger int och sedan
namnet på variabeln, sedan ett semikolon.
Om du i stället ville sträng och kallade det s som jag gjorde min kod här i dag,
du skulle säga strängen s semikolon.
När du vill ge det ett värde Du kan sedan använda likhetstecknet,
annars känd som den tilldelningsoperator.
Och märker hur varje av dessa kodrader
har semikolonet i slutet av den.
>> Men ärligt talat detta bara ser lite fult.
Varför kan jag inte säga till datorn, ge mig en variabel och initiera den till noll.
Det vill säga, ge mig en tom glasskål.
Även om du kan.
Och så en av dom ringer du kommer måste göra stilist över tiden
är, du skriver din kod så här, eller tror du slags rensa den och imponera
människor genom att skriva två rader som bara en.
Och detta skulle anses vara generellt ett mer elegant sätt
att skriva din kod stilistiskt.
>> Funktioner är vi naturligtvis sett.
De kommer att ta det här formatet.
Namnet på en funktion, en del parenteser, och då kanske en del
saker inuti.
Eller du kanske ser användningsområden för flera funktioner sidan
vid sida, som något så här.
Nu som en tangent, gör detta skämt nu vettigt?
>> [LAUGHTER]
Det betyder inte att det är roligt, men det gör kanske göra lite mer mening.
Så nu ska vi gå in i CS50 apparaten för ett ögonblick.
Och låt mig öppna upp en teaser här.
>> Och faktiskt en av anledningarna för införande av IKEA katalogen
och blinkande bilden av iPhone lite sedan
var att faktiskt binda ihop den faktum att bara några år sedan, år 2007,
denna bit kod var Tillstånd, som var
en av de allra första genomförandet av en programvara
som gör vad som kallas jailbreaking.
För de som känner, jailbreaking något som en telefon eller en iPhone
innebär i huvudsak räkna ut hur man gör saker
med det att företaget som gjorde det inte hade för avsikt.
Som du vill installera vissa program som inte är i App Store,
jailbreaking telefonen som du gör saker som detta och mer.
Men vad som var kul i 2007-- och det har varit
dussintals olika versioner av dessa saker sedan dess,
i alla typer av languages-- är att detta program här, heter iUnlock,
var faktiskt skrivet i C. Så jag drog upp källkoden för det här,
bara för att typ av visa någon dig om likheterna med konstruktionerna
Vi har diskuterat hittills.
Nu finns det mycket mer komplicerat här än vad vi har sett redan i klassen.
Låt mig rulla upp bara lite här.
>> Men märker these-- väl märker vi några saker-- men märker dessa rader här,
inklusive standard I / O punkt h.
Och all-- linje 24, please-- märker standard I / O
dot h och en hel massa andra Filer som tydligen andra människor
har skrivit.
Och om vi rulla ner genom detta, lite godtyckligt,
märker jag inte vet hur man skriver allt detta själv nödvändigtvis ännu,
men det är om.
Så tydligen detta har en filial.
>> Och om jag bläddra ner lite vidare finns det en annan om.
Om jag rulla upp, tror jag runt linje 100 jag såg efter.
Så jag är inte helt säker hur detta fungerar ännu,
men detta är en for-loop som kommer att Låt mig upprepa några antal gånger.
Och om jag bläddra alla vägen till botten
Jag ser att det finns en fungera här nere kallas
viktigaste, och några ytterligare krediter för din läsning nöje.
>> Så detta är bara för att säga-- och vi ska sätta detta online bland kursens källan
kod today-- att även vissa av dessa enheter som vi tar för givet,
i slutet av dagen du är fortfarande med hjälp av dessa grundläggande konstruktioner som Prisjakt
infört redan hittills.
Det räcker för att en.
Okej, så nu ska vi faktiskt bygga något.
>> Låt oss gå längre än något som hej.c, och öppna upp det här,
låt oss skriva detta program här.
Jag kommer att gå vidare och skriva ett program som heter adder.c,
vars syfte i livet kommer att bli som min första super enkel kalkylator
som lägger bara ett par siffror.
Inte för att det är svårt problem, men eftersom det
tillåter mig att nu knyta ihop ett par saker.
Så jag ska gå vidare och inkludera standard I / O punkt h och CS50 dot h.
Jag kommer att säga int main ogiltiga.
Och igen i framtiden Vi ska återkomma till det
in i detta sammanhang och void sätt.
>> Och nu ska jag säga något som printf, ge mig ett heltal.
Och nu på min andra raden, hur gör jag uttrycka mig sådan
att jag vill deklarera en variabel det kommer att lagra en int?
Bokstavligen vad ska jag skriva om jag vill skapa en variabel som lagrar en int
skulle du säga?
int en lika getInt.
Visst, så det fungerar.
Och bara för konsekvens med koden du kommer
se på nätet, låt mig förändring detta till x, bara för att x
är en vanlig variabelnamn att använda, åtminstone i algebra.
Låt mig gå vidare och inte printf igen.
Ge mig ett annat heltal.
Och nu ska jag typ av lära av detta mönster,
Jag kommer att säga int y får getInt.
>> Och vi har inte använt GetInt förut, men bara
som GetString går och får en sträng, som Javier gjorde från publiken,
på liknande sätt gör getInt börjar blinka snabbt.
Och effektivt väntar på att användaren för att ge det ett heltal, genom att skriva den i
och slå Enter.
Nu sist jag ska göra detta, printf summan of--
och låt mig få lust nu-- procent i och procent i är närvarande
Jag utropsbackslash n.
Och vad tror du att jag ska sätter in nu som de extra ingångarna
till printf?
>> Jag vill inte säga bokstav citera unquote x.
Jag vill klass i x och sedan, och nu ska vi få lust
och låt oss bara anta vi kan göra vad vi vill.
Vad du vill säga nästa?
x plus y.
Och faktiskt det kommer att fungera.
Det är minimalt programmeringsspråk förstår grundläggande aritmetik,
och så detta borde faktiskt arbete.
>> Så låt mig gå vidare och gör huggorm i min svarta och vita fönster
här nere, Enter.
Cryptic rad men inget fel budskap, så det är bra.
Dot slash huggorm, ge mig ett heltal, 1.
Ge mig ett annat heltal, 2.
Summan av 1 och 2 är 3.
>> Okej, så en ganska trivial programmet, men vad är det gjort?
Det får mig att använda en funktion ringa hit, ringa en annan funktion här,
två samtal till getInt, en tredje samtal till printf,
och sedan använda dessa platshållare.
Så det är lite mer sofistikerad än förra gången.
Men om jag vill få lite snyggare?
>> Låt mig gå vidare och nu gör det.
Låt mig gå vidare och skapa en ny fil som heter villkor noll.
Och jag kommer att spara lite tid för klasserna skull
och bara klistra in det kod som utgångspunkt.
Och nu ska jag bara ska sätta något nytt här i mitten.
Så printf jag skulle vilja ett heltal tack.
Och allt detta koden finns tillgänglig på kursens hemsida,
du behöver inte skriva ut allt i klassen, om du inte vill.
int, och nu ska jag använda, i stället för x och y,
Jag kommer att använda n, som är troligen den vanligaste namn
för ett heltal inom ett datorprogram.
Och nu vill jag göra en lite dom här.
Jag ska se om n är större än 0, då
Jag kommer att säga printf-- hoppsan, printf-- du plockat ett positivt tal,
utropstecken backslash n.
Stäng det.
Else jag ska skriva ut printf du valde ett negativt tal.
>> Nu innan du skrika på mig, låt oss köra programmet.
Låt mig gå hit.
Och hur gör jag kompilerar ett program kallas betingelser streck 0?
Gör betingelser streck 0.
Typ av en dum namn, men-- dammit.
OK, bra undervisningstillfälle.
Varför gick det sönder?
>> Vad gjorde jag av misstag kallar den här filen?
Du kan sorts sluta från fliken här uppe.
Så det är inte dåligt att jag gjorde detta, eftersom detta
händer kanske några av er.
Så jag av misstag namngav min källkod tillstånd 0.
Men min källkod av konvention bör vara i en fil som heter tillstånd 0 dash c,
eller vad dot c.
>> Så låt mig fixa det här.
Precis som Microsoft Word kan jag gå upp på Spara som och gör villkoret 0 dot c.
Nu är det bara för att vara snygg är jag kommer att gå vidare och ta bort
tillstånd 0, vilket var min gamla versionen.
Och nu ska vi gör tillstånd 0, Enter.
OK, verkar bra.
>> Skick 0, Enter.
Jag skulle vilja ett heltal snälla, 50, du valde ett positivt tal.
Nu sägs om negativ 50?
Du valde ett negativt tal.
Vad sägs om nu, 0.
Ganska säker på 0 är inte negativt.
>> Så det här är lite av en logisk bugg.
Hur åtgärdar jag detta?
Annars om n är mindre än 0, gör detta, annars vi kan ha en trevägs filial här,
printf du plockat 0.
Så nu om jag kör det här programmet, efter att sammanställa den
igen med make, och nu kör tillstånd 0, vad jag ser här
är 0 ger mig denna utgång.
Så vart är vi på väg med detta?
>> Jo det är väldigt lätt att glömma bort av skogen för alla träd.
Och så kan vi dra slutsatsen med denna 2 och 1/2 minuters video
som i slutändan är lite av en annons från Google,
men det är verkligen ett bevis på vad ens med hjälp av dessa grundläggande bygg
block som vi i slutändan kan göra en gång Vi har lite programmering
savvy enligt våra bälten.
>> [MUSIK SPELA]
>> SAROO Brierley (Berättarröst): Det var 26 år sedan,
och jag var precis på väg att vända 5.
Vi fick till tågstationen och Vi bordade tåget tillsammans.
Min bror sa bara jag ska stanna här, och jag ska komma tillbaka.
Och jag tänkte, ja du vet, Jag kan lika gärna gå i vila
och han ska bara väcka mig.
Och när jag vaknade nästa dag, hela vagnen
var tomt på ett skenande tåg, ett spöke Tåget tar mig jag vet inte var.
>> Jag antogs ut till Australien, till en australisk familj.
Och mamma hade dekorerat min rum med kartan över Indien,
som hon lagt bredvid min säng.
Jag vaknade upp varje morgon ser att kartan, och därmed
det slags höll minnena vid liv.
Folk skulle säga, du är försöker hitta en nål
i en höstack, Saroo du kommer aldrig hitta den.
>> Jag skulle ha blixtrade av de platser som jag brukade gå, de blixtar av min familj
ansikten.
Det var bilden av min mor, sitta ner med benen i kors,
bara titta henne gråta.
Livet är bara så svårt.
Det var min skatt.
Och jag såg på Google Map och insåg att det finns Google Earth också.
I en värld där du kan zooma in, Jag började att ha alla dessa tankar
och vilka möjligheter att detta kan göra för mig.
Jag sade till mig själv, du vet, du har fick alla dessa fotografiska minnen
och landmärken var du är från, och du vet vad staden ser ut.
Detta kan vara ett program som du kan använda för att hitta tillbaka.
>> Jag tänkte, ja jag ska sätta en prick på Calcutta tågstationen,
och en radie linje, du vet, att du ska söka runt området.
Jag sorts kom över Dessa tåg spår.
Och jag började följa den, och Jag kom till en järnvägsstation, som
återspeglas samma bild som var i mina minnen.
Allt matchas.
Jag tänkte bara yep, jag vet vart jag ska.
Jag ska bara låta karta som jag har i mitt huvud
leda mig och ta mig tillbaka till min hemstad.
>> Jag kom till tröskeln till det hus som jag föddes.
Och gick runt ca 15 meter runt hörnet,
Det var tre damer som står utanför, intill varandra.
Och den mellersta klev fram, och Jag tänkte bara, det här är din mamma.
Hon kom fram, hon kramade mig, och Vi var där i ungefär fem minuter.
>> Hon tog tag i min hand och Hon tog mig till huset
och fick på telefonen, där hon ringde min syster och min bror
att säga att, du vet, din bror har precis
helt plötsligt dök upp som ett spöke.
Och sedan familjen återförenades igen.
Allt är allt bra, Jag hjälpte min mor ut,
hon inte måste släpa bort.
Hon kan leva resten av sitt liv i fred.
>> Det var en nål i en höstack, men nålen var där.
Allting finns där.
Allt vi har i världen är på kranen på en knapp.
Men du måste ha viljan och viljan att vilja det.
>> [MUSIK SPELA]
DAVID MALAN: Underbart söt omdöme
till precis vad du kan nu gör med tekniken.
Vi ses nästa vecka.