>> LUCAS FREITAS: OK, jeg gætte nu er vi bor.
Velkommen til CS50 Supersection.
Vi er mindre behagelige.
Mit navn er Lucas Freitas.
Jeg er en CS50 hoved TFs.
Det er Lauren.
>> LAUREN CARVALHO: Hej, jeg hedder Lauren.
Jeg er også chef TF til CS50.
>> LUCAS FREITAS: I dag skal vi bare at give et overblik over hvad alt hvad du
fyre har lært i uge et, forhåbentlig om at give jer en god
mening for hvad du bør vide for problemet indstillet en sådan.
>> Bare et par annonceringer.
Først og fremmest, kontortid.
Kontortid sker fra mandag til torsdag i forskellige huse i
Annenberg hver dag.
De er en meget god ressource for dig fyre til at komme og stille spørgsmål, og
tale til TFS og endda udveksle ideer med andre studerende.
Så sørg for at bruge denne ressource i din favør.
>> Den anden ting er den CS50 Appliance.
For den sidste [uhørligt]
du fyre ikke har til rent faktisk at har et apparat.
Du skal bare gjorde alt i din personlige computer.
Men for at dette problem, du rent faktisk har at have en virtuel maskine, så
Sørg for at hente CS50 Appliance og sætte det op.
>> Og den tredje ting er at være sikker på at starte problem indstillet ASAP bare
fordi det er meget lettere at finde hjælpe, når du er i
begyndelsen af ​​ugen.
Fordi folk har en tendens til at vente, indtil sidste sekund for at starte problemet sæt,
og så skal du gå til kontortid, og der er en masse mennesker.
Hvor hvis du går på mandag, er du nødt at se, at du kan tale med TFs
temmelig meget for hele natten, og de vil være mere end
glade for at hjælpe dig.
>> LAUREN CARVALHO: Kan jeg bare stoppe du for bare en sekund?
Har alle været i stand til at hente Den CS50 Appliance?
Har folk prøvet?
>> LUCAS FREITAS: For at downloade, ved måde, kan du få vejledning på
cs50.net/appliance.
>> LAUREN CARVALHO: Right.
Og det tager lidt tid for vores systemadministrator for at få dig en licens
nøgle, så meld dig til gratis prøveversion først.
På den måde har du det i 30 dage, og derefter vente på din licens nøgle
der bør give det til dig i et år.
>> LUCAS FREITAS: Først og fremmest, Lad os snakke lidt
om CS50 Appliance.
Den CS50 Appliance er faktisk en virtuel maskine, som du vil
køre i din egen computer, som er dybest set kører en anden computer
inde i din egen computer.
Hvilket er temmelig cool.
Og faktisk det bruges overalt.
Folk, der til tech ville vide, at dette bruges hele tiden.
dig?
Kan have flere computere i én enhed.
>> Lad os faktisk tage et kig ved Appliance.
Når du går til Appliance efter registrering, er du nødt til at
sætte dit navn og log ind på Harvard så vi kan få dig alle registreret.
Du kommer til at se dybest set bare et tapet, og derefter hjem og papirkurven,
og så disse små ikoner.
Denne tre ikoner er faktisk den mest vigtige ting, du kan have i
din Appliance.
>> Den første er gedit, hvilket er en tekst redaktør, ligesom Notesblok eller lignende
enhver form for tekst editor.
Det er bare noget, som vi bruger til at skrive kode og derefter gøre ting med det.
>> Den anden ting, som vi har her er Chrome.
Så hvis du har brug for at bruge internettet i Appliance, der er
hvad du kan bruge.
>> Og den tredje ting er terminalen, som faktisk er meget sød.
Folk normalt er slags bange for terminalen, fordi det er denne meget
gammeldags ansøgning, hvor du bare dybest set skrive alt med
dit tastatur.
Der er ikke en masse interaktion med din mus.
Men faktisk terminalen gør meget gode ting.
>> Først og fremmest, lad os bare gå igennem nogle kommandoer, som du
kan bruge i terminalen.
>> LAUREN CARVALHO: Og velkommen til at stoppe os, hvis du har spørgsmål.
>> LUCAS FREITAS: Ja.
Så den første kommando, at vi har for terminalen er ls.
ls dybest set betyder liste alt, alt filer og alle de direktører,
at jeg har på det sted, at jeg er på.
Så hvis jeg gør ls her, jeg kommer til at se at jeg har nogle mapper.
Jeg har på skrivebordet, downloads, logs, og vhosts.
Det er i blå, fordi de er alle mapper.
>> Så har du nogle andre filer.
Du har ligesom goddag og hello.c, som er blot filer, og de er i
forskellige farver.
Så dette er en meget vigtig kommando bare du kan se, hvad er de filer,
og mapper, som du har i den mappe, der
du er på i terminalen.
Når du ser jharvard @ apparat og så lille symbol der,
tilde, det betyder blot, at det er mappe, at du er i øjeblikket.
>> LAUREN CARVALHO: Så skrive ls er næsten som at klikke på mappen
der er opført lige dér, i den viser du alt indhold, der er
inden for denne mappe.
>> PUBLIKUM: Er der tekst efter hello.c?
>> LAUREN CARVALHO: Åh, kan du ikke se, at fordi det er blå.
>> LUCAS FREITAS: Der står logs og vhosts.
>> LAUREN CARVALHO: Det er bare andre mapper.
Undskyld, det er virkelig svært at se.
Måske hvis vi slukkede lyset?
Colton, du ønsker at prøve og finde den lyskontakt?
Undskyld.
Jeg tænkte ikke over det.
>> LUCAS FREITAS: Men det er dybest set -
yeah, hvis du kunne -
>> LAUREN CARVALHO: Zoom på din skærm.
>> LUCAS FREITAS: Jeg gør ikke har denne funktion.
>> LAUREN CARVALHO: [uhørligt].
OK.
Tja, der er bare en masse af naturligt lys i dette rum så godt.
>> LUCAS FREITAS: Lad os bare antage, at Der er to andre biblioteker der.
>> LAUREN CARVALHO: Bare huske med os.
Dette er den eneste del, som du vil kigge på terminalen.
>> LUCAS FREITAS: Den næste kommando er dybest set måske du ønsker at organisere
dine filer -
for eksempel alle dine C-filer i ét directory-men du ikke har en
mappe bare for C-filer endnu.
Du kan stort set oprette en mappe ved hjælp af terminalen samt, som er
det samme som at højreklikke og siger Ny mappe.
Kommandoen lave mappen, som er mkdir, så dybest set "gøre" og
"Bibliotek".
>> Og så kan du sætte den navnet på den mappe.
Lad os sige, at jeg ønskede at blive kaldt, Jeg ved det ikke, lad os sige pset1 Doing
dette, jeg netop oprettet en mappe.
Lad os lige tjekke, at det er der.
Så hvis jeg gør ls, nu kan jeg se logs, og så pset1 og derefter vhosts.
Så jeg har den nye mappe der.
>> Og så når du har et nyt bibliotek, måske du ønsker at navigere
ind i det, så den næste kommando denne cd, som netop betyder egentlig gå til en
bestemt mappe.
Så hvis jeg ønsker at gå til pset1, Jeg kan bare gøre cd pset1.
>> LAUREN CARVALHO: cd står for forandring mappe, [uhørligt] i stand til at
huske.
>> LUCAS FREITAS: Og nu kan du se, at i stedet for bare at have jharvard
apparat, jeg har jharvard apparat, og derefter pset1, fordi det viser
mig, hvor jeg er i denne computer.
>> Nu, hvis jeg ønsker at gå tilbage til mappe, der var før denne, jeg
kan gøre en cd prik prik, hvilket betyder bare gå til den mappe, som jeg var før,
ligesom moderselskab for dette mappe, dybest set.
Og nu ser jeg, at jeg er tilbage til jharvard.
>> Den næste ting, jeg kan gøre det er rm, som er at fjerne en fil.
For eksempel, lad os først gøre ls at se, hvad jeg har her.
Jeg har goddag og hello.c.
Lad os sige, at jeg ønsker at fjerne dem.
Jeg kan gøre rm hej.
Det kommer til at sige "fjerne almindelig fil hej "Og jeg siger" ja ". Og nu, hvis jeg
gøre ls, jeg kan se, at det er der ikke mere.
>> Hvis jeg forsøger at bruge rm for en mappe, selv, er det ikke kommer
at lade dig gøre noget.
Det kommer til at sige, hey, du kan ikke fjerne en mappe.
Så vi har dette andet komme kaldt rmdir, som netop dybest set betyder
fjerne mappe.
Jeg kan for eksempel fjerne pset1.
Og hvis jeg gør ls, det gør jeg ikke have det længere.
>> Eventuelle spørgsmål vedrørende denne?
Nej?
Ja?
>> PUBLIKUM: Er det vigtigt, at du lader et mellemrum efter - når du
begynde at skrive noget i?
>> LUCAS FREITAS: Ja.
Hvis jeg gør gerne cd og den mappe, Jeg nødt til at sætte et mellemrum.
Hvad plads taler du om?
>> LAUREN CARVALHO: Mellemrummet mellem cd og [uhørligt].
>> LUCAS FREITAS: Ja, er du nødt til sætte rum, fordi cd er
kommando, og derefter den næste streng, du type er dybest set den mappe.
Så det er ligesom et argument.
Ja?
>> PUBLIKUM: Når du liste alle dem er forskellige mapper, right?
>> LUCAS FREITAS: Ja, de er i kataloget.
>> PUBLIKUM: Hvad er forskellen blandt de mapper?
>> LUCAS FREITAS: De er bare forskellige mapper.
Bibliotek er en mappe i din computer.
>> PUBLIKUM: Åbn mappe.
>> LUCAS FREITAS: Ja, det er blot en åben mappe.
>> LAUREN Carvalho: Over her, dem der er i blå er faktiske
mapper, som du kan komme ind og så se en masse ting, der er
inden for denne, hvilket er uheldigt fordi du ikke kan faktisk læse
dem i blåt.
Og dem i hvid er blot filer der er inden for den aktuelle mappe.
>> LUCAS FREITAS: Så biblioteker er mapper.
De andre er filer.
>> PUBLIKUM: Hvad er kommandoen nulstille den eller for at slette det?
LUCAS FREITAS: For at fjerne?
LAUREN CARVALHO: For at fjerne?
LUCAS FREITAS: Jeg tror det er "klar". Ja.
Så du bare skrive klart, om din skærm er for rodet.
Andre spørgsmål?
Og du vil lære en masse andre kommandoer bare naturligt under
semester, fordi de er meget nyttige.
>> Så lad os nu snakke om kompilering.
Vi talte om pseudokode og kildekoden og objekt kode.
Og der er en masse koder, og måske du fyre er forvirret over det.
Lad os snakke lidt om, hvad sker, når du skriver et program,
og du kompilere det, og det bliver en eksekverbar fil.
De er alle ord, du fyre sikkert hørt, og måske er du ikke
helt sikker på hvad der foregår.
>> Lad os sige, for eksempel, at jeg ønsker at skrive et program, der siger "hej." Den
første ting, der kommer i dit sind er du slags prøv at tænke på, hvordan du er
kommer til at gøre det i dit sind, og du sandsynligvis tænker på engelsk eller
et andet sprog, som naturligt sprog, sandsynligvis.
Og så du tror, ​​ja, hvis jeg vil, for eksempel skrive et program,
siger "hej," Jeg vil starte et program, Jeg vil udskrive hej, og så vil jeg
afslutte programmet.
Dette er pseudokode.
Dette er netop grunden du forsøger at komme op med en sekvens af hændelser
at du kommer til at gøre for at være stand til at skrive et program.
>> Så har du kildekoden, og kildekoden ikke behøver at
specifikt være i C. Vi taler om source kode i C, fordi det er
det sprog, vi er ved at lære, men selvfølgelig kode kan være stort set enhver
programmeringssprog, som du har.
Senere i semestret, er du nødt til at lære andre sprog.
Det er også kildekode.
>> For eksempel er her, det er min kilde kode, og så er jeg også en
bibliotek, og derefter starter jeg main, og derefter udskrive jeg.
Og Laura kommer til at snakke lidt lidt om alt dette.
Så dette er kildekoden.
>> Og hvad er formålet kode?
Objektet er en flok nuller og dem, dybest set.
Hvad der sker, er du i første omgang har pseudokode, som er alle på engelsk.
Og jeg mener, du forstår det.
Sandsynligvis dine venner forstå det, og de fleste mennesker ville
forstå ideen.
Men computere er virkelig dumme, og de forstår ikke engelsk, så du
har omsætte det til noget, oversættes normalt ind i nogle
programmeringssprog.
>> Og du kan tænke på et programmeringssprog sprog som lidt ligesom et sprog
at du fortæller din computer hvordan at tale og forstå.
Du er dybest set at skrive noget i et sprog, som både du og dine
computer forstå.
Det er kildekoden.
Så går formular pseudokode til kilden kode, er det op til dig.
Det er dybest set du laver dit program.
>> Men problemet er, at computer ikke engang
forstå programmeringssprog.
Det betyder ikke forstår kildekode overhovedet.
Det faktisk bare forstår nuller og ettaller.
Så vi har det meget magiske ting kaldet en compiler, som dybest set er
kommer til at få den kilde, kaldet, at du skrev i et sprog, som både du
og computeren tale, og nu er du kommer til at omdanne det i
nuller og ettaller.
Så dybest set, hvad compileren gør, er det får kildekode, i dette tilfælde C,
det kommer til at omdanne det til nuller og dem, som computeren
forstår og kan gøre en eksekverbar fil ud af det.
>> Giver det mening?
Du kan bare tænke på compiler som en slags oversætter, der er
hjælper du forklare til computeren præcis, hvad det er meningen at gøre.
>> Men hvordan kan jeg kompilere.
Lad os gå tilbage til apparatet, og lad os sige, at jeg gør dette program.
Først vil jeg oprette en mappe her, og jeg har tænkt mig at kalde det
"Praksis". Nu vil jeg til at navigere til den mappe, så cd praksis.
Nu er jeg inde i praksis.
>> Nu vil jeg starte gedit, så hvordan gør jeg det?
Jeg kan enten klikke her, eller jeg kan bare bogstaveligt skrive "gedit", og det kommer
til at åbne for mig.
>> Nu vil jeg til at skrive mit program, så præcis, hvad jeg skrev i diaset.
Jeg erklære et bibliotek.
Jeg gør int main, ugyldig.
Og nu jeg gør printf, hej.
Nu vil jeg til at redde dette.
Lad mig sige det i praksis, og Jeg har tænkt mig at kalde denne hello.c.
Så nu er det gemt.
>> Hvis jeg ønsker at kompilere det, jeg faktisk kan gøre det på to forskellige steder.
Jeg kan enten gøre det på en terminal vindue, så dette store, eller du kan
bruge gedit, der rent faktisk har en terminal vindue lige her.
Så kan du meget bekvemt lige gøre din kode, og så kan du bare skrive
hvad her, og prøv at kompilere det.
>> Så hvordan kan jeg kompilere kode?
Den nemmeste måde, at vi har er ved hjælp af gøre, hvilket er en funktion,
er dybest set vil kompilere din kode.
Du skal bare nødt til at sige gøre hej, så "Gøre" og navnet på programmet.
>> Ups.
Dette er akavet.
>> LAUREN CARVALHO: Kan du [uhørligt]?
>> LUCAS FREITAS: Undskyld.
Jeg havde ikke gemme den i rigtige bibliotek.
Kom til praksis, og nu gemme det som hello.c.
Undskyld.
Nu er det gemt.
>> Lad mig bare gøre ls og være sikker på, at det er her.
OK, nu er det her.
Så nu, hvis jeg gør hej, det spytter en masse ting, men så er det bare giver
mig en anden linje for terminalen, som betyder, at det var en succes.
Så nu, hvis jeg gør en ls igen, jeg faktisk se denne fil i grøn, hvilket er den
eksekverbar fil.
>> Og så hvis jeg vil køre det, alt det Jeg skal gøre er at dot skråstreg hej.
Det kommer til at sige goddag lige her, så det er præcis, hvad jeg beder den til.
>> Der er endnu en måde at kompilere, der bruger klang.
Dunk er bare en compiler, vi har, og det er en lille smule mere detaljeret for
kompilere det.
Men det virker lige så godt.
Så hvis jeg gør klang, og så-o, og derefter det navn, jeg ønsker at give til
den eksekverbare fil, så lad os sige "Hello". Og så den fil, jeg vil
at kompilere, hello.c.
Det er også kommer til at kompilere.
Og du har filen her, og Jeg kan bare udføre det så godt.
Så både af dem arbejde.
>> Giver det mening?
Eventuelle spørgsmål?
>> PUBLIKUM: Kan du zoome i en lille smule?
>> LUCAS FREITAS: Undskyld?
>> PUBLIKUM: Zoom ind?
>> LAUREN CARVALHO: Jeg tror, ​​du kan bare kommandere plus.
>> LUCAS FREITAS: kommando hvad?
>> LAUREN CARVALHO: Command plus.
>> LUCAS FREITAS: Nej.
>> LAUREN CARVALHO: Åh, det er ikke kommer til at arbejde, fordi -
er det fordi vi indstille opløsningen for denne ting.
>> LUCAS FREITAS: Jeg gør ikke tror, ​​vi kan zoome ind
Ja, vi kan ikke zoome.
Har du har et andet spørgsmål?
Undskyld.
>> PUBLIKUM: Kan du gentage clang?
>> LUCAS FREITAS: Den klang?
Dunk er det samme som mærke, men det Forskellen er, at jeg først har tænkt mig
at skrive klang, som er kommandoen, så jeg har tænkt mig at gøre -0, alt, der er
lige, hvad vi kommer til at lære senere som et flag.
Så bare tror, ​​at du altid nødt til at sætte-o.
>> Og så først, er du nødt til at sætte navnet på den eksekverbare fil,
dybest set den fil, du kommer til at skabe.
Så jeg kan sige, for eksempel, hello2 og derefter den fil, jeg ønsker at kompilere,
som er. c fil.
Så det er hello.c.
Giver det mening?
>> PUBLIKUM: Hej hvad?
Hvad er det?
>> LUCAS FREITAS: Hello.c.
Og hvis jeg kompilere det, og hvis Jeg kan ls, jeg har også en
hello2 at jeg lige har kompileret.
Og hvis jeg prøver at køre det, det kommer til at gør præcis det samme som hej,
bare udskrive hej.
>> PUBLIKUM: Hvordan kommer til make du kan sætte hello.c efter?
>> LUCAS FREITAS: I fabrikat, du behøver ikke at sætte. ca.
I fabrikat, du bare sige det navn på programmet.
Du behøver ikke at sige. Ca.
Men for klang, du skal.
>> PUBLIKUM: Med clang har du også nødt til at tilføje [uhørligt]
>> LAUREN CARVALHO: Ja.
Så du også nødt til biblioteket.
>> LUCAS FREITAS: Ja, det er noget vi kommer til at bruge senere.
Det kaldes sammenkædning, og jeg tror, ​​vi er kommer til at tale om det senere.
Et andet spørgsmål?
>> PUBLIKUM: Har du sat en prik skråstreg klang?
>> LUCAS FREITAS: Nej.
Prikken skråstreg er bare at åbne den eksekverbare fil.
Så klang, du bare skrive "klang", og så hvis du ønsker at åbne
eksekverbar fil, du lige kompileret, så du dot
skråstreg og navnet.
Giver det mening?
>> PUBLIKUM: Hvis du skulle bare forandring [Uhørligt] til goddag verden, gør du
skal kompilere det?
>> LUCAS FREITAS: Ja.
hvis jeg ønsker at sige, for eksempel, "hello der, "Jeg kan bare gemme det nu, og jeg
bare kompilere det igen.
Så lad mig gøre en make hej.
Og hvis jeg gør hej, det kommer til at sige "Hej der." Giver mening?
Andre spørgsmål?
>> PUBLIKUM: Har du nødt til at medtage standard I / O til at koordinere arbejdet?
>> LUCAS FREITAS: Ja.
Standard I / O er dybest set det bibliotek, der har en
implementering for printf.
Så ting lige på top omfatter stdio.
Det er herunder et bibliotek, dybest set har en masse forskellige
værktøjer, som du kan bruge.
en?
Af dem er printf der er en funktion der dybest set udskrives
beskeder til skærmen.
>> Andre spørgsmål?
Nej?
OK.
Så lad os nu snakke om -
>> LAUREN CARVALHO: Lad os bare gå til den stil guide.
Ønsker du at bare finde det herinde?
>> LUCAS FREITAS: Så vi vil at tale om stil.
>> LAUREN CARVALHO: Åh, David ikke færdig.
OK.
Hvorfor vi ikke kommer tilbage til stil i slutningen?
Det er faktisk blevet opdateret som vi taler.
>> LUCAS FREITAS: Ja.
Lad os vejen for David at afslutte det.
>> LAUREN CARVALHO: Can vi skifter faktisk?
>> Så jeg håber, at alle har været nyder Scratch.
Desværre, er det tid til bevæge sig væk fra det -
desværre er det tid til at flytte væk fra disse smukke blokprogrammering
på C. Men heldigvis, alle af programmering konstruerer, at du har
arbejdet med i Scratch er direkte overføres til et C, og vi er
kommer til at begynde at lære om nogle af dem lige nu.
Lad os først tale om forhold i boolske udtryk.
>> Dette kører på reserve batteristrøm.
>> LUCAS FREITAS: Hvordan er der ikke fungerer?
OK.
Du går der, jeg kommer til at få det -
>> LAUREN CARVALHO: So betingelser vigtige, fordi de tillader os at
introducere logik ind i vores programmer.
Her er et eksempel på en betingelse inden for et C-program.
Lad os bemærke, hvordan dette -
Så denne betingelse blok lige her, dette printf erklæring vil ikke udføre
medmindre betingelsen i parenteser, n er større end 0,
evalueres til sand.
>> Nu er alle betingelserne inden f udsagn er boolske udtryk,
hvilket betyder, at der er kun to muligheder.
De kunne enten evalueres til sand, eller de kan evalueres til falsk.
Så her, så det giver mening, ikke? n større end 0, betyder, at det er en positiv
nummer, hvilket betyder, at det vil udskrive out "du valgte et positivt tal."
>> Der er masser af boolske udtryk som kan danne tilstand med en
init erklæring.
Vi har mindre end.
Dette er mindre end eller lig med.
Dette er blot en sjov [uhørligt].
Hvis du vil have den printf at opstå, hvis det er større end eller lig med 0, så
du ville vælge dette.
Så den lige netop tilføjer ret efter større end tegn.
>> Lig lige, som er forskellig fra kun et lighedstegn svarende lig
betyder faktisk, at uanset hvad der er på den venstre side af denne er den samme som
hvad der er på den højre side af denne hvor man lighedstegn er hvad?
Hvad er blot ét lighedstegn?
Overdragelse.
>> LUCAS FREITAS: Hvem sagde det?
Er det slik?
Åh, nej.
Undskyld.
Man både får slik.
Åh, OK!
Tre mennesker får slik!
>> LAUREN CARVALHO: Så denne ene lige her er bang operatør foregående
lighedstegnet, så det er ikke lig med.
Så hvis dette var inden for min tilstand, kroppen af ​​den tilstand ville
udføre, hvis hvad er i venstre er ikke det samme som
hvad der er til højre.
>> Jeg kan også have den helt udråbstegn.
Faktisk vil vi se på en funktion glide hvordan dette ville blive anvendt.
>> LUCAS FREITAS: Eventuelle spørgsmål?
Nej?
>> LAUREN CARVALHO: Vi kan kombinere disse Boolske udtryk til at konstruere mere
indviklede betingede udsagn.
Så her, hvis hvad er til venstre side af dobbelte søjler eller
hvad der er på den højre side af de dobbelte søjler evalueres til sand,
så vil vi udskrive ugyldigt.
Og derefter ned her, hvis uanset s på venstre side af de to
ampersands og hvad der nu er til højre side af de to-tegn
evalueres til sand, så vi vil printe ud gyldig.
De dobbelte stænger kaldes logiske OR operatør dobbelt-tegn er
kaldes logisk OG operatør.
Ja?
>> PUBLIKUM: Er de bare lavere sag l's?
>> LAUREN CARVALHO: Nej.
De er faktisk -
du kender bagslag, ligesom over din Return tasten?
Kan du se det?
>> LUCAS FREITAS: Det er faktisk en bar.
>> LAUREN CARVALHO: Det er faktisk blot to barer.
>> PUBLIKUM: Kan du bruge lige lige for strygere?
>> LUCAS FREITAS: Nej.
Vi kommer til at lære senere noget om det.
>> LAUREN CARVALHO: Der er en funktion som du kan bruge.
Men du behøver ikke at bange for, at netop yet.
>> Hvad hvis jeg giver dette program nummer 5?
Hvad vil udskrive?
>> PUBLIKUM: [uhørligt]
gyldig.
>> LAUREN CARVALHO: Gyldigt?
Ja.
Jeg ved ikke, hvem der fik det.
>> [Latter]
>> LAUREN CARVALHO: Det er lidt skræmmende [uhørligt].
>> PUBLIKUM: Så det dobbelte, og det betyder bare, og?
>> LAUREN CARVALHO: Ja.
Så nummer 5 er både større end 0 og mindre end 100.
>> PUBLIKUM: Hvorfor ville det være en?
>> LAUREN CARVALHO: One-tegn er faktisk noget andet, og det er
en bitvise operatør, som du vil lære om senere.
Men det er noget, der faktisk fungerer med bit med et givet tal.
>> LUCAS FREITAS: Tænk de ikke at bekymre dig om det for nu.
>> LAUREN CARVALHO: Jeg synes det er sandsynligvis kommer op i næste uge.
>> LUCAS FREITAS: Andre spørgsmål?
Nej?
>> LAUREN CARVALHO: Så vi har set, at en det blokere kan stå alene, men det kan
også blive parret med og ellers blok.
Så i dette tilfælde, hvis n er større end 0, vi kommer til at udskrive "Du
plukket et positivt tal. "andet, hvilket betyder, hvis det er 0, eller hvis det er mindre
end 0, vi kommer til at udskrive, "Du valgte et negativt tal."
>> Det interessante her er, at disse er eksklusive hinanden.
Der er aldrig vil være et tilfælde hvor denne og dette
både kan printe ud.
>> Jeg er sikker på, du har arbejdet med, hvis / andet Box i Scratch, så det bør være
. temmelig velkendt
Ja?
>> PUBLIKUM: Har vi brug for plads mellem int n er lig GetInt derefter plads i
hvis erklæring?
Ligesom vi bruger en linje [uhørligt]
>> LAUREN CARVALHO: Åh, den plads her?
>> PUBLIKUM: Ligesom det, men du fordoble plads.
Nej, gå op.
Gå op.
>> LUCAS FREITAS: Bare linjen?
>> PUBLIKUM: Ja.
>> LUCAS FREITAS: Bare den tomme linje?
>> PUBLIKUM: Ja.
>> LAUREN CARVALHO: Blank linje?
Nej.
Det er bare et stilistisk ting.
>> LUCAS FREITAS: Det er ligesom nogle gange du bare springe nogle linjer, så
at koden ikke ligner en stor blok af tekst.
>> LAUREN CARVALHO: Jeg tror, ​​hvad der skete var, at vi havde en kommentar her, men jeg
tog det ud, så du fyre ville have at tænke på koden snarere
end lige læst min kommentar.
I almindelighed afstand vil ikke rigtig påvirke den måde, dit program kører.
Det er mere af en stilistisk ting.
Og når vi har den stil guide opdateret og klar til at gå i slutningen af
supersection, vi vil tale om det mere.
>> Der er noget galt med dette program, ikke?
Fordi 0 er ikke rigtig et negativt tal.
Så lad os se om vi kan løse det.
>> Du kan sikkert forestille med dette, siger, ikke?
Hvis n er større end 0, vi udskriver "Du plukket et positivt tal. "Så ellers
hvis n er mindre end 0, "Du valgte en negativt tal. "andet," Du valgte
0 ".
>> Nu interessante er, at dette kunne blive ved for evigt.
Du kan have en hvis blok, et andet, hvis blok, en anden else if blok, ellers hvis
ellers hvis ellers hvis ellers, dybest set så længe du ønsker.
Og når konstrueret som dette, disse er alle kommer til at være
udelukker hinanden.
Ja?
>> PUBLIKUM: Så hvorfor kan du ikke bare bruge anden, hvis i stedet for [uhørligt]?
>> LAUREN CARVALHO: I dette tilfælde, ja jeg kunne bruge en anden, hvis og det ville være
helt fint, fordi betingelser selv er
udelukker hinanden.
Men hvis betingelserne ikke var eksklusiv af hinanden, vil dette
tvinge dem til aldrig begge vurdere, hvis det giver mening.
>> PUBLIKUM: I så fald kunne vi reden det andet, hvis det første, hvis?
>> LAUREN CARVALHO: Hvis - hvad mener du?
>> PUBLIKUM: Hvis de to betingelser udelukker ikke hinanden?
>> LAUREN CARVALHO: Hvis betingelserne udelukker ikke hinanden?
Men du vil kun én af dem til at køre?
>> PUBLIKUM: Du vil bare hvis i stedet for andet.
>> LAUREN CARVALHO: Ja.
Der er altid vil være masser måder, du kan gøre dette.
Du kan helt sikkert reden dem.
Og du vil se i en fremtidig dias, du kan have flere hvis'er, blot én
efter den anden.
Men dette er en måde logisk organisere strømmen af ​​dit program.
>> LUCAS FREITAS: Og der er en mere ting er, at du spurgte om at sætte
hvis og derefter en anden, hvis.
Det ville fungere perfekt, men det er dårligt design, fordi dybest set, hvis du
kontrollere først, hvis, og du bemærker, at nummeret er større end 0, du
kan bare afslutte programmet.
Du behøver ikke at kontrollere, om det er mindre end 0, right?
>> Men hvis du, hvis, hvis det kommer til at kontrollere begge, mens hvis jeg gøre, hvis andre er,
det kommer til at kontrollere, om det er større end 0.
Hvis det er, er det ikke kommer til at selv se på de andre linjer i koden.
Så du dybest set at kontrollere det som to gange unødigt, så det er derfor vi
gøre, hvis ellers hvis.
Andre spørgsmål?
>> PUBLIKUM: Så funktionaliteten af andet, hvis er den samme som
hvis det var bare om?
>> LAUREN CARVALHO: Nej.
Du er faktisk kommer til at se i min næste glide et eksempel, hvor det kan
være anderledes.
I dette tilfælde er det næsten det samme.
>> Så her har vi et eksempel på flere hvis udsagn, og
funktionalitet er ikke det samme som om jeg lige havde sagt, hvis
ellers hvis ellers hvis ellers.
Lad os bare tænke over, hvad der ville udskrive ud af, om jeg indtaste nummeret 95
i dette program.
>> PUBLIKUM: [uhørligt]
>> LAUREN CARVALHO: Og hvad så?
>> PUBLIKUM: [uhørligt]
>> LAUREN CARVALHO: Ja.
Så i dette tilfælde, er disse betingelser er ikke gensidigt udelukker hinanden.
Og fordi der er intet stoppe denne betingelse fra at vurdere, om dette
man allerede har, de er bare alle kommer til at printe ud.
Så hvordan kan jeg løse dette?
>> PUBLIKUM: else hvis'er?
>> LAUREN CARVALHO: Du kan bruge ellers hvis'er.
Jeg kunne ændre rækkefølgen af disse, right?
Hvis jeg gjorde dette ene først?
Tja, faktisk, nej.
Det ville ikke fungere for 95.
>> LUCAS FREITAS: Nej, bare de ellers hvis'er.
>> LAUREN CARVALHO: Den ellers IFS ville have fastsat dette.
Betyder at rydde op i forvirringen mellem IFS og ellers hvis'er?
>> PUBLIKUM: Jeg ville bare spørge dig, hvis du har brugt andet, hvis, vil det stoppe?
>> LAUREN CARVALHO: Right.
Så kun denne første.
Hvis jeg kom ind i nummer 95, men denne ville have trykt ud, og det aldrig
ville have nået til det andet.
>> LUCAS FREITAS: Lige slags tænker på det, som om det sker, skal du gøre dette.
Det andet er ligesom hvis ikke, kontrol til dette, og derefter gøre det.
Så ligesom de alle er gensidigt eksklusiv.
Du kan ikke komme ind i to over dem.
>> PUBLIKUM: Kan man bruge en logisk Og for den situation?
>> LAUREN CARVALHO: Ja.
Det er en anden måde, at vi kunne har løst dette problem.
Vi kunne have defineret spænder, right?
Så jeg kunne have sagt, hvis n er større end 90 og mindre end -
Nå, jeg tror denne ikke rigtig noget, men her kunne jeg have sagt, hvis
n er større end 80 og mindre end 90.
Større end 70, er mindre end 80 år.
Det ville også have virket.
>> [Latter]
>> LUCAS FREITAS: Hun er bange.
>> LAUREN CARVALHO: Må ikke være bange.
>> LUCAS FREITAS: Det er ikke at det vil være forkert.
Det er bare, at det er unødvendigt verbose.
Ligesom i datalogi, bør man være så enkel som muligt, så længe
du har funktionaliteten.
Vil du have slik?
>> PUBLIKUM: Har ikke brug for det.
>> LAUREN CARVALHO: Du skræmmer alle, Lucas.
>> LUCAS FREITAS: Undskyld.
>> LAUREN CARVALHO: David også nævnt disse skifter erklæring i klassen.
Dybest set, hvad der foregår, er kontakten sætning tager en variabel.
I dette tilfælde tager vi et heltal.
>> Hvis heltal er 1, vil vi udskrive, "Du valgte en lille
nummer. »Hvis tal er 1," Du plukket en mellemlang tal. "Hvis
heltal er 3, "Du valgte en høj nummer ". Og jeg havde også en standard sag
hernede, men det er ikke at vise op, hvilket er for dårligt.
>> Dybest set er dette blot en anden syntaks.
Vi kunne have gennemført denne eksakt samme med hvis og andet, hvis
udsagn.
Men når der er masser af forskellige betingelser og masser af forskellige
variationer på hvad du vil gøre for hver indgang, er dette en mulighed.
Så det er bare en god syntaks at vide.
Ja?
>> PUBLIKUM: Hvorfor er der ikke en omvendt skråstreg n i den første?
>> LAUREN CARVALHO: For deroppe?
Der er ingen backslash n deroppe fordi GetInt -
hvis du forsøger dette, vil det give dig denne prompt.
Giv mig et helt tal mellem 1 og 3.
Og hvis jeg sætter modreaktion n, ville det tage mig til næste linje, men jeg bare
ville have dem til at skrive heltal lige efter kolon.
Du kunne have sat bagslag n.
Det er ikke en big deal.
Ja?
>> PUBLIKUM: Til denne kode, er dette tilfælde, er, at fordi
det er den første sag?
Fordi -
>> LAUREN CARVALHO: Nej, nej, nej.
Så dette er at give mig et heltal mellem 1 og 3.
Hvis n er 1, jeg udskrive denne.
Hvis jeg havde bedt om breve, jeg kunne have sagde giv mig et bogstav mellem A
og C. Så dette ville være tilfældet A.
>> PUBLIKUM: [uhørligt].
Sagen ville bare [uhørligt]
>> LAUREN CARVALHO: Ja, rigtigt.
Ja?
>> PUBLIKUM: Hvad hvis du ønskede at have mere af en relationel udtryk?
Så i stedet for at sige n er lig med 1, [uhørligt]
n er større end 1 i den første sag?
>> LAUREN CARVALHO: Faktisk, hvis jeg ikke definere nogle af disse tilfælde ville dette
skal bære ned.
Så faktisk, måske er det ikke hvad du spørger.
>> LUCAS FREITAS: Jeg tror, ​​hun spørger, om sagen var n større end 0, sag
mindre end 0.
>> LAUREN CARVALHO: Måske kontakten erklæring er ikke rigtig, hvad du ønsker
til brug i denne sag.
>> LUCAS FREITAS: Den switch-statement er bare for værdi, så du tjekker af
værdien er ligesom dette eller hint.
Så kan du faktisk ikke sætte betingelser.
>> PUBLIKUM: Hvad hvis personen typer med [uhørligt]?
>> LAUREN CARVALHO: Det ville have været min standard tilfælde, som desværre
du ikke kan se.
>> LUCAS FREITAS: [uhørligt] gøre dem se.
>> LAUREN CARVALHO: Faktisk ved du hvad?
Lad os bare gå for at studere 50, og jeg vil bare zoome ind på dias på undersøgelse
50, fordi det er bare irriterende.
Så lad mig faktisk gå til tilstand.
Det er bare at tage lidt tid.
>> Ok.
Så jeg er ked af det.
Mindst nu vi vil være i stand til at se alt uden at afskære.
Ok.
>> Så hvis de sætter i en 10, ville vi som standard her til min standard sag, og jeg
ville bare udskrive ugyldig, fordi jeg bedt dem om at indtaste et heltal
mellem 1 og 3.
Andre spørgsmål?
Ja?
>> PUBLIKUM: Lad os sige, for tilfælde af en sag tre, siger du ville have det til at være alle de
samme ting, så du valgte en række det er ikke et medium tal.
I så fald ville det være overflødigt?
Vil du bare ændre teksten i både af dem, eller vil der være nogle
redundans?
Er der nogen måde at kombinere [Uhørligt]?
>> LAUREN CARVALHO: Der er måder at kombinere dem, men jeg tror du kan
kun kombinere hosliggende.
Så hvis jeg ikke definere noget i tilfælde to, vil dette
gælder for begge tilfælde.
Åh, hvis jeg ikke sætte noget til sagen en, ville dette gælde for både
tilfælde et og to.
Hvis det giver mening.
>> PUBLIKUM: Kan du gentage det en?
>> LUCAS FREITAS: OK.
Hvis du gjorde dybest set, ligesom, du har de samme ting, men du behøver ikke sætte
noget her, ville du være enten Hvis en eller tilfælde to, gøre dette.
Right?
Og denne pause betyder, at hvis du får i dette tilfælde bare lade.
Så det er hvad bremsen betyder.
Så hvis jeg bare gjorde det, du ser, er det tilfælde en, og du vil bare gøre dette.
Hvis det var tilfældet to, ville det også bare komme her og gøre det.
>> PUBLIKUM: Men du kan gøre det?
Hvis der er noget for tilfælde to [uhørligt]
>> LAUREN CARVALHO: Jeg tror ikke på du kan gøre det.
Jeg tror ikke, du kan springe rundt.
Kan du gøre det, Rob?
Det tror jeg ikke.
>> PUBLIKUM: Så kun ét nummer kan gå efter en sag, right?
Der kan ikke være tilfældet et, komma, to?
>> LUCAS FREITAS: Nej, det kan du ikke.
Du kan bestemt ikke.
>> LAUREN CARVALHO: Jeg mener, pointen er dette er en mulighed, og det er ikke måske
passer til din use case, så du derefter ville bruge, hvis forholdene.
>> PUBLIKUM: Så hvorfor skulle du gøre det?
Kontakten?
>> LAUREN CARVALHO: Jeg vil bruge dette hvis du har meget definerede -
faktisk, Lucas, er du blokerer.
>> LUCAS FREITAS: Åh, undskyld.
>> LAUREN CARVALHO: Hvis du har meget definerede adfærd, du ønsker til
hver indgang, kan dette være en lidt mere kortfattet end at skrive ud
en if-sætning for hver enkelt.
>> PUBLIKUM: Hvad gør pause betyder igen?
>> LAUREN CARVALHO: Pausen betyder stoppe.
Husk, at hvis jeg ikke havde denne pause her, ville vi lige har faldet ned
ind i det næste tilfælde.
>> LUCAS FREITAS: Break midler til at få ud af switch-statementet.
For hvis det er 1, vil jeg at udskrive denne og forlade.
Jeg ønsker ikke at kontrollere noget andet.
>> PUBLIKUM: Du ønsker ikke at udskrive noget andet.
>> LUCAS FREITAS: Ja.
Fordi det er gensidigt udelukkende.
>> PUBLIKUM: Og betyder det kun fortsætte til næste tilfældet, hvis det første tilfælde
er ikke sandt?
Eller er det teste alle de tilfælde, på samme tid?
>> LUCAS FREITAS: Nej, det kontrol sekventielt.
Sekventielt, ja.
Endnu et spørgsmål, så er vi nødt til at videre, så vi kan dække alt.
Ja?
>> PUBLIKUM: Så for sagen, kunne have gjort noget udover bare den ene?
Kunne du give det en rækkevidde?
>> LUCAS FREITAS: Nej.
>> LAUREN CARVALHO: Jeg tror ikke, kan du give det et område.
>> LUCAS FREITAS: Du kan du ikke kan ikke give det et område.
>> PUBLIKUM: Sagen er specifik [Uhørligt].
>> LUCAS FREITAS: Switch er en slags værdier.
Du laver forskellige ting, afhængigt på en værdi, en bestemt værdi.
Du kan ikke gøre for rækkevidde, kan du ikke gøre noget andet.
Det er bare endnu et værktøj til at se.
>> LAUREN CARVALHO: De fleste mennesker ikke bruger skifte udsagn meget i CS50,
men det er der.
>> Ok.
Så den næste ting vi kommer til at snakke om, er den ternære operatør.
Dette er blot en anden type betinget.
Dybest set, hvad der foregår her, er jeg beder om et tal, og hvis n er
større end 100, jeg har tænkt mig at udskrive "Høj". Hvis det ikke er, vil jeg
udskrive "lav".
>> Så hvad det gør, er betingelsen er lige her i parentes, og du
kan slags tænke på spørgsmålet da jeg spørger, om
dette er sandt eller ej.
Hvis det er sandt, vil jeg gøre det først ting, og hvis det ikke er sandt, jeg er
kommer til at gøre denne anden ting.
>> Eventuelle spørgsmål om ternære operatør?
>> LUCAS FREITAS: Blot ønsker note fra David er, at når du har en
betingelse -
>> LAUREN CARVALHO: Jeg gætter Davids ser via live stream.
>> LUCAS FREITAS: Han laver life stream lige nu.
Så når du har en tilstand, du formodes at sætte krøllede parenteser,
ligesom vi har i en switch erklæring her.
Vi har krøllede parenteser her.
For uanset betingelser, er du formodes også at sætte det.
>> LAUREN CARVALHO: Du vil se dette i stil guide.
Vi behøver faktisk ikke have den styleguide lige nu.
Jeg tror Davids stadig arbejder.
>> LUCAS FREITAS: Han sagde, at det er bare at arbejde nu.
>> LAUREN CARVALHO: Åh, er det til at virke nu?
OK.
Så tilsyneladende dette år i den stil guide, selv hvis du bare har en linje,
you got at sætte dem krøllede parenteser i.
Du behøver ikke nødvendigvis at for funktionaliteten af ​​programmet.
Og måske skulle vi bare tage en pause efter de betingelser og gå lige
til den stil guide for at rydde op på nogle af disse ting?
>> LUCAS FREITAS: Ja.
Har du et spørgsmål?
>> PUBLIKUM: Nej, jeg vil bare vente indtil den stil guide.
>> PUBLIKUM: Kan du gå tilbage til den ternære operatør?
>> LAUREN CARVALHO: Ternary, ja.
>> LUCAS FREITAS: Ternary operatør er dybest set en hvis ellers erklæring, men
i stedet for at skulle have de to linjer at kontrollere en hvis og derefter
andet, du bare har én linje.
Så dybest set, hvis jeg ønsker at give en streng en værdi på høj eller lav, og jeg
ønsker at gøre en høj, hvis n er større end 100 eller lav, hvis det er mindre, hvad jeg kan gøre
er dette [uhørligt]
strengen vil være, og så er jeg spørger programmet er n større end 100?
>> Så det er derfor, jeg har dette udtryk i parentes og derefter
spørgsmålstegnet.
Jeg beder det større end 100?
Hvis det er, går det at være høj.
Hvis det ikke er, går det at være lav.
>> Så dybest set, hvad du synes er du spørger et spørgsmål, så du lægger i parentes
tilstanden.
Så kan du sætte spørgsmålstegn fordi du spørger det.
Og hvis dette er sandt, vil det være i den første værdi [uhørligt] her.
Hvis det ikke er, vil jeg sætte værdi, der er efter kolon.
Giver det mening?
>> Det er også noget, der er som en værktøj i C, men du behøver ikke at
specifikt bruge det.
Men CS folk normalt kan lide at fordi det bare sparer linjer.
>> LAUREN CARVALHO: Det er meget elegant.
Det gør en masse i bare én sætning.
>> PUBLIKUM: Så procenttegn er bare uanset resultater på
den foregående linje?
>> LAUREN CARVALHO: Åh, jeg er ked af det.
Denne procent tegn er faktisk pladsholder for denne s.
I en printf erklæring, du har fået denne snor her, hvilket er, hvad der kommer til at
udskrive, men du kan ikke bare sætte dette er derinde.
Ellers ville det udskrive ud s bogstaveligt.
Så vi sætter en procent her til at holde dette sted holdt uanset
kommer efter kommaet.
>> Så for en streng, har du fået procent sek.
For et heltal, procent i.
For en svømmer, procent f..
Du vil se dem, som vi se flere eksempler.
Men måske skulle du snakke om stil guide for en stund, nu
at det er op.
>> LUCAS FREITAS: Hvis du går til cs50.net/style, du kommer til at se
den stil guide.
For problemet sæt, din score for problem sæt består af omfang,
som dybest set betyder, at hvis du gjorde alt de dele af problemet, der er, eller hvis du
forsøgt noget.
Den anden ting er korrekthed, som middel er dit program gør, hvad den
skulle gøre, eller gør det har fejl, eller er det ikke gør, hvad
det er meningen at gøre.
>> Den tredje ting er design, hvilket betyder er du gennemføre dette godt, eller er
du bruge unødvendige udsagn?
Så for eksempel, hvis du ønsker at gentage et nummer 10 gange, skriver du et
for loop eller er du bare gør 10 gange den samme erklæring, bare gør
kopiere og indsætte.
Så design er for det.
>> Og endelig har du stil.
Style er ligesom at dømme hvis din kode ser
læsbar og slags smuk.
Det bare dybest set betyder er din kode læsbar?
Ville en anden, der var på udkig er din kode være i stand til at forstå, hvad
det gør?
Har det har kommentarer og lignende?
>> Lad os tale om den stil, du skulle bruge.
Den første ting er kommentarer.
Kommentarer er meget vigtigt for din kode, fordi nogle gange du laver
dit program, og du ved præcis, hvad du ønsker at gøre, så du bare begynde
kodning, bare skrive op en flok C. Men hvis en anden leder er du
kode, er de ikke kommer til at være i stand til forstå det, fordi de ikke kender
de ting, der er i dit hoved, ligesom den pesudocode, så måske vil de
har en hård tid at forstå hvad koden gør.
>> Så kommentarer er virkelig nyttigt at forklare til nogen, der kigger på
din kode, hvad det gør, og faktisk selv for dig,
de er meget nyttige.
Som du gå til hårdere og hårde Psets, du kommer til at se, at koden bliver
længere tid, og så kommentarer er virkelig vigtigt, så du kan huske, hvad hver
del af dit program gør.
>> For at sætte en kommentar, kan du bare gøre en skråstreg skråstreg og derefter skrive en kommentar.
Og hele linjen er en del af en kommentar, og uanset hvad du skriver ned,
det kommer ikke til at være bruges til din kode.
Det er dybest set ligesom oversætteren kommer til at se bort fra dette.
Giver det mening?
>> PUBLIKUM: Hvad gør du igen at skrive en kommentar?
>> LUCAS FREITAS: dette?
Skråstregen skråstreg?
Når du skriver slash slash, uanset er i denne linje ikke vil
anses for at være C. Ja?
>> PUBLIKUM: Så efter den kommentar, du bare ind og starte en ny linje?
>> LUCAS FREITAS: Ja, præcis.
>> LAUREN CARVALHO: Den skråstreg skråstreg er for enkelt kommentarer linjer.
>> LUCAS FREITAS: For eksempel, her har vi -
lad mig zoome ind -
for eksempel, her er jeg erklære en float, men måske hvis du bare sætte dette
i din kode, ligesom du har ingen idé hvad det gør, ligesom faktisk
en person, der ser på denne kode bliver, som, hvad
dælen foregår der?
>> Hvis du sætter en kommentar siger "konvertere Fahrenheit til Celsius, det gør meget
mere mening.
Du er ligesom, OK, du er laver en konvertering.
Giver det mening?
Så det er bare noget, der hjælper folk klar din kode og også gøre
du være i stand til at organisere din kode bedre.
>> Den anden ting er, at du kan gøre multi-line kommentarer, så har én
kommentar til en flok af linjer.
I stedet for at skulle sætte skråstreg skråstreg, Den første linje kommentarer, skråstreg skråstreg,
den anden linje, og så videre, du kan bruge skråstreg stjerne.
Den måde, du gør det er, at for den første linje af den kommentar, er du
kommer til at gøre en skråstreg stjerne stjerne, så ligesom det.
Ligesom her har vi i starten af et program, du plejer at lægge, hvem du
er, hvad dette program gør, og den slags.
Det er lidt ligesom en header for programmet.
>> Igen, det er ikke noget, at en compiler vil bekymre sig om, men
er det vigtigt for dig at vide, hvad dette Programmet gør, eller for andre mennesker
at vide, hvad dit program gør.
Så du behøver slash stjerne stjerne, og derefter sidste linje, du kommer til at gøre stjerne
slash at være i stand til at lukke denne kommentar.
Så dybest set for alle de andre linjer, du kan bare skrive hvad, og dette
er alle kommer til at blive ignoreret.
>> Og også, ligesom stil, du se, at hver linje har en stjerne, og alle
stjernerne er justeret.
Det er vigtige ting, så at din kode ser temmelig.
Lyder godt?
>> Nu betingelser.
Hvad David sagde, at vi skulle faktisk sat i disse dias, er, at
når du har nogen form for hvis udsagn eller nogen form for betingelser,
du skal bruge krøllede parenteser for at vise, at dette er, hvad der kommer til at ske
når du har den betingelse.
Teknisk, når du har en tilstand og derefter den næste linie er blot en
linje, behøver du ikke teknisk har at sætte de krøllede parenteser.
>> Dybest set compiler ville forstå det alligevel som implicit.
Men for CS50, beder vi jer til at sætte de krøllede parenteser bare så din
kode er mere organiseret og mere læsevenlig.
Fordi denne kode bliver længere, hvis du ikke har krøllede parenteser og sådan.
Det bliver virkelig rodet.
>> LAUREN CARVALHO: Dette er præcis hvad David netop påpeget
i mine tidligere dias.
Det helt fungerer uden krøllede seler, men for stilistiske årsager
vi vil bede om, at du sætter dem i.
>> Og når du begynder at køre style50, som er form for check 50 for
stil, vil det minde dig om at gøre dette.
>> LUCAS FREITAS: Og en anden ting er husk at sætte de krøllede parenteser sammen
i hver linje.
Så du gør det, for eksempel L's.
Gå til næste linje, skal du åbne krøllede klampe, så skal du gå til næste linje.
Fordybning, hvilket er fire rum.
Så kan du skrive hvad, så en anden linje, og luk klammeparentes.
Så vær sikker på, at både de krøllede seler er i forskellige linjer.
>> PUBLIKUM: Så hvis denne kode havde ligesom 10 ellers hvis'er, bør dette
være 10 sæt af beslag?
>> LUCAS FREITAS: Ja, for hver af dem.
Ja.
Så hvis ellers hvis, og så videre.
>> PUBLIKUM: Kan du ikke trykke på Tab for at indrykke?
>> LUCAS FREITAS: Vi beder dig fyre til at bruge fire rum.
Nogle teksteditorer oversætte fane som fire rum automatisk.
gedit ikke gør det, så er du nødt til gøre space space space space.
Det er også noget, at nogle programmører kun gøre faner, nogle
programmører kun gøre fire rum, og nogle andre mennesker endda gøre
to eller tre rum.
Det er bare, at her vi beder jer at gøre fire rum.
>> PUBLIKUM: Der er næsten helt sikkert nødt til at være en måde for gedit til
automatisk [uhørligt].
Ligesom ingen [uhørligt] gør det.
>> LUCAS FREITAS: Ja.
Jeg tror, ​​du kan gå til Indstillinger.
>> PUBLIKUM: Det allerede gør alt dette.
>> LUCAS FREITAS: det allerede gør?
OK.
Så bare være sikker på, at du har fire rum.
>> PUBLIKUM: Har vi nødt til at sætte det krøllede parentes i efter sløjfer så godt?
>> LUCAS FREITAS: Ja.
>> LAUREN CARVALHO: Når din indkapsling af en blok af kode, bare
skal du bruge de krøllede parenteser.
Og før du tror, ​​at vi bare være sticklers om dette uden god
grund, hvis du fyre går på at få tech praktikophold hos store virksomheder,
de vil give dig en stil vejledning, og de vil fortælle dig det er, hvad din
kode for at se ud.
Og selvom du har lært at kode som dette, måske i din praktik
du bliver nødt til at gøre noget helt anderledes.
De forventer du at være i overensstemmelse til deres stil.
>> LUCAS FREITAS: Og en ting mere, er som bemærker du, hvordan jeg har ligesom x,
plads, mindre, plads, 0?
Når du har en operatør -
Det kan være som plus, minus, gange, mindre, større, uanset operatør -
du nødt til at sætte en plads på venstre og til højre for føreren.
>> LAUREN CARVALHO: Det er kaldet binære operander.
Bare sørg for at du altid plads ud af dine binære operander.
>> LUCAS FREITAS: Dette er ikke en binær operand.
>> LAUREN CARVALHO: Det er fordi det tager to.
>> LUCAS FREITAS: Åh, ja.
>> OK, kontakterne.
Først skal du nødt til at se, at ligesom i en hvis ellers erklæring, du har
at sætte klammeparentes på sin egen linje og under klammeparentes her.
Bemærk, at der er et enkelt mellemrum efter kontakt, ligesom i hvis og ellers
Vi havde en enkelt plads mellem det, og parenteserne.
Så du er nødt til at sætte det.
>> Og der er ikke plads lige efter hver af parenteser eller inden
af parenteser.
Så du kan se, at det er alle sammen, og også gerne op her.
>> Ja?
>> LAUREN CARVALHO: Jeg tror vi nødt til at flytte på.
>> LUCAS FREITAS: Så dette er en del af stil guide, som du har til CS50.
Sørg for at gå til cs50.net/style og tage et kig på dette.
Disse er alle meget vigtige til din stil score.
>> Lad mig gå tilbage til den erklæring.
>> LAUREN CARVALHO: Jeg vil hellere bare bruge style50.
Vi vil bare gå lige til sløjfer.
Ok.
>> Så lad os komme tilbage til indholdet, nu at vi har gået over styleguide.
Loops, har du set dem i Scratch, og vi kommer til at tale om dem i
C.
>> I en for-løkke, der er tre portioner til
angivelse af denne for-løkke.
Du har fået din initialisering i som du sætter dine variabler.
Du har fået din tilstand, som er kontrol for at se, om noget er
sandt eller falsk, og om loop bør fortsætte.
Og du har fået din opdatering, som opdaterer dine variabler.
>> Lad os bare tage et hurtigt kig på nogle C-koden i denne for-løkken i aktion.
Hvad foregår der er her i initialisering, vi sætte i til 0.
I den tilstand, vi tjekker om jeg er mindre end 10.
Og i opdateringen er vi forøgelse i.
Så hvad vil medføre dette for loop?
>> LUCAS FREITAS: Faktisk først og fremmest, tror du fyre vide, hvad jeg + + er?
>> PUBLIKUM: steg med 1.
>> LUCAS FREITAS: steget med 1, ja.
Så dette er det samme som laver jeg lig i plus 1.
Og bemærk, at vi ikke har en plads mellem I og + +.
>> Så tror du fyre ved, hvad det vil gøre?
Kan nogen fortælle mig?
Og måske få noget slik på grund af det?
>> PUBLIKUM: [uhørligt]
>> LUCAS FREITAS: OK.
[Uhørligt]
vise alle, senere [uhørligt].
Ja, det kommer til at vise "Dette er CS50 "10 gange.
>> LAUREN CARVALHO: Jeg tror det var i titlen på diaset.
>> LUCAS FREITAS: Åh, ja.
>> [Latter]
>> LUCAS FREITAS: Det hjælper.
>> LAUREN CARVALHO: Så dem er efter sløjfer.
Vi kommer til at se nogle flere eksempler af efter sløjfer senere.
Men lad os faktisk tage et kig på anden type af sløjfe, som du vil støde på
i C, og det hedder while-løkken.
>> I en while-løkke, du har lige fået en betingelse.
Betingelsen er markeret i begynder, og hvis denne betingelse
evalueres til sand, så koden i krop, mens blokken
vil udføre.
Og koden vil fortsætte med at udføre, så længe der
betingelsen forbliver sandt.
>> Her er et eksempel på en while-løkke i C. Vi kommer til at sætte tæller til 10 til
begynde med.
Så længe tællingen er større end 0, vi kommer til at holde udskrive dette
variabel her.
Vi kommer til at formindske tæller og derefter kontrollere tilstanden igen.
Print, formindske, kontrol tilstanden igen.
>> Her har vi et eksempel, der relaterer på dit spørgsmål tidligere.
Vi havde procent s da vi var udskrive en streng, og nu,
vi udskrive en int, vi har en procent i som vores pladsholder stedet for.
Bogstaverne bør alle være temmelig intuitiv, S for streng, i for int.
>> Så hvis denne kode henretter, bør du tælle ned fra 10 til 0, udskrivning ud
hvert heltal.
>> LUCAS FREITAS: Og du kan tænke på procent så det føles som en tom
plads, og så er du sætte dette variabel her i det tomme rum.
Altså for eksempel, her vil jeg lige har en tom, og så er jeg sætte
tælle lige der, den værdi af optællingen.
Giver det mening?
>> Kunne jeg bare gøre ligesom printf og derefter citerer, tælle?
Ville det fungere?
>> PUBLIKUM: Nej.
>> LUCAS FREITAS: Nej, fordi det vil faktisk udskrive ordet "count"
stedet for at udskrive værdien.
Dette er, hvordan du gør det udskrive værdierne mod den variable i stedet for
blot navnet på variablen.
Eventuelle spørgsmål?
>> PUBLIKUM: Hvorfor bruger du til som en modsætning til mens?
>> LAUREN CARVALHO: Jeg ville bruge en til loop, hvis jeg ved præcis, hvor mange
iterationer, jeg ønsker mit loop til at køre.
I dette tilfælde betyder det ikke noget, fordi, Jeg mener, jeg prøver bare at
tænke på en meget simpel eksempel på dette dias.
Men lad os sige, at du vil have noget til at holde ud, mens -
>> LUCAS FREITAS: For eksempel, er du beder om input, indtil personen
giver dig den rigtige indgang.
Så ligesom mens indgangen er ikke OK, holde beder om det.
Eller som, mens du er forældre ikke giver dig penge, holde beder om det.
>> [Latter]
>> LAUREN CARVALHO: Du ved ikke, hvordan mange gange er du nødt til at gøre det.
>> LUCAS FREITAS: Fordi du ikke gøre vide, hvor mange gange der er
kommer til at holde i gang.
>> LAUREN CARVALHO: Men i en for-løkke, du har brug for at vide, hvor mange gange.
Ja?
>> PUBLIKUM: Bare for at afklare, procent siger, at det er noget om at
ske, i'erne for heltal, og backslash n -
>> LAUREN Carvalho: Midler?
Hvem ved, hvad det backslash n betyder?
Ny linje, ja.
Præcis.
>> LUCAS FREITAS: Du kan tænke n som ny linje.
>> LAUREN CARVALHO: Nice.
>> PUBLIKUM: Hvad er det tæller dash dash [uhørligt]?
>> LUCAS FREITAS: Count minus minus er det samme som plus plus, men
stedet for at øge, det er faldende med 1.
>> LAUREN CARVALHO: Enhver mere mens loop spørgsmål?
Nej?
Åh, vi skulle har sprunget over.
>> Dette er en gør mens løkke.
Meget lig en while-løkke, undtagen i dette tilfælde har vi kontrollere tilstanden efter
koden i kroppen af loop udfører én gang.
Så vi udføre koden først uanset hvad.
Så tjek vi den betingelse, udføre det igen, hvis betingelsen er sand.
>> Du vil finde dig selv at bruge dette, når du beder om brugerens input.
Fordi du altid er nødt til at bede gang, og derefter afhængigt af, hvad
brugerinput er, at du måske nødt til at reprompt og spørge igen og igen, hvis
input var ikke, hvad du forventes det at være.
>> PUBLIKUM: Så det er ligesom en formular for folk til at udfylde.
>> LAUREN CARVALHO: Ja, præcis.
Du kan finde, tror jeg, i din allerførste PSET, du nødt til at
bruge en gør godt løkke til at indsamle input fra brugeren.
>> PUBLIKUM: Afhængigt af situationen, at din mens loops vil være tilbøjelige til at køre mere
ofte end mens loops, som af en eller noget?
>> LAUREN CARVALHO: Hvis det er det nøjagtige -
>> LUCAS FREITAS: De bør altid køre det nøjagtige beløb af gange, at du
vil have den til at køre.
Ligesom vi bruger gøre, mens fordi vi virkelig ønskede at få input mindst én gang.
I mens loops, undertiden du ikke ønsker at udføre det på alle, hvis det ikke er
sagen til at udføre.
Så det afhænger af udformningen.
Jeg mener, kan du enten bruge gøre, mens eller mens så længe din kode gør det
det er meningen at gøre.
>> LAUREN CARVALHO: Men jeg gør tror, ​​at svaret på dit
Spørgsmålet er sandsynligvis ja.
Lad os sige tilstand var falsk.
I et tilfælde ville det løbe én gang, og et andet tilfælde ville det løbe nul gange.
Så, ja.
>> Har du flere spørgsmål?
Ja?
>> PUBLIKUM: Kan løkken betingelsen være en for loop i form af en anden variabel
end [uhørligt].
>> LAUREN CARVALHO: Ja, Det kan være alt.
Sandsynligvis for begyndelsen Psets, du vil ikke have at støde på sagen, men
absolut det kan være hvad som helst.
>> LUCAS FREITAS: Jeg tror vi er færdige her.
>> LAUREN CARVALHO: Er vi?
Nej?
>> LUCAS FREITAS: Loops?
Ja.
>> LAUREN CARVALHO: Vi skal ikke være.
Åh, vi er gjort med sløjfer.
OK.
>> Faktisk, fordi vi har talt så meget, lad os faktisk alle navigere
over til study.cs50.net/conditions.
Og du kommer til at navigere ned til problemerne widget.
Tja, faktisk, mens folk bliver dette sat op, CS50 Study er
kommer til at være et værktøj, dine TFs vil bruge til at forberede sig til sektioner, og at
du fyre kan bruge, hvis du går glip af sektioner.
Det kommer til at indeholde en masse af dias, nogle tips og tricks til hver
emne, og nogle praksis problemer løsninger.
>> Hvorfor ikke alle bare tage et kig på dette problem lige her.
>> Undskyld, jeg skulle have mindet folk at bringe laptops i dag.
Men hvis du ikke har en bærbar computer, det er OK.
Du kan bare notere det ned på et stykke papir eller kigge over
din nabos skulder.
>> Lad os prøve at skrive et program, der beder brugeren om at tage et gæt, den
gennemsnitlige antal børn pr familie enhed i USA.
Dette antal er 2, ved den måde, som du kan se fra disse eksempler.
>> Vi ønsker at udskrive gennemsnitlige antal børn pr familie i USA, så vi
ønsker at hvad?
Vi ønsker at samle input fra brugeren.
Og derefter afhængigt af, hvad brugeren input er, du vil udskrive
enten dette er korrekt eller det er forkert.
>> Og det allerførste ting, du vil se, hvis du klikker på den lille pil ved
bunden af ​​problemet widget er en spot at notere ned nogle pseudokode.
Så du ikke programmering endnu.
Du er bare at få din ideer i orden.
>> Er der nogen der ønsker at hjælpe Lucas komme op med den rigtige
pseudokode for dette problem?
>> LUCAS FREITAS: Hvad er den første ting at vi sandsynligvis skal gøre her?
Hvad tror du fyre tror?
>> PUBLIKUM: [uhørligt]
>> LUCAS FREITAS: Yeah, OK.
Så print.
Bare sige print dette gennemsnit Antallet af mennesker?
OK.
Print spørgsmål, lad os sige.
Når jeg udskriver dette spørgsmål, hvad skal jeg gøre?
>> PUBLIKUM: Få input.
>> LUCAS FREITAS: Få input.
Noget andet?
>> PUBLIKUM: Betingelse.
>> LUCAS FREITAS: Betingelse.
>> LAUREN CARVALHO: Hvad er det betingelse kommer til at være?
>> PUBLIKUM: Antallet af [uhørligt].
>> LAUREN CARVALHO: Right.
>> LUCAS FREITAS: Så hvad skal jeg at kontrollere i den tilstand?
>> PUBLIKUM: Hvis det er lig 2.
>> LAUREN CARVALHO: Hvis det er lig 2.
Præcis.
>> LUCAS FREITAS: Er der noget andet, som jeg skal gøre?
>> PUBLIKUM: Tæl.
>> LUCAS FREITAS: Så hvis det er lig med 2, lad os sige -
lad mig lige skrive, hvis input er lig til 2, så hvad jeg har tænkt mig
gøre er at printe korrekt.
Og så ellers, jeg har tænkt mig at udskrive forkert.
Noget andet?
Nej?
>> LAUREN CARVALHO: Så du kan klikke på -
Har alle det ned?
>> LUCAS FREITAS: Giver det mening?
Så lad os nu prøve at kode dette.
>> LAUREN CARVALHO: Hvis du klikker på det lille pil, det faktisk gemmer dit
pseudokode, som er virkelig spændende.
Og du kan gøre dem i kommentarer, hvis du ønsker bare at minde dig selv om
hvad de skal gøre.
>> LUCAS FREITAS: Altså for eksempel, første Jeg har tænkt mig at udskrive spørgsmål, så
hvordan skal jeg gøre det, egentlig?
printf.
Så printf, og spørgsmålet er gennemsnitlige antallet af børn pr
familie i USA.
>> Så jeg har tænkt mig at få input fra brugeren.
Så hvordan kan jeg gøre det?
>> PUBLIKUM: Get Int..
>> LAUREN CARVALHO: GetInt.
>> LUCAS FREITAS: OK.
Så først erklære, right?
int, lad os kalde det n er lig GetInt.
>> Og nu den betingelse.
Så lad mig sige, at jeg har tænkt mig til her afkrydsningsfeltet svar.
Så det første, hvis input, som er n, lig til - hvordan skal jeg skrive det?
>> PUBLIKUM: Lige lige.
>> LUCAS FREITAS: Perfect.
Så n.
Og bemærk, at jeg gør et rum, lig, lig, plads, sandt.
Og nu, hvad skal jeg gøre?
Noget meget vigtigt for stil.
De krøllede parenteser.
>> Og så har jeg tænkt mig at udskrive.
Hvordan udskriver jeg?
printf.
>> PUBLIKUM: Kunne det kapitaliseres?
>> LUCAS FREITAS: Nej.
Det er meningen at være med små bogstaver.
Så det er korrekt.
>> Ville det være tilstrækkeligt for printf erklæring, eller er jeg mangler noget?
>> PUBLIKUM: Ny linje.
>> LUCAS FREITAS: Ny linje, ja.
Og nu andet.
>> PUBLIKUM: Er der et rum efter printf eller nej?
>> LAUREN CARVALHO: Vi bør kontrollere den stil guide.
>> PUBLIKUM: Det bør ikke være.
>> LUCAS FREITAS: Bør ikke være OK.
Så andet printf "Det er forkert."
>> LAUREN CARVALHO: Ups, din citater.
>> LUCAS FREITAS: OK.
Noget andet?
Ser det godt ud?
>> LAUREN CARVALHO: Skal vi prøve det?
>> LUCAS FREITAS: Ja, lad os køre den.
Så det er kompilering, og det lader til, at det fungerer.
Lad os prøve to børn.
Det er korrekt.
Og lad os nu køre igen, men nu i stedet lægge to børn, lad os
sige, at jeg har tænkt mig at sætte ligesom fem.
Det er forkert.
Så det lader til, at det virker.
>> LAUREN CARVALHO: Hvorfor tager du ikke vise dem hvad sker der hvis du lægger noget
weird, ligesom nogle breve.
>> LUCAS FREITAS: Åh, ja.
Lad os også kontrollere, at.
Hvad hvis brugeren forsøger at rod med dit program, og de bare
skrive, ved jeg ikke to.
Det kommer til at sige retry.
>> LAUREN CARVALHO: So GetInt beder dem om at prøve igen.
Vi havde ikke til at tage sig af at os selv.
>> LUCAS FREITAS: Ja.
Så medmindre jeg faktisk sat et tal, er det kommer til at holde beder mig om at prøve igen.
>> PUBLIKUM: Hvordan har du køre det?
>> LUCAS FREITAS: Bare klik denne stjerne knap.
>> LAUREN CARVALHO: Du skal gå op.
Værsgo.
>> LUCAS FREITAS: Stjernen knappen lige der.
Ja?
>> PUBLIKUM: Er det bede [uhørligt] med decimaltal også?
>> LAUREN CARVALHO: Jeg tror, ​​det vil.
>> LUCAS FREITAS: Hvis det gør hvad?
>> LAUREN CARVALHO: Hvis de skriver i et decimaltal, tror jeg
det kommer til at bede.
>> LUCAS FREITAS: Lad os se.
>> LAUREN CARVALHO: Fordi det er ikke en int.
>> LUCAS FREITAS: Ja.
>> LAUREN CARVALHO: Så det det er ikke en int, Få Int vil bede dig om at prøve igen.
>> PUBLIKUM: Så hvor i koden ville være decimaler, der beder
bruger, at de har til at indtaste et heltal specifikt?
>> LAUREN CARVALHO: GetInt er faktisk at gøre det for os.
>> PUBLIKUM: Nej, jeg mener, hvis vi ønskede at indtaste [uhørligt]
>> LUCAS FREITAS: Du kan sige som gennemsnit Antallet af børn i USA.
Det ved jeg ikke.
Vi kan sige, for eksempel, "Please input et heltal. "
>> LAUREN CARVALHO: Et heltal lige til det gennemsnitlige antal.
Jeg mener, det er bare hvordan du ord det, right?
>> LUCAS FREITAS: Ja.
Det er ikke del af faktisk kodning.
Det er mere ligesom hvad du vil ønsker at
skrive i dit program.
>> PUBLIKUM: Hvordan ville vi have kørt det, hvis det var faktisk i gedit [uhørligt].
I stedet for at trykke på play?
>> LUCAS FREITAS: Vi vil først kompilere det.
Vi kan gøre det ved at gøre make og navnet på filen.
Og så at køre det, vil vi gøre dot skråstreg og navnet på programmet.
>> PUBLIKUM: Jeg gætte, hvad jeg mente var, hvis vi ønskede program til at reagere på
deres forkert, ugyldig indtastning, du bør ikke sætte i -
>> LUCAS FREITAS: Vi vil ikke være i stand til at gør det, fordi koden dette siger
prøv igen kommer fra Få Int., som er en funktion, der er implementeret
for os via CS50 bibliotek, og siden det er allerede implementeret der, vi
kan ikke bare [uhørligt].
>> LAUREN CARVALHO: Hvis du ikke bruger GetInt, så kan du gøre det.
>> LUCAS FREITAS: Ja.
Men hvis du bruger GetInt, kan du ikke.
Andre spørgsmål?
>> PUBLIKUM: Kunne du have gået med lignende GetFloat og så være i stand til at sætte
det i en decimal?
>> LUCAS FREITAS: Ja.
>> PUBLIKUM: OK.
Derefter skal du bare kunne indtaste float a ligemænd -
>> LAUREN CARVALHO: Ja.
Præcis det samme, bortset fra en flyde i stedet for en int.
>> LUCAS FREITAS: Bare sætte det her og derefter GetFloat der.
>> PUBLIKUM: Som du vil se eller har set -
>> LAUREN CARVALHO: Vi har ikke fået endnu.
>> PUBLIKUM: - gøre ulighed med flåd ikke [uhørligt]
>> PUBLIKUM: Hvad betyder de semikolon betyder?
>> LAUREN CARVALHO: Den semikolon bare betyder, at denne erklæring er færdig,
og vi kommer til at gå videre til næste dias.
>> PUBLIKUM: Så det er nødvendigt hver gang?
>> LAUREN CARVALHO: Ja.
Nå, OK, så ikke for sådanne forhold, fordi de er
indkapsle noget.
Så dybest set, hvis noget er årsag at du derefter oprette en klammeparentes
blok, ikke sætte et semikolon i slutningen.
>> LUCAS FREITAS: Men alt andet, ja.
Når du er færdig med en erklæring, sætte semikolon.
Og hvis du glemmer semikoloner, den compiler kommer til at blive vred på dig,
og du kommer til at have at forsøge at løse det.
>> LAUREN CARVALHO: Hvis jeg sætter et semikolon her, ville det stoppe dette, og jeg
ville aldrig komme til at udføre, hvad der er inde, ved den måde.
Så det er en af ​​disse fælles bugs.
>> PUBLIKUM: Altid udfører.
>> LAUREN CARVALHO: Ja.
I dette tilfælde, ville vi altid udføre, hvad der er indeni.
>> PUBLIKUM: Din stil [uhørligt] vedhæfte det for dig, troede.
>> LAUREN CARVALHO: Åh, det er sandt.
>> PUBLIKUM: [uhørligt] single line ting [uhørligt]
>> PUBLIKUM: Ja?
>> PUBLIKUM: Kan du har flere input i en linje?
Så ligesom du kan bede brugere at udskrive to ting?
>> LAUREN CARVALHO: Ikke brug -
>> LUCAS FREITAS: Nej.
Lad os sige, at jeg også ønsker at få denne heltal m..
Jeg er nødt til at gøre det i en anden linje.
>> PUBLIKUM: Hvis du skulle køre det, hvordan [uhørligt]?
Det ville udskrive prompt der [uhørligt]
og så ville du indtaster et og -
>> LAUREN CARVALHO: Jamen, køre den.
Jeg mener, der er intet stoppe os fra bare kører det og se, hvad
ville ske.
>> LUCAS FREITAS: Jeg synes det er gå til klager på os
fordi vi ikke bruger -
>> LAUREN CARVALHO: Ups.
>> LUCAS FREITAS: Det beklagede på os lige nu, fordi vi ikke bruger denne
variabel, men hvis jeg gjorde, for eksempel, n er lig lig med, og m er lig med
lig med, så hvad vil ske i dette tilfælde?
Hvad ville dette program gøre?
>> PUBLIKUM: Jeg er bare undrende hvordan det ville -
>> LAUREN CARVALHO: Hun vil bare have at vide, hvordan det ser ud
ligesom, tror jeg, ikke?
Så det tog en af ​​dem, og derefter det tog den anden.
>> Jeg synes, vi skal komme videre, fordi vi har en mere
Slide Show for at gå før -
ønsker du at trække op matematik?
>> LUCAS FREITAS: Yeah, matematik.
>> LAUREN CARVALHO: Give mig bare et sekund.
>> Der er et par forskellige numerisk variabler i C. Numeriske data i C
kan inddeles i forskellige typer, og det er dem, du vil
se de mest ofte.
>> Og int er et helt tal.
Du kan ikke have nogen decimaler.
I Appliance, det tager 32 bit til at gemme en int.
>> En svømmer kan have decimaler.
Det tager også 32 bits til at lagre en svømmer i Appliance.
>> En dobbelt er et tal med en decimal , som tager 64 bits til at gemme det,
hvilket betyder, at du bare kan have større præcision fordi
du kan få mere -
hvad kalder du det?
>> LUCAS FREITAS: Ja, det er mere.
>> LAUREN Carvalho: Flere steder efter kommaet.
Og en lang lang er et helt tal der tager 64 bits til
øm det i Appliance.
>> LUCAS FREITAS: Så det kan være større end int'er kan være.
>> LAUREN CARVALHO: De ting om data typer i C er, at de fortæller dig, hvad
slags data du kan gemme i din variabel.
De fortæller dig, hvordan du kan bruge dette variabel i dit program.
Det er meget vigtigt at bare holde styr af, hvad datatype, du bruger, og hvis
du behøver at kaste fra en datatype til en anden, så sørg for at du kender
præcis, hvad der sker, når der støbningen finder sted.
Og du vil se et eksempel senere on i disse lysbilleder af en
fejl, der kan forekomme.
>> Lad os tage et kig på nogle matematik i C og synes virkelig grundigt, tror jeg,
om, hvad der foregår, når denne matematik finder sted.
I den allerførste linje, hvad er sker, når jeg erklærer x?
>> PUBLIKUM: Du tillader x at være noget?
>> LAUREN CARVALHO: Ja.
Nå, jeg virkelig beder operativsystemet system til 32 bit hukommelse, right?
I hvilke kan jeg gemme en int, og Jeg har tænkt mig at kalde det int x.
>> LUCAS FREITAS: Dybest set går i hukommelsen og at finde et sted, der har 32
bits og sige, hey, jeg vil have dette rum, og det kommer til at hedde x.
Så du er bare temmelig meget fund en boks i din hukommelse til
lagre værdier for x.
>> LAUREN CARVALHO: Og så jeg initialisere x, hvilket betyder, at jeg bare gemme
værdi på 2 i stedet, at bid hukommelse, at vi bad drift
system.
Og hernede, hvad vi gør, er Vi er faktisk erklære og
initialisering y på en linje i stedet for i to linjer som vi gjorde op her,
der er også et helt fint, vi er tilsætte 1 til x, og vi opbevaring at
værdi i y.
>> LUCAS FREITAS: Så dybest set, hvad dette linje gør, det finder nu en boks til y,
og derefter sin værdi, de ting, du kommer til at sætte inde i kassen, er
vil være den værdi af x plus 1.
Så det har denne boks for y.
Det bliver værdien af ​​x, ser her, og se, at det er 2.
Sætte det der, plus 1, så det sætter en 3 der.
Giver det mening?
Så y ville være 2 i dette tilfælde.
>> LAUREN CARVALHO: Okay, cool.
Vi så nogle kommer, så lad os nu tænke om division i C. Her er jeg
erklære og initialisere en svømmer kaldet svar og dividere 1 med 10,
og så jeg udskrive svaret til to decimaler.
Og bemærk her, i mit printf erklæring, når jeg ønsker at udskrive noget til to
decimaler,% .2 f er hvad jeg ønsker at bruge.
Så pointen 2 bare at sige Jeg har brug for to pladser efter
decimal udskrives.
>> Nu, hvad der kommer til at ske hvis jeg køre denne kode?
Er der nogen der har en idé?
Hvad ville udskrive?
>> LUCAS FREITAS: Hvad er vi forventer at få.
>> LAUREN CARVALHO: Hvad gør Vi ønsker først og fremmest?
>> LUCAS FREITAS: [uhørligt]
>> LAUREN CARVALHO: 0,1, ja.
Men hvad vil udskrive?
>> PUBLIKUM: [uhørligt]
>> LAUREN CARVALHO: Nå, nej, faktisk.
Dette er, hvad jeg talte om, hvorfor du nødt til at holde meget omhyggelig styr på
dine datatyper.
Så hvad datatype er det?
Er en int, right?
Der er ingen decimal.
10 er også en int.
Der er ingen decimal.
>> Hvis jeg deler en int med en int, får jeg en int, som ikke er 0,1, fordi int'er
kan ikke have decimaler, men blot 0.
Fordi en int bare afkorter off decimaler.
>> LUCAS FREITAS: Så når du gør operationer med int'er, du kommer til at
få en int som svaret.
Så dybest set, hvad computeren gør, er det skel 1 ved
10, og det får 0.1.
Men så er det ligesom, vent, det er formodes at være et heltal, så du bare
ignorere den 0,1, så det er nu bare 0.
>> LAUREN CARVALHO: Så når jeg udskriver denne ud, jeg får 0,00 i stedet for 0,10.
>> LUCAS FREITAS: Giver det mening?
>> LAUREN CARVALHO: Det er lidt uheldige, right?
>> LUCAS FREITAS: Så hvordan kan vi løse dette?
>> LAUREN Carvalho: Lad os forsøge at løse det.
Her er et eksempel på, hvor jeg faktisk støbning af 1
og 10 til flåd.
Så nu, 1 er ikke længere en int.
1 er en svømmer.
Af den måde, det er bare syntaksen for når du ønsker at kaste fra en
datatype til en anden.
Du kan bare sætte den datatype i parenteser og har det bare forud
den værdi, du støbning.
>> Så her, jeg dividere en svømmer ved en flyder for at få en float svar.
Og ja, det ville i Faktisk udskrive 0.10.
Giver det mening?
>> LUCAS FREITAS: Så typen støbning er bare konvertere fra den ene type til den anden.
Så flyde 1 er faktisk 1,000.
Ikke ligefrem det, men det er noget med decimaler
der er faktisk 1.
Giver det mening?
Ja?
>> PUBLIKUM: Hvad hvis du gjorde float svar lig 1,0 divideret med 10?
>> LAUREN CARVALHO: Du er faktisk går at se, at i det næste dias.
Det er faktisk vores meget næste dias.
Dette er faktisk et pænere end skriv støbning, tror jeg.
Så disse to er flåd blot ved arten af ​​den kendsgerning, at de
have decimaler.
Ja?
>> PUBLIKUM: Hvad hvis du gjorde [uhørligt]
divideret med 10?
>> LAUREN CARVALHO: Faktisk en float divideret med en int faktisk giver dig en
flyde, så det ville fungere fint.
>> Vent, er alle forstå dette?
Da dette vil være en rigtig big deal i Pset1, faktisk.
Ja?
>> PUBLIKUM: Kan du lige hurtigt gå over den røde del?
>> LAUREN CARVALHO: Den røde del, ja.
Lucas, vil du?
>> LUCAS FREITAS: OK.
Så husk, at den procentvise er en pladsholder.
Det er ligesom en tom plads.
Så lad os prøve at forstå alt , der foregår her.
Procent betyder, at det er en pladsholder.
Så har du f, hvilket betyder, at denne pladsholder er for en float.
Den sidste ting, som vi har her er en .2, Hvilket betyder, at jeg vil have to
decimaler for svømmeren.
>> Hvis jeg bare havde% f, de vil sætte en flok af decimaler.
Så jeg kan bare sætte .2 eller .1 eller .5 eller uanset hvad, og det kommer til at sætte det
Antallet af decimaler.
Det eneste er, at hvis du sætter ligesom .100 Eller .1,000, er det faktisk ikke
kommer til at sætte alle disse decimaler fordi det ikke har nok hukommelse
at have denne præcision.
>> Andre spørgsmål?
Ja?
>> PUBLIKUM: Så flyder bare tillader dig til at gå ud over heltal?
>> LUCAS FREITAS: Ja.
>> LAUREN CARVALHO: Nå, en float bare tillader dig at have decimaler.
>> LUCAS FREITAS: Det betyder bare, at du nu kan have decimaltal.
>> PUBLIKUM: Hvorfor skulle vi nogensinde bruge heltal?
>> LUCAS FREITAS: Hvorfor skulle du bruger heltal?
Måske hvis du tælle fra 0 til 10, du ønsker at bruge faktisk et heltal.
Du behøver ikke at bruge en float.
I nogle situationer, du ikke har rent faktisk -
>> LAUREN CARVALHO: Måske har du ikke ønsker decimaler.
>> LUCAS FREITAS: Måske har du ikke gøre ønsker at bruge en flyder.
>> LAUREN CARVALHO: Den anden ting er, husk, både sætte en float og en int
tage 32 bit til at gemme dem, og måske du ikke ønsker at spilde bits på
decimaler.
>> LUCAS FREITAS: Ja.
Så ligesom, bare tænke over dette.
Du har 32 bit til både en int og en svømmer.
For en int, alle disse 32 bits gå til heltal.
Hvis du bruger en float med 32 bits, du har en del af denne hukommelse, der bruges
for antallet for hele tal, og den anden del, der benyttes til
decimaler.
Så det betyder, at du ikke kan komme til et meget stort antal med flåd fordi
svømmeren er allerede bruge en masse hukommelse for de decimaler.
Ja?
>> PUBLIKUM: Det første svar, hvad der præcist er det at gøre?
Er det at sætte værdien af ​​float lige til denne pladsholder for at du kan
huske det i næste linje?
Den siger flyde svar.
>> LUCAS FREITAS: Ja.
Så float svar betyder, at du får nu en lille spand i den hukommelse, der
holder en float, og der kommer at blive kaldt svar.
Så det er, hvad float svar gør.
>> Og så siger du, at indersiden af dette, er du nødt til at sætte
resultatet af denne.
Så du kommer til at gøre 1,0 divideret med 10,0, får du 0,1, og så skal du sætte
at indersiden af ​​svar.
>> LAUREN CARVALHO: Så i én linje, er vi erklære og initialisere denne float
kaldt svar.
>> LUCAS FREITAS: interessant, selvom Dette er blot én linje, det gør
flere operationer.
Det er bare en måde at C udlejning du bruger mindre kode.
Det er det samme som den ternære operatør, hvordan man bare kan gøre en
[Uhørligt] på én linje.
Det er faktisk gør det samme som laver float svar, semikolon, og
så svaret er lig med det, men i stedet for gør du gøre to linjer til det,
det er ligesom en genvej.
Ja?
>> PUBLIKUM: Så hvis du kørte dette, det ville være 0,10?
>> LUCAS FREITAS: Ja.
Ja?
>> PUBLIKUM: Er besvare faktisk kode, eller er det bare det navn?
>> LAUREN CARVALHO: Denne er faktisk kode.
Dette er, hvad vi vil at navngive vores variabel.
>> PUBLIKUM: Så er det bare et navn [uhørligt].
>> LAUREN CARVALHO: Ja.
Jeg kunne have sagt float x lig 1,0.
>> LUCAS FREITAS: Sagen er, at navnet på den variabel er
noget, som du bruger.
Det er vigtigt for dig.
For selve programmet, det eneste at forhold, er den værdi, du
har indersiden af ​​spanden.
Grunden til at du har variable og navne på variabler, så du ville vide
hvad du har med at, ligesom hvilken slags data, du er
adgang ad gangen.
Men for selve koden, hvis du ringer det besvare eller spørgsmål eller noget,
temmelig meget, det gør ikke noget.
Det betyder ikke noget.
Så længe du er konsekvent i hver forekomst det, og så kalder du det
noget andet.
Ja?
>> PUBLIKUM: Har variabler gå ud over den funktion?
Ligesom hvis du skulle oprette et beslag [Uhørligt], kan du bare
[Uhørligt] svare igen?
>> LAUREN CARVALHO: Nej.
>> PUBLIKUM: [uhørligt]
>> LAUREN CARVALHO: Nej.
Det ville være uden for rækkevidde af denne variabel.
Og faktisk, det er lidt interessant, for når vi har
ting som sløjfer eller disse, hvis betingelser, hvis du erklærer en variabel
inden andet sæt krøllede parenteser, det virkelig kun eksisterer
inden for disse krøllede parenteser.
>> PUBLIKUM: En sidste bemærkning om de [uhørligt] flåd.
Hvorfor ville du nogensinde ønsker at bruge ints?
Dette er mere en side bemærkning end noget, men din computer er
betydeligt bedre til at håndtere reklamationer end det er at håndtere flåd.
Det er ligesom en rækkefølge størrelsesorden hurtigere.
Så hvis vi bare kun behandles flåd, ting ville være meget langsommere.
>> LAUREN CARVALHO: Faktisk synes der at være et problem med flåd.
>> LUCAS FREITAS: Kind af årsagen til , at du kan tænke, er, hvordan i binær
du kan repræsentere heltal ved at sætte 0'er og 1'er.
>> LAUREN CARVALHO: Det er den næste ting.
>> LUCAS FREITAS: OK.
Awesome.
>> LAUREN CARVALHO: Just holde den tanke.
>> LUCAS FREITAS: OK, jeg vil fortælle dig senere.
>> LAUREN CARVALHO: Før vi kommer til det, Lucas var bare at sige, operatør
forrang.
Det er sund fornuft.
I gutter har gjort dette nok.
Så bare hvis noget er i parentes, det vil ske først.
Det er multiplikation forrang i Desuden
subtraktion, ting som.
Så faktisk, bare nogen der ønsker at fortælle mig, hvad nummer man faktisk
evalueres til?
>> PUBLIKUM: 27..
>> LAUREN CARVALHO: 27?
Ja.
>> LUCAS FREITAS: Lad mig give slik til folk.
>> LAUREN CARVALHO: Okay.
Hvad med nummer to?
>> PUBLIKUM: 22..
>> LAUREN CARVALHO: 22, ja.
Jeg ved ikke, hvem der fik det.
Nummer tre?
>> PUBLIKUM: 10..
>> LAUREN CARVALHO: 10, ja.
Fedt.
Så modulo.
Lucas, vil du forklare modulo?
>> LUCAS FREITAS: Modulo er denne operatør det er faktisk meget nyttigt for en
bundt af problemer.
Hvis jeg gør 55 modulo 10, hvad den gør dette lad os sige, at jeg ønsker at
dele 55 af 10.
Hvad får jeg?
Det føles ligesom hvis jeg faktisk bare gør divisionen, hvad er
første gang, at jeg fik heltal?
>> PUBLIKUM: 5. jan.
>> LUCAS FREITAS: 5..
Og så resten er 5, right?
Så det er ligesom 5 gange 10 plus 5.
Dybest set, hvad modulo betyder, den forsøger at dividere dette tal med denne ene, og
det ser, hvad er resten af divisionen.
>> LAUREN CARVALHO: Så det bare returnerer resten.
Så nummer et er hvad?
5..
Nummer to?
>> PUBLIKUM: 3..
>> LAUREN CARVALHO: 3..
Nummer tre?
0.
Og fire er 1..
Præcis.
>> LUCAS FREITAS: Simpel, right?
>> LAUREN CARVALHO: Hvorfor vi ikke springe dette bare fordi vi ikke rigtig har
tid, og folk synes at forstå.
Så her er hvad Lucas var bare taler om.
>> LUCAS FREITAS: En anden grund til, at jeg ville bruge int'er stedet for flåd er
at flåd er meget upræcise.
Og hvorfor er de upræcis?
David sagde, at repræsentere et heltal, for eksempel, bruger vi 0'er og
1, ikke?
Og så skal du stort set gøre det multiplikation, gør alle de
operationer for at vide, hvad decimaltal du har i stedet for binære.
>> Hvad sker der nu hvis jeg prøver at sætte decimaler?
Faktisk, for eksempel, hvis jeg har det tal som 3,33333?
Det føles som 10 over 3.
Hvordan skal jeg nu til at gemme alle de 3 er, at jeg har efter det?
Det er virkelig svært, ikke?
Du kan ikke bare fortælle computeren, hey, jeg har en 3, og
så du gør det for evigt.
Faktisk er computeren ikke smart nok for dette.
>> Så dybest set alle dine computer gør, er at det forsøger at sætte så mange cifre som
det kan op til den hukommelse, som du har.
Så lad os sige, at det kommer til at sige 3,3333, og det er det.
Så det er ikke i stand til rent faktisk at udtrykke præcist, hvad der flyder er.
>> LAUREN CARVALHO: Vi har et endeligt antal bit, hvilket betyder, at ikke
hver decimaltal vil være kunne være repræsenteret præcist.
Og så i dette eksempel, hvis vi er udskrive 0.1, er vi nu udskrivning
ud 20 steder.
>> LUCAS FREITAS: Ligesom jeg fortalte gutter, kan du sætte et vilkårligt antal.
Men hvis du lige gjorde de to steder, du ville få 0,10, men hvis du lægger 20
steder, det kommer til at vise dig et bundt af 's, fordi det er, hvad du kan sætte
i hukommelsen, right?
>> Men lige her, op til 0, og så bare sætte det et
flok tilfældige tal.
Det er lidt ligesom nogle -
>> LAUREN CARVALHO: Det er fordi vi er ikke i stand til at repræsentere denne decimal
netop med nummeret bits vi har.
>> LUCAS FREITAS: Og så computer er dybest set
giver dig en papirkurv nummer.
Dette er faktisk ikke værdien af ​​nummeret.
>> PUBLIKUM: Det er så tæt som det kan få [uhørligt]
bruge [uhørligt].
>> LAUREN CARVALHO: Så konsekvenserne af dette er, at lad os sige at i stedet for
være 0.100014, uanset hvad, hvad nu hvis det var 0,0999 -
godt, OK.
Lad os lade som den faktiske svar til dette var 0,9999999.
Det er meget tæt på 1, men det er ikke ligefrem 1..
Det er 0,99999.
>> Det betyder, at hvis jeg tager det 0.999, og jeg kastede det til en int, får jeg 0.
Jeg kan ikke få 1.
>> LUCAS FREITAS: Fordi huske, støbning fra float til int, skal du bare
ignorere alle de decimaler.
Du skal bare ignorere dem.
Der er ikke sådan noget som oprunding eller kører ned, når du typecast.
Faktisk er der denne funktion, gør afrunding, som er meget
vigtigt, men du bare tror, ​​at når du gør typecasting, det er bare
ved at slette alt.
Så selv hvis du har 0,99999, går det at bare give 0, hvis du typecast
[Uhørligt] et heltal.
>> LAUREN CARVALHO: Så bare være rigtig klar af floating point i præcision,
især når du starter at bruge flåd i Pset1.
Men gåtur gennem bør advare dig om, at så godt.
>> LUCAS FREITAS: Og faktisk er det virkelig hårdt, for eksempel, hvis jeg gjorde
float svar 1 er lig med 1,0 i 10, og derefter flyde svar 2
lig 10,0 løbet 100,0.
De er de samme tal, right?
0,1, right?
1 i løbet af 10 eller 10 over 100.
Men nu, hvis jeg forsøger at se lighed, ligesom hvis svar 1 er lig besvare 2,
måske er det faktisk ikke går at være det samme.
Så flåd er lidt ligesom det.
De er ligesom at gøre ligestilling.