>> JASON HIRSCHHORN: Welkom op CS50 sectie, iedereen.
Mijn naam is Jason Hirschhorn.
Ik ben heel veel van jou TFs, maar veel mensen zullen hopelijk worden bij ons
online, uitbreiding studenten of studenten proberen te kijken door afdeling, indien zij
misten hun afdeling die week of gewoon inhalen als ze wilden
om wat materiaal.
>> Dus volgens de syllabus, waarin alle van u hebben gelezen, te corrigeren?
Ik zie veel van het hoofd knikt.
Secties bieden u mogelijkheden om te verkennen van de cursus
materiaal in een meer intieme omgeving, evenals duiken in
hands-on activiteiten.
>> Dus dat is eigenlijk wat we gaat elke week te doen.
We gaan om te gaan door wat we hebben bepaald de meest belangrijke zijn
onderwerpen die in college, en degenen waarschijnlijk ook meest bruikbare en
de meeste kans om te komen op probleem sets en in quizzen, en in uw codering
leven buiten CS50.
Dus we gaan om te gaan in deze onderwerpen, bespreken, gaat over hen,
beantwoorden alle vragen die jullie hebben, en Vervolgens gaan we een hoop te doen
praktijk problemen coderen.
>> Je bracht alle laptops, die is fantastisch.
Dit is een computer wetenschap klasse.
Echter, veel van de oefeningen die we doen, zult u niet uw laptop nodig voor.
Je kan ze doen op een vel papier.
Dat is hoe je gaat doen ze op de quizzen.
En inderdaad, dat is een geweldige manier om echt weet dat je hoe dat te doen
iets als je niet hoeft te controleren 50 vertrouwen op of maken te vertrouwen op, vertellen
u fouten gemaakt.
>> Dus je bent welkom om code op de apparaat of run.cs50.net, dat is
een andere tool die u toelaat om te coderen online, maar ik ook zou aanraden, als
je niet hebt geprobeerd, met behulp van een vel papier en proberen deze praktijk
problemen op een vel papier.
Want nogmaals, dat is uiteindelijk wat je gaat worden
gevraagd te doen op quizzen.
>> Dus laten we beginnen met onze agenda voor vandaag.
We gaan gaan over een aantal normen voor onze afdeling, dan gaan we duiken
in arrays, functies, en de command line argumenten, dat is wat jullie
hebben deze afgelopen week behandeld in college en dan maandag, en wat je te dekken
meer van morgen.
En dan tot slot, we gaan om te praten over pset2.
Als ik een show van de handen kon krijgen als je heb niet gekeken naar het probleem set twee
specificatie.
We zullen iedereen zeggen.
Fantastisch.
>> We zullen over probleem sets praten een beetje, maar als je het probleem set gelezen
specificatie dat alles wat je moet doen.
Als je leest dat voordat je naar klas en sectie op dinsdag vindt u
zijn een geweldige positie.
We kunnen gaan door het probleem set, dat is wat we gaan
te doen aan het eind.
We gaan om te gaan door de logica, zorg ervoor
iedereen is op dezelfde pagina.
>> Ik wil dat je in staat zijn om dinsdag vertrekken voelt zeer comfortabel met wat je
moeten doen voor deze week probleem set, en als je dat niet doet, doe ik het graag
blijven na en werken met je.
Maar dat is een ding dat je moet doen, maar ik denk echt slim zou zijn,
alleen maar om het probleem set gelezen specificatie per klasse op dinsdag,
die het klinkt als een Veel van jullie deden.
>> Ik zal beginnen met een agenda elke klasse zodat je weet waar we heen gaan.
Dit is ook nuttig voor mensen kijken online omdat elke sectie
is kleur gecodeerd, dus als je wilt komen terug en gewoon kijken naar 10 minuten eerder
dan de hele 90 minuten sectie, u kan gewoon naar de kleur gecodeerde sectie
en kijk naar dat deel.
Dus ik heb geprobeerd om ze te breken in nice modules die u zal toestaan ​​om -
als je wilt om terug te komen en te beoordelen, of andere studenten die net
kijken naar een sectie te herzien -
aan de specifieke zaak vinden ze willen aandacht besteden aan
en meer te leren over.
Sweet.
>> Normen.
Ik ben een FOP leider op de campus.
Ik weet niet of iemand wel FOP.
Heeft iemand doen FOP?
Een persoon deed FOP.
Twee mensen deden FOP.
Geweldig.
Dus FOP is het eerste jaar Outdoor Orientation Program.
We nemen eerstejaars in de bossen en maken de meest magische ervaringen van
hun leven, juist?
Yeah.
Geluiden over recht.
>> Dus ik wilde alleen maar om te beginnen met onze allereerste hoofdstuk met een bespreking van een aantal normen
voor de klas en onze relatie omdat ik denk
ze zijn erg belangrijk.
Eerst en vooral, als die van u die zijn mijn sectie hebben ontvangen en
dat is besproken e-mail, ik hou van deze.
Dit is mijn favoriete deel van het jaar.
Ik heb zo opgewonden.
Ik heb hier vandaag al uren.
Ik heb niet verlaten dit gebouw behalve om gaan eten want ik hou CS50 sectie, I
hou van lesgeven, ik hou van werken met jullie.
>> Een van mijn hoogste prioriteiten, zo niet mijn nummer een prioriteit, niet alleen voor
deze klasse, maar ook mijn andere klassen en extracurriculars, is te
ondersteuning van jullie, en jullie helpen, en doe mijn best om ervoor te zorgen dat u
jongens hebben een prachtige, leuke, productieve, boeiende, spannende
ervaring in deze klasse.
Dat is wat ik ben toegewijd aan.
Dat is waarom ik hou van om dit te doen.
Dat is mijn nummer een ding, ondersteunen van jullie.
Als u vragen hebt over hoorcollege, het probleem set, sectie,
leven, zelfs als je wilt praten over leven, aarzel dan niet om uit te reiken.
>> Je hebt mijn mobiele nummer, je mijn email hebt
adres, je hebt mijn Gchat.
U kunt contact met mij op een of alle van die wanneer, maar waarschijnlijk niet zal krijgen
een antwoord wanneer.
Ik probeer en krijg binnen 24 uur terug.
Vaak zal het binnen 20 minuten of 24 minuten.
Ik had moeten zeggen dat om het parallel maken.
Maar je zult een antwoord krijgen vrij snel.
>> Als u Tekst me een uur voor de probleem set is te wijten, zal ik je tot rust
naar beneden en doe diepe ademhalingsoefeningen met u, maar als u nog niet begonnen,
je bent waarschijnlijk niet van plan om te voltooien, en Ik kan niet echt helpen daar
hoewel ik zal mijn best doen.
Dus ik zal er alles aan doen Ik kan om u te ondersteunen.
Aarzel dan niet om uit te reiken of het is in de sectie weer, bij Office Hours
als je me ziet, of zelfs buiten.
Ik ben blij om een ​​keer te ontmoeten en werk door problemen
met of gaan over materiaal.
Dus dat is nummer een, ondersteuning.
Ik zal alles doen wat ik kunnen om u te ondersteunen.
>> Nummer twee, vergadering in het midden.
Zo veel als ik zou willen zijn, ben ik niet almachtig of almachtig of
alwetend, dus ik weet niet alle tijd als wat ik doe wordt steeds
over, als de manier waarop ik het onderwijzen van de onderwerp helpt u bij het leren, of als u
zijn in de war over een onderwerp, maar niet steek je hand of vraag me
of stuur me een e-mail.
Of zelfs als je, nogmaals, zijn verward over iets op het probleem set.
Als je niet uit te reiken naar mij, Ik kan niet weten dat zeker.
Ik ga mijn best doen om te controleren op jullie, zorg ervoor dat alles is
goed gaat, proberen om dingen te leren op een manier die bevorderlijk meeste zullen
uw leerstijlen, maar als er iets wat ik kan doen, laat het me weten.
>> Langs deze lijnen, als je wilt wat hulp met het probleem set, ik ben meer
dan blij om u te helpen de probleemstelling.
We gaan een hoop te doen dat naar de tweede
helft van deze sectie.
Maar als u het probleem niet hebt gelezen sets terug en hebben niet de wandeling keek
door en hebben niet keek naar de korte broek en verwacht dat ik om je te leren
alles wat er gefilmd online, of dat u kunt vinden op CS50
studie, dat is niet echt eerlijk om mij of naar uw andere collega's.
>> Dus alsjeblieft, ik ben meer dan blij om te helpen jullie, maar jullie moet me ontmoeten in
het midden.
Wij hebben ton van middelen voor u beschikbaar op de CS50.
Ik noemde een aantal van hen.
Haal uw voordeel met hen.
Als je in de war bent, ik ben meer dan tevreden om u te helpen uit te leggen in
een andere manier, maar het is niet eerlijk als studenten opdagen op kantooruren,
nog niet begonnen met niets, en het is Donderdagavond en ze verwachten
de TF om ze lopen door elke ding voor het probleem te stellen als gevolg van
s middags de volgende dag.
Zinvol?
Nogmaals, gelieve ons te ontmoeten in het midden.
>> En tot slot, hoge verwachtingen.
Ik ga grading iedereen die zijn te in mijn sectie, of het maken van uw
probleem sets.
Je hebt niet terug gegaan probleem set nul of een nog niet.
Het spijt ons daarover.
Het kostte ons een tijdje om eindelijk vestigen secties, en nu
we kunnen beginnen grading.
>> Ik zal ze contact met u op zo spoedig mogelijk.
Dat zijn enkele van mijn advisees die er zijn.
Ik zal ze contact met u op zo spoedig mogelijk.
En voor het probleem set twee, zullen we op plannen en we beginnen met het krijgen van hen
om u vrij snel na u ze inch
>> Wanneer je je probleem terug te zetten, je zal krijgen scores, zoals u weet uit
het lezen van de syllabus - correctheid, ontwerp, omvang en stijl scores.
U krijgt ook commentaar.
De commentaren zijn belangrijker dan de scores.
Ik denk dat het veilig is om te zeggen dat.
>> Scores zijn slechts een aantal een tot vijf.
Het is moeilijk om te lezen in deze.
Het is moeilijk om te verbeteren van die.
Maar de opmerkingen zullen wijzen op specifieke dingen die je goed of gebieden deed
u kunt verbeteren en sommige geven je ideeën voor de toekomst of alternatieve
manieren om dingen te doen.
>> Dus alsjeblieft, alsjeblieft, lees door de opmerkingen.
Ik heb veel tijd in deze opmerkingen.
Lees via hen en niet alleen omlaag naar de bodem van de
PDF, kijk voor je score, of ga online en vind je score, en dan negeer
de opmerkingen.
Dat is niet hoe je bent gaan beter.
Dat is niet hoe je gaat om te vergroten uw scores uiteindelijk, net
door te kijken naar de scores.
Kijk dan op deze opmerkingen.
>> En langs de lijn van hoge verwachtingen, nogmaals, zoals ik al zei, je
gescoord kunnen worden van een tot vijf.
Twee, drie, en fours zijn de meeste scores
je gaat krijgen.
Enen en vijven zijn allebei echt zeldzaam.
Er is altijd wel dingen we beter kunnen doen.
Wanneer ik code van een programma, is er altijd iets wat ik
beter had kunnen doen.
>> Dus in plaats van te zeggen dat je een vijf de hele tijd op alles en deed
alles perfect, ik denk niet dat elke van ons echt geloven dat we - of
hopelijk doen we niet alles doen perfect de hele tijd.
Dus wees niet ongerust als je kreeg niet een vijf.
Een vijf niet in kaart op een A, een vier niet in kaart op een B, een drie doet
geen kaart op een C. Dat is niet hoe de scores werken.
>> Net als David heeft vele malen, op genoemde end semester al uw scores en
input van mij, uw TF, bij elkaar komen en het bepalen van een eindcijfer voor u.
Maar nogmaals, het is niet vijf, A, vier, B, et cetera.
Dus ga ik hoge verwachtingen hebben voor jullie.
Ik ga goed probleem verwachten sets en ik ga geven
u feedback als zodanig.
En het gaat niet om dat je bent ga een slechtere kwaliteit krijgen.
U wordt ingedeeld in termen van uw vooruitgang van week
nul tot einde cursus.
>> Tenslotte zijn wat betreft verwachtingen in de klas, ik hou van toen
mensen deelnemen.
Ik begrijp sommige mensen voelen zich meer of minder comfortabel deelnemen.
Andere mensen nemen deel niet door het verhogen van hun hand en
praten de hele tijd.
Maar wij in deze klasse gaat worden het doen van een hoop kleine problemen, veel
van mini vragen, en vervolgens een aantal grotere codering problemen.
Dus zeker werken deze oefeningen uit als we dat doen ze op uw computer of op
een vel papier.
>> Maar ik zal ook u enige tijd voordat iemand ooit heeft om wat te beantwoorden
van de vragen die ik stel.
Dus omdat ik zal je wat tijd geven om over nadenken, want we gaan
om dingen te doen in partners soms, Ik zal verwachten dat iedereen
enigszins ingeschakeld.
En bij gebrek aan een betere term is er zal cold calling, die waarschijnlijk
is waar iedereen een kans zal hebben na te denken over het antwoord, en dan
Ik roep u op, en dan U zult zeggen dat het antwoord.
>> Maak je geen zorgen of bang over.
Ik heb het gedaan in het verleden en we hebben gevonden dat het veel meer succes,
Lees ook onderwijsonderzoek op het om bepalen of het een
goede tactiek.
Het is zeer nuttig, vooral als u geven studenten de tijd om na te denken over de
antwoorden en laat hen niet alleen maar komen uit en zeg het recht uit de vleermuis.
Maar als je niet comfortabel voelt beantwoorden, ben ik ook vrij goed in
sensing dat uit, en we gaan niet naar zet je op de plek, met name op
de camera, ook al heeft geen van U bent nu op de camera.
>> Dus dat zijn de normen die ik heb.
Nog een ding in de trant van de vergadering in het midden.
Ik ga jullie geven veel feedback.
Geef me feedback ook.
Er is een website, sayat.me/cs50.
Dus het is een eerlijke feedback.
Als je wilt om het te geven tijdens sectie, Ik krijg een e-mail wanneer het gebeurt.
We nemen een pauze in een beetje te nemen, dus ik zal kijk door de feedback dan.
Als je ooit hebt geen feedback, geef het aan mij daar.
>> Als je me feedback over de Q, dat is prachtig, maar dat is de gids
dat je aan het eind.
Maar dat zal aan het eind semester's zo Ik zal niet in staat zijn om elk van die rekening
feedback en zet hem in het onderwijs jullie beter.
Dus alstublieft, als u een feedback, geef het aan mij.
Ik hou van feedback.
Terug naar FOP, krijgen we feedback hele tijd.
>> Je kan me plussen, goede dingen, delta's, dingen die ik kan verbeteren.
U kunt commentaar geven op mijn outfits.
Dat zal niet zo nuttig, maar je bent welkom om te reageren op een en
alles.
Alstublieft, geef me feedback.
Ik hecht waarde aan het veel en het betekent veel voor me.
>> Nog een norm, fun.
We gaan veel plezier hebben.
Hopelijk in deze cursus, zul je hebben veel plezier.
We zullen snoep hebben ten deel.
We zullen muziek hebben.
We zullen hopelijk krijgen tot men weten nog enigszins goed, dus ik wil
dit naar een leuke, boeiende ervaring zijn.
>> Ik weet dat sommigen van jullie in slaap gevallen in de lezingen wat je eerder vandaag had,
dus hopelijk dat niet wil zijn nu het geval is.
En als het het geval is, enkel snurk niet, want dat zou kunnen
worden gevangen op de camera.
Sweet.
Heeft u vragen, opmerkingen of problemen voordat ik verder over alles wat we hebben
over gesproken?
Geweldig.
>> Dus we gaan om te gaan in arrays eerste.
Dit is hoe je een array te maken.
We hebben dit eerder gezien.
Je hebt een data type, heb je een naam, en dan heb je een grootte.
Hier, ik maak twee arrays.
De eerste is een array van karakters, en heeft 26 ruimten.
De tweede is een array van scores, en heeft drie
ruimte voor drie getallen.
Ja?
>> STUDENT: Zijn al deze dia's ergens beschikbaar voor ons?
>> JASON HIRSCHHORN: Grote vraag.
De vraag was, zijn al deze slides beschikbaar?
Ja.
Al deze slides beschikbaar zullen zijn, en in de toekomst, zal ik ze e-mailen naar
je eerder sectie.
Maar vandaag, want dit is de eerste week, hadden we een late start.
Dus meestal, krijg je deze dia's, maar ze zullen online en beschikbaar zijn
Ik zal ze e-mailen naar je direct na de les.
Andere vragen?
>> Dus nogmaals, arrays zijn dozen, bij gebrek aan een beter woord, dat meerdere vasthouden
elementen van een data type, en ze zijn naast elkaar in het geheugen.
En dus nogmaals, dit is hoe je kunt maken twee soorten arrays.
>> Dus nadat u uw array hebt gemaakt met die eerste lijn - int scores, beugel
drie, haakje sluiten - u wil het initialiseren.
U wilt een aantal waarden in daar te zetten.
En dit is hoe je een aantal waarden in daar, alleen het kiezen van de indice en
schrijven van het nummer.
Laten we trekken dit op het bord.
Kan iedereen zien?
Iedereen kan zien.
Sweet.
>> Dus dat gaat zijn mijn array met de naam Scores.
Zoals je kunt zien, is het formaat drie.
Er zijn drie dozen in.
Een ieder kan passen wat type data type?
>> STUDENT: Integer.
>> JASON HIRSCHHORN: Een geheel getal in deze.
We schreven int scores, en het eerste woord is het type gegevens dat gaat
gaan in de dozen in die array.
Zodat ik kan passen drie.
Waarom heb ik nul up er op het bord?
Waarom staat er score nul is gelijk aan 1?
Doet me denken aan je naam.
>> STUDENT: Kurt.
>> JASON HIRSCHHORN: Kurt.
>> STUDENT: Ja.
>> JASON HIRSCHHORN: Waarom?
>> STUDENT: Omdat de eerste index is nul, we beginnen te tellen bij nul.
>> JASON HIRSCHHORN: Dus we beginnen tellen bij nul.
Zo is het precies.
Dit is het verwarrende gedeelte en wil trip je, vooral als je
proberen te doorlopen arrays, die we doen in een beetje.
We beginnen te tellen bij nul.
Dus als ik wil verwijzen naar het eerste doos, het is niet een doos.
Helaas, het is doos nul.
De tweede is een box, en in dit geval het derde vak is twee.
>> Hoe zit het doosje drie?
Waar is de doos drie?
Of als ik wil scores, beugel doen drie, haakje sluiten, wat is dat?
Dus je zei dat de nul-karakter.
Elke andere gedachten?
Wat is score beugel drie beugel?
>> STUDENT: Het maakt eigenlijk niet bestaan ​​omdat u alleen gedefinieerd als scores,
beugel drie.
>> JASON HIRSCHHORN: Dus je zegt het bestaat niet echt.
In sommige gevallen, wanneer we te maken hebben met strings, meestal zullen we een nul zetten
karakter aan het eind.
We krijgen aan dat in een tweede.
Maar in dit geval is er is hier geen derde vak.
Dus de laatste doos in een matrix is size minus 1.
Dus als we een array van grootte n, de eerste vak is op nul, de laatste is
bij n minus 1.
En in dit geval, bestaat niet.
Er is hier iets in geheugen, maar het is niet de onze.
Wij niet zelf het.
We hadden niet om vragen.
Dus als we het proberen te openen, die we zullen doen in een beetje, we waarschijnlijk gaan om
in de problemen komen.
>> In dit geval ben ik het initialiseren van mijn array met drie variabelen.
We zetten een in doos nul, een twee in doos ene, en een drie in doos twee.
Heeft iemand enig vragen over het initialiseren een array?
>> Dus gingen we juist nu meer dan dit.
Scores, beugel drie, haakje sluiten, die niet bestaat.
We nul geïndexeerd in de informatica, dus beginnen we te tellen bij nul.
Het laatste vak beschikbaar voor ons, het is het derde vak, maar het vak heet
nummer twee.
>> Beneden is een alternatief manier initialiseren arrays.
Dus in plaats van de array op een lijn, het vullen van het eerste vak, dan
het tweede vak, dan is het derde vak, je kunt het allemaal in een lijn.
Dus in die lijn, beide arrays.
Dit creëert exact dezelfde matrix als wat we gemaakt hier, maar het
doet het in een lijn net.
>> Nu hebben we ons aanbod gecreëerd.
Meestal als je eenmaal een array maken, moet u iets willen doen met het, of
dat is vullen of dingen uit te halen en print ze uit op het scherm.
In dit geval gaan we via onze scores array, die wij geïnitialiseerd op
de eerste line-up hier in grijs.
En dan op de tweede regel, we beginnen itereren door de array.
Heeft iemand nog vragen hebben over de structuur van een lus?
>> Dus dit is de lus.
We hebben onze oorspronkelijke toestand, en vervolgens onze laatste voorwaarde, en dan hebben we
herhalen, ik, elke lus.
En in de accolades in deze voor lus, wat gebeurt er als ik te lopen
dit programma?
Kan iemand mij vertellen wat we zouden krijgen?
[? Matu? ?]
>> MATU: Druk alle scores op elke lijn.
Het zou elke score afdrukken op een aparte regel.
>> JASON HIRSCHHORN: Wat is precies zou het af te drukken?
>> STUDENT: Het zou een af ​​te drukken, dan twee, dan drie.
>> JASON HIRSCHHORN: Precies.
Het zou een, dan twee, dan print drie, elk op aparte regels, omdat
we gaan door de array en u zult zien dat tweede, de printf
verklaring, scores i.
Dus op de eerste ronde door ons voor lus, i gelijk is aan nul, wat betekent dat we
het verkrijgen van de waarde op nul score -
die, als we terug gaan naar ons diagram, is een -
en in te vullen -
oh, het zegt c.
Dat moet% d zijn.
Ik zal vast dat in een beetje bij Ik hand die uit naar jullie.
Maar we presenteren een geheel getal, dus het moet% d zijn hier, niet% c.
Wat is% c voor?
>> STUDENT: Karakter.
>> JASON HIRSCHHORN: Karakter, precies.
Wat is de andere?
Als u niet wilt% d te doen voor een integer, wat kun je doen?
>> STUDENT: i.
>> JASON HIRSCHHORN:% i, precies.
Dus vragen over iteratie door de array?
Dus wat gebeurt er als we dit doen?
In plaats van i kleiner is dan drie, we do i minder
dan of gelijk aan drie.
Wat gebeurt er als we deze code uitvoeren?
Ja, Annie?
>> STUDENT: Ze gaan om uit te printen rare dingen op de vierde regel.
>> JASON HIRSCHHORN: Dus u zegt, is het ga uitprinten rare dingen op de
vierde regel?
Heeft iemand een antwoord op haar vraag?
Dus de kansen zijn dat wanneer we krijgen aan de -
dus op de vierde ronde door ons voor lus, net als je dacht, Annie,
het zal scores beugel drie, die we hebben al bedacht niet
bestaan, en we gaan proberen en toegang tot die, print het
uit, gebruik het een of andere manier.
Dus de computer zal waarschijnlijk boos op ons.
Je hebt helemaal gelijk.
>> Het zou het programma helemaal te stoppen.
Het is misschien iets afdrukken echt raar.
Je kunt niet met zekerheid zeggen.
Kansen zijn het zal waarschijnlijk boos op u en gewoon stoppen meteen.
>> Maar dit is een veel voorkomende fout die je zult moeten waar je bent gewoon uit door een op
het einde, en dit is een bug die zal pest u gedurende uw codering.
Een manier die ik graag doe is gewoon op een whiteboard, gaan door elke iteratie
van de lus op de hand of op papier te zien wat er gebeurt, en dan heb je
algemeen besef, oh wacht, ik moet niet gegaan tot minder dan of
gelijk aan drie.
Ik had moeten stoppen bij twee, dat is wat gebeurt er als uw toestand is minder
dan drie.
Eventuele vragen tot nu toe?
Sweet.
>> Zodat u al uw computers geopend.
We gaan je geven 02:58 minuten om een ​​programma te schrijven dat
een array met integers een door vijf en dan drukt elke
integer op een nieuwe regel.
En als je vragen hebt, steek je hand.
Ik ben blij om langs te komen.
Zoals ik al zei, laten we eens drie minuten om dit te schrijven.
Is iedereen OK als ik naar een nieuw venster en sluit dit?
>> Het spijt me als je de kans niet hebben gehad te eindigen, maar we gaan het doen
elkaar nu.
Zo op het scherm, heb ik # include cs50.h, # include stdio.h.
Kan iemand mij vertellen wat die twee lijnen doen?
Michael?
>> STUDENT: Zij omvatten de bibliotheken dat CS50 gemaakt en dat Steve heeft
opgeslagen die u kunt gebruiken om uw leven gemakkelijker maken.
>> JASON HIRSCHHORN: Dus u zegt dat ze onder meer de bibliotheken, een die CS50
gemaakt cs50.h en een die gewoon standaard, wordt geleverd met
de C-pakket, stdio.h.
Hoezo zijn de bibliotheken, hoewel?
Kun je iets specifieker?
>> STUDENT: Het maakt het zo dat je kunt gebruik maken van bepaalde codewoorden een hebben
functioneren gebeuren zonder te gaan en maak de functie c zelf.
>> JASON HIRSCHHORN: Kunt u me een voorbeeld geven?
>> STUDENT: Net als printf is degene die je kunt gebruiken.
>> JASON HIRSCHHORN: Printf.
Dus je zegt printf is een van die functies waar in plaats van te
Schrijf printf op uw eigen, printf is daadwerkelijk in stdio.h, zodat u
kan gewoon gebruiken en veronderstellen dat het zal werken.
In stdio.h, als je opende dat bestand, zou het onder meer hoe printf
werken, alle van de code voor printf?
Waarom schud je hoofd?
>> STUDENT: Omdat de header file net omvat de functie declaratie.
>> JASON HIRSCHHORN: Precies goed.
De header-bestand bevat alleen de functie declaratie.
Dus eigenlijk, als je dit samen te stellen, hit Maak Graaf, die wij zullen doen in een
ten tweede, de compiler weet dat als u printf gebruiken, printf bestaat.
Het zal ergens worden gedefinieerd.
Het is niet een probleem voor u het gebruik ervan.
En dan later op, het zijn de enen en nullen die daadwerkelijk bevatten
printf's implementatie en voeg ze samen met uw code.
Hoe zorg je ervoor dat het omvat de enen en nullen voor, zeg, krijg touwtje?
>> STUDENT: Get string in cs50.h.
>> JASON HIRSCHHORN: Right.
Dus dat zegt krijg snaar bestaat, de functie declaratie.
Maar toen de enen en nullen, de binaire bestand dat eigenlijk omvat de
uitvoering van get touwtje?
Hoe zorg je ervoor dat gaat met uw programma?
>> STUDENT: Steek de linker in de command line argument.
>> JASON HIRSCHHORN: Steek de linker in de command line argument.
Hoe doe je dat?
>> STUDENT: Het is de-l lijn in het wapengekletter
>> JASON HIRSCHHORN: Precies goed.
U zegt-l CS50, toch?
Dat geldt ook voor de enen en nullen.
>> STUDENT: Maar Make doet dat voor je, toch?
>> JASON HIRSCHHORN: Precies.
Zorg dat voor je doet, maar uiteindelijk, zul je niet hebt Make, of
je zult moeten maken een maken op uw eigen, dus dat is een
goede ding om te onthouden.
Als je naar een van deze te gebruiken andere bibliotheken, niet alleen heb je
om te schrijven # include en dan is de bibliotheek.
Je moet ook om het te koppelen inch
En die twee dingen zijn anders. -L CS50 is anders
dan # include cs50.h.
>> Dan hebben we int main leegte accolades, en nu gaan we naar code
binnenkant belangrijkste.
De eerste lijn die ik hier heb is een reactie dat zegt, een array maken
met ints een tot vijf.
Wat is een goed woord om te beschrijven wat ik hebben op dit moment op het scherm, net
reacties binnen main?
Wat doen we dat noemen?
>> STUDENT: Pseudocode.
>> JASON HIRSCHHORN: Pseudocode.
Dank je, Jeffrey.
Dat is precies goed.
Pseudocode.
Hebben jullie gezien pseudocode eerder?
Steek je hand op als je hebt gebruikt pseudocode voordat probleem set een.
Ongeveer de helft van jullie.
>> Ik zou sterk aanbevelen gebruik pseudocode te breken problemen in
kleinere, meer makkelijk af te bijten stukken.
Ook als je de pseudocode, u hebben al grotendeels uw commentaar
ingebouwd, zodat je niet hoeft te ga terug en probeer te achterhalen
wat je aan het doen waren.
Dus kan iemand mij dit eerste lijn om een ​​array te maken met ints een
door vijf?
U?
>> STUDENT: Int en dan kunt u bellen ongeacht het aantal, en dan vierkant
bracket vijf.
>> JASON HIRSCHHORN: Dus int nummers, square bracket vijf.
>> STUDENT: gelijk, en vervolgens accolades.
>> JASON HIRSCHHORN: Is gelijk aan, accolades.
>> STUDENT: Een, twee, drie, vier.
>> JASON HIRSCHHORN: Een, twee, drie, vier, vijf.
>> STUDENT: En dan accolades en dan puntkomma.
>> JASON HIRSCHHORN: En krullend accolades en puntkomma.
Excellent.
Uitprinten elk int op een nieuwe regel.
Kan iemand anders geven me die code, alsjeblieft?
[? Matu? ?]
Ga je gang.
>> STUDENT: Voor (
>> JASON HIRSCHHORN: Voor (
>> STUDENT: Int i = 0
>> JASON HIRSCHHORN: Int i = 0
>> STUDENT: Puntkomma i minder dan vijf.
>> JASON HIRSCHHORN: Puntkomma, i minder dan 5.
>> STUDENT: Puntkomma, i + +.
>> JASON HIRSCHHORN: Puntkomma, i + +.
>> STUDENT: Gesloten haakjes, open vervolgens brace.
>> JASON HIRSCHHORN: Gesloten haakjes en twee beugels.
Binnen de beugel?
>> STUDENT: En dan printf "% d / n"
>> JASON HIRSCHHORN: Sorry, wacht even.
Printf "% d / n, gesloten citaat.
>> STUDENT: En dan gesloten citaat, komma, telling, beugel i.
>> JASON HIRSCHHORN: Komma, tellen, beugel i.
>> STUDENT: Sorry, aantallen beugel i.
>> JASON HIRSCHHORN: Numbers, beugel i.
>> STUDENT: Sorry.
En dan gesloten haakjes, puntkomma.
>> JASON HIRSCHHORN: Gesloten haakjes, puntkomma.
Ik ga redden dat.
We gaan tellen.
En hoe kan ik tellen draaien?
>> STUDENT: Backslash.
>> STUDENT: Dot slash -
>> JASON HIRSCHHORN:. / Tellen, precies.
Dank u. . / Tellen.
Een, twee, drie, vier, vijf nieuwe lijnen.
Lijkt alsof het werkte.
Ja, Noah?
>> STUDENT: Je zou ook kleiner dan of doen gelijk aan vier, net als ik minder dan
of gelijk is aan vier?
Is er enig voordeel aan minder te doen dan vijf, of gewoon een andere manier van
schrijven?
>> JASON HIRSCHHORN: Dus de vraag is dat je zou hebben gedaan i kleiner is dan of
gelijk aan vier in plaats van i is minder dan vijf.
Zou dat dezelfde hebben gewerkt?
>> STUDENT: Het moet.
>> JASON HIRSCHHORN: Ja.
Het geheel zou hebben werken hetzelfde.
Stilistisch, het is over het algemeen minder dan, en je ziet in een seconde wanneer
we strijkers, kunt u iets gebruiken genaamd strlen, die je gezien hebt
voor, om de lengte te krijgen van de string.
En je kan niet minder doen dan of gelijk strlen.
Je zou van minder dan of doen gelijk strlen min een.
Dus het is gewoon leuker om minder doen dan strlen.
Ja?
>> STUDENT: En in de feitelijke quizzen, doen we moeten opmerkingen over onze zorgen
code ook?
>> JASON HIRSCHHORN: De vraag werd in quizzen, doe je
moeten commentaar geven?
Dus we meer praten over quizzen wanneer ze komen, maar over het algemeen een goede
vuistregel is wanneer u onderweg bent het schrijven van code, bieden opmerkingen.
Als u de code verkeerd, maar het krijgt commentaar rechts, misschien krijg je een aantal
krediet zowel van mij als ik de indeling u op een probleem set of op een quiz.
Dus opmerkingen zijn altijd goed om te geven.
Sweet.
Tellen.
Uitstekend werk geleverd.
Laten we verder gaan.
>> Snaren.
Snaren.
We hebben dit al eerder in collegezalen gezien.
Deze blies mijn gedachten toen ik eerst vond dit uit.
Waarschijnlijk deden klap niemands erg vinden om hier, maar dat is OK.
>> Strings zijn arrays van karakters, en ze eindigen met, zoals je al eerder zei,
de null-terminator, die is dit / 0 karakter.
Als we gaan een string op het vestigen boord, we zullen het trekken hierheen.
Hoe lang is deze string?
Sorry.
Hoe lang is deze string?
>> STUDENT: [onverstaanbaar].
>> JASON HIRSCHHORN: Four?
Waarom is het vier?
>> STUDENT: Omdat de vijfde plek is voor de nul-karakter.
>> JASON HIRSCHHORN: Dus de vijfde plek is voor de nul-karakter.
Dus als ik was om te draaien strlen op Dit zou het me vier.
Corrigeren.
En de array, hoewel, als ik initialiseren deze array, hoeveel plaatsen
zou ik moeten vragen?
>> STUDENT: Five.
>> JASON HIRSCHHORN: Five.
Ik zou moeten vragen voor vijf, maar ik kan alleen zet vier personages in hier
want ik moet dat null zetten terminator aan het uiteinde.
Dus we gaan om te schrijven in "ohai" en zet de null-terminator op het einde.
We zullen zeggen dat dit koord s is gelijk aan deze.
Wat is s beugel nul?
s beugel nul, Annie?
>> STUDENT: O.
>> JASON HIRSCHHORN: O, precies. s beugel ene?
s beugel vijf?
>> STUDENT: Bestaat niet.
>> JASON HIRSCHHORN: Bestaat niet.
Precies goed.
Cool.
Heeft u vragen over het begrip strings als arrays van karakters?
OK, dan.
Nog een programma voor jullie.
Schrijf een programma dat de gebruiker vraagt voor een string dan drukt elke
karakter op een nieuwe regel.
Dus laten we eens drie minuten om te schrijven dit programma, en dan zullen we het code
als groep.
>> Sorry.
Heb je nodig om dit te zien?
>> STUDENT: Nee.
>> JASON HIRSCHHORN: OK.
Laten we nog een minuut om dit te coderen, of in ieder geval aan de slag op het.
>> Zodat u kunt blijven werken, maar ik ga om te beginnen gaan doorheen.
Dus als voorheen, ik heb op het scherm # Include cs50.h, # include stdio.h.
int main leegte.
Binnen belangrijkste's accolades, ik heb twee reacties, pseudocode.
Men is vragen om een ​​string van de gebruiker.
De tweede is uit te printen elke karakter op een nieuwe regel.
Dus Anna, kunt u mij vraagt een reeks van de gebruiker?
>> STUDENT: Printf.
>> JASON HIRSCHHORN: Printf?
>> STUDENT: Ja.
(
>> JASON HIRSCHHORN: (
>> STUDENT: "geef me een string.
>> JASON HIRSCHHORN: "geef mij een str - oeps -
string.
>> STUDENT: / n ") puntkomma.
>> JASON HIRSCHHORN: Beëindig de string, gesloten haakjes, puntkomma.
>> STUDENT: Ja.
En dan volgende regel, touwtje s = krijgen string.
>> JASON HIRSCHHORN: String s = krijgen string.
>> STUDENT: Ja.
En dan ()
>> JASON HIRSCHHORN: ()
>> STUDENT: Puntkomma.
>> JASON HIRSCHHORN: Puntkomma.
Fantastisch.
Dus ik ga naar een string te krijgen en Ik ga het in wat te redden?
Wat is de variabele genaamd die u hebt gemaakt?
>> STUDENT: String s.
>> JASON HIRSCHHORN: De variabele heet s.
Het is het type string.
Precies.
Volgende dat we willen is uit te printen elk teken op een nieuwe regel.
Wie kan mij die code geven?
[Onverstaanbaar]?
Kan je het aan mij?
>> STUDENT: Tuurlijk.
>> JASON HIRSCHHORN: Laten we het doen.
En sorry.
Ik hou niet te herhalen wat je zegt want je hebt gelijk krijgt, maar ik
hebben om het zo te herhalen dat wanneer ze transcriberen dit, kunnen ze allemaal krijgen
de tekst op de transcripties.
Dus je kunt gewoon blijven praten.
Helaas, ik heb om het te zeggen over je heen.
Het spijt me, maar -
>> STUDENT: Dat is prima.
Voor int i = 0
>> JASON HIRSCHHORN: Voor int i = 0
>> STUDENT: Ik minder dan -
>> JASON HIRSCHHORN: Puntkomma.
>> STUDENT: Voordat deze, kunnen we een variabele zodat je int naam lengte?
>> JASON HIRSCHHORN: Oh, doe je niet willen de puntkomma te zetten?
OK.
Dus wat wil je doen na nul?
>> STUDENT: Ik wil het krijgen snaar lengte van s en
ingesteld die een variabele?
>> JASON HIRSCHHORN: OK, dus hoe moet ik dat doen?
>> STUDENT: Dus je doet int lengte =
>> JASON HIRSCHHORN: Int lengte =
>> STUDENT: S-T-R-L-E-N.
>> JASON HIRSCHHORN: S-T-R-L-E-N -
>> STUDENT: Van s.
Beugels.
>> JASON HIRSCHHORN: (s).
>> STUDENT: En dan denk ik dat je moet zet een puntkomma tussen de twee ints.
>> JASON HIRSCHHORN: A puntkomma na de nul?
>> STUDENT: Yeah.
Zet dan een puntkomma na dat, en je zegt, ik minder dan lengte.
i minder dan lengte, die is de variabele.
>> STUDENT: En dan puntkomma.
>> JASON HIRSCHHORN: Puntkomma.
>> STUDENT: i + +.
>> JASON HIRSCHHORN: i + +.
Daar is onze voor loop.
OK, binnen de lus.
>> STUDENT: En dan printf doen.
>> JASON HIRSCHHORN: Printf.
>> STUDENT: Beugels.
>> JASON HIRSCHHORN: Haakjes, quotes.
>> STUDENT: Haakjes, citaten,% c / n.
>> JASON HIRSCHHORN:% c, OK.
>> STUDENT: / n.
>> JASON HIRSCHHORN: / n.
>> STUDENT: Gesloten quotes.
>> JASON HIRSCHHORN: Gesloten quotes.
>> STUDENT: Komma.
>> JASON HIRSCHHORN: Komma.
>> STUDENT: S.
>> JASON HIRSCHHORN: S.
>> STUDENT: Beugel i.
>> JASON HIRSCHHORN: Beugel i.
>> STUDENT: En dan gesloten haakjes.
>> JASON HIRSCHHORN: Gesloten haakjes.
>> STUDENT: En dan puntkomma.
>> JASON HIRSCHHORN: Puntkomma.
Fantastisch.
Dus laten we slaan dit.
Maken spellen.
Oh boy.
Ik heb een paar fouten.
Eerste fout op lijn 11, het zegt, verwacht meningsuiting, en het geeft
me een fout dat de tweede int, is er de fout.
Er een fout daar rond.
Weet iemand wat er fout is dat?
Kurt?
>> STUDENT: Ik denk dat het zou moeten een komma en niet een puntkomma.
>> JASON HIRSCHHORN: OK, een komma in plaats van een puntkomma.
Zo is dat alles wat we nodig hebben om te herstellen?
>> STUDENT: Nee.
>> JASON HIRSCHHORN: Wat anders hebben we nodig om te herstellen?
>> STUDENT: We moeten string.h omvatten.
>> JASON HIRSCHHORN: Include string.h.
Waar moet ik onder andere dat?
>> STUDENT: Zelfde plaats je ook bent de andere dingen, rechts
na zijn stdio.h.
>> JASON HIRSCHHORN: Eens kijken of dit werkt ten eerste omdat het algemeen, ik wil
een ding eerst repareren, en dan lopen het, en dan zien de fouten die we krijgen.
Dus we gaan naar de terminal te wissen met controle n, laten we het doen maken spreuk.
Dus een andere fout op lijn 11.
Verwacht puntkomma.
En ik ben nog steeds fouten op deze lijn.
Dus het is niet me een fout zeggend het gegeven begrijpt niet wat strlen is,
maar het geeft me fouten op deze lijn, dus wat er mis is?
Mark?
Marcus.
>> STUDENT: Moet je verwijderen de tweede int verklaring?
>> JASON HIRSCHHORN: Verwijder de tweede int.
Laten we proberen dit.
Nu duidelijk de terminal.
Maken spellen.
Fout.
Impliciet verklaren bibliotheek functie strlen.
Dus nu zien we dat fout.
Wat hebben we nodig om te omvatten?
>> STUDENT: string.h.
>> JASON HIRSCHHORN: Include string.h, we zullen doen # include string.h aan de top
van het scherm.
Laten we het redden, maken spellen.
Nu gecompileerd.
Dus nogmaals, de dingen die we nodig hadden om herinner lijn 12 in onze voor lus als
we zijn het instelt, int i = 0, lengte = strlen (s).
>> Dit is een fantastische strategie.
De stijl van dit is geweldig, het ontwerp van dit is geweldig.
We kunnen later ingaan op deze redenen, maar op deze manier hoeft u alleen maar te bellen
strlen eens in plaats van elke keer dat je loopt door de lus.
Echter, moet je een komma daar te gebruiken en je hoeft niet int weer nodig.
Als je het verklaren van deze beide variabelen samen, je
niet int weer nodig.
En dan als je gaat strlen gebruiken, die andere bibliotheek
functie niet opgenomen in stdio.h of cs50.h, maken
ervoor dat u ook string.h.
Kurt?
>> STUDENT: Dus dan als je niet hoeft te zeggen wat voor soort lengte is, doet dat
dat het moet een int zijn?
Je kan niet twee verschillende types daar?
>> JASON HIRSCHHORN: Dus je kon twee verschillende types.
Lengte is een int hier, dat wel.
Lengte is een int, want het is komma en dan het zelfde ding.
>> STUDENT: Dus het gaat ervan uit dat het gaat hetzelfde te zijn als de eerste zijn?
>> JASON HIRSCHHORN: Precies.
We gaan niet om dit nu te doen, maar je kunnen bestaan ​​twee variabelen op
dezelfde lijn met een data type.
Dus int x, y zou creëren twee variabelen.
Dus int x, y, als we dat, geeft me een ongebruikte variabele x en y omdat
we ze niet gebruiken.
Dus zetten leegte voordat is gewoon een mooie truc als je het niet gebruikt
iets te gebruiken.
Maar zoals je ziet, ik maak x en y op dezelfde lijn met een komma.
Het creëren van twee gehele getallen daar.
Zo ja, perfect mogelijk te maken twee dingen op dezelfde lijn
gescheiden door een komma.
Laten we te ontdoen van die, dat wel.
>> Dus er is betovering.
Dank jullie voor het coderen van het voor ons.
Laten we het nog een keer, voer het uit.
Geef me een string.
[Onverstaanbaar], je deed het meeste.
Wat is de string?
>> STUDENT: Hallo.
>> JASON HIRSCHHORN: Hallo.
H-E-L-L-O, elk teken op een regel.
Ziet er geweldig uit.
Laten we lopen het opnieuw.
Altijd gaan om te controleren voor hoek gevallen.
Wat is een goede hoek zaak aan het inchecken?
>> STUDENT: Een getal?
>> JASON HIRSCHHORN: Een getal.
Dus ik zet in 1, en het drukt uit 1.
Het is niet vragen om brieven, dus het lijkt alsof nummers te werken.
Goede hoek zaak te controleren.
Wat is een goede hoek zaak te controleren?
>> STUDENT: Een lege string.
>> JASON HIRSCHHORN: Hm?
>> STUDENT: Net als een lege string.
>> JASON HIRSCHHORN: Lege string.
Dus laten we niet in alles te stoppen.
En wat er wordt afgedrukt?
>> STUDENT: Niets.
>> JASON HIRSCHHORN: Niets.
Lijkt alsof het werkt.
Kon je meer hoek gevallen proberen, maar algemeen getallen, een ander data
geweldig om te proberen, maar ook niets.
Niets, nul, negatieven zijn altijd grote dingen te proberen en dingen die je
moeten testen, dingen zeker zullen we testen voor en controleren 50 zal testen voor.
Heeft u vragen over spell.c?
>> OK, laten we het hoofd terug.
Ik heb nog een programma voor jullie te schrijven.
Het students.c heet.
Dit is een programma dat de gebruiker om vraagt vijf namen, dan kiest willekeurig
en drukt een van de namen.
Dit programma is een beetje meer betrokken dan de laatste twee schreven we,
dus waarom niet we nemen vijf minuten om coderen is individueel, en dan zullen we
coderen het als een groep.
>> Dit programma ook een aantal dingen te betrekken je mag niet eerder hebben gezien, dus als
heb je een vraag over, hoe Ik doe dat, steek je hand.
Ik zal langskomen en u wijzen in de goede richting.
Maar we doen het ook omdat deze zal een goede manier om wat te introduceren
onderwerpen die zijn lastig.
>> Dus het werkt, toch?
>> STUDENT: Yeah.
>> JASON HIRSCHHORN: Wanneer u zich in een probleem set, er is veel manieren om te doen
het, maar sommige zijn meer elegant dan anderen.
Laten we duiken inch
# Include cs50.h.
# Include stdio.h.
int main leegte, accolades.
Binnen de accolades, Ik heb twee opmerkingen.
De eerste is, vraagt ​​de gebruiker voor vijf namen.
De tweede is, willekeurig te kiezen en print een van de namen.
Dus laten we de eerste, vraag de gebruiker voor vijf namen.
Wie heeft de gebruiker gevraagd om vijf namen en kan mij vertellen hoe dat te doen?
Slechts twee mensen deden het eerste deel.
Drie mensen deden het eerste deel.
Vier, vijf.
Tom, hoe doe je dat?
>> STUDENT: Je zou verklaren een string en dan naam, beugel vijf.
>> JASON HIRSCHHORN: String noem beugel vijf.
Dus wat is deze lijn te doen, tekenreeksnaam beugel vijf?
>> STUDENT: Je zou verklaren een array van strings.
>> JASON HIRSCHHORN: Dit is een array van strings.
Hoeveel snaren gaan te passen in hier?
>> STUDENT: Five.
>> JASON HIRSCHHORN: Five.
Excellent.
We gaan het Names omdat noemen we gaan om meerdere tanden te krijgen.
OK, de volgende stap?
>> STUDENT: En dan moet je hebben een lus -
>> JASON HIRSCHHORN: For-lus.
>> STUDENT: - voor i = 0.
>> JASON HIRSCHHORN: Voor (int i = 0.
>> STUDENT: Puntkomma.
>> JASON HIRSCHHORN: Puntkomma.
>> STUDENT: Ik minder dan vijf.
>> JASON HIRSCHHORN: ik minder dan vijf.
>> STUDENT: Puntkomma.
>> JASON HIRSCHHORN: Puntkomma.
>> STUDENT: i + +.
>> JASON HIRSCHHORN: i + +.
>> STUDENT: En dan gesloten haakjes.
>> JASON HIRSCHHORN: Gesloten haakjes, en vervolgens een aantal accolades.
Binnen de accolades?
>> STUDENT: En dan printf.
>> JASON HIRSCHHORN: Printf.
>> STUDENT: Open haakjes, naam% d.
>> JASON HIRSCHHORN: Sorry?
>> STUDENT: Naam.
>> JASON HIRSCHHORN: Naam.
>> STUDENT: En dan spatie en% d.
>> JASON HIRSCHHORN: Naam, ruimte,% d.
>> STUDENT: En dan / n, en vervolgens gesloten.
>> JASON HIRSCHHORN: Dus naam, ruimte, % D / n, gesloten haakjes.
>> STUDENT: Komma, i + 1.
Het spijt me.
Gesloten citaat, en vervolgens komma, i 1.
>> JASON HIRSCHHORN: Gesloten citaat, komma, i 1.
>> STUDENT: Ja.
En dan de volgende regel -
>> JASON HIRSCHHORN: i + 1.
>> STUDENT: Ja.
En dan de volgende dia is namen beugel i.
>> JASON HIRSCHHORN: Volgende regel is namen beugel i.
>> STUDENT: = krijg string.
>> JASON HIRSCHHORN: = Get -
hoofdletter G-E-T -
string.
Oeps, sorry.
>> STUDENT: Open, gesloten haakjes en dan -
>> JASON HIRSCHHORN: Open, gesloten Paren.
>> STUDENT: Puntkomma.
>> JASON HIRSCHHORN: Puntkomma.
OK, dus je de array van initialiseren strijkers, namen, en ga dan door een
voor de lus, en vijf keer uit te printen sommige vraagt ​​aan de gebruiker en vervolgens op te slaan
vijf snaren.
Heeft iemand enig aanpassingen aan dit?
Tom, ik denk dat iedereen het met u eens.
Ziet er goed uit.
OK.
Waarom heb je i +1, hoewel?
>> STUDENT: Ik bedoel, niet over te zijn, maar ik 1, zodat het
Naam van een tot vijf noemen.
Anders zou het zijn naam nul tot vier noemen.
>> JASON HIRSCHHORN: Dus je deed i 1 want anders zou
uitgeprint nul tot vier omdat dat is hoe computers denken, maar de mens
niet echt lezen als dat.
Dat is een ander ding u zult tegenkomen.
Soms als je iets afdrukken aan de gebruiker, wil je er een te maken
beetje mooier, en het doen van i 1 is in dit geval een
manier om het mooier te maken.
>> Ik zie ook vijf keer, tekenreeksnaam is vijf, i is minder dan vijf.
Ik weet waar je de vijf.
Je kreeg het van mij te vertellen je vijf namen.
Maar als we wilden de code maken beetje robuuster, een ding dat we
kon doen is hier, buiten int, we iets doen als dit,
# Define, en we konden NAMEN doen 5.
>> Dus eigenlijk, waar ik schrijf hoofdstad N, hoofdletter A, hoofdletter M, hoofdletter E,
hoofdletter S, die string, zal deze vervangen die met 5 in de code.
Of laten we noemen het gewoon - we zullen noemen het NUMMER.
Dus ik ben het definiëren van alle doppen NUMBER te zijn 5.
>> Dus nu waar ik heb het nummer 5, I kan deze vervangen door alle doppen NUMBER.
En nu, als ik wil het nummer te wijzigen van namen, alles wat ik moet doen is
deze ene lijn, lijn vier, waar ik # Define nummer 5, dat veranderen naar 10,
of veranderen naar 4.
Wanneer uw code meer krijgt, je bent niet gaan naar alle plaatsen herinneren u
zet hoeveel namen je wilde, en in Om voor u niet een missen, dit is
een goede manier om het te doen, om iets te vinden up top en dan gewoon gebruik maken van die uitdrukking
overal in uw code.
Marcus?
>> STUDENT: Is dat stilistisch geprefereerde dan globaal definiëren van een
constante n?
>> JASON HIRSCHHORN: Dus is dat stilistisch liever dan wereldwijd
het definiëren van een constante n?
Dus je zegt dat je kon doen, int aantal = 5?
>> STUDENT: Hebben ze medeklinkers in C of nee?
>> JASON HIRSCHHORN: Of const - in gelijke.
Dus je bent gewoon te zeggen een globale variabele?
>> STUDENT: Yeah.
>> JASON HIRSCHHORN: So stilistisch, er is geen noodzakelijk een juiste
beantwoorden, maar deze beide zijn beter dan alleen het gooien van deze willekeurige
nummers in uw code.
We noemen ze magische getallen.
Als ik kijk naar de code of wanneer wie leest er doorheen, ze
willen niet alleen deze willekeurige getallen dat niet zinvol.
Zelfs het nummer 26, die meestal het aantal letters in het alfabet,
het is beter om ALFABET top definiëren maximaal en sla het nummer 26 in die string,
als dat zinvol is.
>> Of op probleem set een, in plaats van - nogmaals, hebben we niet over praten bij
de tijd, maar in plaats van alleen het gooien in een 25 overal of een 10, kunt u
sla het nummer 25 als KWARTAAL of 10 als DIME, en dat maakt het makkelijker voor
wie leest via uw code te begrijpen waarom je dat nummer gekozen.
En ook voor jou, als je ooit wilt update uw code, het maakt het een beetje
robuuster.
Yeah?
>> STUDENT: Is deze code ook gaan beschikbaar te zijn voor ons na?
>> JASON HIRSCHHORN: Al deze codes die we samen hebben geschreven zijn
gaat worden naar u gemaild jongens en beschikbaar.
Ja.
Dus vraag van de gebruiker voor vijf namen.
Willekeurig te kiezen en af ​​te drukken een van de namen.
Wie heeft deze lijn?
Dit is hier de lastigste lijn.
Sorry, Tom.
Je deed het echt een goede baan, maar Dit is een beetje lastiger.
Marcus, ga je gang.
>> STUDENT: Nou eerste, je gaat moeten stdlib.h en time.h. omvatten
>> JASON HIRSCHHORN: Dus je zegt tegen de top bevatten twee bibliotheken.
Je wilt dat ik S-T-D-L-I-B zijn dot H, Standard Library, en wat
was de andere?
>> STUDENT: Time.h.
>> JASON HIRSCHHORN: # include time.h.
Dit zijn dus twee meer bibliotheken.
Ik neem nu gaan we worden met behulp van functies die in deze
twee, dat is waarom je nodig op te nemen?
>> STUDENT: Zo dan, eerst ben je gaat willen srand schrijven.
>> JASON HIRSCHHORN: srand.
>> STUDENT: (tijd (0)
>> JASON HIRSCHHORN: Sorry.
Srand (tijd (
>> STUDENT: 0.
>> JASON HIRSCHHORN: 0.
>> STUDENT:)), puntkomma.
>> JASON HIRSCHHORN: Nog een gesloten haakje?
Puntkomma.
Ik ga gewoon vervangen je nul met NULL.
Het zal doen over het zelfde ding, maar het algemeen, zie je NULL, die
we praten over dit lijn in een seconde.
>> STUDENT: Stilistisch beter?
>> JASON HIRSCHHORN: algemeen, mensen rechts NULL, maar hetzelfde.
>> STUDENT: En dan int naam.
>> JASON HIRSCHHORN: Int naam.
>> STUDENT: =
>> JASON HIRSCHHORN: =
>> STUDENT: Rand.
>> JASON HIRSCHHORN: Rand.
>> STUDENT: ()
>> JASON HIRSCHHORN: ()
>> STUDENT: Modulo nummer.
>> JASON HIRSCHHORN: Wat is modulo?
Het karakter?
Het procent teken?
>> STUDENT: Procent karakter.
Modulo NUMMER dat je boven gedefinieerd.
>> JASON HIRSCHHORN: Modulo NUMBER.
>> STUDENT: En dan puntkomma.
>> JASON HIRSCHHORN: Puntkomma.
>> STUDENT: En dan nieuwe lijn, printf.
>> JASON HIRSCHHORN: Printf.
>> STUDENT: (
>> JASON HIRSCHHORN: (
>> STUDENT: "
>> JASON HIRSCHHORN: "
>> STUDENT:% s / n
>> JASON HIRSCHHORN:% s / n
>> STUDENT: "
>> JASON HIRSCHHORN:% s / n "
>> STUDENT: Komma, namen ruimte.
>> JASON HIRSCHHORN: Space -
>> STUDENT: Oh, ik denk, wat hebben we het hier noemen?
>> JASON HIRSCHHORN: We noemden het namen.
>> STUDENT: Open beugel, naam.
>> JASON HIRSCHHORN: Open beugel, naam.
>> STUDENT: Gesloten beugel.
>> JASON HIRSCHHORN: Gesloten beugel.
>> STUDENT:)
>> JASON HIRSCHHORN:)
>> STUDENT: Puntkomma.
>> JASON HIRSCHHORN: Puntkomma.
OK, laten we het redden.
Laten we deze code.
Studenten.
Laten we lopen deze code.
Studenten.
Niet. / Student. . / Studenten.
Naam een.
We zeggen David.
Noem twee, RJ.
Noem drie, Rob.
Naam vier, Lucas.
Noem vijf, Joseph.
En dan drukt Jozef weer.
>> Dus laat me dit opnieuw uit te voeren.
Laat mij dezelfde namen.
David, RJ, Rob, Lucas, Joseph.
En het gaf me David deze keer.
Dus ik deed het zelfde ding, maar het gaf me een ander ding, en dat is
omdat, natuurlijk, vragen we voor een willekeurige naam.
Dus denk ik, op basis van me zwerven door de kamer, dat de meeste mensen
Waarschijnlijk kreeg het eerste deel rechts, opzetten die array en dan krijgen
alle namen.
Ik heb het over lijnen 10 tot en met 16.
Maar lijnen 18 tot en met 21 zijn waarschijnlijk sommige dingen die je niet eerder hebben gezien,
dus laten we gaan door die.
>> Deze lijn, srand tijd NULL wezen -
sorry, laten we dit overslaan een lijn, rand ().
Dat geeft je een willekeurig getal, een geheel toevalsgetal.
En als je man rand geraakt, waarvan veel van u -
M-A-N space R-A-N-D -
in de terminal als deze, M-A-N space R-A-N-D, drukt u op Enter.
U zou komen om de handleiding en staat te lezen dat de rand zou zijn
commando outputs num pseudo random bytes na zaaien het toevalsgetal
generator keer.
>> Dus dat is een omschrijving.
Dat is wat rand doet, geeft u een willekeurig getal als
je die functie noemen.
Helaas, het is niet echt willekeurig want als je gewoon bellen willekeurige
zonder dat er wat zaad, sommige uitgangspunt, het zal altijd kiezen
het zelfde en het gebruikt een formule het bepalen van de volgende.
Dus als je rand noemen, het zal gewoon geven u het zelfde ding.
Het zal zeer voorspelbaar.
Het zal in feite niet willekeurig.
>> Dus wat we moeten doen, per Marcus's instructies voor mij, waren zaad rand
met iets anders, dat is wat het srand functie doet.
Het zaad rand met iets een beetje meer willekeurig dan het zelfde ding, en
hij zaaien het met de tijd NULL, die is, alleen volgens afspraak, de huidige
tijd in seconden.
>> Dus je bent in de veronderstelling dat iedereen is niet gaat de code uit te voeren op het exacte
dezelfde seconde, dus het is een veilige gok dat tijd NULL gaat om anders te zijn
elke keer dat deze code wordt uitgevoerd.
Veilige gok dat dus, srand zal zaad rand met iets anders elke
enkele keer.
Dus volgens afspraak, wanneer we willen een willekeurig getal, schrijven we deze lijn,
srand tijd NULL, om ons een veel meer random seed, en dan lopen we
rand, dat geeft ons een willekeurig getal.
Yeah?
>> STUDENT: Kan je zeggen wat bedoel je met zaad?
>> JASON HIRSCHHORN: Zaad als in -
zodat rand gaat om wat nummer halen en het gaat om wat te gebruiken
formule om er te komen.
Dus het gaat om te beginnen met iets en zet hem dan in iets gebaseerd
off van die formule.
Als u het altijd het zelfde ding, Het gaat altijd om te zetten in de
hetzelfde.
Zodat eerste wat je geef het is het zaad.
Dus je wilt dat het iets te geven anders om te beginnen met, en dus het
zal het veranderen in iets anders.
>> En dan tot slot, lijn 20, Dit% wordt de
modulo, en dat is verwarrend.
Dat is iets dat een beetje hier anders dat je niet echt
hebben in het echte leven wiskunde.
Maar in wezen, als je een gigantische nemen nummer en je verdelen in C, wat
gebeurt er met de rest?
>> STUDENT: Het wordt afgekapt.
>> JASON HIRSCHHORN: Het wordt afgekapt.
Dus 20 gedeeld door 3 is wat?
Wat betekent dat terugkeert naar u, 20 gedeeld door 3.
Sorry, 10 gedeeld door 3.
Wat betekent dat u terug?
>> STUDENT: [onverstaanbaar].
>> JASON HIRSCHHORN: 10 gedeeld door 3 net rendementen 3, niet 3 rest 1.
Dus wat 10 modulo 3 rendementen is gewoon de rest, 1.
Dus als je wilde weten wat er 10 verdeeld door 3 eigenlijk was, zou je
do 10 gedeeld door 3, zou je je 3 krijgen, en dan zou je doen 10 modulo 3, en
je zou krijgen een 1.
Dus zou je realiseert dat 10 gedeeld 3 is door 3, rest 1.
>> En in deze lijn, zou rand worden een geheel getal wezen.
Dus modulo zegt, deel dit door nummer, dat is in dit geval 5.
En als je ooit delen door een getal, de integer moet altijd kleiner zijn dan
dat nummer.
Dus als je te delen door een getal 5, de rest wordt altijd zal zijn
nul tot vier.
Dat is gewoon hoe de wiskunde werkt.
>> Dus vele moduloed een kleiner nummer zal altijd terugkeren
rest en zal altijd terugkeren sommige nummer dat is minder dan het nummer dat u
gedeeld door.
Heeft iemand nog vragen hebben over modulo, want het zal komen in zeer,
erg handig, dus ik wil ervoor zorgen iedereen begrijpt het?
Cool.
En we zagen dat dit programma gewerkt.
OK, bewegen op.
>> Dus de volgende, we gaan om te gaan in functies, en we gaan om te gaan
door de rest van dit spul vrij snel want ik wil naar
command line argumenten.
Dus functies wezen zoals u hebt gezien, zwarte dozen.
Ze nemen dingen in genoemd parameters, ze iets doen om hen, hetzij
ze te veranderen of maak een aantal bijwerkingen, en tot slot, ze spugen
iets uit, dat is de return waarde.
Kan iemand mij een reden Daarom hebben wij functies zouden gebruiken?
Anybody?
Een van de redenen waarom we functies zou gebruiken?
Anyone?
Ik zag twee handen.
Wat is een goede reden?
Marcus?
>> STUDENT: Als je moet dezelfde bellen stuk code meerdere keren.
>> JASON HIRSCHHORN: OK, als je nodig hebt om dezelfde brok van bellen
code meerdere malen.
Jeff, heb je een andere reden?
>> STUDENT: Gewoon zodat je kunt minder coderen.
>> JASON HIRSCHHORN: U kunt minder coderen.
Rechts.
Als je iets wilt doen veel -
in de vorige code, kon ik heb schriftelijke krijg touwtje vijf keer, maar een
for-lus maakt het er mooier en moet je minder code te schrijven.
Functies zijn een soortgelijk idee.
Als ik wil hetzelfde doen veel, verplaatsen naar een functie en noemen dat
functioneren elke keer.
Dat zal dat ding voor je doen.
Dat is een goede reden te gebruiken functies.
>> Dus anatomie van een functie.
Een functie zal in het algemeen zo uitzien.
Het zal beginnen met de return type, dan zul je de naam te krijgen.
Het zal de argumenten te nemen, anders bekend als de parameters en binnen
die accolades, zul je schrijf uw code.
>> We hebben een functie veel gezien.
Dat is de belangrijkste.
Hier is de belangrijkste gesuperponeerd op dat anatomie had ik eerder.
Wat betekent int hier betekenen?
Wat betekent int bedoel?
Als ik schrijf int main (void).
>> STUDENT: soort Return?
>> JASON HIRSCHHORN: Sorry?
>> STUDENT: The return type.
>> JASON HIRSCHHORN: Int is de soort terug, precies goed.
Belangrijkste retourneert een int.
Wat is het belangrijkste?
>> STUDENT: Functie naam.
>> JASON HIRSCHHORN: Main is de naam van de functie.
Precies goed.
En nietig?
Wat is leegte tussen de haakjes?
>> STUDENT: Het duurt niet eventuele externe waarde.
>> JASON HIRSCHHORN: So leegte -
rechts.
Tussen haakjes, hebben we de parameters of de argumenten van de
functie neemt, wat er in de zwarte doos.
Wanneer je leegte schrijft, je zegt dit neemt niets inch
Dus int main leegte betekent dat de belangrijkste's niets neemt inch
>> Binnen de accolades, hebben we een aantal code, en dan zien we aan het eind
nul terug.
Wat betekent terugkeer nul betekenen?
Nou, spraken we over return type.
Belangrijkste moet een int terug.
Dat is wat deze lijn doet.
Het geeft een int, nul.
>> Natuurlijk hebben we niet gezien dat er veel want in de programmering we doen met
de machines die wij doen en de compilers we tegenwoordig gebruiken, je
hoeft die lijn niet nodig.
Belangrijkste is bijzonder genoeg dat het weet wanneer u het einde van de belangrijkste, maar bereiken
terug nul als alles goed is gegaan.
In feite, als er iets niet goed gaat, belangrijkste zal vaak terug een andere
nummer betekent dat er iets ging er mis met uw programma.
>> Dus over het algemeen als je code, je niet schrijven terugkeer nul, maar het is goed
te weten dat het gebeurt achter de scènes want als je schrijft
ander soort functie, je gaat nodig hebben om
onder andere een retourleiding.
Als je zegt ik ga terug een int, moet je
schrijven terug iets.
Als je leegte hier aan het zeggen begin, void main nietig, voor
Zo, dan is het niet terugkeren iets - leegte betekent niets -
dus je hoeft niet dat retourleiding.
Maar je wel eens iets dat niet schrijven ongeldig voor de return type, moet je
een lijn die terugkeer en u zegt: nodig om daar iets te zetten
die overeenkomt met het type.
Heeft u vragen over dat?
Sweet.
>> Scope.
Dit is iets wat we hebben aangestipt als goed.
Elke variabele, zoals we weten, heeft een bepaalde omvang, en dat is eigenlijk
praten over waar de variabele al dan niet optreden.
En ik willen zeggen wat er gebeurt in accolades blijft
binnen de accolades.
Dus bijvoorbeeld, als we kijken naar deze code, we zijn het definiëren van een globale variabele
buiten de belangrijkste, int a, hier aan de top.
We zijn nog bellen int een binnenkant belangrijkste.
We hebben wat meer accolades, en bellen we een ander int a.
>> We hebben drie a's in de code.
Deze zijn niet hetzelfde.
Ik heb gemaakt drie verschillende variabelen.
Vervolgens binnen deze innerlijke krullend braces, ik zeg a = 4.
Waarvan een is dat het over, de eerste, de tweede,
of de derde?
>> STUDENT: De derde.
>> JASON HIRSCHHORN: Het praat over de derde.
Al die a's daadwerkelijk kan worden over gesproken in dit specifieke
Bijvoorbeeld omdat hun omvang al gaat in deze binnenste accolades.
Echter, als je dingen hetzelfde noemen naam, er is iets genaamd verbergt.
Zodat u alleen behandelen of oplossen of gebruik de laatste variabele, of de ene
het dichtst bij je.
Dus binnen hier, is deze derde een dichtst om die lijn, a = 4, dus het
beïnvloedt de derde.
En de laatste regel, a = 2, die een is dat over de eerste, tweede,
of derde een?
>> STUDENT: Second.
>> JASON HIRSCHHORN: Het praat over de tweede een.
Natuurlijk, de derde een het dichtst bij het in de code, maar de derde een
niet buiten bestaat die accolades.
Zodra u aan dat gesloten krullend brace, het is zoals het is gegaan,
wezen.
Dus de enige twee die je nog hebt zijn die eerste twee, en natuurlijk, nu
het is het dichtst bij de tweede.
>> Dus dat is een goede zaak om onthouden over scope.
Bijvoorbeeld, ik weet zeker dat je bent tegengekomen Dit in een doen terwijl lus.
Als u de variabele in te initialiseren het doen terwijl de lus en dan moet je proberen om
toegang tot het buiten, heb je waarschijnlijk kreeg een aantal waarschuwing als, dit
variabele bestaat niet.
Dat is vanwege de omvang idee, dat de dingen alleen bestaan
binnen die accolades.
Accolades zijn als een gigantische knuffel die u geeft aan uw code, is een andere
manier over na te denken.
>> Dus dit is een andere functie, wat voor jullie om code, hellofunction.c.
We gaan slaan dat voor nu, maar dit is iets wat ik je aan
oefenen op je eigen.
Schrijf een programma waarin de belangrijkste oproepen een andere functie die drukt een
groet aan de gebruiker.
Het is in wezen het nemen van hello wereld en abstraheren dat printf in
andere functie.
Maar we gaan niet om dat recht te doen nu want we hebben niet zoveel tijd
vertrokken als ik zou hebben gewild.
>> Dus functiedeclaratie.
We hebben dit eerder ook gezien.
Als je wilt naar een andere functie te schrijven, moet u de computer laten weten en
hoofd weet dat het bestaat.
Dus wat we doen is boven de belangrijkste, we schrijven de return type, de naam en de
parameters, en dan beneden belangrijkste, hier beneden, we eigenlijk kopiëren die lijn
en schrijf dan de eigenlijke code.
Dus op deze manier, als je de functie aanroept in hoofd bovenaan belangrijkste weet dat
hello bestaat, bijvoorbeeld, als ik te roepen hallo, en dan ziet het aan
de uitvoering beneden.
Wat gebeurt er als ik niet dat deze ook line-up top, vervallen hello (void)?
>> Als ik niet onder deze lijn en de belangrijkste gesprekken hallo, ik ben
gaat om een ​​fout te krijgen.
Ik ga een fout omdat krijgen de compiler niet weet
dat dit ding bestaat.
Dit is vergelijkbaar met wat we denk # include cs50.h.
Wat in wezen cs50.h doet zet krijg snaar daarboven.
Het zet krijg int daarboven.
Het zetten van al die functie prototypes up voordat belangrijkste zodat wanneer
je ze belt in de belangrijkste, main weet dat deze dingen bestaan.
Dat is wat deze. H-bestanden doen.
En dus als je gaat om je eigen te maken functie, je moet ervoor zorgen dat
je zet dat prototype daarboven.
Heeft u vragen over deze tot nu toe?
>> Command line argumenten.
Dit is wat we gaan eindigen op, en dan hopelijk zullen we
knijpen in sommige pset.
Ik weet niet of we in staat zijn te knijpen dat door de tijd, maar
met jullie die hier zijn, en als je jongens willen zeggen na het voor een beetje, we
kan gaan dan het buiten.
Maar we gaan om te eindigen met command line argumenten
voor de laatste 15 minuten.
We wakker, Michael?
Je bent wakker?
Goed.
Ik weet niet of je slaapt met je ogen dicht.
Het zou lastig zijn.
>> Command line argumenten.
Die zijn een manier om informatie door te geven in een programma.
Uiteindelijk zullen we nog meer tegenkomen.
Maar in wezen, we gaan stoppen schrijven int main (void) als we willen
neem wat command line argumenten.
We gaan dit ding te schrijven genaamd int main (int argc,
snaar argv, beugels.
Dat is verwarrend.
Dat is een heleboel brieven die niet in menselijke Engels, dus we gaan naar
pak ze nu.
>> Argc staat voor argument count -
en opnieuw al deze zullen zijn online beschikbaar -
en dat is het aantal argumenten.
Argv staat voor argumenten vector, en dat zijn de argumenten zelf.
Het is een array van strings.
We hebben eigenlijk een array gezien snaren voor vandaag.
We creëerden een in de laatste programma dat we gecodeerd.
>> Dus hier is een voorbeeld.
Ik schrijf. / Ohai CS50 sectie op mijn commandoregel.
Argc in dit geval gelijk aan 3.
Argv beugel 0 is ohai, argv beugel 1 is CS50, argv beugel 2 is sectie.
Nogmaals, argc is het aantal argumenten, en reis je een beetje
beetje, we optellen altijd de naam van de functie als eerste argument.
Dus in dit geval zijn er drie argumenten, de naam van de functie
en dan die twee die ik intikt:
>> Vervolgens gaan we die bewaren argumenten zich in argv.
En opnieuw, net zoals we eerder zagen, we deden dit in het laatste programma we gecodeerd.
U kunt door de reeks argv en krijgt die strijkers.
Dat is in wezen wat we deden op het einde van onze laatste programma.
We kozen een willekeurige naam en ging toen naar namen beugel wat en afgedrukt
uit de string er gevestigd.
>> Bovenop slechts de ene array, omdat snaren zelf zijn arrays, zoals
sprak over, kunt u arrays arrays, die
wezen wat argv is.
Een manier kunt u denken aan Dit is rijen en kolommen.
Kan ik dat recht te trekken nu.
Dus argv -
dat is niet wissen.
Laten we trekken onder ohai.
>> Dus als ik schreef in, ohai CS50 sectie, Ik ga afkappen
gedeelte voor dit voorbeeld.
Maar in wezen, mijn multidimensionale array, ohai CS50,
we gaan sekte doen.
Dus hier kan ik toegang -
als ik geef gewoon argv een nummer -
Dit is verkeerd.
Wat is er mis in dit diagram?
>> STUDENT: Begin bij nul.
>> JASON HIRSCHHORN: Het moet met nul begint.
Ik moet waarschijnlijk ook draaien, maar aangezien ik het al heb getrokken op, ik ben
gaan om het te laten op daar voor nu.
Maar begint bij nul.
Dat klopt.
Het spijt me als dit klein is.
Kunnen jullie soort te zien?
Dus als ik het doe argv 0, ik zal krijgt alle van ohai.
Als ik dat doe argv 1, zal ik al CS50 krijgen.
Als ik dat doe argv 2, zal ik al sekte te krijgen.
>> Maar nu, zoals we al zeiden, strijkers zijn arrays zelf.
Dus wat ik kan doen is dat ik kan behandelen dit als een meerdimensionale array, en ik
iets kan doen in de trant van argv 0, 0, wat me net het geeft
karakter 0.
Argv 0, 1, die geeft me gewoon h.
Argv 1, 3, die mij net geeft Dit 0 hier in CS50.
>> Dus omdat de snaren zelf zijn arrays, we zetten
dat andere array.
We hebben nu reeks arrays, en we kan indexeren in onze eerste matrix en
vervolgens index in onze tweede matrix.
En zoals je zou verwachten, doen we dat door gewoon te zetten die twee -
wij doen de vierkante haakjes gewoon naast elkaar.
In dit voorbeeld, argv 1 is en CS50 argv 1, 2, zoals we al zeiden, is slechts 5.
Heeft iemand nog vragen hebben over multidimensionale arrays?
Jullie doen geweldig.
Sweet.
>> We hebben dus een ander programma hier, en dit is het laatste wat we
ga nu meteen doen.
Dus ik wil dat je een programma te schrijven dat neemt de volledige naam van een gebruiker, twee en alleen
twee command line argumenten, en tot slot, uitprinten een groet aan de
gebruiker dat hun voornaam omvat.
Dus waarom ga je niet nemen drie of vier minuten om dit te doen, en dan gaan we
meer dan het als een groep, en dan zullen we wrap up?
>> En nogmaals, hier, als we zeggen neem een volledige naam van de gebruiker per de beschrijving
van dit probleem, moet het commando line argumenten, niet met behulp van krijgen string.
Ja, Marcus?
>> STUDENT: Dus als je zegt twee commando argumenten, dat naast
. de / run, of -
>> JASON HIRSCHHORN: Goede vraag.
Doen, waaronder de. / Run, drie command line argumenten.
Of met de. / Gepersonaliseerd, in dit geval, want dat is de
naam van dit bestand.
Dus argc zou drie.
Maar ik wil slechts twee argumenten aan het programma.
Ik moet specificeren dat.
Ik zal die verandering te maken voordat ik post deze en stuur ze naar jullie.
>> STUDENT: Wat als je hebben een tweede naam?
>> JASON HIRSCHHORN: Als je een middelbare naam, je je pech.
Het spijt me.
Of als u alleen gaat door Shakira, je bent ook pech.
Yeah?
>> STUDENT: Dus als mensen niet hebben cs50.h, doen ze argv definiëren
als char ster argv?
Of is het nog steeds heet touwtje argv?
>> JASON HIRSCHHORN: Ja.
Dus touwtje, nogmaals, we maskeren over wat precies daar gebeurt.
Dat gaat misschien worden uitgepakt op woensdag, maar al snel.
Het is net als zijwieltjes.
Want in wezen, het is hetzelfde.
>> Dus laten we eens een minuut te programmeren dit, en dan zullen we gaan over
het als een groep, en vervolgens zoals ik al zei, inpakken.
En ik denk dat ze nog extra snoep, dus moeten jullie hopelijk nemen
dat, of neem die.
>> Sorry als je nog steeds schrijven, maar ik wil om te duiken in en wij
kan het af samen.
Dus ik heb geschreven in, # include cs50.h, # include stdio.h.
int main (void), accolade, krullend brace, binnen drie regels van
pseudocode, neem de volledige naam van een gebruiker, twee en slechts twee command line
argumenten, afdrukken van een groet aan de gebruiker dat hun voornaam omvat.
>> Dus de eerste, neem volledige naam van een gebruiker.
Wie kan me helpen volledige naam van een gebruiker?
Hoe doe ik dat deel?
Hebben jullie doen dat eerste deel?
Neem de volledige naam van een gebruiker.
Nou, voor die ene opdrachtregel argument, wat moet ik schrijven?
Wat moet ik veranderen aan mijn functie verklaring?
>> STUDENT: Je wilt niet het nietig meer zijn.
>> JASON HIRSCHHORN: Precies.
Ik wil het niet nietig zou zijn.
Wat wil ik dat het wordt?
>> STUDENT: Int argc.
>> JASON HIRSCHHORN: Int argc.
>> STUDENT: String argv.
>> JASON HIRSCHHORN: String argv.
>> STUDENT: Beugel, beugel.
>> JASON HIRSCHHORN: Beugel, beugel.
Dat is precies goed, en dat is eigenlijk hoe ik ga krijgen
volledige naam van een gebruiker.
Ze gaan om het daar te zetten.
Zodat men gedaan heeft.
Dus nu wil ik twee en slechts twee command line argumenten.
Dus Noah, wat is een manier kan ik Controleer het aantal commando
line argumenten heb ik?
>> STUDENT: Je doet een if-statement.
>> JASON HIRSCHHORN: Als verklaring, precies.
Wat wil ik als de conditie?
>> STUDENT: Als argc groter is dan 3.
>> JASON HIRSCHHORN: Als argc groter is dan 3.
Als argc groter dan 3, wat moet ik doen?
>> STUDENT: Return 1.
>> JASON HIRSCHHORN: Return 1.
Zal dat ervoor zorgen dat ik twee en slechts twee?
>> STUDENT: Nee.
Als argc groter is dan 3 en minder dan 2.
>> JASON HIRSCHHORN: Als argc is groter dan 3 en argc is minder dan 2.
Wat is een manier waarop ik kan dit in gewoon schrijven een regel, of zonder gebruik van die
en Booleaanse operator?
>> STUDENT: Het is niet gelijk aan 2.
>> JASON HIRSCHHORN: Als argc is gelijk aan 2.
Precies.
Als argc niet gelijk is aan 2, dat me dit programma zal geven,
gepersonaliseerd, toen ik voer het uit, en , dat geeft mij hoeveel
command line argumenten?
Hoeveel zal ik controleren?
>> Sorry.
Laat me herformuleren dat.
Als argc = 2, hoeveel dingen deed de gebruiker schrijven in de lijn?
>> STUDENT: One.
>> JASON HIRSCHHORN: Eentje maar.
Dus voordat, je had gelijk, Noah.
Wat heb ik echt nodig om daar te zetten?
>> STUDENT: Dat is gelijk aan 3.
>> JASON HIRSCHHORN: argc niet gelijk 3.
Ik wil evenaren 3 want ik wil gepersonaliseerd plus de andere twee.
Dus als argc niet gelijk is aan 3, terug 1.
Waarom zei je dat terug 1?
>> STUDENT: Omdat dat betekent dat het verkeerd is.
>> JASON HIRSCHHORN: Dat betekent dat het verkeerd is, en wat dat gaat doen?
>> STUDENT: Re-prompt van de gebruiker.
>> JASON HIRSCHHORN: Het gaat om te stoppen het programma, dus het zal moeten draaien
weer, maar we hebben niets hier opnieuw te vragen voor hen.
Ik heb niet om die.
Dus dat is precies goed.
Return 1 gewoon stopt het programma.
Geweldig.
>> En print een groet aan de gebruiker dat hun voornaam omvat.
Hoe kan ik dat doen?
Anna?
>> STUDENT: Printf.
>> JASON HIRSCHHORN: Printf.
>> STUDENT: ("
>> JASON HIRSCHHORN: (
>> STUDENT: "hello
>> JASON HIRSCHHORN: "hello
>> STUDENT:% s
>> JASON HIRSCHHORN:% s
>> STUDENT: / n
>> JASON HIRSCHHORN: / n
>> STUDENT: ",
>> JASON HIRSCHHORN: ",
>> STUDENT: ArGV
>> JASON HIRSCHHORN: Sorry?
>> STUDENT: ArGV
>> JASON HIRSCHHORN: ARGV
>> STUDENT: Vierkante haken 1.
>> JASON HIRSCHHORN: Vierkante haken?
>> STUDENT: 1.
>> JASON HIRSCHHORN: 1.
>> STUDENT: En) puntkomma.
>> JASON HIRSCHHORN:) puntkomma.
Laten we dit uit te voeren.
Maken gepersonaliseerde.
. / Gepersonaliseerd.
Het gewoon stoppen.
Waarom is het gestopt?
>> STUDENT: U heeft geen argumenten.
>> JASON HIRSCHHORN: Ik heb niet zet alle argumenten inch
Ziet er geweldig uit.
Jullie genageld het.
Dus nogmaals, je ging naar argv en je gecontroleerd aan het begin argc.
Dat zijn twee belangrijke dingen om te onthouden.
Dus in onze laatste twee minuten voordat we vertrekken, zullen we niet krijgen om PSET twee, maar
zoals ik al zei, als je wilt blijven na gedurende 10 minuten, ik zou hij blij om te gaan
dan met jullie de logica voor deze problemen sets.
We hadden veel om vandaag te dekken dus ik heb niet naar hen.
In het algemeen, ik wil zijn dat aan het eind.
Dus als je wilt om te blijven, stok rond voor 10 minuten.
We zullen dat doen.
>> Dan, zoals ik al zei in het begin, pset nul en een, zullen we dat
terugkoppeling naar u terug als spoedig mogelijk.
Het doel is om pset een feedback te krijgen, het commentaar gedeelte,
voordat pset twee is het gevolg.
Dus als je wat fouten of gemaakt stilistisch, zou het beter zijn,
je zult die gegevens zodat u zal niet dezelfde dingen doen in pset twee.
En dan in de toekomst, zul je allemaal van uw pset feedback en reacties
terug voor de volgende is verschuldigd.
>> Tot slot, als ik in een andere kon zetten plug voor feedback.
Dit is je eerste sectie.
Het was mijn eerste sectie onderwijzen van dit jaar.
Ga daar.
Schrijf materiaal, goed en slecht, en ik zal het gebruiken om te maken
sectie de volgende keer beter.
En als laatste, nogmaals, als je nodig hebt iets, laat het me weten.
Ik ben meer dan blij om te helpen jullie.
Als u wilt gewoon snoep, I zal hebben extra snoep.
Ik ben blij om het aan u te brengen.
>> Dit gaat om een ​​geweldig natuurlijk.
Dit is een van de, zo niet mijn favoriet Natuurlijk, ik heb genomen in mijn hele leven,
en ik hoop dat het zal zijn dat geweldig voor je.
Dus ik wil alles doen wat in mijn macht op toe dat geweldig voor jou.
Ik ga voor het verzenden van een e-mail als je in mijn sectie of Noah, en
gaan proberen en te plannen met elk van u een tijd om in te checken op de jongens
komende paar weken, dus ik kan krijgen een gevoel van wat je CS achtergrond is,
en het zal ook helpen me tailor deze secties om beter aan uw behoeften.
Dus dat is wat ik nog heb opgesteld.
Nogmaals, ik zie je buiten als je wilt om daar te zijn.
Dit was week twee sectie.
Dank jullie zoveel.