>> JASON HIRSCHHORN: Velkommen til CS50 sektion, alle.
Mit navn er Jason Hirschhorn.
Jeg er en masse af jeres TFs, men en masse af folk vil forhåbentlig deltage os
online, udvidelse eller studerende forsøger at se gennem sektion, hvis de
savnede deres sektion, uge ​​eller bare fange op, hvis de ville
at gennemgå noget materiale.
>> Så som pr pensum, som alle af jer har læst, korrekt?
Jeg ser en masse hoved nikker.
Sektioner giver dig mulighed at udforske kursets
materiale i en mere intim miljø, samt dykke ned
hands-on aktiviteter.
>> Så det er dybest set, hvad vi er vil gøre hver uge.
Vi kommer til at gå igennem, hvad vi har bestemt til at være den vigtigste
emnerne i foredrag, og dem sandsynligvis også mest nyttige og
mest tilbøjelige til at komme op på problemet sæt og quizzer, og i din kodning
liv uden for CS50.
Så vi kommer til at gå ind i de emner, drøfte dem, gå over dem,
besvare eventuelle spørgsmål du fyre har, og så vi kommer til at gøre en masse
praksis problemer i kodning.
>> Du alle bragt bærbare computere, som er fantastisk.
Dette er et computer science klasse.
Men en masse af de øvelser, vi gør, du behøver ikke din bærbare til.
Du kan gøre dem på et ark papir.
Det er, hvordan du kommer til at gøre dem på quizzer.
Og ja, det er en fantastisk måde at virkelig vide, at du, hvordan du gør
noget, hvis du ikke har check 50 til afhængige Eller Kom til at stole på, fortæller
du har lavet nogen fejl.
>> Så du er velkommen til at kode på apparat eller run.cs50.net, hvilket er
andet værktøj, der giver dig mulighed for at kode online, men jeg ville også anbefale, hvis
du ikke har prøvet det, ved hjælp af et ark papir og forsøger disse praksis
problemer på et ark papir.
Fordi igen, det er i sidste ende hvad du kommer til at være
bedt om at gøre på quizzer.
>> Så lad os starte med vores dagsordenen for i dag.
Vi kommer til at gå over nogle normer for vores sektion, så vi kommer til at dykke
i arrays, funktioner og kommandolinjen argumenter, hvilket er, hvad du fyre
have dækket denne sidste uge i auditorium og derefter mandag, og hvad du vil dække
mere i morgen.
Og så endelig, vi vil at tale om pset2.
Hvis jeg kunne få en håndsoprækning, hvis du har ikke set på problemet set to
specifikation.
Vi siger alle.
Fantastic.
>> Vi taler om problemet sæt i en bit, men hvis du læser det problem sæt
specifikationer, der er alt hvad du behøver at gøre.
Hvis du læser det, før du kommer til klasse og sektion tirsdag vil du
være en stor position.
Vi kan gå igennem problemet sæt, hvilket er, hvad vi vil
at gøre i slutningen.
Vi kommer til at gå igennem logikken, sørg
alle er på samme side.
>> Jeg vil have dig til at være i stand til at forlade tirsdag føler meget komfortabel med, hvad du
skal gøre for denne uges problem sæt, og hvis du ikke gør det, vil jeg med glæde
bo efter og arbejde med dig.
Men der er én ting, som du er nødt til at gøre, men jeg tror ville være rigtig smart,
blot at læse problemet sæt specifikation af klassen på tirsdag
som det lyder som en masse af jer gjorde.
>> Jeg vil starte med en dagsorden hver klasse så du ved, hvor vi skal hen.
Dette er også nyttigt for folk, der ser online, fordi hver sektion
er farvekodede, så hvis du ønsker at komme tilbage og bare se 10 minutter i stedet
end hele 90-minutters afsnit, du kan bare gå til farvekodede sektion
og se på denne del.
Så jeg har prøvet at bryde dem op i pæn moduler, der vil tillade dig at -
hvis du ønsker at komme tilbage og gennemgå, eller andre studerende, der er lige
ser et afsnit at gennemgå -
at finde den specifikke ting, de ønsker at være opmærksom på
og lære mere om.
Sød.
>> Normer.
Jeg er FOP førende på campus.
Jeg ved ikke, om nogen gjorde FOP.
Gjorde nogen gøre FOP?
Én person gjorde FOP.
To mennesker gjorde FOP.
Awesome.
Så FOP er det første år Outdoor Orientering Program.
Vi tager freshmen i skoven og gøre de mest magiske oplevelser af
deres liv, korrekt?
Ja.
Lyde om ret.
>> Så jeg ville bare starte vores allerførste afsnittet med at diskutere nogle normer
for klassen og vores forhold fordi jeg tror
de er meget vigtige.
Først og fremmest som dem af jer, der er min afdeling har modtaget og
er blevet drøftet i det email, jeg elsker dette.
Dette er min favorit del af året.
Jeg har været så spændt.
Jeg har været her i flere timer i dag.
Jeg har ikke forladt denne bygning, undtagen til gå spise, fordi jeg elsker CS50 sektion, jeg
elsker undervisning, Jeg elsker at arbejde med jer.
>> En af mine højeste prioriteter, hvis ikke min første prioritet, ikke kun for
denne klasse, men inklusive min anden klasser og extracurriculars, er at
støtte jer, og hjælpe jer, og gøre mit bedste for at sikre, at du
fyre har en vidunderlig, sjov, produktiv, engagerende, spændende
opleve i denne klasse.
Det er, hvad jeg forpligtet til.
Det er derfor jeg elsker at gøre dette.
Det er mit nummer én ting, støtter jer.
Hvis du har spørgsmål om foredrag, problemet sæt, sektion,
liv, selv om du ønsker at tale om liv, er du velkommen til at nå ud.
>> Du har min celle telefonnummer, du har min email
adresse, du har min Gchat.
Du kan kontakte mig på en eller alle dem, når, men sandsynligvis vil ikke få
en reaktion, når.
Jeg prøver og komme tilbage inden 24 timer.
Ofte vil det være inden for 20 minutter eller 24 minutter.
Jeg skulle have sagt, at at gøre det parallelt.
Men du vil få et svar temmelig hurtigt.
>> Hvis du tekst mig en time før Problemet set er på grund, vil jeg berolige dig
ned og gøre dybe åndedrætsøvelser med dig, men hvis du ikke har startet,
du sandsynligvis ikke kommer til slut, og Jeg kan ikke rigtig hjælpe dig derude
selvom jeg vil prøve mit bedste.
Så jeg vil gøre alt Jeg kan for at støtte dig.
Du er velkommen til at nå ud af, om Det er i afsnit igen på Kontortid
hvis du ser mig, eller endda udenfor.
Jeg er glad for at oprette en tid til at mødes og arbejde gennem problemer
med eller gå over materialet.
Så det er nummer et, støtte.
Jeg vil gøre alt, hvad jeg kan for at støtte dig.
>> Nummer to, møde i midten.
Så meget som jeg gerne vil være, er jeg ikke almægtig eller almægtig eller
alvidende, så jeg kender ikke alle de tid, hvis det jeg gør er at få
tværs, hvis den måde, jeg underviser på topic hjælper dig med at lære det, eller hvis du
er forvirrede på et emne, men ikke hæve din hånd eller spørge mig
eller send mig en mail.
Eller selv hvis du, igen, er forvirret om noget på problemet sættet.
Hvis du ikke nå ud til mig, Jeg kan ikke vide, at for sikker.
Jeg har tænkt mig at gøre mit bedste for at tjekke ind på jer, sørg for alt er
går godt, så prøv at lære tingene på en måde der vil være fremmende for de fleste af
dine læringsstile, men hvis der er noget jeg kan gøre, så lad mig det vide.
>> Langs disse linjer, hvis du vil have noget hjælp med problemet sæt, jeg mere
end glade for at hjælpe dig med problemet sæt.
Vi kommer til at gøre en masse at mod den anden
halvdelen af ​​dette afsnit.
Men hvis du ikke har læst problemet sætter tilbage og har ikke set den gåtur
igennem og har ikke set shorts og forventer mig at lære dig
alt, der er blevet videofilmet online eller som du kan finde på CS50
Undersøgelsen, der er ikke rigtig fair at mig eller til dine andre jævnaldrende.
>> Så venligst, jeg er mere end glad for at hjælpe dig, men du fyre fik at møde mig i
midten.
Vi har tonsvis af ressourcer til du til rådighed på CS50.
Jeg nævnte nogle af dem.
Venligst tage fordel af dem.
Hvis du er forvirret, er jeg mere end tilfreds at hjælpe dig med at forklare dem
en anden måde, men det er ikke fair, hvis studerende møder op på kontortid,
har ikke startet noget, og det er Torsdag aften, og de venter
TF at gå dem igennem hver enkelt ting for problemet sæt grund
ved middagstid den næste dag.
Mening?
Igen, skal du møde os i midten.
>> Og endelig høje forventninger.
Jeg har tænkt mig at blive grading alle, der er i min afdeling, scorer eller din
problemområder sæt.
Du har ikke gået tilbage problem sæt nul eller en endnu.
Vi er kede af det.
Det tog os et stykke tid at endelig bosætte sektioner, og nu
vi kan begynde sortering.
>> Jeg får dem tilbage til dig så hurtigt som muligt.
Det er nogle af mine advisees derude.
Jeg får dem tilbage til dig så hurtigt som muligt.
Og for problemet sæt to, vil vi være på planlægge, og vi vil begynde at få dem
til dig temmelig hurtigt efter du tænder dem i.
>> Når du får dit problem sat tilbage, du får scoringer, som du kender fra
læse pensum - korrekthed, design, rækkevidde, og stil scoringer.
Du får også kommentarer.
Kommentarerne er vigtigere end scoringer.
Jeg synes, det er sikkert at sige, at.
>> Scores er blot et tal et til fem.
Det er svært at læse i dem.
Det er svært at forbedre sig fra dem.
Men kommentarerne vil påpege specifikke ting, du gjorde det godt eller områder
du kan forbedre på og give dig nogle ideer til fremtiden eller alternative
måder at gøre tingene på.
>> Så please, please, bedes du læse gennem kommentarerne.
Jeg sætter en masse tid på at disse bemærkninger.
Læs venligst igennem dem, og ikke bare rulle ned til bunden af
PDF, se efter din score, eller gå online og find din score, og derefter ignorere
kommentarerne.
Det er ikke, hvordan du er kommer til at få det bedre.
Det er ikke, hvordan du kommer til at stige din score i sidste ende, bare
ved at se på scores.
Venligst se på disse bemærkninger.
>> Og langs linjen for høje forventninger, igen, som jeg sagde, du
kan scores fra én til fem.
Toere, treere og firere er Langt størstedelen af ​​scores
du kommer til at få.
Ones og femmere er begge virkelig sjældne.
Der er altid ting vi kan gøre bedre.
Når jeg kode et program, der er altid noget jeg
kunne have gjort bedre.
>> Så snarere end at sige at du får en fem hele tiden på alt og gjorde
alt perfekt, tror jeg ikke nogen af os mener virkelig, at vi - eller
forhåbentlig, vi ikke gøre alt perfekt hele tiden.
Så du skal ikke være bekymret, hvis du fik ikke en fem.
En fem ikke kortlægge på en A, en fire ikke kortlægge på en B, en tre gør
ikke kort på en C. Det er ikke hvordan scorerne virker.
>> Ligesom David har sagt mange gange, på semester ende alle dine scores og
input fra mig, din TF, kommer sammen og bestemme en endelig karakter for dig.
Men igen, det er ikke fem, A, fire, B, et cetera.
Så jeg har tænkt mig at have høje forventninger for jer.
Jeg har tænkt mig at forvente gode problem sæt og jeg har tænkt mig at give
dig feedback som sådan.
Og det kommer ikke til at betyde, at du er vil få en dårligere kvalitet.
Du er gradueret i forhold til dine fremskridt fra uge
nul til kursus udgang.
>> Og endelig, i form af et højt forventninger i klassen, jeg elsker når
mennesker deltager.
Jeg forstår nogle mennesker føler sig mere eller mindre behagelig deltagende.
Andre mennesker deltager ikke ved at hæve deres hånd og
taler hele tiden.
Men vi i denne klasse vil være laver en masse små problemer, en masse
af mini spørgsmål, og derefter nogle større kodning problemer.
Så helt sikkert arbejde disse øvelser ud når vi gør dem på din computer eller på
et ark papir.
>> Men jeg vil også give dig lidt tid, før nogen nogensinde har at besvare nogle
af de spørgsmål, jeg beder om.
Så fordi jeg vil give dig lidt tid til at tænker over det, fordi vi vil
at gøre tingene på partnerne tider, Jeg vil forvente, at alle
at blive ansat noget.
Og i mangel af et bedre udtryk, der vil sandsynligvis være cold calling, som
er, hvor alle vil have en chance at tænke på svaret, og derefter
Jeg ringer på dig, og derefter du vil sige svaret.
>> Må ikke bekymre dig, eller være bange for det.
Jeg har gjort det i fortiden, og vi har fundet at det er langt mere vellykket,
også læse pædagogisk forskning på det at afgøre, hvorvidt det var en
god taktik.
Det er meget nyttigt, især hvis du give eleverne tid til at tænke over
svar og ikke gør dem bare komme ud og sige det lige off the bat.
Men hvis du ikke føler sig trygge besvare, er jeg også ret god til
sensing ud af, og vi kommer ikke til at sætte dig på stedet, især på
kameraet, selv om ingen af du er på kameraet lige nu.
>> Så det er de normer, jeg har.
En ting mere lighed at møde i midten.
Jeg har tænkt mig at give jer en masse feedback.
Kan du give mig feedback så godt.
Der er en hjemmeside, sayat.me/cs50.
Så det er en ærlig feedback.
Hvis du ønsker at give det under afsnittet Jeg får en mail når det sker.
Vi tager en pause i en bit, så jeg vil se gennem tilbagemeldinger dengang.
Hvis du nogensinde har nogen feedback, bedes du give det til mig der.
>> Hvis du giver mig feedback på Q, det er vidunderlig, men det er den vejledning
at du gør i slutningen.
Men det vil være i semesters ende, så Jeg vil ikke være i stand til at tage noget af det
feedback og gøre det til undervisning jer bedre.
Så venligst, hvis du har nogen feedback, give det til mig.
Jeg elsker feedback.
Back to FOP, vi får tilbagemeldinger hele tiden.
>> Du kan give mig plusser, gode ting, deltaer, ting jeg kan forbedre på.
Du kan kommentere på min outfits.
Det vil ikke være så hjælpsom, men du er velkommen til at kommentere på alle, og
alt.
Venligst, bedes du give mig feedback.
Jeg værdsætter det meget, og det betyder meget for mig.
>> Én mere normen, sjov.
Vi kommer til at have en masse sjov.
Forhåbentlig i dette kursus, vil du har en masse sjov.
Vi vil have slik på sektionen.
Vi vil have musik.
Vi vil forhåbentlig komme til at kende anden noget godt, så jeg vil
dette at være en sjov, engagerende oplevelse.
>> Jeg kender nogle af jer er faldet i søvn i forelæsningerne du havde tidligere i dag,
så forhåbentlig, der ikke vil være tilfældet nu.
Og hvis det er tilfældet nu, bare ikke snorke, fordi det måske
blive fanget på kamera.
Sød.
Eventuelle spørgsmål, kommentarer eller bekymringer inden jeg går videre om noget vi har
talte om?
Store.
>> Så vi kommer til at gå i arrays først.
Dette er, hvordan du laver et array.
Vi har set det før.
Du har en datatype, har du en navn, og så har du en størrelse.
Lige her, jeg oprette to arrays.
Den første er en vifte af figurer, og det har 26 pladser.
Den anden er en vifte af scoringer, og det har tre
rum for tre heltal.
Ja?
>> STUDENT: Er alle disse dias tilgængelige et sted for os?
>> JASON HIRSCHHORN: Great spørgsmål.
Spørgsmålet var, er alle disse slides til rådighed?
Ja.
Alle disse slides vil være tilgængelige, og i fremtiden, vil jeg maile dem til
dig, før sektion.
Men i dag, fordi det er den første uge, vi havde en sen start.
Så normalt, får du disse dias, men de vil være tilgængelige online og
Jeg e-mailer dem til dig lige efter klasse.
Andre spørgsmål?
>> Så igen, arrays er kasser, i mangel af et bedre ord, der holder flere
elementer af en datatype, og de er ved siden af ​​hinanden i hukommelsen.
Og så igen, det er hvordan du kan lave to typer arrays.
>> Så efter du har foretaget dit array med at første linje - int score, beslag
tre, tæt konsol - du vil initialisere det.
Du ønsker at sætte nogle værdier der.
Og det er hvordan du sætte nogle værdier der, bare vælge indice og
skrive nummeret.
Lad os trække det på tavlen.
Kan alle se det?
Alle kan se.
Sød.
>> Så det kommer til at være min matrix kaldet Scores.
Som du kan se, er det str. tre.
Der er tre bokse derinde.
Hver enkelt kan passe, hvad type data type?
>> STUDENT: Integer.
>> JASON HIRSCHHORN: Et heltal i denne.
Vi skrev int score, og det første ord er den datatype, der kommer til at
gå i kasserne i denne array.
Så jeg kan passe tre.
Hvorfor har jeg nul op der på tavlen?
Hvorfor siger den score nul er lig med 1?
Minder mig om dit navn.
>> STUDENT: Kurt.
>> JASON HIRSCHHORN: Kurt.
>> STUDENT: Ja.
>> JASON HIRSCHHORN: Hvorfor?
>> STUDENT: Fordi den første indeks er nul, begynder vi at tælle på nul.
>> JASON HIRSCHHORN: Så vi starter optælling på nul.
Det er helt rigtigt.
Dette er den forvirrende del og vilje tur dig op, især når du er
forsøger at gentage gennem arrays, som vi vil gøre i en smule.
Vi begynder at tælle ved nul.
Så hvis jeg vil henvise til den første box, det er ikke kasse et.
Desværre, det er box nul.
Den anden er æske en, og i dette tilfælde, den tredje er boks to.
>> Hvad kasse tre?
Hvor er kasse tre?
Eller hvis jeg ønsker at gøre scoringer, beslag tre, tæt konsol, hvad er det?
Så du sagde den null-tegn.
Alle andre tanker?
Hvad er score beslag tre beslag?
>> STUDENT: Det betyder egentlig ikke eksisterer, fordi du kun defineret som scoringer,
beslag tre.
>> JASON HIRSCHHORN: Så du siger det ikke rigtigt eksisterer.
I nogle tilfælde, vi når at gøre med strygere, vi generelt vil sætte en null
tegn i slutningen.
Vi vil komme til at i et sekund.
Men i dette tilfælde, er der er ingen tredje kasse her.
Så den sidste kasse i enhver matrix er størrelse minus 1.
Så hvis vi har en bred vifte af størrelse n den første kasse er på nul, den sidste er
ved n minus 1.
Og i dette tilfælde, betyder det ikke eksisterer.
Der er noget her i hukommelse, men det er ikke vores.
Vi ejer ikke det.
Vi bad ikke om det.
Så hvis vi forsøger at få adgang til det, som vi vil gøre i en smule, vi formentlig kommer til at
komme i problemer.
>> I dette tilfælde, jeg initialisering min array med tre variabler.
Vi sætter en en i rubrik nul, en to i rubrik en, og en tre i boks to.
Er der nogen har nogen spørgsmål om initialisering et array?
>> Så gik vi over dette blot nu.
Scores, konsol tre, close beslag, der ikke eksisterer.
Vi ved nul i datalogi, så vi begynder at tælle ved nul.
Den sidste kasse til rådighed for os, er det det tredje felt, men det kaldes box
nummer to.
>> Nede er dette et alternativ måde initialisering arrays.
Så i stedet for at skabe array på én line, påfyldning den første boks, og derefter
den anden boks, så den tredje boks, du kan gøre det hele på én linje.
Så i denne linje. Begge arrays
Dette skaber den samme nøjagtige array som hvad vi skabte lige her, men det
bare gør det på én linje.
>> Nu har vi skabt vores array.
Normalt når du opretter et array, du ønsker at gøre noget med det, uanset om
der er fylde det eller få ting ud af det og printe dem ud på skærmen.
I dette tilfælde vil vi gennem vores tabellen resultater, som vi initialiseret på
den første linje op her i grå.
Og så på den anden linje, begynder vi iteration gennem matrixen.
Er der nogen har nogen spørgsmål om strukturen af ​​en for-løkke?
>> Så dette er for-løkken.
Vi har vores indledende tilstand, og derefter vores endelige tilstand, og så har vi
gentage, i, hver sløjfe.
Og i de krøllede parenteser i dette for loop, hvad sker der hvis jeg skulle køre
dette program?
Kan nogen fortælle mig, hvad vi ville få?
[? Matu? ?]
>> Matu: Print alle de scores på hver linje.
Det ville udskrive hver score på en separat linje.
>> JASON HIRSCHHORN: Hvad der præcist ville det udskrive?
>> STUDENT: Det ville udskrive én, så to, så tre.
>> JASON HIRSCHHORN: Præcis.
Det ville udskrive en, så to, så tre, hver på særskilte linier, fordi
vi går gennem matrix, og du vil se, at andet printf
opgørelse, scores Í.
Så på den første runde gennem vores for loop, jeg er lig med nul, hvilket betyder, at vi
få værdien ved score nul -
som, hvis vi går tilbage til vores diagram er en -
og udfylde -
åh, det siger ca.
Det burde være% d.
Jeg vil fastsætte, at der i lidt når Jeg hånd, ud til jer.
Men vi præsentere et heltal, så det bør være% d lige her, ikke% c.
Hvad er% c til?
>> STUDENT: Tegn.
>> JASON HIRSCHHORN: Tegn, nøjagtigt.
Hvad er den anden?
Hvis du ikke ønsker at gøre% d for en heltal, hvad kan du ellers gøre?
>> STUDENT: i.
>> JASON HIRSCHHORN:% i, nøjagtigt.
Så spørgsmål om iteration gennem array?
Så hvad sker der, hvis vi gør dette?
Stedet for at gøre i er mindre end tre, vi i er mindre
end eller lig med tre.
Hvad sker der, når vi kører denne kode?
Ja, Annie?
>> STUDENT: De kommer til at udskrive underlige ting på den fjerde linje.
>> JASON HIRSCHHORN: Så du siger, det er kommer til at udskrive underlige ting på
fjerde linje?
Er der nogen har et svar på hendes spørgsmål?
Så oddsene er, at når vi kommer til -
så på den fjerde runde gennem vores for loop, ligesom du troede, Annie,
det vil være scoringer beslag tre, hvilket vi har allerede regnet ud, ikke
findes, og vi vil forsøge og få adgang til at udskrive det
ud, brug den anden måde.
Så computeren vil formentlig blive vred på os.
Du helt rigtige.
>> Det kunne afslutte programmet helt.
Det kan udskrive noget virkelig underligt.
Du kan ikke sige med sikkerhed.
Odds er det vil formentlig blive vred på dig og bare afslutte med det samme.
>> Men dette er en almindelig fejl, du vil have hvor du bare ud ved en på
enden, og det er en fejl, der vil plage dig hele din kodning.
En måde jeg kan lide at gøre, er bare på en whiteboard, gå igennem hver iteration
af løkken på hånden eller på papir at se hvad der sker, og så
generelt indser, oh vent, jeg skal ikke er gået til mindre end eller
lig med tre.
Jeg skulle have stoppet ved to, hvilket er hvad sker der hvis din tilstand er mindre
end tre.
Eventuelle spørgsmål indtil videre?
Sød.
>> Så du har alle dine computere åbne.
Vi vil give dig 02:58 minutter at skrive et program,
skaber et array med de hele tal én gennem fem og derefter udskrives hver
heltal på en ny linje.
Og hvis du har spørgsmål, hæve din hånd.
Jeg er glad for at komme forbi.
Som jeg sagde, lad os tage tre minutter til at skrive dette.
Er alle OK, hvis jeg går til en nyt vindue og luk denne?
>> Jeg er ked af, hvis du ikke har haft en chance til slut, men vi vil gøre det
sammen lige nu.
Så op på skærmen, har jeg # include cs50.h, # include stdio.h.
Kan nogen fortælle mig, hvad disse to linjer gøre?
Michael?
>> STUDENT: De omfatter bibliotekerne at CS50 lavet og at Steve har
gemt for dig at bruge til at gøre dit liv lettere.
>> JASON HIRSCHHORN: Så du sagde, at de omfatte biblioteker, en, der CS50
lavet, cs50.h, og en, der er bare standard, kommer med
C pakken stdio.h.
Hvad mener du medtage bibliotekerne, selvom?
Kan du være lidt mere specifik?
>> STUDENT: Det gør det, så du kan bruge bestemte kodeord at have en
fungere ske uden at skulle gå og gøre funktionen c. selv.
>> JASON HIRSCHHORN: Kan du give mig et eksempel?
>> STUDENT: Ligesom printf er en du kan bruge.
>> JASON HIRSCHHORN: printf.
Så du sagde printf er en af ​​dem funktioner, hvor snarere end at skulle
skriver printf på egen hånd, printf er medtaget faktisk i stdio.h, så du
kan bare bruge det og påtage at det vil virke.
I stdio.h, hvis du åbnet denne fil ville det omfatter hvor printf
værker, alle af koden til printf?
Hvorfor er du ryster på hovedet?
>> STUDENT: Da header fil, blot omfatter funktionen erklæring.
>> JASON HIRSCHHORN: Præcis højre.
Den header fil, blot omfatter funktionen erklæring.
Så dybest set, når du kompilere dette hit Make Count, som vi vil gøre i en
sekund, compileren ved, at hvis du bruger printf, printf eksisterer.
Det kommer til at være defineret et eller andet sted.
Det er ikke et problem for dig at bruge det.
Og så senere, vil den omfatte ettaller og nuller, der rent faktisk indeholder
printf gennemførelse og flette dem med din kode.
Hvordan kan du sørg for at det indeholder ettaller og nuller til, siger, få strengen?
>> STUDENT: Få streng er i cs50.h.
>> JASON HIRSCHHORN: Right.
Så det siger få strengen findes, funktionen erklæring.
Men så ettaller og nuller, det binære fil, der faktisk indeholder
implementering af get streng?
Hvordan kan du sikre dig, at går med dit program?
>> STUDENT: Pass linker i kommandolinjen argument.
>> JASON HIRSCHHORN: Pass linker i kommandolinjen argument.
Hvordan gør du det?
>> STUDENT: Det er den-l linje i clang
>> JASON HIRSCHHORN: Præcis højre.
Du siger-l CS50, right?
Det omfatter ettaller og nuller.
>> STUDENT: Men Make gør det for dig, right?
>> JASON HIRSCHHORN: Præcis.
Gør gør det for dig, men til sidst, vil du ikke have Make eller
du bliver nødt til at gøre en gøre på egen hånd, så det er en
god ting at huske.
Hvis du skulle bruge en af ​​disse andre biblioteker, ikke kun du har
at skrive # include og derefter biblioteket.
Du skal også til at linke det i.
Og de to ting er forskellige. -L CS50 er anderledes
end # include cs50.h.
>> Så har vi int main void krøllede parenteser, og nu vi kommer til at kode
inderste.
Den første linje jeg har her er en kommentar der siger, skabe en række
med int'er en gennem fem.
Hvad er et godt ord til at beskrive, hvad jeg har lige nu på skærmen, bare
kommentarer inde main?
Hvad kalder vi det?
>> STUDENT: pseudokode.
>> JASON HIRSCHHORN: pseudokode.
Tak, Jeffrey.
Det er helt rigtigt.
Pseudokoden.
Har du fyre set pseudokoden før?
Løft din hånd, hvis du har brugt pseudokode før problemet indstillet en sådan.
Omkring halvdelen af ​​dig.
>> Jeg vil stærkt anbefale at bruge pseudokode at nedbryde problemer i
mindre, mere let at bide stykker.
Også, hvis du gør det pseudokode, du har dine kommentarer, der allerede i vid udstrækning
indbygget, så du ikke behøver at gå tilbage og prøve at finde ud
hvad du lavede.
Så kan nogen give mig denne første linie at skabe et array med int'er én
gennem fem?
Du?
>> STUDENT: Int og derefter kan du ringe uanset nummer og derefter firkantet
beslag fem.
>> JASON HIRSCHHORN: So int tal firkantede beslag fem.
>> STUDENT: Lig og derefter krøllede parenteser.
>> JASON HIRSCHHORN: Lig, krøllede parenteser.
>> STUDENT: En, to, tre, fire.
>> JASON HIRSCHHORN: En, to, tre, fire, fem.
>> STUDENT: Og så krøllede parenteser og derefter semikolon.
>> JASON HIRSCHHORN: Og krøllet seler og semikolon.
Excellent.
Print ud hver int på en ny linje.
Kan nogen anden giver mig, at koden, please?
[? Matu? ?]
Gå fremad.
>> STUDENT: Til (
>> JASON HIRSCHHORN: Til (
>> STUDENT: int i = 0
>> JASON HIRSCHHORN: int i = 0
>> STUDENT: Semikolon i mindre end fem.
>> JASON HIRSCHHORN: Semikolon, Jeg mindre end 5.
>> STUDENT: Semikolon, i + +.
>> JASON HIRSCHHORN: Semikolon, i + +.
>> STUDENT: Lukket parenteser åbn derefter bøjlen.
>> JASON HIRSCHHORN: Lukket parenteser og to seler.
Inde i seler?
>> STUDENT: Og så printf "% d / n"
>> JASON HIRSCHHORN: Beklager, hold fast.
Printf "% d / n, lukket citat.
>> STUDENT: Og så lukket tilbud, komma, count, konsol i.
>> JASON HIRSCHHORN: Komma, count, beslag i.
>> STUDENT: Beklager, tal beslag jeg.
>> JASON HIRSCHHORN: Tal, konsol i.
>> STUDENT: Undskyld.
Og så lukkede parenteser semikolon.
>> JASON HIRSCHHORN: Lukket parenteser, semikolon.
Jeg har tænkt mig at redde denne.
Vi kommer til at lave count.
Og hvordan kører jeg tæller?
>> STUDENT: Omvendt skråstreg.
>> STUDENT: Dot skråstreg -
>> JASON HIRSCHHORN:. / Tæller, nøjagtigt.
Tak. . / Tæller.
En, to, tre, fire, fem på nye strækninger.
Ligner det virkede.
Ja, Noah?
>> STUDENT: Du kan også gøre mindre end eller svarende til fire, som jeg er mindre end
eller lig med fire?
Er der nogen fordel ved at gøre mindre end fem, eller bare en anden måde
skrive det?
>> JASON HIRSCHHORN: Så spørgsmålet er dig kunne have gjort i er mindre end eller
lig med fire i stedet for Jeg er mindre end fem.
Ville der har arbejdet det samme?
>> STUDENT: Det burde det.
>> JASON HIRSCHHORN: Ja.
Det helt ville have arbejde det samme.
Stilmæssigt er det generelt mindre end, og du vil se i en anden, når
vi strenge, kan du bruge noget kaldet strlen, som du har set
før, at få længden af strengen.
Og du kan ikke gøre mindre, end eller lig strlen.
Du kan gøre mindre end eller lig strlen minus én.
Så det er bare pænere at gøre mindre end strlen.
Ja?
>> STUDENT: Og i selve quizzer, gør vi er nødt til at give kommentarer til vores
kode så godt?
>> JASON HIRSCHHORN: Spørgsmålet blev i quizzer, gør du
nødt til at give kommentarer?
Så vi vil tale mere om quizzer, når de kommer op, men generelt et godt
tommelfingerregel er, når du er skrive kode, fremsætte bemærkninger.
Hvis du får koden forkert, men kommentere højre, kan du få nogle
kredit både fra mig, hvis jeg var sortering dig på et problem set eller på en quiz.
Så kommentarer er altid god til at levere.
Sød.
Tæl.
Fremragende stykke arbejde.
Lad os komme videre.
>> Strings.
Strings.
Vi har set det før i foredraget.
Dette blæste mit sind, når jeg først fundet ud af det.
Det sandsynligvis ikke blæse nogens imod her, men det er OK.
>> Strenge er arrays af tegn og de ender med, som du sagde tidligere,
null terminatoren, som er dette / 0 karakter.
Hvis vi kommer til at tegne en streng på bord, vil vi trække det herovre.
Så hvor lang tid er denne streng?
Undskyld.
Hvor længe er denne streng?
>> STUDENT: [uhørlig].
>> JASON HIRSCHHORN: Four?
Hvorfor er det fire?
>> STUDENT: Da femte stedet er for null-tegn.
>> JASON HIRSCHHORN: Så den femte stedet er for null-tegn.
Så hvis jeg skulle køre strlen om dette, ville det give mig fire.
Ret.
Og array, selv om, hvis jeg skulle initialisere dette array, hvor mange pladser
ville jeg nødt til at bede om?
>> STUDENT: Five.
>> JASON HIRSCHHORN: Five.
Jeg ville have til at bede om fem, men jeg kan kun sætte fire tegn på her
fordi jeg har brug for at sætte denne null terminator for enden.
Så vi kommer til at skrive i "ohai", og sætte null terminator i slutningen.
Vi sige dette er streng s lig dette.
Hvad er s beslag nul?
s beslag nul, Annie?
>> STUDENT: O.
>> JASON HIRSCHHORN: O, nøjagtigt. s beslag en?
s beslag fem?
>> STUDENT: Findes ikke.
>> JASON HIRSCHHORN: Findes ikke.
Helt rigtigt.
Cool.
Eventuelle spørgsmål om forståelse strenge som arrays af tegn?
OK, da.
Endnu program for jer.
Skriv et program, der beder brugeren efter en streng og derefter udskriver hver
tegn på en ny linje.
Så lad os tage tre minutter til at skrive dette program, og så vil vi kode det
som en gruppe.
>> Undskyld.
Vidste du nødt til at se det?
>> STUDENT: Nej
>> JASON HIRSCHHORN: OK.
Lad os tage et minut at kode dette, eller i det mindste komme i gang med det.
>> Så du kan holde orden, men jeg har tænkt mig at begynde at gå igennem det.
Så ligesom før, jeg har på skærmen # Include cs50.h, # include stdio.h.
int main ugyldig.
Inde Mains krøllede parenteser, jeg har to kommentarer, pseudokode.
Én er bede om en streng fra brugeren.
Den anden udskrive hver tegn på en ny linje.
Så Anna, kan du give mig spørge efter en streng fra brugeren?
>> STUDENT: printf.
>> JASON HIRSCHHORN: printf?
>> STUDENT: Ja.
(
>> JASON HIRSCHHORN: (
>> STUDENT: "Giv mig en streng.
>> JASON HIRSCHHORN: "give mig en str - ups -
streng.
>> STUDENT: / n ") semikolon.
>> JASON HIRSCHHORN: Afslut strengen, lukkede parenteser, semikolon.
>> STUDENT: Ja.
Og så næste linje, snor s = få strengen.
>> JASON HIRSCHHORN: String s = få strengen.
>> STUDENT: Ja.
Og så ()
>> JASON HIRSCHHORN: ()
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: semikolon.
Fantastic.
Så jeg har tænkt mig at få en snor og Jeg har tænkt mig at gemme det i hvad?
Hvad er variabel kaldet som du har oprettet?
>> STUDENT: String s.
>> JASON HIRSCHHORN: Den variable er kaldet S.
Det er typen streng.
Præcis.
Næste ting, vi ønsker til, er udskrive hvert tegn på en ny linje.
Hvem kan give mig den kode?
[Uhørligt]?
Kan du give mig det?
>> STUDENT: Sure.
>> JASON HIRSCHHORN: Lad os gøre det.
Og ked af det.
Jeg kan ikke lide at gentage, hvad du siger fordi du får det rigtige, men jeg
nødt til at gentage det, så når de transskribere dette, kan de få alle
teksten ud på transskriptioner.
Så du kan bare holde taler.
Desværre har jeg at sige det over dig.
Undskyld, men -
>> STUDENT: Det er fint.
For int i = 0
>> JASON HIRSCHHORN: For int i = 0
>> STUDENT: I ​​mindre end -
>> JASON HIRSCHHORN: semikolon.
>> STUDENT: Før dette, kan vi sætte en variabel, så du får int navn længde?
>> JASON HIRSCHHORN: Åh, det gør du ikke ønsker at sætte semikolon?
OK.
Så hvad vil du gøre efter nul?
>> STUDENT: Jeg ønsker at få streng længde s og
indstille det til en variabel?
>> JASON HIRSCHHORN: OK, så hvordan gør jeg det?
>> STUDENT: Så du gør int længde =
>> JASON HIRSCHHORN: Int længde =
>> STUDENT: S-T-R-L-E-N.
>> JASON HIRSCHHORN: S-T-R-L-E-N -
>> STUDENT: Af sek.
Parentes.
>> JASON HIRSCHHORN: (r).
>> STUDENT: Og så tror jeg du er nødt til at sætte et semikolon mellem de to ints.
>> JASON HIRSCHHORN: Et semikolon efter nul?
>> STUDENT: Ja.
Derefter sætte et semikolon efter det, og du siger, jeg mindre end længden.
Jeg mindre end længden, og som er variabel.
>> STUDENT: Og så semikolon.
>> JASON HIRSCHHORN: semikolon.
>> STUDENT: i + +.
>> JASON HIRSCHHORN: i + +.
Der er vores for-løkken.
OK, inde i løkken.
>> STUDENT: Og derefter gøre printf.
>> JASON HIRSCHHORN: printf.
>> STUDENT: Beslag.
>> JASON HIRSCHHORN: parenteser citater.
>> STUDENT: Parenteser, citater,% c / n.
>> JASON HIRSCHHORN:% C, OK.
>> STUDENT: / n.
>> JASON HIRSCHHORN: / n.
>> STUDENT: Lukket citater.
>> JASON HIRSCHHORN: Lukket citater.
>> STUDENT: Komma.
>> JASON HIRSCHHORN: Komma.
>> STUDENT: S.
>> JASON HIRSCHHORN: S.
>> STUDENT: Bracket jeg.
>> JASON HIRSCHHORN: Bracket I.
>> STUDENT: og lukkes parenteser.
>> JASON HIRSCHHORN: Lukket parenteser.
>> STUDENT: Og så semikolon.
>> JASON HIRSCHHORN: semikolon.
Fantastic.
Så lad os gemme denne.
Foretag stave.
Oh boy.
Jeg har fået et par fejl.
Første fejl på linie 11, det siger, forventede udtryk, og det er at give
mig en fejl, at den anden int, der er fejlen.
Der nogle fejl rundt der.
Er der nogen vide, hvad fejl, der er?
Kurt?
>> STUDENT: Jeg tror det er meningen at være et komma og ikke et semikolon.
>> JASON HIRSCHHORN: OK, et komma i stedet for et semikolon.
Så, er, at alt, hvad vi har brug for at løse?
>> STUDENT: Nej
>> JASON HIRSCHHORN: Hvad andet har vi brug for at fastsætte?
>> STUDENT: Vi er nødt til at medtage string.h.
>> JASON HIRSCHHORN: Medtag string.h.
Hvor har jeg brug for at optage det?
>> STUDENT: Samme sted du herunder de andre ting, højre
efter bl.a. stdio.h.
>> JASON HIRSCHHORN: Lad os se, om det løber det første fordi generelt, jeg kan lide
at fastsætte en ting først, og derefter køre det, og derefter se de fejl, vi får.
Så vi kommer til at rydde terminalen med styring n, lad os gør magi.
Så en anden fejl på linie 11.
Forventet semikolon.
Og jeg er stadig få fejl på denne linje.
Så det har ikke givet mig en fejl der siger det ikke forstår, hvad strlen er,
men det giver mig fejl om dette linje, så hvad der ellers er der galt?
Mark?
Marcus.
>> STUDENT: Har du nødt til at fjerne den anden int erklæring?
>> JASON HIRSCHHORN: Fjern den anden int.
Lad os prøve dette.
Nu rydde terminalen.
Foretag stave.
Fejl.
Implicit erklære bibliotek Funktionen strlen.
Så nu er vi ser denne fejl.
Hvad skal vi nødt til at inkludere?
>> STUDENT: string.h.
>> JASON HIRSCHHORN: Medtag string.h, Vi vil gøre # include string.h øverst
af skærmen.
Lad os gemme, gør stave.
Nu kompileret.
Så igen de ting, vi havde brug for Husk linje 12 i vores til løkken, når
vi sætte den op, int i = 0, længde = strlen (r).
>> Dette er en fantastisk strategi.
Stilen i dette er stor, Udformningen af ​​dette er stor.
Vi kan gå ind i disse grunde senere, men på denne måde behøver du kun at ringe
strlen gang i stedet for hver eneste gang du kører gennem løkken.
Men du nødt til at bruge et komma der og du behøver ikke int igen.
Hvis du erklære både dem variabler samlet, du
behøver ikke int igen.
Og så hvis du vil bruge strlen, der er et andet bibliotek
funktionen ikke inkluderet i stdio.h eller cs50.h, gør
at du medtager string.h.
Kurt?
>> STUDENT: Så hvis du ikke behøver at sige, hvilken type længde er, betyder det
mener det skal være en int?
Du kunne ikke have to forskellige typer der?
>> JASON HIRSCHHORN: Så du kunne have to forskellige typer.
Længde er en int her, selv om.
Længde er en int, fordi det er komma og derefter det samme.
>> STUDENT: Så det forudsætter, at det går at være den samme som den første?
>> JASON HIRSCHHORN: Præcis.
Vi kommer ikke til at gøre det nu, men du kan omfatte to variabler om
samme linje ved hjælp af en datatype.
Så int x, ville y skabe to variabler.
Så int x, y, hvis vi gør det, det giver mig en ubrugt variabel x og y, fordi
vi ikke bruge dem.
Så sætte tomrum før, er bare en fancy trick, hvis du ikke bruger
noget, at bruge det.
Men som du kan se, jeg skaber x og y på samme linie med et komma.
Det er at skabe to heltal lige der.
Så ja, helt muligt at skabe to ting på samme linje
adskilt af et komma.
Lad os slippe af dem, selv om.
>> Så der er magi.
Tak fyrene for kodning det for os.
Lad os gøre det en gang mere, køre den.
Giv mig en streng.
[Uhørlig] du gjorde det meste af det.
Hvad er strengen?
>> STUDENT: Hello.
>> JASON HIRSCHHORN: Hello.
H-E-L-L-O, hver karakter på én linie.
Ser godt ud.
Lad os køre den igen.
Altid vil kontrollere for hjørne sager.
Hvad er en god hjørne tilfælde at kontrollere?
>> STUDENT: En række?
>> JASON HIRSCHHORN: En række.
Så jeg vil sætte i 1. og den udskriver 1..
Det er ikke beder om breve, så det ser ud som numre arbejde.
Godt hjørne tilfælde at kontrollere.
Hvad er en anden god hjørne tilfælde til at kontrollere?
>> STUDENT: En tom streng.
>> JASON HIRSCHHORN: Hm?
>> STUDENT: Ligesom en tom streng.
>> JASON HIRSCHHORN: Tom streng.
Så lad os ikke sætte i noget.
Og hvad bliver udskrevet?
>> STUDENT: Ingenting.
>> JASON HIRSCHHORN: Nothing.
Synes ligesom det virker.
Du kan prøve flere hjørne tilfælde, men generelt tal, en anden data
store at prøve, samt er intet.
Intet, nul, negativer er altid store ting at prøve og ting, du
bør test, tingene sikkert vi vil teste for og Check 50 vil teste for.
Eventuelle spørgsmål om spell.c?
>> OK, lad os hovedet tilbage.
Jeg har endnu et program for jer at skrive.
Det hedder students.c.
Dette er et program, der beder brugeren om fem navne, så tilfældigt vælger
og udskriver et af navnene.
Dette program er en lille smule mere involveret end de sidste to skrev vi,
så hvorfor ikke vi tager fem minutter at kode det individuelt, og så vil vi
kode det som en gruppe.
>> Dette program også inddrage nogle ting du måske ikke har set før, så hvis
du har et spørgsmål om, hvordan man gør Jeg gør det, hæve din hånd.
Jeg kommer over og pege dig i den rigtige retning.
Men vi gør det også, fordi det vil være en god måde at introducere nogle
emner, der er tricky.
>> Så det virker, right?
>> STUDENT: Ja.
>> JASON HIRSCHHORN: Når du tænder på en Problemet sæt, er der mange måder at gøre
det, men nogle er mere elegant end andre.
Lad os dykke i.
# Include cs50.h.
# Include stdio.h.
int main tomrum, krøllede parenteser.
Inde i krøllede parenteser, Jeg har to bemærkninger.
Den første er, spørger bruger fem navne.
Den anden er, tilfældigt vælge og udskrive et af navnene.
Så lad os gøre det første, så spørg brugeren om fem navne.
Hvem har bedt brugeren om fem navne og kan fortælle mig hvordan man gør det?
Kun to mennesker gjorde den første del.
Tre mennesker gjorde den første del.
Fire, fem.
Tom, hvordan gør du det?
>> STUDENT: Du ville erklære en streng og derefter navn, beslag fem.
>> JASON HIRSCHHORN: String nævne beslag fem.
Så hvad er denne linje laver, string name beslag fem?
>> STUDENT: Du ville erklære et array af strenge.
>> JASON HIRSCHHORN: Dette er et array af strenge.
Hvor mange strenge går at passe ind her?
>> STUDENT: Five.
>> JASON HIRSCHHORN: Five.
Excellent.
Vi kommer til at kalde det navne, fordi vi kommer til at få flere virksomheder.
OK, det næste?
>> STUDENT: Og så skal du har en for-løkke -
>> JASON HIRSCHHORN: For loop.
>> STUDENT: - for i = 0.
>> JASON HIRSCHHORN: for (int i = 0.
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: semikolon.
>> STUDENT: Jeg mindre end fem.
>> JASON HIRSCHHORN: Jeg mindre end fem.
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: semikolon.
>> STUDENT: i + +.
>> JASON HIRSCHHORN: i + +.
>> STUDENT: og lukkes parenteser.
>> JASON HIRSCHHORN: Lukket parenteser og derefter nogle krøllede parenteser.
Inde i krøllede parenteser?
>> STUDENT: Og så printf.
>> JASON HIRSCHHORN: printf.
>> STUDENT: Åbne parenteser, navn% d.
>> JASON HIRSCHHORN: Undskyld?
>> STUDENT: Navn.
>> JASON HIRSCHHORN: Navn.
>> STUDENT: Og så mellemrum og derefter% d.
>> JASON HIRSCHHORN: Navn, rum,% d.
>> STUDENT: Og så / n, og derefter lukket.
>> JASON HIRSCHHORN: So navn, plads, % D / n, lukkede parenteser.
>> STUDENT: Komma, i + 1.
Undskyld.
Lukket citat og derefter komma, i +1.
>> JASON HIRSCHHORN: Lukket citat, komma, i +1.
>> STUDENT: Ja.
Og så den næste linje -
>> JASON HIRSCHHORN: i + 1.
>> STUDENT: Ja.
Og så det næste dias er navne beslag jeg.
>> JASON HIRSCHHORN: Next linie er navne beslag jeg.
>> STUDENT: = få streng.
>> JASON HIRSCHHORN: = Get -
kapital G-E-T -
streng.
Ups, undskyld.
>> STUDENT: åben, lukket parenteser og derefter -
>> JASON HIRSCHHORN: Åben, lukket parantes.
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: semikolon.
OK, så du initialisere den vifte af strygere, navne, og derefter gå gennem en
for loop, og fem gange udskrive nogle beder til brugeren og derefter gemme
fem strenge.
Er der nogen, der har nogen tilpasninger af denne?
Tom, jeg tror, ​​at alle er enig med dig.
Det ser godt ud.
OK.
Hvorfor gjorde du i +1, selv?
>> STUDENT: Jeg mener, ikke har at være, men i +1, således at det er
navn ene at nævne fem.
Ellers ville det være navn nul at nævne fire.
>> JASON HIRSCHHORN: Så du gjorde i +1 fordi det ellers ville have
udskrives nul gennem fire fordi det er, hvordan computere tror, ​​men mennesker
ikke rigtig læst sådan.
Det er en anden ting du støder.
Nogle gange, når du udskriver noget til brugeren, vil du ønsker at gøre det til en
lidt kønnere, og gør i +1 i dette tilfælde er en
måde at gøre det smukkere.
>> Jeg kan også se fem gange, string navn er fem, jeg er mindre end fem.
Jeg ved, hvor du fik det fem.
Du fik det fra mig fortælle dig fem navne.
Men hvis vi ønskede at gøre koden a lidt mere robust, én ting, vi
kunne gøre, er herude, uden for int, vi kunne gøre noget som dette,
# Define, og vi kunne gøre NAVNE 5..
>> Så dybest set, hvor jeg skriver kapital N, hovedstaden A, kapital M, hovedstaden E
kapital S, denne streng, vil det erstatte at med 5 i koden.
Eller lad os bare kalde det - vi vil bare kalde det nummer.
Så jeg definere alle hætter NUMMER at være 5.
>> Så nu hvor jeg har det nummer 5, jeg kan erstatte det alle hætter NUMMER.
Og nu, hvis jeg ønsker at ændre antallet navne, er alt jeg behøver at gøre
denne ene linje, linie fire, hvor jeg har # Define nummer 5, ændre det til 10,
eller ændre det til 4..
Når din kode bliver længere, er du ikke kommer til at huske alle de steder, du
sætte, hvor mange navne du ville, og For at du ikke at gå glip af en, det er
en god måde at gøre det, for at finde noget op øverst og så bare bruge den sætning
overalt i hele din kode.
Marcus?
>> STUDENT: Er der stilistisk foretrukne end globalt definerer en
konstante n?
>> JASON HIRSCHHORN: So, er, at stilistisk foretrukket end globalt
definerer en konstant n?
Så du siger du kunne gøre, int nummer = 5?
>> STUDENT: Har de konsonanter i C eller nej?
>> JASON HIRSCHHORN: Eller const - i lige.
Så du siger bare en global variabel?
>> STUDENT: Ja.
>> JASON HIRSCHHORN: So stilistisk, der er ingen nødvendigvis én rettighed
besvare, men begge af dem er bedre end bare at smide disse tilfældige
numre i hele din kode.
Vi kalder dem magiske tal.
Når jeg ser på din kode, eller når nogens læsning gennem det, de
ønsker ikke blot disse tilfældige tal der ikke giver mening.
Selv antallet 26, som generelt er antallet af bogstaver i alfabetet,
det er bedre at definere ALPHABET op øverst og gemme nummeret 26 i denne streng,
hvis det giver mening.
>> Eller på problemet angive én, snarere end - igen, vi ikke taler om dette på
den tid, men i stedet for bare at smide i en 25 overalt eller 10, kan du
gemme nummeret 25 som fjerdedel eller 10 som DIME, og det gør det lettere for
hvem der læser gennem din kode til forstå, hvorfor du har valgt dette nummer.
Og også for dig, at hvis du nogensinde vil opdatere din kode, det gør det lidt
mere robust.
Ja?
>> STUDENT: Er denne kode også vil at være til rådighed for os efter?
>> JASON HIRSCHHORN: Alle disse koder at vi har skrevet sammen er
vil blive sendt til dig fyre og tilgængelige.
Ja.
Så spørg brugeren om fem navne.
Tilfældigt vælge og udskrive et af de navne.
Hvem gjorde denne linje?
Dette er den vanskeligste linje her.
Undskyld, Tom.
Du gjorde et virkelig godt stykke arbejde, men dette er en smule mere indviklet.
Marcus, gå videre.
>> STUDENT: Godt første, du kommer til at behovet for at medtage stdlib.h og time.h.
>> JASON HIRSCHHORN: Så du siger på toppen, indeholde to biblioteker.
Du vil have mig til at omfatte S-T-D-L-I-B dot H, Standard Bibliotek, og hvad
var den anden?
>> STUDENT: Time.h.
>> JASON HIRSCHHORN: # include time.h.
Så det er to flere biblioteker.
Jeg antager nu vi kommer til at bruge funktioner, der er indeholdt i disse
to, hvilket er hvorfor du brug for at inkludere dem?
>> STUDENT: Så først er du lyst til at skrive srand.
>> JASON HIRSCHHORN: Srand.
>> STUDENT: (tid (0)
>> JASON HIRSCHHORN: Undskyld.
Srand (tid (
>> STUDENT: 0.
>> JASON HIRSCHHORN: 0.
>> STUDENT:)), semikolon.
>> JASON HIRSCHHORN: Endnu lukket parentes?
Semikolon.
Jeg har tænkt mig at bare erstatte Deres nul med NULL.
Det vil gøre ved det samme, men generelt, vil du se NULL, hvilket
vi vil tale om dette linje i et sekund.
>> STUDENT: Stilistisk bedre?
>> JASON HIRSCHHORN: Generelt, folk højre NULL, men samme ting.
>> STUDENT: Og så int navn.
>> JASON HIRSCHHORN: Int navn.
>> STUDENT: =
>> JASON HIRSCHHORN: =
>> STUDENT: Rand.
>> JASON HIRSCHHORN: Rand.
>> STUDENT: ()
>> JASON HIRSCHHORN: ()
>> STUDENT: Modulo nummer.
>> JASON HIRSCHHORN: Hvad er modulo?
Tegnet?
Den procentvise karakter?
>> STUDENT: Percent karakter.
Modulo nummer, som du definerede op øverst.
>> JASON HIRSCHHORN: Modulo NUMMER.
>> STUDENT: Og så semikolon.
>> JASON HIRSCHHORN: semikolon.
>> STUDENT: Og så ny linje, printf.
>> JASON HIRSCHHORN: printf.
>> STUDENT: (
>> JASON HIRSCHHORN: (
>> STUDENT: "
>> JASON HIRSCHHORN: "
>> STUDENT:% s / n
>> JASON HIRSCHHORN:% s / n
>> STUDENT: "
>> JASON HIRSCHHORN:% s / n "
>> STUDENT: Komma, rum navne.
>> JASON HIRSCHHORN: Space -
>> STUDENT: Åh, jeg gætte, hvad vi kalder det her?
>> JASON HIRSCHHORN: Vi kaldte det navne.
>> STUDENT: Åben konsol navn.
>> JASON HIRSCHHORN: Åbent beslag, navn.
>> STUDENT: Lukket beslag.
>> JASON HIRSCHHORN: Lukket beslag.
>> STUDENT:)
>> JASON HIRSCHHORN:)
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: semikolon.
OK, lad os gemme.
Lad os gøre denne kode.
Studerende.
Lad os køre denne kode.
Studerende.
Ikke. / Elev. . / Studerende.
Navn én.
Vi siger David.
Name to, RJ.
Nævn tre, Rob.
Navn fire, Lucas.
Navn fem, Joseph.
Og så udskriver Joseph igen.
>> Så lad mig køre det igen.
Lad mig gøre de samme navne.
David, RJ, Rob, Lucas, Joseph.
Og det gav mig David denne gang.
Så jeg gjorde det samme, men det gav mig en anden ting, og det er
grund, selvfølgelig, beder vi til et tilfældigt navn.
Så jeg tror, ​​baseret ud af mig vandre rundt i lokalet, at de fleste mennesker
sandsynligvis fået den første del til højre, etablering at array og derefter få
alle navnene.
Jeg taler om linjer 10 gennem 16..
Men ledningerne 18 gennem 21 er formentlig nogle ting, du ikke har set før,
så lad os gå igennem dem.
>> Denne linje, srand tid NULL er væsentlige -
sorry, lad os springe ned en linje, rand ().
Det giver dig et tilfældigt tal, et tilfældigt heltal.
Og hvis du rammer mand rand, hvilket en masse af jer gjorde -
M-A-N space R-A-N-D -
i terminalen som dette, M-A-N space R-A-N-D, tryk Enter.
Du ville komme op til den manuelle og ville være i stand til at læse, at rand
kommando udgange num pseudo tilfældige bytes efter såning af tilfældige tal
generator gang.
>> Så det er en beskrivelse.
Det er, hvad Rand gør, giver du et tilfældigt tal, når
du kalder denne funktion.
Desværre, det er ikke rigtig tilfældige fordi hvis du bare kalde tilfældige
uden at få det nogle frø, nogle udgangspunkt vil det altid vælge
det samme, og det bruger en formel at bestemme den næste.
Så hvis du kalder rand, det vil bare give dig det samme.
Det vil være meget forudsigelig.
Det faktisk ikke vil være tilfældige.
>> Så hvad vi skal gøre, pr Marcus ' instrukser til mig, var frø rand
med noget andet, hvilket er, hvad Den srand funktionen gør.
Det frø rand med noget lidt mere tilfældig end den samme ting, og
han såning det med tiden NULL, hvilket er, bare ved konvention, den nuværende
tid i sekunder.
>> Så du antager, at alle ikke er vil køre koden på det nøjagtige
samme sekund, så det er en sikker satsning, at tid NULL vil være anderledes
hver gang denne kode køres.
Sikker satsning, at dermed, srand vil skabe grobund rand med noget andet hver
eneste gang.
Så ved konvention, ønsker, når vi gør en tilfældige tal, vi skriver denne linje,
srand tid NULL, at give os en meget mere random seed, og så løber vi
rand, hvilket giver os et tilfældigt tal.
Ja?
>> STUDENT: Kan du sige, hvad du mener med frø?
>> JASON HIRSCHHORN: Seed som -
så rand kommer til at vælge nogle og det kommer til at bruge nogle
formel til at komme der.
Så det kommer til at starte med noget og derefter gøre det til grundlag noget
off af denne formel.
Hvis du altid give det de samme ting, det altid kommer til at dreje den i
samme ting.
Så første ting du giver det er frø.
Så du ønsker at give det noget anderledes at starte ud med, og så det
vil gøre det til noget andet.
>> Og så endelig, linie 20, denne% kaldes
modulo, og det er forvirrende.
Det er noget, der er en lille smule anderledes her, at du ikke rigtig
har i det virkelige liv matematik.
Men det væsentlige, når du tager en kæmpe nummer, og du opdele i C, hvad
sker med resten?
>> STUDENT: Det bliver afkortet.
>> JASON HIRSCHHORN: Det bliver afkortet.
Så 20 divideret med 3 er hvad?
Hvad betyder det at vende tilbage til dig, 20 divideret med 3.
Beklager, 10 divideret med 3.
Hvad betyder det at vende tilbage til dig?
>> STUDENT: [uhørlig].
>> JASON HIRSCHHORN: 10 divideret med 3 lige returnerer 3, ikke 3 resterende 1.
Så hvad 10 modulo 3 returnerer er bare resten, 1..
Så hvis du ønsker at vide, hvad 10 divideret med 3 faktisk var, ville du
gøre 10 divideret med 3, ville du få din 3. og så ville du gøre 10 modulo 3, og
du ville få en 1.
Så du ville indse, at 10 divideret med 3 er 3, resten 1..
>> Og i denne linje, kunne rand være vilkårligt heltal væsentlige.
Så modulo siger, dividere det med nummer, der er i dette tilfælde 5.
Og hvis du nogensinde dividere med et tal, heltal skal altid være mindre end
dette nummer.
Så hvis du dividere med et nummer 5, resten altid vil være
nul gennem fire.
Det er bare, hvordan matematik fungerer.
>> Så et stort antal moduloed af en mindre nummer vil altid vende tilbage
resten og vil altid returnere nogle nummer, der er mindre end det antal, du
divideret med.
Er der nogen har nogen spørgsmål om modulo, fordi det vil komme i meget,
meget praktisk, så jeg vil være sikker på alle forstår det?
Cool.
Og vi så, at dette program virkede.
OK, bevæger sig på.
>> Så næste, vi kommer til at gå ind funktioner, og vi kommer til at gå
gennem resten af ​​denne ting pretty hurtigt, fordi jeg ønsker at komme til
kommandolinjeargumenter.
Så funktioner er væsentlige, som du har set, sorte bokse.
De tager tingene i kaldet parametre, de gør noget for dem, enten
ændre dem eller oprette nogle bivirkninger, og endelig, de spytter
ud af noget, som er returværdien.
Kan nogen give mig en grund Derfor vil vi bruge funktioner?
Nogen?
En af grundene til at vi ville bruge funktioner?
Nogen?
Jeg så to hænder.
Hvad er en god grund?
Marcus?
>> STUDENT: Hvis du har til at kalde den samme stykke kode flere gange.
>> JASON HIRSCHHORN: OK, hvis du har brug at kalde den samme bid af
kode flere gange.
Jeff, havde du en anden grund?
>> STUDENT: Lige så du kan kode mindre.
>> JASON HIRSCHHORN: Du kan kode mindre.
Right.
Hvis du ønsker at gøre noget meget -
i den foregående kode, kunne jeg have skrevet få strengen fem gange, men en
for-løkke gør det ser pænere og du nødt til at skrive mindre kode.
Funktioner er en lignende idé.
Hvis jeg ønsker at gøre det samme en masse, flytte det til en funktion, og kalde det
fungere hver gang.
Det vil gøre det noget for dig.
Det er en stor grund at bruge funktioner.
>> Så anatomi af en funktion.
En funktion vil generelt se sådan ud.
Det vil starte med returtype, så vil du få navnet.
Det vil tage argumenterne, ellers kendt som de parametre, og inde
disse krøllede parenteser, vil du skrive din kode.
>> Vi har set én funktion en masse.
Det er main.
Her er main overlejret på at anatomi jeg havde tidligere.
Hvad int lige her betyde?
Hvad betyder int betyder?
Når jeg skriver int main (void).
>> STUDENT: Return type?
>> JASON HIRSCHHORN: Undskyld?
>> STUDENT: Afkastet type.
>> JASON HIRSCHHORN: Int er returnere typen helt rigtigt.
Main returnerer en int.
Hvad er vigtigste?
>> STUDENT: Funktion navn.
>> JASON HIRSCHHORN: Main er den funktionens navn.
Helt rigtigt.
Og ugyldig?
Hvad er ugyldig i parentes?
>> STUDENT: Det tager ikke eventuelle eksterne værdi.
>> JASON HIRSCHHORN: So tomrum -
højre.
Inde i parentes, satte vi parametre eller argumenter de
funktion tager, hvad der går inde i det sorte boks.
Når du skriver ugyldige, du siger dette tager intet i.
Så int main void betyder main s ikke at tage noget i.
>> Inde i krøllede parenteser, har vi nogle kode, og så må vi se, i slutningen
returnere nul.
Hvad betyder afkast nul betyder?
Nå, vi talte om returtype.
Main nødt til at returnere en int.
Det er, hvad denne linje gør.
Den returnerer en int, nul.
>> Selvfølgelig har vi ikke set, at en masse fordi programmeringen vi gør med
de maskiner, vi gør, og de compilere vi bruger i dag, du
har ikke brug for denne linje.
Main er speciel nok, at det kender når du når til slutningen af ​​main, bare
returnere nul, hvis alt gik godt.
I virkeligheden, hvis noget ikke går godt main vil ofte returnere en anden
tal signalerer, at noget gik galt med dit program.
>> Så generelt, når du ser koden, du ikke skrive tilbage nul, men det er godt
at vide, at det sker bag scener fordi når du skriver
en anden type af funktion, du vil få brug for at
omfatte en returledning.
Hvis du siger jeg har tænkt mig at returnere en int, er du nødt til
skrive returnere noget.
Hvis du siger ugyldig op her på begyndelsen void main ugyldig for
eksempel, så er det ikke vender tilbage noget - void betyder intet -
så du behøver ikke at returledningen.
Men du nogensinde skrive noget, der ikke er ugyldig for tilbagesendelse typen, du har brug for
en linje, der siger afkast, og du nødt til at sætte noget der
der matcher den type.
Eventuelle spørgsmål om det?
Sød.
>> Scope.
Det er noget, vi har inde på så godt.
Hver variabel, som vi ved, har en bestemt omfang, og det er dybest set
taler om hvor variablen kan eller ikke kan refereres.
Og jeg vil gerne sige, hvad der sker i krøllede parenteser forbliver
inde i krøllede parenteser.
Så for eksempel, hvis vi ser på denne kode, vi definerer en global variabel
uden for main, int a, op her på toppen.
Vi kalder en anden int en indvendig main.
Vi har nogle mere krøllede parenteser og vi kalder en anden int a.
>> Vi har tre A'er i kode.
Disse er ikke de samme ting.
Jeg har oprettet tre forskellige variabler.
Derefter inde i disse indre krøllet seler, jeg siger en = 4.
Hvilket et er, at vi taler om det første, den anden,
eller den tredje?
>> STUDENT: Den tredje.
>> JASON HIRSCHHORN: Det taler om den tredje.
Alle dem en er faktisk kan være talte om i dette særlige
eksempel fordi deres anvendelsesområde alt går ind i disse inderste krøllede parenteser.
Men når du kalder tingene på samme navn, der er noget, der hedder at skjule.
Så du kun beskæftige sig med eller fastsætte eller bruge seneste variabel, eller den ene
tættest på dig.
Så herinde, er denne tredje en nærmest denne linje, en = 4, så det
påvirker den tredje.
Og den sidste linje, a = 2, som en er , at tale om det første, andet,
eller tredje en?
>> STUDENT: Anden.
>> JASON HIRSCHHORN: Det taler om den anden en.
Selvfølgelig, et tredje er tættest på det i koden, men den tredje en
eksisterer ikke udenfor de krøllede parenteser.
Når du kommer til dette lukkede krøllet bandage, det er ligesom det er gået,
væsentligt.
Så den eneste to, du har tilbage, er dem to første, og selvfølgelig nu
det er tættest på den anden.
>> Så det er en god ting at huske om rækkevidde.
For eksempel er jeg sikker på du er stødt på dette i en gøre, mens løkke.
Hvis du initialiserer variablen indeni do while-løkken, og så skal du prøve at
adgang til det udenfor, har du sandsynligvis fik nogle advarsel som dette
variabel findes ikke.
Det er på grund af omfanget idé, at tingene eksisterer kun
inden for disse krøllede parenteser.
Krøllede parenteser er som en kæmpe knus, at du giver din kode, er en anden
måde at tænke på det.
>> Så dette er en anden funktion, noget for jer til koden, hellofunction.c.
Vi kommer til at springe, at for nu, men det er noget jeg opfordre dig til
øve på egen hånd.
Skriv et program, hvor de vigtigste opkald en anden funktion, der udskriver en
hilsen til brugeren.
Det er hovedsageligt tager hej verden og abstrahere, at printf ind
en anden funktion.
Men vi kommer ikke til at gøre det lige nu fordi vi ikke har så meget tid
venstre som jeg kunne have ønsket.
>> Så funktionen erklæring.
Vi har set dette før så godt.
Hvis du ønsker at skrive en anden funktion, du nødt til at lade computeren vide og
main ved, at det eksisterer.
Så hvad vi er over main, vi skriver afkastet type, navn og
parametre, og derefter ned under main, hernede, vi faktisk kopiere denne linje
og derefter skrive den faktiske kode.
Så på denne måde, hvis du kalder funktionen i main i toppen, ved main som
hej eksisterer, for eksempel, hvis jeg var at kalde hej, og så er det ser ud til at
gennemførelsen ned nedenfor.
Hvad sker der, hvis jeg ikke medtage denne line up top, ugyldiggøre hej (void)?
>> Hvis jeg ikke medtage denne linje og de vigtigste opkald Hej, jeg er
kommer til at få en fejl.
Jeg har tænkt mig at få en fejl, fordi compileren ikke kender
at denne ting eksisterer.
Dette svarer til, hvorfor vi gør # include cs50.h.
Hvad det væsentlige cs50.h gør er at sætte få strengen deroppe.
Det er at sætte få int derop.
Det er at sætte alle disse funktioner prototyper op før main så når
du kalder dem i hoved, vigtigste ved at disse ting eksisterer.
Det er, hvad disse. H-filer gør.
Og så hvis du vil lave din egen funktion, du har lært at sørge
du sætte denne prototype deroppe.
Eventuelle spørgsmål vedrørende denne hidtil?
>> Kommandolinjeargumenter.
Dette er, hvad vi kommer til at afslutte , og derefter forhåbentlig vil vi
klemme i nogle Pset.
Jeg ved ikke, om vi vil være i stand til at presse at i grund af den tid, men
med jer, der er her, og hvis du fyre ønsker at sige efter for lidt, vi
kan gå over det udenfor.
Men vi kommer til at slutte af med kommandolinjeargumenter
i de sidste 15 minutter.
Vi vågne, Michael?
Du er vågen?
Godt.
Jeg ved ikke, hvis du sover med lukkede øjne.
Det ville være en vanskelig opgave.
>> Kommandolinjeargumenter.
Det er en måde at videregive oplysninger i et program.
Til sidst vil vi støder andre.
Men det væsentlige, vi kommer til at stoppe skriver int main (void), hvis vi ønsker at
tage nogle kommandolinjeargumenter.
Vi kommer til at skrive denne ting kaldet int main (int argc,
string argv, parentes.
Det er forvirrende.
Det er en masse af bogstaver, der ikke er i human engelsk, så vi kommer til at
pakke dem lige nu.
>> Argc står for argument count -
og igen, alle disse vil være tilgængelige online -
og det er antallet af argumenter.
Argv står for argumentet vektor og det er de argumenter, selv.
Det er en bred vifte af strenge.
Vi har faktisk set et array af strenge før dag.
Vi skabte en i sidste program, vi kodet.
>> Så her er et eksempel.
Jeg skriver. / Ohai CS50 sektion på min kommandolinje.
Argc i dette tilfælde er lig med 3..
Argv beslag 0 er ohai, argv beslag 1 er CS50, argv beslag 2 er sektion.
Igen argc er antallet af argumenter, og til at rejse dig op lidt
bit, vi altid regne navnet på den funktion som det første argument.
Så i dette tilfælde, er der tre argumenter, navnet på funktionen
og så de to, som jeg har skrevet i.
>> Næste, vi kommer til at spare dem argumenter selv i argv.
Og igen, ligesom vi så før, vi gjorde dette i sidste program, vi kodet.
Du kan flytte gennem den vifte af argv og få de strenge.
Det er væsentligt, hvad vi gjorde ved slutningen af ​​vores sidste program.
Vi har plukket et tilfældigt navn, og derefter gik til navne beslag uanset og udskrives
ud strengen placeret der.
>> Oven på blot én array, fordi strenge selv er arrays, som
talte om, kan du få arrays af arrays, som er
væsentligt, hvad argv er.
En måde du kan tænke dette er rækker og kolonner.
Jeg kan trække det lige nu.
Så argv -
det er ikke sletning.
Lad os trække under ohai.
>> Så hvis jeg skrev i, ohai CS50 sektion, Jeg har tænkt mig at afkorte
sektion for dette eksempel.
Men det væsentlige, min multi-dimensional array, ohai CS50,
vi kommer til at gøre sekt.
Så her kan jeg få adgang til -
hvis jeg bare give argv ét nummer -
dette er forkert.
Hvad er der galt i dette diagram?
>> STUDENT: Start på nul.
>> JASON HIRSCHHORN: Det skal starte med nul.
Jeg bør nok også rotere det, men da jeg allerede har tegnet det på, er jeg
kommer til at forlade det på der for nu.
Men det starter ved nul.
Det er rigtigt.
Undskyld, hvis det er lille.
Kan du fyre slags ser?
Så hvis jeg gør argv 0, jeg vil få alle ohai.
Hvis jeg gør argv 1, vil jeg få alle CS50.
Hvis jeg gør argv 2, vil jeg få alle sekt.
>> Men nu, hvor vi sagde, strygere er arrays selv.
Så hvad jeg kan gøre, er jeg kan behandle denne som en multi-dimensional array, I og
kan gøre noget i retning af argv 0, 0, hvilket giver mig bare
tegn 0.
Argv 0, 1, hvilket giver mig bare timer.
Argv 1, 3, hvilket giver mig bare denne 0 hernede i CS50.
>> Så fordi strings selv er arrays, vi sætter
at i en anden matrix.
Vi har nu array af arrays, og vi kan indekset i vores første array og
derefter indekset i vores andet array.
Og som du ville forvente, vi gør det ved blot at sætte de to -
vi gør de firkantede parenteser bare lige ved siden af ​​hinanden.
Så i dette eksempel, er argv 1 CS50 og argv 1, 2, som vi sagde, er kun 5.
Er der nogen har nogen spørgsmål om flerdimensionale arrays?
Du fyre laver awesome.
Sød.
>> Så vi har et andet program lige her, og dette er den sidste ting, vi er
kommer til at gøre lige nu.
Så jeg vil have dig til at skrive et program, der tager en brugers fulde navn, to og kun
to kommandolinjeargumenter, og endelig, udskrive en hilsen til
bruger, der omfatter deres fornavn.
Så hvorfor tager du ikke tre eller fire minutter til at gøre dette, og så vil vi gå
over det som en gruppe, og så vil vi wrap up?
>> Og igen, her når vi siger tage en brugerens fulde navn pr beskrivelsen
af dette problem, bør det være kommando line argumenter ikke bruger får streng.
Ja, Marcus?
>> STUDENT: Så når du siger to kommando linie argumenter, er at ud over
. det / løbe - eller
>> JASON HIRSCHHORN: Godt spørgsmål.
Do, herunder. / Run, tre kommandolinjeargumenter.
Eller inklusive. / Personlig, i denne sag, da det er den
navnet på denne fil.
Så argc ville være tre.
Men jeg vil kun to argumenter givet til programmet.
Jeg skal præcisere, at.
Jeg vil foretage denne ændring, før jeg sender disse og sende dem til jer.
>> STUDENT: Hvad hvis du har et mellemnavn?
>> JASON HIRSCHHORN: Hvis du har et mellemnavn navn, du er ude af lykke.
Undskyld.
Eller hvis du kun gå af Shakira, du også ud af held.
Ja?
>> STUDENT: Så når folk ikke har cs50.h, de definerer argv
som char stjerne argv?
Eller er det stadig kaldes string argv?
>> JASON HIRSCHHORN: Ja.
Så streng, vi igen maske over, hvad præcis der sker der.
Det kommer til at blive pakket ud måske på onsdag, snart, men.
Det er ligesom støttehjul.
Fordi væsentlige, det er det samme.
>> Så lad os tage et minut til at programmere dette, og så vil vi gå over
det som en gruppe og derefter som jeg sagde, wrap up.
Og jeg tror, ​​de er stadig ekstra slik, så du fyre vil forhåbentlig tage
det, eller skal du tage det.
>> Undskyld hvis du stadig skriver, men jeg ønsker at dykke i, og vi
kan afslutte det sammen.
Så jeg har skrevet i, # include cs50.h, # include stdio.h.
int main (void), klammeparentes, krøllet klampe, inde tre linjer
pseudokode, tage en brugers fulde navn, to og kun to kommandolinje
argumenter, udskrive en hilsen til bruger, der omfatter deres fornavn.
>> Så den første, tage en brugers fulde navn.
Hvem kan hjælpe mig tage en brugers fulde navn?
Hvordan gør jeg, at en del?
Vidste du fyre gøre det første del?
Tag en brugers fulde navn.
Tja, for at den ene kommandolinje argument, hvad skal jeg skrive?
Hvad skal jeg ændre på min funktion erklæring?
>> STUDENT: Du ønsker ikke det at være ugyldig længere.
>> JASON HIRSCHHORN: Præcis.
Jeg ønsker ikke at være ugyldig.
Hvad skal jeg have det at være?
>> STUDENT: Int argc.
>> JASON HIRSCHHORN: Int argc.
>> STUDENT: String argv.
>> JASON HIRSCHHORN: String argv.
>> STUDENT: Bracket, beslag.
>> JASON HIRSCHHORN: Bracket, konsol.
Det er helt rigtigt, og det er faktisk, hvordan jeg har tænkt mig at få
en brugers fulde navn.
De kommer til at sætte det i der.
Så man er færdig.
Så nu vil jeg to og kun to kommandolinjeargumenter.
Så Noah, hvad en måde jeg kan kontrollere antallet af kommandoen
line argumenter, jeg har?
>> STUDENT: Du gør en if-sætning.
>> JASON HIRSCHHORN: Hvis der erklæring, nøjagtigt.
Hvad ønsker jeg som den tilstand?
>> STUDENT: Hvis der argc større end 3.
>> JASON HIRSCHHORN: Hvis argc er større end 3.
Hvis argc større end 3, hvad gør jeg?
>> STUDENT: Return 1..
>> JASON HIRSCHHORN: Tilbage 1..
Vil det sikre, at jeg har to og kun to?
>> STUDENT: Nej
Hvis argc er større end 3 og mindre end 2.
>> JASON HIRSCHHORN: Hvis argc er større end 3 og argc er mindre end 2.
Hvad er en måde jeg kan skrive det på bare én linje, eller uden at bruge det
og Boolean operatør?
>> STUDENT: Det er ikke lig med 2.
>> JASON HIRSCHHORN: Hvis argc er ikke lig med 2.
Præcis.
Så hvis argc er ikke lig med 2, at vil give mig dette program,
personlig, når jeg kører det, og der vil give mig, hvor mange
kommandolinjeargumenter?
Hvor mange vil jeg tjekke for?
>> Undskyld.
Lad mig omformulere det.
Hvis argc = 2, hvor mange ting gjorde brugeren skriver ind i den linje?
>> STUDENT: One.
>> JASON HIRSCHHORN: Blot én.
Så før, du havde ret, Noah.
Hvad skal jeg faktisk nødt til at sætte der?
>> STUDENT: Det svarer 3..
>> JASON HIRSCHHORN: argc ikke er lig 3..
Jeg ønsker at være lig 3, fordi jeg vil personlig plus de to andre.
Så hvis argc ikke gør lige 3 tilbage 1.
Hvorfor sagde du det tilbage 1?
>> STUDENT: Fordi det betyder, at det er forkert.
>> JASON HIRSCHHORN: Det betyder, at det er forkert, Og hvad er det kommer til at gøre?
>> STUDENT: Re-bede brugeren.
>> JASON HIRSCHHORN: Det kommer til at holde op programmet, så det vil have til at køre
igen, men vi har ikke noget her for at bede om dem igen.
Jeg bad ikke om det.
Så det er helt rigtigt.
Retur 1 bare afslutter programmet.
Store.
>> Og udskrive en hilsen til brugeren der omfatter deres fornavn.
Hvordan kan jeg gøre det?
Anna?
>> STUDENT: printf.
>> JASON HIRSCHHORN: printf.
>> STUDENT: ("
>> JASON HIRSCHHORN: (
>> STUDENT: "Hej
>> JASON HIRSCHHORN: "Hej
>> STUDENT:% s
>> JASON HIRSCHHORN:% s
>> STUDENT: / n
>> JASON HIRSCHHORN: / n
>> STUDENT: ",
>> JASON HIRSCHHORN: ",
>> STUDENT: argv
>> JASON HIRSCHHORN: Undskyld?
>> STUDENT: argv
>> JASON HIRSCHHORN: argv
>> STUDENT: Klammer 1..
>> JASON HIRSCHHORN: Kantede parenteser?
>> STUDENT: 1..
>> JASON HIRSCHHORN 1.
>> STUDENT: Og) semikolon.
>> JASON HIRSCHHORN:) semikolon.
Lad os køre dette.
Foretag personlig.
. / Personlig.
Det bare holde op.
Hvorfor skulle det holde op?
>> STUDENT: Du har ikke sat nogen argumenter.
>> JASON HIRSCHHORN: Jeg gjorde ikke sætte eventuelle argumenter i.
Ser godt ud.
Du fyre naglet det.
Så igen, gik ind i argv og du kontrolleres i begyndelsen argc.
Det er to vigtige ting at huske.
Så i vores sidste to minutter før vi forlader, vil vi ikke komme til Pset to, men
som jeg sagde, hvis du ønsker at bo efter i 10 minutter, ville jeg han glad for at gå
over med jer logikken for disse problemområder sæt.
Vi havde en masse at dække i dag så jeg ikke komme til dem.
Generelt, jeg kan lide at medtage at der ved udgangen.
Så hvis du ønsker at holde sig omkring, holde sig rundt i 10 minutter.
Vi vil gøre det.
>> Så, som jeg nævnte i starten, Pset nul og én, vi får at
tilbagemeldinger tilbage til dig så snarest muligt.
Målet er at få Pset en feedback, kommentarerne del,
før Pset to er forfalden.
Så hvis du har lavet nogle fejl eller stilistisk, kunne tingene blive bedre,
du har disse oplysninger, så du vil ikke gøre de samme ting i Pset to.
Og så i fremtiden, får du alle din Pset feedback og kommentarer
tilbage, før den næste er forfalden.
>> Endelig, hvis jeg kunne sætte i en anden stik til feedback.
Dette er dit første afsnit.
Det var min første sektion undervisning i år.
Derned.
Skriv ting, gode og dårlige, og jeg vil bruge det til at gøre
sektionen bedre næste gang.
Og sidst, igen, hvis du har brug noget, så lad mig det vide.
Jeg er mere end glad for at hjælpe jer.
Hvis du bare vil have slik, jeg vil have ekstra slik.
Jeg er glad for at bringe det til dig.
>> Dette vil være en fantastisk kursus.
Dette er en af, hvis ikke min favorit Selvfølgelig har jeg taget i hele mit liv,
og jeg håber, at det vil være, at vidunderligt for dig.
Så jeg ønsker at gøre alt i min magt at gøre det så fantastisk for dig.
Jeg har tænkt mig at sende en e-mail, hvis du er i min sektion eller Noa og
vil forsøge at planlægge med hver af jer en tid til at tjekke ind over
næste par uger, så jeg kan få en fornemmelse af, hvad din CS baggrunden er,
og det vil også hjælpe mig skræddersy disse sektioner passer bedre til dine behov.
Så det er hvad jeg har linet op.
Igen, jeg ser dig udenfor hvis du ønsker at være der.
Dette var uge to afsnit.
Tak fyrene så meget.