>> DAVID Malan: Dit is CS50, en dit is het begin van een week.
En wat we dachten dat we zouden doen, is terug te trekken het gordijn van een inrichting die veel
van jullie waarschijnlijk hebben gelopen nu voorbij voor de jaren, maar misschien nooit helemaal
geweten wat het is.
Dus dit apparaat zal waarschijnlijk kijken bekend bij de meeste van jullie inmiddels.
>> [VIDEO AFSPELEN]
>> -Een triomf van wiskundige en mechanische vaardigheid is deze geweldige nieuwe
automatische rekenmachine op Harvard University.
Ingewikkelde problemen in de wiskunde te zetten door de machine in gecodeerde vorm op
tape worden nauwkeurig opgelost in een minuut fractie van de tijd die
menselijke berekening.
>> Ontworpen voor alle vormen van bespoedigen wiskundig en wetenschappelijk onderzoek,
de gigantische mechanische brein zal werken voor de Verenigde Staten
Marine tot eind van de oorlog.
>> [END VIDEO AFSPELEN]
>> DAVID Malan: Dus dat is wat je ziet in het Science Center, dat is waar
die machine nu is gehuisvest.
Je eigenlijk maar een deel ervan.
Slechts een deel is momenteel te zien, en dat is een apparaat met de naam
de Mark I en het in wezen echt een grote rekenmachine.
Het werd opgevolgd door de Mark II, en het is van de Mark II dat we eigenlijk
krijg een beetje lexicon.
>> Dit is het eerste geregistreerde geval van iets wat je op het punt om alles te worden
te bekend met over de loop van het semester -
namelijk een bug.
Dus het bleek op een gegeven moment de Mark II apparaat functioneerde niet
goed, en bij nader inzien, Er was inderdaad een bug - een mot -
dat mot -
binnen.
En sindsdien, hebben we verwezen naar fouten in programma's als bugs.
Dus meer op die te komen.
>> Spreken van video ook, als je nog niet heeft, weet dat CS50 is
uiteraard gefilmd.
De lezingen meestal omhoog gaan direct na klasse in de vorm van een pre-release
onuitgegeven formaat, en dan een dag of twee later, we zetten een hogere resolutie
en hogere kwaliteit versie.
U mag Vanessa, die had het herinneren fortuin van het spelen met Google Glass,
die ik me herinnerde aan rekenen deze keer.
Dus als je wilt om te komen na de les en te spelen, ze nu moeten werken.
En als je wilt zien wat Vanessa zag de andere dag, wat je ziet
hier - laat ik het volume te verhogen hier op mijn laptop.
>> [VIDEO AFSPELEN]
>> -Dus laat me wachtrij is dit omhoog.
Oke.
Dus raak deze.
Oke.
OK, Glass.
Een video opnemen.
>> Oke.
Vanessa?
>> [END VIDEO AFSPELEN]
>> DAVID Malan: Oke, dus de reden dat het niet voor de meesten van jullie werkte bij
het einde van de les was omdat ik verder om een ​​uur van die opnemen
beeldmateriaal wijzend op mezelf na Ik zette de bril naar beneden.
Dus vandaag, ik laat ze af, maar bedankt u Vanessa omdat ze zo'n
goede sport.
>> Ondertussen, een paar aankondigingen voordat we vooruitkomen vandaag.
Dus men, CS50 heeft een traditie van het doen wat we kunnen om te proberen om een ​​zeer maken
grote klasse voelen kleiner.
En in de richting van dat doel, de meeste elke vrijdag, verzamelen we in een restaurant in
het plein, Fire and Ice, met 30 of 40 van je klasgenoten, ikzelf, een aantal van
het onderwijzend personeel, en we gewoon hebben een zeer informele lunch.
Wij nodigen vaak vrienden uit de industrie, alumni van de klas, alumni van de
universiteit, eigenlijk gewoon aan elkaar chatten andere up, praten over het leven na
universiteit, het leven op de universiteit, en dergelijke.
Dus als je wilt deelnemen aan deze eerste dergelijke lunch dit vrijdag bij
13:15, het hoofd naar die URL op een bepaald punt.
>> De ruimte is beperkt, dus we zullen doen wie het eerst komt het eerst maalt.
Maar we zullen dit opnieuw doen op een terugkerend basis, dus geen zorgen te maken als je niet
maak het in deze eerste batch.
>> Nu, in termen van de verstrekte middelen curricularly door de cursus,
er is een hele hoop, en als je niet trok de website van de cursus
reeds, in het bijzonder, onder lezingen, je zult zien dat alles vinden
we hebben vorige week is er, zowel in video en een soort
van elektronische vorm.
Maar afgezien van de video's, vindt u dat er nu full text
transcripten, bijvoorbeeld van elke les.
>> Dus als we eigenlijk terug gaan naar dit scherm hier met Vanessa, en navigeer
aan de onderste hoek van het scherm, je zult zien dat eigenlijk vinden, niet voor
Vrijdag de lezing, maar als we terug gaan naar Woensdag, aangezien deze functie neemt een
paar dagen, zult u merken dat u kunt eigenlijk pull up, ten goede of ten
erger, elk woord dat ik of een vrijwilliger op het podium gezegd.
En meer dan dat.
Je kunt eigenlijk zoeken is, kunt u Klik op een van deze zinnen, springen
op dat punt in de video, allen jegens en het einde om het materiaal alle
meer bevaarbaar.
>> Maar als je liever niet volgen in een dergelijk detail, vindt u, voor
Zo, dit kleine menu hier voor 1.5x snelheid, 2x snelheid, of ik f ik al
te snel voor u spreken, 0,75 x snelheid.
Dus beseffen dat alles is beschikbaar zijn er voor u.
>> Maar buiten dat, voor lezingen, realiseren dat we ook deze middelen
beschikbaar.
Dia's, voorbeeldcode, iets dat ik doen op het podium of op voorhand van de klas,
we zullen er posten zodat je kunt spelen samen thuis of in Sanders.
Maar wat we ook gedacht dat we dit zouden doen jaar voor het eerst ook
u met walkthroughs deze voorbeelden.
Steeds, zoals ik heb nagedacht over de waarde van CS50's lezingen, heb ik begonnen
op de vraag hoe nuttig het is voor jullie om daar te zitten, voor mij om op te staan
hier, en voor mij om bij je praat, vooral als het materiaal, de
voorbeelden, steeds complexer.
Want steevast, na enige aantal minuten, iemand zal zone uit, en
vervolgens een aantal belangrijke inzichten van sommige miss you Zo, en dan ben je in wezen
gegaan voor het resterende deel van de klas, dat is niet het beste gebruik van
uw tijd, of, eigenlijk, onze collectief als klasse.
>> En dus wat we dachten dat we zouden proberen te doen, met name voor een aantal van de meer
complexe voorbeelden die ik niet zou kunnen doen rechtvaardigheid in de klas, dat we misschien niet
tijd voor in de klas, of u kunt net zone tijdens, is We zullen produceren
een reeks van deze walkthroughs voorbeelden zodat als je naar, voor
Zo, afgelopen vrijdag videopagina hier onder voorbeelden, zult u zien dat
voor vrijdag, is er nu dit link naar walkthroughs.
En het formaat van deze zal veranderen in de tijd.
Voorlopig gebruiken we een eenvoudige YouTube playlist.
>> Maar wat ik deed met ons productieteam daarna werd door elke
en elk van die voorbeelden weer, hopelijk wijzen in de veel grotere
duidelijkheid precies wat de afhaalrestaurants kan of zou moeten zijn van elkaar.
Dus je zult, vinden, bijvoorbeeld ten opzichte van vorig week, alle van de scratch voorbeelden
we gingen door zijn lineair gebeuren op die manier.
Dus voel je vrij om deel te nemen of niet gaan in dit materiaal.
Echt een thema van deze bijzondere cursus is dat er waarschijnlijk meer
in de weg van middelen dan u zou kunnen absorberen dan
de loop van een semester.
>> Maar dat is een bewuste keuze.
Het is bedoeld om te zijn, zodat je als individuele studenten kunnen zelf-select
op basis van uw leerstijl.
Dus als lezingen voor u werken, geweldig.
Indien secties werken voor je, geweldig.
Als walkthroughs werken voor je beter, geweldig.
Het echt zal zijn aan u om te kiezen welke middelen het beste werken voor jou.
>> Tot slot, dankzij een alumnus van de Natuurlijk bieden we ook een canonieke
set van schrijver notities.
Dus in plaats van dat jullie hoofden in lezingen gekrabbel van
dingen die komen in de klas, wij, de personeel, zal u met wat we
voelen zijn een canonieke verzameling van nota's aan bevrijden je van die afleiding, zodat
als je hier bent en bezig, je bent echt bezig met wat er gaande is,
met je klasgenoten aan het doen zijn op podium, met wat er op het scherm,
en niet gewoon opschrijven verbatim wat er met zijn gezegd.
Zo realiseert al die middelen zijn voor u beschikbaar.
>> Snijden, in antwoord op een FAQ, zal beginnen deze woensdag.
We wezen wachten tot na de meeste andere klassen worden gedaan, zodat we kunnen
minimaliseren van het aantal veranderingen dat we moeten doen.
Maar komen dit weekend, te beginnen Zondag, zal een eenmalig exemplaar van zijn
wat wij noemen super secties.
Deze zullen worden gefilmd voor diegenen die niet kunnen bij te wonen, en in wezen, de
hoofden Natuurlijk zullen wij wandelen door enkele van het C gedeelte van de cursus,
richting van een uiteinde van een probleemstelling, waarvan gaat onze eerste C gebaseerd zijn
probleem set.
En deze zal gewoon optioneel secties in afwachting van wat er zal
geworden terugkerende rubrieken geleid door de cursus 50 plus
lesgeven fellows wekelijks.
Op zondag of maandag of dinsdag, we hebben 90 minuten secties in een zeer
traditionele betekenis, die zal worden mogelijkheden voor handen op en meer
intieme herziening van de materiaal cursus.
>> Zonder verdere omhaal, laat me in te voeren hoofden van de cursus, die
achter de schermen met mij, waardoor alles gebeuren.
Als die hier vandaag kon toetreden mij, Rob en Lauren en Jozef en Lucas, alle
van wie er zijn geweest met de Natuurlijk voor bepaalde tijd.
RJ is de derde dergelijke lid van ons team.
Hij kon hier niet vandaag, maar hij vroeg me om een ​​foto van hem laten zien.
Ik weet niet of hij dit wilde een, maar daar is hij.
>> En laat ik alleen voor het team om te zeggen hallo en stellen zich voor, zodat
u te leren kennen en uw eigen onderwijs mede deze term.
>> LAUREN CARVALHO: Hi.
Mijn naam is Lauren Carvalho.
Ik ben een inwoner tutor in Leverett House.
Ik ben ook super enthousiast te zijn een hoofd TV voor CS50 dit jaar.
>> CS50 is een zeer uitdagende klas en als een zeer grote klasse, dus als je
zich zorgen maakt, als je het gevoel je achter vallen, voel je vrij om
reiken aan iemand van ons bij heads@cs50.het, of aan mij, als je zou
speel graag met mijn gouden retriever pup.
Hier is Lucas.
>> LUCAS FREITAS: He, jongens.
Mijn naam is Lucas Freitas.
Ik ben een junior [onverstaanbaar]
computerwetenschap en linguïstiek.
Ik ben eigenlijk uit Brazilië, en ik ook realiseren Oost-Aziatische studies.
Dus als je vragen hebt over informatica of taal of
iets, laat het me weten.
Of CS50, bijzonder.
>> JOSEPH ONG: Hi.
Ik ben Jozef.
Ik ben een senior studeren computer wetenschap in Elliott House.
Dus, laten we eens kijken.
Je zult me ​​zien rond het uitvoeren een van deze reusachtige camera.
Ik ben de bewoner personeel fotograaf voor 50 als goed, en studenten vaak
Soms verwarren me voor een Aziatische toerist.
>> Dus als je me zien met een camera, niet weglopen.
Gewoon lachen en wees niet verlegen.
En ik hoop dat je geniet van 50.
Ik heb er erg van genoten toen ik nam het, en dat is waarom ik heb TFing voor
deze drie jaar.
>> ROB BOWDEN: Hi.
Ik ben Rob.
Dit is mijn vierde semester met CS50.
Ik heb net afgestudeerd in mei.
Ik was in Kirkland.
Ik ben enthousiast voor dit semester, en ik hoop dat jullie dat ook zijn.
>> DAVID Malan: Bedankt voor dit jaar hoofden, en RJ ook.
>> Dus een paar laatste noten op middelen.
Een, p set 0 is al omhoog.
Deze bestaat alleen in standaard uitgave, die is bedoeld voor het
geheel van de klasse.
Ab p set 1, zal er hacker edities van de meeste probleem sets,
die, nogmaals, zal het materiaal te dekken met een beetje meer van een uitdaging, terwijl
nog aan te raken op een aantal van dezelfde onderwerpen.
Doe een kijkje nemen op de website van de cursus voor dat de specificatie voor p set 0.
>> Kantooruren, zal ook deze week beginnen, Vanavond, morgen, woensdag,
en donderdag in verschillende eetgelegenheden zalen op de campus.
Check out cs50.net/ohs voor het kantoor uur voor de cursus, en beseffen dat dit
zal zeer toevallige kansen, zeker bij het begin van de
semester, door te komen met uw laptop tijdens hersenen pauze.
Breng wat vrienden en chat de TFs en CA's natuurlijk met elke
vragen die u zou kunnen hebben.
>> En ik kan niet genoeg benadrukken, zelfs voor kras en probleem set 0, er
is echt geen domme vraag.
Er is geen enkele student te ongemakkelijk om vragen te stellen.
Aarzel dan niet om te profiteren van deze bron.
Het zal er recurringly zijn het hele semester,
zo zal CS50 bespreken.
Dit is online discussie van de cursus fora op dat adres daar.
>> Wat we ook zullen doen tijdens de colleges is dit ook controleren, dankzij de
docententeam cursus.
En dus als je een vraag hebt tijdens lezing, omdat ik iets gezegd
slecht of helemaal niet, met alle middelen, vragen dat in real-time als u uw
laptop of telefoon op de website, en we zullen ons best doen in de buurt van real-time te
reageren.
>> Zijn er nog vragen over CS 50?
Dan nog een laatste noten van mij.
Die kwestie van SAT unsat.
Als je je studie kaarten af ​​te ronden, als u nog niet hebt, beseffen dat de
overkoepelende visie op zat unsat, beschikbaar voor alle studenten, is echt
om te helpen de rand af van een cursus als dit, om zo te zeggen, zodat als je
merkt dat je 's avonds laat, 02:00, 03:00, echt je hoofd bonken tegen
de muur waar je weet dat je 99% van de de manier waarop er aan de voltooiing, maar u
hebben zo veel andere dingen te doen, Ik denk dat een beter gebruik, vaak, van
time studenten 'is inderdaad overgaan tot die andere dingen, zodat u kunt
optimaliseren van uw tijd rondom.
En SAT unsat is een mechanisme via welke kunt u comfort in het feit
dat 99% van de weg is er nog steeds pretty darn good.
>> Op dezelfde manier, ook, als je in de kom Natuurlijk zonder voorafgaande achtergrond of
niet bijna net zo veel achtergrond als u denk je klasgenoten zou kunnen hebben, ware
of vals, beseffen dat dit een kans om je handen vuil
met de cursus, zet je tenen in het water, om zo te zeggen, net zoals ik zelf
deed jaren geleden met een pass / fail.
Zoals ik al zei vorige week, had deze cursus, net als anderen, niet beschikbaar geweest
pass / fail op het moment, ik zou waarschijnlijk niet ooit voet gezet in
de klas, hoewel ik deed, vijf weken later, verander mijn geest, die u
kunnen net zo goed, en schakel over naar of graded statuut brief.
>> Oke.
Dus keken we naar zaken als deze op Vrijdag, en we zijn zeer snel gaan
overgang naar iets lijkt meer cryptische vandaag.
Maar het is toch de dezelfde fundamentele idee.
Wat was de algemene term die we gebruikt om een ​​puzzelstukje te beschrijven
die eruit zag als dit?
>> Dus, een verklaring.
En u kunt dit elke bellen aantal dingen.
Maar we noemen het een statement, en een verklaring
gewoon vertelt het programma -
of in het geval van Scratch, de sprite -
om iets te doen.
Gedag zeggen in dit geval.
>> Zoiets als dit hebben we plaats genoemd wat?
Ja, dus een Booleaanse expressie.
Een Booleaanse expressie is gewoon iets dat is waar of onwaar, en dus Scratch
trekt ze met deze vorm, maar ook met een vraagteken op het overbrengen
idee dat het antwoord op deze vraag is waar of onwaar, ja of nee
een, 1 of 0.
>> En we gebruiken deze Booleaanse uitdrukkingen binnenkant van constructen als deze die
wat genoemd wij?
Dus, aandoening of bijkantoor.
En de voorwaarde die u hier in te zien Kras heeft een kleine tijdelijke aanduiding voor een
puzzelstukje van die vorm, het doel daarvan is, zodat u kunt
sleep het en zet het op de top en dan dicteren aan het programma als dit Boolean
expressie waar is, doe deze set van instructies, deze set van verklaringen,
anders doet deze andere set instructies.
>> En herinneren dat u kunt nest deze dingen.
Ook al is er niet veel ruimte visueel in dat puzzelstukje, Scratch
zal groeien en krimpen te passen ongeacht de puzzelstukjes u slepen en neerzetten
er dus je kunt eigenlijk nest dit en hebben een drieweg splitsing in de weg.
Indien, anders indien, anders.
En je kunt zelfs verder gaan dan dat door nesting verder en verder indien nodig.
>> Dus tot slot, zagen we constructies zoals Dit, ook wel bekend als een lus.
En dit is gewoon iets dat doet iets opnieuw en opnieuw en opnieuw.
In dit geval toevallig een eindig zijn aantal keren, maar we hebben ook
zag een voorbeeld waarbij het aantal keer kwam van een variabele, zodat
zou kunnen veranderen.
En we zagen ook een ander blok helemaal riep een eeuwig blok dat
liet ons toe om lus oneindig lang.
>> Dus een andere constructie die Scratch 2.0 heeft - en die van u meer
comfortabel met voorafgaande achtergrond zijn al goed vertrouwd zijn met deze
construeren -
deze dingen wat genoemd wij?
Dus we belden deze functies, anders bekend als de procedures.
Er is een klein semantisch verschil, maar we zullen ze gewoon functies aanroepen.
>> En een functie bij Scratch, is een aangepaste puzzelstukje dat
u zelf kunt maken, zodat u een nieuw puzzelstukje, in deze dat
geval worden genoemd hoest, dat verschijnt onder alle andere
beschikbaar puzzelstukjes in Scratch.
Hoewel MIT niet uitgevonden dit puzzelstukje, je deed.
>> Dus een functie kunt u nieuwe te maken gedrag, geef het een functienaam en
noem het dan, om zo te zeggen.
Echt gebruiken in programma's opnieuw en opnieuw en opnieuw, zonder te hoeven wachten
voor iemand zoals MIT op de weg naar uitvinden nieuwe functionaliteit van Scratch.
U kunt zelf deze puzzel op te bouwen stukken zelf, en ze vervolgens te hergebruiken
in uw eigen programma's.
En we zullen een terugkerend voorbeeld zien van die van vandaag en verder.
>> Dus vandaag, nu we de overgang om iets meer geheimzinnige.
Maar aan het eind van de dag, wat krachtiger en expressief en meer
vertegenwoordiger van het pad dat we zullen op alle semester gedurende een aantal
van talen -
die van een code of broncode.
En broncode, zo blijkt, is niet wat een computer
meestal loopt eigenlijk.
Broncode ziet er iets als dit.
>> Dus dit is wederom misschien de eenvoudigste programma kunnen we schrijven in een
taal genaamd C. We zullen beginnen om tease deze apart duurde niet lang, en als
dit is echt niet uitziet als Grieks om je nu, geloof me.
Binnen een week of twee de tijd, dit zal zijn maar al te bekend en eigenlijk
vrij representatief van steeds complexe voorbeelden waarmee je
krijgt ook meer comfortabel.
>> Maar je kunt niet zomaar dit uitvoeren soort code meestal.
Je hebt om te zetten in iets dat de computer zelf begrijpt.
En dus voor dat we iets nodig hebben we gaan naar een compiler te bellen.
Een compiler is een programma dat duurt broncode, zoals je net zag, zoals
ingang, en het produceert nullen en die als output, anders
bekend als objectcode.
En het zijn die nullen en enen die zou heel zo uitzien dat
uiteindelijk begrepen door uw Mac of pc.
>> Als je ooit hebt gehoord van de marketing uitdrukking Intel Inside, die net
betekent dat een bedrijf genaamd Intel heeft vervaardigd de
hersenen van uw computer -
ook wel bekend als de CPU, centrale verwerkingseenheid -
en dat is gewoon het ding dat begrijpt patronen
van nullen en enen.
En dus door het omzetten van broncode in objectcode door dit proces hier
dat zullen we doen met een paar commando's in slechts een beetje, je bent
het creëren van patronen van nullen en enen dat de medewerkers van Intel hebben
besloten vertegenwoordigen bepaalde uitspraken.
>> Nu, weet ik niet precies weet welke wordt die door slechts een blik op
deze nullen en enen.
De meeste mensen deze dagen niet.
Maar daar ergens een patroon van nullen en enen die vertegenwoordigt de
statement print.
Ergens zou er anders set van nullen en enen die
vertegenwoordigen de notie van eeuwigheid of Herhaal 10 keer of zelfs miauw, als het
eigenlijk een programma dat kan zijn sommige geluiden.
>> Dus in het kort, hebben mensen net besloten, net zoals we deden voor ASCII -
voor brieven van het alfabet vorige week - mensen hebben besloten dat zelfs
meer complexe patronen van nullen en enen vertegenwoordigen meer complex gedrag
zoals afdrukken of zeggen of miauwen.
En dus voor vandaag, en grotendeels verder in het semester, nemen we voor
vanzelfsprekend dat iemand heeft bedacht hoe dat mapping doen.
Maar we een daarmee idee lagen bovenop het werk van mensen
die vóór ons zijn gekomen, zal voor verleende het feit dat dit gaat over
onder de motorkap.
Maar we zijn veel meer geïnteresseerd in gebouw dingen die meer
interessant op de top van dit alles.
>> En dus inderdaad, het eerste programma dat we schreef in Scratch was dit super eenvoudige
een, Hello World.
En je kunt denken dat dit als zijnde de hoofdprogramma dat regelt Scratch's
gedrag als van afgelopen vrijdag.
>> Vandaag gaan we beginnen te vertalen Kras puzzelstukjes in
broncode in deze taal genaamd C zodat leek dit op
Vrijdag, vanaf vandaag verder, is nu gaat uitzien.
Weliswaar meer cryptisch.
Het is vrij storend en soort van geest verdovende om alle citaten te zien
en de puntkomma en haakjes enzovoort.
>> Maar als je begint iets te negeren niet begrijpen, en echt kijken
in de kern van de witte tekst op de scherm, zeker zie je, zoals ik dat doe,
"Hallo, wereld." Dat de lijnen met de paars verklaring tot boven, en het blijkt
erop dat het zoekwoord belangrijkste gaat line-up conceptueel met als groene
vlag geklikt.
>> Dus met andere woorden, terwijl in Scratch, we deze Hello World programma uit te voeren
met die twee puzzelstukjes, in C, we gaan om het uit te voeren met deze
vier enigszins cryptisch lijnen.
Maar als we dieper ingaan op deze, zul je zien dat elk van deze
witte letters op het scherm daadwerkelijk heeft een aantal belangrijke betekenis,
en de meeste van onze programma's gaan kijk structureel helemaal hetzelfde.
Dus een verklaring, om duidelijk te zijn, wat leek "zeg hallo wereld" op
Vrijdag gaat beginnen kijken zoals dit op maandag.
printf ("hello, world").
En er is een aantal rare backslash n, er haakjes, er is
puntkomma.
>> Maar aan het eind van de dag, de toets afhaalmaaltijden vandaag is dat al zijn we het doen
is het vertalen van dingen uit beeld vormen naar de vorm van tekst.
Zodat een lus die leek deze vorige week gaat nu kijken
zoiets als dit.
>> En laat me wijzen, net als in Scratch, er is op verschillende manieren te
bereiken van hetzelfde doel.
Hetzelfde in C. Ik ben niet tonen u de enige manier om dingen te doen, maar een manier om
vertalen dit voor altijd blok een lus C.
>> Deze hier, herhaal dit 10 keer.
Deze echt soort bochten de erg de eerste keer dat je het ziet.
Maar dat voortaan voeren, we gaan een gebruiken
lus, zo te zeggen.
En duidelijk er is een aantal syntax dat is een klein areaal met I en
gelijk en 0, maar zodra we duiken in dat vandaag verder, je bent gewoon gaan
om te zien dat dat is allemaal gewoon te doen wat elementaire rekenkundige om ons uit 0
Op tot 9 of 10 in dit geval.
>> Ten slotte, met variabelen, zult u herinneren dat een variabele is een stukje van de opslag.
Nou, wat we hadden aan de linkerkant is er afgelopen week gaat een beetje te kijken
zoiets als dit deze week.
Maar nogmaals, meer daarover te komen.
>> We hadden Booleaanse uitdrukkingen, die vorige week, leek dit.
Deze week verder, ze gaan beginnen om een ​​beetje uitzien als dat.
>> En deze is eigenlijk een beetje geruststellend.
Het is eigenlijk bijna net zo eenvoudig de groene blokken.
Maar hier hebben we, opnieuw, een aantal nieuwe syntax met ampersands, maar u kunt
misschien denk dat het in Scratch, je Zeg A-N-D, blijkbaar in C, zijn we
gaan zeggen ampersand-teken.
Maar dit alles zal worden natuurlijke duurde niet lang.
>> Voorwaarden.
Vorige week, leek het Deze links.
Deze week, aan de rechterkant, het is gaat zien dat.
Maar nogmaals, de sleutel mee te nemen is dat als je ziet dat soort dingen op
rechts, en vooral als minder comfortabel, het is een soort van over je
hoofd, krijg je een beetje overdonderd dat Ik heb echt geen idee hoe ik het kon
eventueel komen met dat vanuit het niets -
no pun intended -
gewoon beseffen dat het echt hetzelfde idee dat waarschijnlijk voelde zo veel meer
natuurlijk de vorige week.
En zelfs als je niet hebt gedoken in probleem set 0, ik durf u zult vinden
dat de puzzelstukjes zijn vrij intuïtief, althans
worden zo in de tijd.
>> Dus laten we duiken inch
Laten we onze handen vuil hier met Deze eerste eenvoudige programma.
En eenvoudig is natuurlijk relatief.
Om dit te doen, ga ik schermen veranderen om dat apparaat Ik belde de
CS50 apparaat.
De CS50 apparaat is een fluitje van een software die draait binnen een
venster op mijn Mac, en je kunt ook lopen het in een venster binnenkant van je pc, dat
kan ik exact dezelfde zijn computeromgeving elk TF, zoals
elke CA, zoals elke student in de klas.
Omdat het CS50 apparaat letterlijk een ander besturingssysteem
genaamd Linux -
specifiek Fedora Linux -
en wij, het personeel, hebben geconfigureerd het installatieproces voor deze
besturingssysteem zodanig dat, er is een klein CS50-logo in de
midden, twee, is er een aangepast menu op de bodem, en drie, pedagogisch,
We hebben de gebruikersinterface vereenvoudigd zoveel mogelijk, zodat wanneer u
eerst opstarten dit ding op uw eigen Mac of pc, je hebt dezelfde
milieu als iedereen, en u hebben alle tools die je nodig hebt
voor de cursus zonder te achterhalen hoe u elke installeren en
elk instrument afzonderlijk.
>> Dus dit ziet er relatief zoals Mac OS of Windows.
In de linker bovenhoek, je wezen hebben een menu Start van
sorteert, of een Apple-menu.
En dan heb je wat wij vermoeden zal zijn uw drie meest voorkomende pictogrammen.
Een daarvan is Chrome.
Er is een browser binnen van het apparaat.
>> Twee is een programma genaamd gedit, die we zagen kort vorige week, dat is
gewoon een grafische editor.
En drie is een terminal programma, dat is een zwarte en witte venster van
weleer die ons in staat stelt om meer te typen arcane maar krachtiger opdrachten bij
onze toetsenbord.
Dus ik ga om verder te gaan en klik op gedit, en er zeker van dat probleem
set 1, worden vrijgegeven op vrijdag, zal loop je door al deze dezelfde stappen.
>> Merk op dat ik heb een vrij eenvoudige gebruikersinterface met drie delen.
Aan de linkerkant, ik heb een grote lege venster genaamd broncode.
Dat is waar ik ga om een ​​samenvatting te zien van een code die ik schrijf.
Aan de rechterkant, ik heb een groot tabblad, momenteel gered, en dat is
waar mijn code gaat gaan.
En onderaan, heb ik een ingesloten Terminal-venster, een zwart-wit
prompt waar ik kan commando's typen om compileren en om mijn programma's te draaien - dat
is, te maken en om mijn programma's te draaien.
>> Dus laten we beginnen simpel.
Laat me gaan omhoog naar Bestand, Opslaan.
Ik ga om te gaan en gaan in jharvard.
Dus het apparaat, ongeacht hetgeen uw naam is, behoort tot een man genaamd
John Harvard, die een jharvard huis directory binnenkant waarvan al uw
bestanden zal gaan.
Het is uw eigen exemplaar van zijn rekening, dus we zijn niet allemaal delen
dezelfde harde schijf.
Je hoeft alleen de illusie van John Harvard's eigen.
>> Van tevoren, ik eigenlijk geïnstalleerde Dropbox.
Het apparaat wordt geleverd met preprepared Dropbox, zodat als er iets mis gaat
tijdens het semester, als u hebt geconfigureerd apparaat met een vrije
Dropbox-account, al je bestanden wil automatisch een back-up, zodat je
kan heel gemakkelijk ze te herstellen.
En ik ga om te gaan in mijn Dropbox directory, en er gaat al
te zijn een paar andere dingen zijn er.
>> Maar ik ga om verder te gaan en ga naar Bestand, Opslaan.
Ik ga om te gaan in jharvard, Dropbox, en hier, ik ga
geef mijn programma een super eenvoudige naam, hello.c, en vervolgens opslaan.
Dus ik heb nu dezelfde interface.
Het enige dat is veranderd is het tabblad boven.
Dus ik ben heel snel gaan om te recreëren dat programma uit de
schuift een moment geleden.
>> Dus in main (void), en dan printf, "Hallo, wereld," een enigszins cryptische
backslash n, dicht citaat, sluit haakjes, puntkomma, en
vervolgens Ctrl S te redden.
En merk als een terzijde wat er net verscheen hier in de linkerbovenhoek.
En dit is niet nuttig vandaag, maar nuttig verloop van tijd zal zijn.
Je ziet alleen maar, nogmaals, een samenvatting van de code die je hebt geschreven.
En omdat ik iets genaamd schreef belangrijkste, dat is de reden waarom het woord hoofd geknald
up daar.
Maar voor het grootste deel, we niet nodig dat vandaag.
>> Oke, dus ik beweren dat dit is mijn eerste programma geschreven in een programmeertaal
taal genaamd C. We weten van vrijdag dat wat dit ding gaat doen
zeer uninterestingly toen ik draaien het is gewoon geven -
in andere woorden, drukken, als computer wetenschapper zou zeggen -
hello wereld op het scherm.
Dus om dit te doen, zult u merken dat ik heb om hier beneden te gaan naar mijn terminal
raam, en nu heb ik een knipperende prompt.
Dit is nu een toetsenbord versie mijn John Harvard home directory.
Het is een toetsenbord manier via welke om mijn harde schijf te navigeren.
>> Dus ik kan niet echt typen zoals ik deed vorige week te maken hallo, want het is
gaat geen regel te zeggen tegen doelwit maken -
er is iets mis.
Ik weet niet precies wat dat bericht betekent, maar dat komt omdat standaard,
wanneer dit zwart en wit venster is geopend, ben ik de binnenkant van John Harvard's
home directory.
Maar waar heb ik dat programma op te slaan?
In mijn Dropbox-map.
>> Nu, ieder van ons zijn opgegroeid met computers waar je gewoon dubbelklikken
op het pictogram van een map, het opent, en voila.
Dat is waar het bestand met de naam hello.c zou zijn.
Dus in feite, laten we dat doen.
>> Laat me ga je gang en het minimaliseren van gedit net zoals u zou doen op
Windows of Mac OS.
Laat me gaan in het huis map linksboven.
Ik zal hier zie een heleboel mappen.
Hier is mijn Dropbox-map.
De vinkjes betekent dat het is al gesynchroniseerd.
En er zijn een paar dingen in hier, maar merkt dat hello.c is
inderdaad daar.
>> En dus in Mac OS of Windows, normaal, Ik zou dubbel klikt dat, het opent in
welk programma, en ik ben goed om te gaan.
Maar nu, in ieder geval vanaf vandaag, we nodig hebt om een ​​stap terug te nemen alleen maar om
geven u een aantal basis gereedschappen voor uw tool kit waarmee om meer te doen
krachtige dingen duurde niet lang.
>> Dus bij deze prompt, ik moet het doen equivalent van te dubbelklikken op het
Dropbox-map.
En om dat te doen, ga ik CD typen voor veranderen directory, Dropbox, in te voeren.
En let nu op de haakjes bij mijn zogenaamde prompt zegt nu dat ik in
tilde, de kleine kronkelende symbool in de linkerbovenhoek van
de meeste toetsenborden, / Dropbox.
Dit is slechts korte notatie voor zeggen mensen, je bent nu de binnenkant van
de Dropbox-map, net alsof je dubbel had geklikt op.
>> Dus als ik nu ga je gang en typ maken hello, voer, zie ik een zeer cryptische
commando, maar geen foutmelding, zo lijkt het, en vervolgens
andere knipperende prompt.
En als je te herinneren, ooit zo snel op vrijdag, we deden dit. . / Hello.
>> Wat je gaat zien is het resultaat van mijn lopende dit programma, of, in Mac
OS en PC termen, als ik normaal zou verdubbelen Klik op een programma -. een app
programma of een. exe, het opent een raam en afdalingen.
Te typen. / Hello is net als dubbele klikken op een programma om het uit te voeren, maar
met mijn toetsenbord.
>> Enter, hello wereld.
En dat is het.
Dus laten we plagen deze uit elkaar om zo het voelt niet te veel zoals Grieks.
>> Zo. ​​/ Betekent wat?
Iedereen die ooit genavigeerd een toetsenbord omgeving als deze, wat is dot
verwijzen naar?
De huidige directory.
>> Dus de huidige directory is gewoon een synoniem voor een map.
Dus door te zeggen dot slash, zeg ik, op zoek naar een programma genaamd hallo in het
huidige directory -
in de huidige map.
Met andere woorden, mijn Dropbox-map.
En dat is waarom hitting Voer daarna eigenlijk loopt dat programma.
>> Als ik nu het type LS, merken dat ik zie alles in mijn Dropbox-map.
Getting Started.pdf, die Dropbox geeft u gratis, mijn foto's
directory, een openbare map, Niet-opgeslagen Document 1 die ik maakte per ongeluk een
daarnet, foo.c, die ik eerder gemaakt vandaag, en vervolgens twee lijnen -
hello.c en hallo.
>> Hello.c is het programma dat ik schreef met gedit, en wat is hallo in het groen?
De hello in het groen is het uitvoerbaar.
Met andere woorden, als ik liep deze opdracht een moment geleden - laat me roll
terug in de tijd -
toen ik liep te maken hallo, dat is de middelste stap hier.
En het duurde hello.c als input -
AKA broncode - en het produceerde een bestand met de naam hello als output, die
bevat al deze nullen en enen.
En dat is waarom, in het einde, ik kan daadwerkelijk uitvoeren van een commando als. / hello.
Vanwege Intel Inside, mijn besturingssysteem systeem, Linux, opent die nullen
en degenen, voedt ze in de hersenen van mijn computer -
de CPU -
en dat de CPU weet, oh, hier is een patroon van nullen en enen die zegt
Druk de volgende ding op het scherm.
>> Wat is het volgende ding?
Quote unquote, "hello wereld."
>> Oke, dus een korte samenvatting van enkele van deze commando's, zodat we kunnen beginnen
nemen ze voor lief.
Laat ik verder met waar we gebleven waren.
En u zult zich herinneren dat we hadden CD op onze back-end een moment geleden.
Deze zijn, ik durf te zeggen, voor huidige doeleinden -
misschien deze week - het enige commando dat we misschien moet typen op de opdrachtregel
prompt naast maken.
>> Dus CD stond voor wat?
Verander de map.
Het is gewoon het equivalent van dubbele klikken op een map.
En als een terzijde, als je verloor ooit binnenkant van uw
apparaat, zodat Dropbox -
Ik wil terug naar mijn jharvard directory -
bij twijfel, CD, voer, zonder andere woorden, en het gewoon ritsen je terug
naar waar je begon, welke is een leuke kleine snelkoppeling.
>> Oke, dus nu andere opdrachten.
LS.
Ik dat een moment geleden getypt.
Wat denk je dat LS voor staat?
>> Dus, lijst, toch?
Terug in de dag, wanneer mensen kwamen met deze opdrachten, zij
probeerden om efficiënt te zijn, en in plaats uittypen L-I-S-T enter, zij
besloten LS.
Dat is prima.
Het klinkt genoeg als lijst.
Laten we gewoon het type LS voeren, en dat staan ​​de bestanden of mappen in mijn
huidige map.
>> mkdir, kunt u waarschijnlijk wel raden.
Maken directory.
Dus je hoeft niet naar bepaalde menu bestand en kies Nieuwe map in deze omgeving.
Integendeel, het commando mkdir spatie typt u en vervolgens de naam van de map
dat u wilt maken, en het zal gebeuren.
>> rm, kunt u waarschijnlijk wel raden.
Verwijderen of te wissen.
Dus als je wilt een bestand verwijdert, zult u zien in het probleem set hoe je
kunnen dit doen.
En rmdir, verwijdert directory.
>> Dus nogmaals, ik de neiging om te vliegen door een aantal van deze gegevens, een, want
ze zijn niet allemaal zo leuk om te besteden tijd op, maar twee, zullen wij u voorzien in
veel meer detail in een van de probleem cursus stelt, in het bijzonder
de standaard edities, elk van de stappen die je nodig zou kunnen hebben om dit te typen
dat je meer en meer comfortabel met deze dingen.
>> Maar nu laat me plagen elkaar een ander ding.
Toen we getypt maken hallo even geleden, we zagen een cryptische reeks commando.
We zagen, nogmaals, maak hello.
OK, laten we dit doen.
Ik stond op het punt om een ​​fout te maken, maar [Onverstaanbaar] nu toegeven dat ik stond te
en bewust doen.
>> Wat heb ik verkeerd gedaan net nu?
Ja, dus ik ben niet in de Dropbox directory, want een ogenblik geleden I
getypte CD en gewoon druk op enter.
Die me ingezoomd terug naar waar ik begon, dat is niet waar mijn dossier
is, dus ik moet echt te doen CD Dropbox voeren, en nu kan ik rm hello doen
voeren, verwijder regelmatig file hello.
Ik weet niet waarom het zo cryptisch.
Die net betekent bent u zeker u wilt hallo verwijderen?
U kunt y typen voor ja, in te voeren, en nu is het weg.
>> En als ik nu typ maken hallo nogmaals, het is ga mijn objectcode recreëren,
recreëren die nullen en enen.
Maar wat is de deal met deze zeer lange commando?
Nou, we zullen deze plagen elkaar het duurde niet lang, maar zorg -
Ik vertelde een beetje een leugentje om bestwil vóór -
geen compiler.
Maken is een programma dat automatisch cijfers uit hoe je een run
compiler voor u.
>> Dus de opdracht die je echt zou moeten zijn lopen om hello.c zetten
in hello ziet er eigenlijk een beetje meer als dit.
En God verhoede we moeten eigenlijk vergeet niet om ooit typen dat hele
reeks opdrachten uit.
Het doel van te maken in het leven is om vergeet niet dat de mate van complexiteit van
ons en automatiseren wat anders zouden doen erg vervelend werk.
>> Maar ik kan benaderen dat.
Dus per deze kleine spiekbriefje hier, ik kunnen benaderen wat dat commando is
doen door simpelweg te typen Clang, dat is de naam van de compiler zullen we
het gebruik van dit semester.
Als een van u ooit hebt gedaan iOS ontwikkeling voor de iPhone of iPad,
Clang is het programma dat u hebt gebruikt binnen Xcode om je apps te maken.
Clang, hoewel, is gewoon een ander programma waarvan we de naam kunt typen op de opdrachtregel
prompt, en door de invoering van dit bedrijf, Ik kan iets dat een te introduceren
weinig representatief opdrachten komen.
Dus laat ik dit handmatig doen.
>> Dus rm hallo, en nu het bericht in geval Ik heb, net als een sanity check -
. / Hallo, wat denk je dat ik moeten zien als ik dit doe?
Een soort van fout.
Geen dergelijke dossier directory.
Zodat men eigenlijk vrij direct.
>> Dus nu laat ik het scherm te wissen.
Controle S wist alleen het scherm om wat afleiding te verwijderen.
En nu ga ik handmatig Type clang-o hello hello.c.
Dus wat is dit over te doen?
Precies hetzelfde wat te maken deed voor ons, maar ik wist weg te gooien sommige van
de overbodige woorden.
>> Clang is het programma dat gaat neem een. c-bestand als input en produceert
nullen en enen als output.
Maar-o voortaan zullen noemen een schakelaar of een vlag.
Dit is slechts techie jargon voor het zeggen Dit is een woord dat je typt op een prompt
dat een of andere manier het gedrag beïnvloedt van het programma je draait.
Dus wil iemand raden wat-o overbrengt?
>> Uitgang.
Het is gewoon iemand besloten-o betekent uitgang van een bestand hallo geroepen en nemen als
ingang, ongeacht het laatste woord over de prompt is, hello.c, zodat als ik hit
Voer nu, niets lijkt te gebeuren.
En vreemd genoeg, in deze wereld van programmering, als er niets gebeurt,
dat is waarschijnlijk een goede zaak want er is geen fout
bericht op het scherm.
Hallo, Enter.
Mijn programma is nu uitgevoerd.
>> Maar ik kan stomme kleine dingen doen zoals deze. Clang-o, hihihi, hello.c,
voeren, en nu heb ik een identieke programma genaamd hihihi.
Het gedraagt ​​zich hetzelfde, maar de naam is anders.
>> Dus dit is alleen maar om te zeggen dat als je wilt het gedrag van een invloed
programma, we gaan steeds meer zie dingen geroepen
command line argumenten.
Dit is een lijn.
U typt opdrachten.
Ergo, command line.
En command line argumenten zijn slechts woorden of kleine stukjes van de syntaxis die
andere manier invloed op het gedrag van programma's die we lopen.
>> Oke, dat is misschien wel de meest saai programma kunnen we schrijven en zien.
Laten we nu iets doen interessanter.
Laat me ga je gang en maak een nieuw bestand.
Ik ga om te gaan en slaan deze in John Harvard's home directory als,
laten we noemen het custom.c, te zijn een beetje aangepast programma.
Ik ga in te zoomen op mijn top van de tabbladen hier en opnieuw beginnen.
>> Zijn standaard stdio.h.
Meer op dat in een moment.
int main (void), meer op dat in een moment.
printf ("hallo, David").
Veel interessanter, toch?
>> Dus nu als - niet omwille van mijn naam, gewoon omdat het anders -
maken gepersonaliseerde voeren.
Aangepaste, hello, David.
Maar zelfs dat, ook dat is een leugentje om bestwil.
Dit programma kan net zo goed worden genoemd David.C, want het is niet op maat
gedrag helemaal.
Echt, ik wil een programma dat vraagt de gebruiker voor hun naam.
>> Dus hoe moet ik dat doen?
Nou, laat me bladert u omhoog hier.
En voordat ik een verklaring in Kras, voordat ik gebruik printf,
ook wel bekend als een functie, laat me eerst de gebruiker om invoer te vragen.
>> Dus om dit te doen, moet ik doe een paar dingen.
Een, ik heb een plek op te slaan van de gebruiker noemen nadat ik hem heb gevraagd of
haar voor.
Wat construct moet ik waarschijnlijk gebruik tot een waarde als dat slaan?
Een variabele.
>> Dus in tegenstelling tot Scratch, waar je gewoon een leuke puzzel stuk, hier, we moeten
Gebruik uiteraard woorden ons uitdrukken.
En voortaan, wanneer u maar wilt een woord of een zin, in de programmering,
we gaan roepen dat een string.
Dus een string is een woord of een zin.
Het is een reeks van nul of meer personages, meer formeel.
>> En als je wilt dat een dergelijke variabele te bestaan, je te zeggen geef me nog een.
En de manier waarop je dat doet is aan zeggen touwtje s puntkomma, waar s kan worden
alles wat je wilt.
In feite, is een beetje underwhelming.
Laat ik verder gaan en meer duidelijk noemen naam.
Geef me een string genaamd naam.
>> Maar nu, wat is de persoon naam standaard?
Nou, als de mens niet iets typt in, natuurlijk, er zal
tot geen waarde in naam zijn.
En het blijkt in C, als je niet geven een variabele een waarde, het gaat om
hebben een vuilnisbak waarde.
Het zou kunnen hebben een aantal willekeurige nullen en degenen, dus je bent gewoon gaan om te zien
vuilnis, echt, op het scherm als je probeert om het weer te geven.
>> Maar ik kan bevestigen dat door te zeggen, eigenlijk, winkel binnenkant van de naam van de
volgende waarde.
De manier waarop je slaan waarden in variabelen is Als u een variabele naam op het hebben
links, moet je een of andere manier zetten wat je wilt opslaan in het op de juiste, en
de syntaxis voor die gaat zijn als volgt.
>> We hebben dit niet eerder gezien, maar neem op geloof voor een moment dat er
Er bestaat een andere verklaring in de wereld dat ga ik weer bellen functie,
en deze functie riep krijgen string.
En het doet letterlijk dat.
Het krijgt een of andere manier een reeks tekens van de mens en vervolgens
er iets mee doet.
>> En dit betekent eruit cryptische syntax.
Normaal gesproken, als je gebruik maakt gelijkheidstekens - je bent in de wereld van, zeg,
algebra, en je bent eigenlijk zeggende x is gelijk aan 1.
Hier zijn we niet zeggen dat naam gelijk krijgen string.
We zeggen store in naam van wat is aan de rechterkant
van die gelijk-teken.
De gelijk-teken vertegenwoordigt de opdracht operator.
Het is de syntax die zegt gezet wat er op de rechterkant binnenkant wat is
links.
Dus maak je string is een nieuw stuk functionaliteit die niet alleen
iets -
vraagt ​​de gebruiker om een ​​string -
keert het ook, zo te zeggen.
>> Dus laten we eens zien wat er gebeurt hier gebeuren.
Ik ga nu verder te gaan en uit te zoomen, en ik ga een paar te krijgen
fouten bij mijn prompt.
Ik ga typen maken gepersonaliseerde, in te voeren.
Wow.
Een hele hoop fouten.
>> Oke, dus dit is een soort van overweldigend, zeker in het begin, maar
blijkt al deze zeer weliswaar cryptische foutmeldingen zijn
verwijzing naar bepaalde patronen we beginnen te zien in de tijd.
Dus dit zal ik plukken uit, want het is de eerste.
Gebruik van niet-aangegeven id string.
>> Dat betekent gewoon dat gedit of Clang, in dit geval, niet weet
wat ik bedoel met string.
En dat komt omdat in C, de programmeertaal taal, is er eigenlijk
is geen variabele van het type string.
C weet niet dat strings bestaan.
>> Maar wij, CS50 personeel, doen.
En dus op voorhand van de klas, we maakte een file CS50.h.
En de binnenkant van dit bestand - en meer over de syntaxis te komen -
binnenkant van dit bestand is een definitie van wat ik net gedefinieerd
mondeling als een string.
Dus gewoon door het sluiten van deze ene lijn van code in mijn programma, ik ben nu
onderwijs gedit en maak en Clang allemaal op hun beurt wat een string is.
>> Ik weet niet hoe nog niet.
In een paar weken, we zullen schil terug die laag.
Maar voor nu, weet dat dit leert de compiler wat een
snaar eigenlijk is.
>> Dus nu laat ik duidelijk mijn terminal hier beneden.
Laat me re-run maken gepersonaliseerde, en ik opgelost al deze problemen.
Dus ook dit gaat zijn een terugkerend thema.
Ik schreef slechts een 9 line programma, en toch had ik 18 lijnen van fouten.
Dat is een beetje intimiderend.
Maar beseffen dat ze vaak cascade dergelijke dat een klein foutje triggers
de verwarring voor de compiler, en het lijkt veel erger dan het is.
>> Dus nu een scherpzinnig waarnemer zal weten dat ik krijg een string uit de
gebruiker, maar ik ben niet echt doen wat met het?
Ik ben niet werkelijk te doen niets mee.
Dus als ik eigenlijk weer op maat draaien, het gaat er gewoon zitten.
Wat is er gaande?
Mijn programma lijkt te worden geplakt op welke lijn, zou je zeggen?
>> Dus het is eigenlijk vast op lijn 7.
En we hebben dit niet eerder gezien, maar op lijn 7, is er, nogmaals, dit
verklaring, krijg string.
En het doet wat het zegt.
Het is nu wachten op de mens de tekenreeks nemen.
Dit is volkomen intuïtief voor mij, de mens, want ik heb niet verteld
wat te doen.
>> Maar laat mij ga je gang op geloof en laat me doen alsof ze Rob.
Enter.
Dat is niet het programma dat ik beoogde.
Dus hebben we onze eerste blog.
>> Maar laten we proberen te beredeneren door waarom dit het geval is.
Ten eerste wil ik deze eerste probleem op te lossen.
Laat ik voeg een regel hier die zegt printf, wat is uw naam?
Laten we het gewoon doen dicht citaat, sluit haakje.
>> Laat me nu opnieuw start het programma.
Probleem.
Ik zie niet dat.
>> Rechts.
Ik heb niet opnieuw compileren.
Dus in een taal als C, omdat u veranderen de broncode betekent niet
dat u uw object code zijn veranderd om nieuw object code te genereren,
nieuwe nullen en enen.
Je moet hercompileren.
Als ik nu opnieuw uit te voeren op maat, voer, ah, een beetje meer duidelijk.
Mijn naam is Rob.
Nog buggy.
>> En ik zou beweren dat er een paar bugs nu.
Dit ziet er gewoon afschuwelijk, eerlijk gezegd.
Willen, minimaal, zou ik een ruimte is er, of verplaats de
cursor naar de nieuwe lijn.
>> En eigenlijk, nieuwe lijn.
Dat is een soort van een sleutelzin hier die we hebben gezien, maar niet gedefinieerd.
De manier waarop krijg je een tekst door te gaan naar de volgende regel,
je hoeft dit niet te doen.
Dit is verwarrend voor de computer.
Dit ziet eruit als twee aparte lijnen code, geen van beide
is volkomen juist.
Je moet in plaats daarvan worden meer expliciet en zeggen, geef mij een nieuwe lijn, die we
vertegenwoordigen in c met backslash n.
>> Dus er is een paar van zulke tekens.
Backslash n zal dat esthetische vast.
Laat ik mijn programma opnieuw compileren.
Laat me re-run mijn programma.
>> Dit ziet er beter uit.
Het is nog vrij primitief, maar het is ook nog buggy.
Dus er is een -
zelfs als je nog nooit hebt geprogrammeerd, kunt u waarschijnlijk nemen een gok
op waarom dit programma is nog steeds gebrekkig.
Wat heb ik nodig om dat te doen Ik heb nog niet gedaan?
>> Dus ik moet eigenlijk doen iets met de naam.
Net als in het niets, je zou eigenlijk toekennen van een variabele zoals n of
tegen te gaan zoals wij deden vorig week - een waarde.
Maar als je niets doet met het, niets gaat gebeuren.
>> Oke, dus laten repareren.
Laat ik typ mijn variabele daar, en laat me hier naar beneden gaan.
Laat me opnieuw compileren, laat me re-run, Rob.
Nu ben ik gewoon een idioot, nietwaar?
>> Dus dit is niet echt om me verder.
Maar dat was een volkomen natuurlijk instinct, zou ik pleiten, toch?
Indien de variabele heet naam en I wil het er naartoe te gaan, waarom doe ik niet alleen
Typ het daar?
>> Nou ja, natuurlijk, hebben we tot nu onderscheiden
tussen wat is een string?
Merk op dat citaat unquote hier, hello naam?
Dit eigenlijk zelf is een string.
Het is hard gecodeerd.
Het is niet van de mens.
Het is van mij, de oorspronkelijke programmeur, maar het is nog steeds een string.
>> Dus als je letterlijk schrijft N-A-M-E binnen van een string, wat er gaat
krijgen gedrukt?
Nou, N-A-M-E. We in plaats daarvan moeten om printf vertellen, worden niet afgedrukt
out letterlijk noemen.
Print de waarde van de naam.
>> En om dat te doen, doen we het volgende.
En dit is slechts een menselijke conventie.
We in plaats daarvan zeggen% s, en dat staat voor string.
En dan aan het eind van mijn nauwe citaten, Ik ga een komma te zetten en
passeren een tweede argument in deze verklaring.
Ik ga daar typt u de naam.
>> Dus nu zien we een iets nieuwe syntax.
We hebben nog twee haakjes, en voortaan wil ik zeggen dat het spul
tussen haakjes staat argumenten in een functie -
ingangen die een of andere manier gaan om zijn gedrag te beïnvloeden.
Dus door die logica, hoeveel argumenten doet printf lijken te zijn
nemen op dit moment?
>> Dus het lijkt te nemen van twee, en dat is inderdaad geïmpliceerd
door de komma hier.
Dus dit is een argument in tussen aanhalingstekens.
Hoewel het een komma in, alles is in aanhalingstekens, wat betekent
het is een lang koord.
Komma, variabele naam.
>> Dus nu laat me uit te zoomen.
Laat ik deze opnieuw starten.
Rob.
Verdomme, wat heb ik verkeerd gedaan?
>> Oke, dus je moet hercompileren.
Dus nogmaals, gemakkelijk fouten te maken vroeg weer op.
Dus nu opnieuw uit te voeren op maat, Rob, invoeren, en voila.
We hebben nu een aangepast programma.
>> Dus ik heb nu een programma dat met behulp van een paar kenmerken
die vermeldenswaard zijn.
One, Ik gebruik CS50.h, anders bekend als CS50 bibliotheek.
En de binnenkant van de CS50 bibliotheek zijn functies die andere mensen schreven -
namelijk het personeel -
voor u te gebruiken, en krijgen string een van hen.
>> Binnenkant van lijn 2 is stdio.h, en waarom is dit er?
Neem een ​​gok.
Wat er bestaat binnenkant van standaard IO ouder?
Printf.
Dus printf, je hoeft niet overal te zien anders op het scherm.
Het moet komen met de computer of andere manier.
Waar komt het vandaan?
Het is de binnenkant van - het is verklaard, zo te zeggen, de binnenkant van
een bestand met de naam stdio.h.
>> Nu, voor dit soort dingen, we komen terug om uiteindelijk, want het is een beetje
afleidend voor nu.
Dit verwijst naar onze terugkeer type.
Dit verwijst naar een argument.
Maar voor vandaag, we zijn gefocust gewoon hier op deze lijnen.
>> Dus string naam, gewoon om samen te vatten, wat heeft dit voor mij doen?
Dus het verklaarde een variabele van het type string.
Dus het bedoeld is voor woorden, niet voor nummers.
Net als een terzijde, als ik wil het om een ​​nummer te zijn, zou ik zeggen
iets als int.
Als ik wilde een floating point zijn waarde, iets met een decimale punt,
Ik zou vlotter zeggen.
Maar voor vandaag, ik heb net gezegd string.
>> En ik heb deze variabele gegeven een naam van naam, maar ik kon
hebben genoemd niets.
In feite, oorspronkelijk, ik noemde het S.
>> Dit hier is gewoon een statement.
Hoeveel argumenten is dit verklaring nemen?
Dus het is gewoon het nemen van een, en dat is gewoon een esthetische details van
weergave van iets op het scherm voor mij.
Wat is deze lijn 8 te doen in lekentaal?
>> Het is steeds een waarde uit de gebruiker - namelijk een string -
en wat doet het met het?
Het is in wezen af ​​te voeren naar de man aan de linkerkant van de
gelijkteken zodat in dit geval de Naam variabele kan eigenlijk slaan.
>> En dan printf is een andere voorbeeld van een functie.
En we zeggen tegen een functie aan te roepen.
Om een ​​functie te gebruiken is om een ​​functie aan te roepen.
Dit ding blijkbaar neemt twee argumenten.
Dit een, komma, deze.
>> Deze zelf is slechts een string dat een tijdelijke aanduiding bevat.
% S betekent gezet andere string hier.
En dus door de invoering naam na de komma, dat is het invoegen
dat ding voor mij.
>> Dus ik kan andere dingen nog steeds doen.
Laat me nu ga je gang en doe een beetje van een dom programma, maar laat me dit te verwijderen,
en laat me maak een lus.
Terwijl waar.
Het symbool true is natuurlijk altijd gaat om waar te zijn.
Dus wat voor soort lus ik induceren door het schrijven van een regel als deze?
>> Dus een oneindige lus, toch?
Net terwijl waar.
Er is geen manier waarop ik kan het woord veranderen trouw aan iets anders te zijn, dus dit is
gewoon voor altijd draaien.
Dus als je ooit daadwerkelijk een programma gehad in je Mac of pc die lijkt
te hebben opgesloten, of het doet iets en iets, en je gewoon
kan het ding te stoppen, tenzij je niet krijgen herstart uw computer of trek de
Taakbeheer of dergelijke, Hier is zo'n voorbeeld.
>> Ik kan zeggen: "Ik ben een buggy programma." Sluiten citaat, sluit
haakjes, puntkomma.
Dus nogmaals, let op de patronen.
Hoewel sommige van onze syntax is nieuw, het zoekwoord terwijl, het zoekwoord waar,
merkt dat ik hetzelfde heb soort accolades.
Ik heb een puntkomma en haakjes.
>> Dus nu laten we gaan vooruit , en slaat deze.
Maak douane, douane.
Dus op dit punt, heb je niet nodig om herstart uw apparaat, oke?
Dus de eenvoudige les hier is met twee vingers, Controle C,
we zullen dat programma stoppen.
Maar je kunt precies zien waarom dit ding werd zelf steeds weer herhalen.
>> Ik kan iets doen complexer als een teaser.
Ik ga om te gaan en het volgende zeggen.
Voor int, dat een geheel getal i slechts een generieke naam die we geven aan de meeste
variabelen in de programmering als je gewoon tellen, gelijk aan 0.
Laat ik verder gaan en zeggen terwijl ik is, laten we zeggen, minder dan 100, i plus plus.
We gaan terug naar deze syntaxis, maar dit betekent gewoon
increment ik opnieuw en opnieuw.
>> En wat wil ik hier te doen?
Printf, "ik kan tellen op i." Dit is een buggy programma.
Wat heb ik hier eigenlijk van plan?
>> Procent niet s, maar je zou niet raden deze. % D is een decimaal getal.
Komma i.
Laat mij terug te rollen.
>> Laat ik nu opnieuw compileren met make.
Laat ik nu opnieuw uit te voeren met aangepaste.
Ik kan echt verdomd snel bij het tellen Ik schrijf een programma als dit.
>> Laten we nu iets een doen weinig onbedoeld.
Wat dacht laten we dit doen terwijl ik groter dan of gelijk aan 0.
Wat dit gaat veroorzaken?
Dus logisch, dit is niet zo verstandig, want nu als ik dit opnieuw uitvoeren, hertelling,
Ik kan nu rekenen heel, heel hoog.
Helaas, ongeveer zo hoog als ik kan count is 4 miljard, dus dit gaat
een tijdje duren.
>> Dus waarom doen we dit laten zoals onze cliffhanger, met de belofte dat op
Woensdag zullen we zien of dit programma wordt gedaan.
Twee, we introduceren hoe je jezelf schrijf uw eigen functie, zodat heel
snel, tot woensdag, wij zullen, zoals we overgang van Scratch in C, start
schrijven ooit steeds complexer programma's die veel doen,
veel meer dan dit.
Wij zullen u dan zien.
>> [Applaus]
>> LUIDSPREKER 1: Bij de volgende CS50, Puzzle Day was een succes.