[Powered by Google Translate] [♪ zoemende ♪]
So te stel om jou te wat ek het op die skerm;
dit is een van die tools wat ons ontwikkel het oor die somer;
dit CS50 Spaces genoem,
en dit is ons gesamentlike kodering aansoek
dat ons gaan om te gebruik in artikels.
Dit is pretty cool.
Het enige van julle CS50 run gesien nie?
Laat my toe dat hy in 'n ander blad.
Run.cs50.net
So
as jy gaan na run.cs50.net,
jy kan sien dit is 'n in jou browser manier om te
eintlik kode - C-kode te skryf,
en dan loop dit,
sodat dit beide stel dit, loop, terug dan die uitset vir julle,
so dit is 'n soort van 'n koel manier om te eksperimenteer
met 'n paar van die kode wat Dawid gaan oor in die lesings
en ons gee op jou probleem stelle
, sonder om die toestel aan die brand.
>> So, wat Spaces doen wat verskil van dié
as ek skakel terug na hierdie blad,
Ruimtes is CS50 hardloop, soos jy sien reg hier,
maar as ons scroll oor en kyk na die ander kant van die venster,
sien jy die reg ek is die enigste persoon in hierdie ruimte,
maar wat ek gaan om dit te doen is om te vra julle hierdie ruimte om saam met my
en ons sal almal kry die kode in dieselfde klein venster,
deel kode met mekaar,
en praat oor die verskille tussen ons kode.
So dit is 'n soort van 'n koel ding -
so aan te sluit, as jy wil hierdie skakel hier besoek aan die bokant
wat ek uitgelig het,
jy kan net tik in apps.cs50.net/spaces/vqcspSnO.
>> Alle reg, om dit te begin,
Ek gaan vir jou 'n bietjie van 'n toer van hierdie.
Ons is 'n paar lawwe kodering met dit gaan doen op die eerste,
net sodat almal kry kinda 'n gevoel vir wat dit is soos,
maar wat ek gedoen het -
of wat ek oor om te doen reg hier is -
Ek gaan die kode te neem dat ek hier geskryf het,
wat as jy sien reg nou is leeg;
dit nie doen nie.
Dit is net 'ketel plaat kode, sal ons dit noem.
Met 'n bietjie te-doen-kommentaar.
Ek gaan om dit te red deur die tref van hierdie knoppie Stoor.
En wat beteken dit is dit
beklemtoon dit hier kortliks - dat die hersiening save groen vak,
Maar nou, as jy soek vir my in die ruimte,
jy kliek op my naam,
kan jy sien dat ek hierdie hersiening het reg hier,
en as jy op daardie hersiening,
dit sal laai dat die kode in jou ruimte, ook.
>> So het almal gelaai dat die kode in hul Space?
Alles reg, as jy nog nie, voort te gaan en dit doen,
en dan wat ek wil julle ouens om te doen in hierdie klein artikel te-doen-
is 'n bietjie met printf oor jouself skryf,
so byvoorbeeld, sou ek skryf
printf ("My naam is Nate");
en dan wil ek skryf
"Ek het in 2009 gegradueer
van Stanford "
en ek wil graag om te hoor oor
watter jaar is jy in die skool,
of jy by die kollege of die sakeskool
of 'n ander Harvard skool,
wat jy studeer as dit is nog nie bekend nie;
as dit nie bekend is, wat is heeltemal cool.
Ek het besluit om nie totdat ek was laat in my stage jaar.
en dan sou ek ook graag wou weet
enigiets gek wat jy wil hê ek moet of vertel
iets oor die klas of net iets anders.
Wanneer jy klaar skryf dat met jou klein printf,
as jy die hersiening red of eerder
maak eers seker dat jy dit kan hardloop
en dat dit druk uit presies wat jy wil om dit uit te druk,
en dan as jy gaan voort en behalwe dat hersiening
deur gebruik te maak van die Hersiening Save "knoppie, die eerste outjie hier,
en ons sal kinda gaan deur en doen 'n klein inleiding op daardie manier.
So jy moet net die "Play" knoppie om te tref,
wat is hier op die links bo,
sodat hierdie "Play" knoppie op die links bo
stuur jou kode af na ons bediener waar dit word saamgestel en dan hardloop.
So, wat is kinda crazy oor hierdie
hierdie kode nie op jou rekenaar;
dit is eintlik oor die internet gestuur word.
>> Hoe gaan dit, Charlotte?
>> I - okay. Achievement - ek dink ek is
ondervind probleme om dit te bewaar
op die bediener sodanig is dat dit kan ek die program kan hardloop.
En dan wanneer ek probeer om dit uit te voer, dit sê dat daar 'n fout.
Verklaar as 'n virus, wat is nie daar nie.
O, laat ons sien, kan jy getref Stoor weer?
Ek sien dit op die skerm.
>> Reg, okay, so dit is wat ek het.
En ek weet nie hoekom dit nie laat my loop dit.
O, okay, jammer.
Kan jy verduidelik hoekom - wat verkeerd was - wat nie werk nie met dit?
>> Ja, want ek het nie sien dat daar 'n laaste reël waar daar is nog steeds 'n veranderlike
dat ek nie verklaar, wat ek nie van plan om dit daar.
Ja, perfect!
>> Nou as ek dit red, ek dink dit moet werk.
Nou dat jy dit nagegaan het, dit werk; awesome.
>> So ja, as ons gaan deur -
so wat aan die gang was,
Ek gaan net om dit te herhaal vir die kamera.
Wat daar gebeur het, was dat hierdie veranderlike se
links in na - Ek neem aan dat jy n paar ander dinge verwyder
waar jy verklaar,
en so is dit gooi dinge af en is nie om jou te laat loop dit.
So dit is presies wat ons wil doen in artikel
is het mense probeer om die verskillende stukke van die kode te skryf,
die opstel van dit, sien wat werk, kyk wat nie werk nie,
en dan kinda praat oor hierdie dinge, want dit is Tripping punte wat
Ek het nog teëkom,
Ek nog steeds - ek doen baie van dom dinge al die tyd,
en ek weet nie hoekom dit nie werk nie,
so laat ons trek Charlotte se hersiening 3,
en ons sal dit uitgevoer word.
>> So toe ek loop, nou dat ek het haar kode hier,
Ek kan zoom in, druk die knoppie Run,
upload, bou dit, loop dit,
sê dat dit suksesvol geloop en as ek scroll down,
Charlotte is 'n junior by Adams House,
sielkunde, sekondêre in die ekonomie; awesome.
Great om jou te ontmoet!
Awesome.
Goed, beweeg op, laat ons gaan aan Daniël,
gaan aan hersiening 3,
stel, hardloop;
Hoekom sê jy nie vir ons 'n bietjie oor jouself, Daniel?
>> Call me Dan.
Ek gaan na besigheid skool oor van julle,
en ek was in die Marines voor hier,
en dit is alles vir my, so ja.
Moenie sleg voel nie, ek is 30 en ek weet nie enige van hierdie dinge.
Awesome; dankie, Dan!
Alle reg, ons het 'n ander Daniel.
Jy gaan deur Daniel - sal jy jouself bekend, Daniel?
>> >> Sure, ek is Daniel.
Ek is 'n stage by Mather right now.
Ek konsentreer op die regering,
maar ek wou CS50 te neem, want ek het gehoor groot resensies oor die klas
en ek het nooit probeer CS voor.
Scroll down en toon hierdie cool.
Beweeg op, Jered geword.
Hoe gaan dit?
>> Goed, hoe is jy?
Soos jy kan sien, ek is 'n junior filosofie concentrator in Eliot,
oorspronklik uit die suide van Kalifornië,
en ek is geïnteresseerd in die neem van CS50, want ek hou van die logika van dit,
en dit lyk regtig cool dinge om te doen op die rekenaar, so.
Awesome, waar in die suide van Kalifornië is jy vandaan?
>> Sowat 'n uur van [onhoorbaar], 'n klein stad [onhoorbaar].
O, ja, my pa is van Redlands.
Cool stuff.
>> Alles reg, Jimmy, hoe gaan dit, Jimmy?
>> Goed, hoe is jy?
Doen baie goed!
Vertel ons van jouself.
>> Ek is 'n groentjie, en ek is nie heeltemal seker wat ek hoofvak in
maar ek is kinda leun die rigting van die ekonomie.
Soos Daniël voor my, het ek nog nooit enige CS, maar dit klink kinda cool.
Ek is oorspronklik van Chicago.
Awesome. So check sy drukstuk hier.
Ek wou vra, het hierdie prent as jy het verwag?
>> Nee, ek het vergeet om 'n nuwe lyn te druk.
Ek het eintlik vergeet dat toe ek my ding te skryf
vir die eerste keer ook.
Dit is soort van 'n pyn om te onthou in die hand te sit.
Dit sou lekker wees as dit net weet dat dit is wat jy wou.
>> Okay, Kelly.
Wow, ons het 2 Kellys, 2 Daniels, 2 Kellys.
So Kelly - gaan jy deur Kelly Ren?
Okay, awesome.
Of Kelly, ek bedoel.
>> So ja, so ek is Kelly.
Ek is 'n stage in Pfoho.
Ek het vandag 'n e-pos dat ek nog steeds 7 weke om my konsentrasie te verklaar,
so ek probeer om nie te dink oor dit,
en ek wil bak, hardloop en Craisins.
Ek het nie ondervinding met die meeste van CS;
Ek het myself geleer om webwerwe te bou wanneer ek was baie jonk,
maar ek dink ek waarskynlik geleer myself 'n baie keer verkeerd.
Hopelik sal ek 'n bietjie meer leer
en - ja.
>> Awesome, goed, dankie.
Kom ons gaan na die ander Kelly;
Ek het nie enige iets - het jy hier iets sê?
>> [Onhoorbaar]
Daar is dit!
Sweet!
>> Alle reg, sodat ek Kelly.
Ek is 'n eerste-jaar nagraadse student.
Ek hoofvak in gedagte, brein, en Onderwys.
Ek studeer in Franklin & Marshall College in 2008
met hoofvakke in die sielkunde en sosiologie
en 'n minderjarige in Frans.
Ek neem CS50
want ek is geïnteresseerd in om 'n PhD in Neurowetenschappen
en ek voel soos hierdie sal my help om die tegnologie wat gebruik word te verstaan.
Awesome.
Beweeg op, Mikaela.
Is dat die korrekte uitspraak?
Okay, awesome.
>> >> Ek is Mikhaila.
Ek is 'n stage in Kirkland House,
en ek konsentreer in Meganiese Ingenieurswese.
Ek het regtig soos fietsry, 'n fiets hierdie somer gebou.
Ek neem CS, eintlik,
as 'n konsentrasie vereiste,
maar jy weet, ek dink dit is nog koel soort van ingenieursdienste klas.
Awesome - jy het 'n fiets gebou hierdie somer?
>> Ja.
Wow, soos die raam en alles wat?
>> Uh-HUNH (regstellende).
Sjoe, dit is regtig cool.
>> [Onhoorbaar off-kamera chat]
[Lag]
Ja, dit is so lank.
Jy weet nooit, reg?
Wel, koel, goed dankie, Mikhaila.
>> Alle reg, Missy.
>> My Naam Missy, ek is 'n groentjie,
so dit beteken dat ek weet niks!
Ek wil om te konsentreer in die astrofisika.
In CS50,
Ek voel soos 'sal beslis help met.
'N vreemde feit oor my is ek is 'n nasionaal gesertifiseerde brandweerman.
Wow!
Hoe het dit gebeur?
>> Ek het 'n akademie bygewoon
en deur die hel gegaan het vir 'n baie weke
en het my sertifisering.
Wow, congrats!
Dit is geen geringe prestasie nie, vir seker.
Okay, so nou het ons sal doen vir my.
Ek is die volgende een in die ry.
Achievement - voer dit uit.
>> So my naam is Nate.
Ek was klas van 2009 by Stanford.
Ek was 'n Simboliese Systems groot,
wat is soortgelyk aan die verstand, brein, gedrag konsentrasie hier,
maar dit is soort van 'n mengsel van
rekenaarwetenskap, linguistiek, sielkunde en filosofie.
Soort van - ja, 'n baie vreemde dinge, maar dit was 'n groot,
en dan het ek my heer se daar in Rekenaarwetenskap, asook.
So ek is nuut na Harvard hierdie jaar.
Ek wou eintlik in die onderwys te kry.
Ek het die laaste 4 jaar by Stanford TA-ing Rekenaarwetenskap klasse
en so het Dawid laat my op,
en ek is nou eers help met CS50,
so ek doen hierdie voltydse, ek is nie in grad skool.
Dit was pret.
Hopelik sal dit voortgaan om pret wees, ek is seker dit sal.
>> Alle reg, Sam.
>> My naam is Sam, ek is 'n stage by die kollege, in wet wat spesifiek.
My groot geskiedenis van die wetenskap sal wees, waarskynlik, en Ves sekondêre,
en my gunsteling kleur is geel.
Geen oordeel of iets nodig om te slaag, maar dit is 'n goeie kleur!
En Stella.
>> Hi, Ek is Stella, ek is 'n groentjie in Grays.
Ek het geen idee wat ek gekonsentreer in nie,
so CS50 was net soort van ewekansige,
wat is interessant.
Fun, Jimmy was die eerste Harvard-vriend van my,
omdat ons albei van Chicago.
Cool, en Grace - wat veronderstel is om die baie mooi wees, reg?
>> Ek het gedink [onhoorbaar].
O, ja.
[Onhoorbaar / off-kamera chat]
Okay, ek is nog steeds leer, leer nog steeds.
>> Dus het ons iets anders wat is soort van interessante hier.
Ja, ek net wonder, het jy 'n idee wat gaan hier aan?
Jy weet hoe om dit te interpreteer?
>> Ek was veronderstel om die kommapunt ná elke enkele lyn gestel word.
Dit is soort van 'n pyn.
Soms is daardie kommapunte kan 'n ware pyn wees om op te spoor.
So dit blyk dat
die spesiale program wat ons gebruik om hierdie jaar te
stel ons C-kode word genoem klang,
en die rede waarom ons het begin kletteren hierdie jaar gebruik -
want ons het nie dat die program in die verlede;
het ons 'n ander een genoem GCC wat regtig gewild is -
Kletteren gee eintlik jou fout boodskappe wat sin maak.
Hierdie een sê: "verwag", "na die uitdrukking",
en dit vertel jy selfs die uitdrukking waarna jy nodig het 'n kommapunt.
So is jy regmaak?
>> Ja, right now.
Awesome, laat my weet en ons sal dit trek, en ons sal dit hardloop.
Maar ja, om hierdie kommapunte in is 'n soort van 'n pyn.
>> Ek het dit, so ek dink dit moet werk.
Awesome - hersiening 3.
Wat lyk asof dit.
Alle reg, sodat as ons nou loop dit,
daar dit gaan.
Cool stuff.
>> Alles reg.
So dankie vir jou om dit te doen.
Dit is wonderlik om julle ouens te ontmoet.
Wat ons gaan doen nou spandeer die volgende bietjie
kinda duik in die afdeling probleme
wat kom uit die probleem van hierdie week
en ons sal doen wat vir die meeste van die afdelings
vir die res van die kwartaal,
en dan sal ons red die laaste 15, 20 minute of so
om te praat oor die probleem homself
en dan net enige ander vrae wat jy het in die algemeen oor die klas.
Dit gesê, wat ons regtig wil doen
is het almal wat deelneem
die gebruik van die ruimtes stuff,
gooi in die kode, gooi in voorstelle,
en praat oor wanneer dinge soos hierdie breek
of nie werk nie, net omdat dit is dinge wat
Ek weet ek het gekom oor
toe ek begin kodering,
en was regtig kinda frustrerend by tye
want as dit is soos 02:00 voor jou gestelde probleem is te wyte is,
so - net vir openbaarmaking,
Ek het nie begin programmering totdat ek 'n tweedejaar op universiteit was.
Dit was soort van hierdie vreemde, onbekende ding
wat ek gehoor het was kinda cool
en ek het ook gehoor dit kan 'n ware pyn in die kolf
as jy mis 'n kommapunt en dit is die enigste fout met die behoud van jou program uit te werk
en hou jy gaan slaap,
so beslis,
as jy vrae het soos wat,
As jy probleme het soos dit, laat my weet,
want ek wil om te maak dit 'n goeie ervaring vir julle ouens.
>> Sodat julle het almal die probleem afgelaai nog nie opgestel is?
Kinda weet waar dit is? Okay.
So ons gaan na cs50.net, want ek hoef dit nie op hierdie rekening,
trek die probleem stelle,
trek probleem stel 2, en ons sal kyk na die standaard uitgawe vandag.
Ons sal trek die spesifikasie hier.
Scroll down.
So ons gaan begin kyk na hierdie artikel van vrae.
Het julle gekyk het hierdie kortbroek nog?
Okay.
So daar is kort op loops,
wat gedoen word deur Tommy, een van die hoof onderrig genote.
Daar is een op omvang,
Ek glo gedoen deur 'n ander onderrig mede naam van Dawid
en dan een op Caesar Cipher ook gedoen deur David.
Hulle is pretty cool.
Het julle ouens kyk na hulle kortbroek so ver?
How've hulle is?
Nuttig? Goed, goed om te weet.
As hulle nie, kan jy so sê.
Maar voordat jy dit doen,
julle ouens kyk na hierdie vrae
by almal?
>> Kom ons praat oor dit 'n bietjie.
So het ons oor die afgelope paar weke bekend gestel
in lesingsale
'n aantal van verskillende loops.
Daar is die lus
terwyl loop, en dan die do-while lus,
en in die lesing, het ons gepraat 'n baie oor
hoe die loops is alle
redelik soortgelyk in 'n baie maniere,
en wat jy kan doen baie van die dieselfde dinge met 'n while lus
wat jy kan met 'n for-lus.
Jy moet net soort van gebruik om die regte kombinasies van veranderlikes en sodanige.
en so werklik
die werklike onderskeid tussen al die lusse is dat
Soms is dit nuttig
om dit te gebruik op 'n tyd as op 'n ander tyd.
>> So byvoorbeeld,
die while lus verskil van 'n do-while lus.
Is almal voel hulle het 'n goeie hanteer op wanneer
'n do-while lus is meer
nuttig of wat die verskil is?
>> Ek dink die verskil is 'n do-while lus
loop - Ek weet nie heeltemal wat die terminologie,
maar die reeks van funksies binne die lus.
Hulle outomaties nie - dit doen sy lopies ten minste
voordat dit kontroleer of dit die toestand, of die while lus sal slegs uitgevoer word wanneer
dit loop voortdurend - of die toestand is tevrede.
Ja, wat sin maak?
>> Kom ons neem 'n blik op 'n bietjie van die kode.
Sodat net die vraag te herhaal,
of die antwoord, eerder;
Die antwoord was dat
'n while lus sal kyk om te sien as die toestand
dat u spesifiseer voldoen word
voordat dit loop die liggaam van die lus vir die eerste keer,
terwyl die do-while lus word outomaties op die liggaam van die lus,
is wat ons noem dit - dit is weird terminologie,
maar as ek ooit iets sê wat nie sin maak nie, laat my weet -
die lus liggaam is die dinge wat jy het in tussen die kode tussen krulhakies.
En in 'n do-while lus,
daardie liggaam kry ten minste een keer uitgevoer word,
en dan is die toestand kry nagegaan voordat dit loop elke opeenvolgende tyd.
>> So eintlik, Sam,
dink jy nie die skryf van 'n eenvoudige, terwyl lus
in ruimtes?
>> Hoe sorteer jy soos
'n nuwe ...?
Ek het net verwyder wat jy daar.
Ja, duidelik is dit net uit.
>> Wel, ek glo dat ek dit met -
watter een dink jy wil, 'n rukkie, of wil jy ...?
Ja, nie net 'n rukkie waar, druk iets uit.
En laat ons sien.
Alexander, het ek besef dat ons nooit lei jy.
>> O, dit is fyn.
Het jy - kan jy kodeer 'n do-while lus vir ons?
>> Ja, ek sal probeer.
Alle reg, ons sal net trek hierdie op die skerm,
so dat jy soort van 'n handvatsel op wat die verskille is.
>> So hier is wat Sam gedoen.
Hy het 'n heelgetal met die naam i
dat hy geïnisialiseer tot 17.
Dan sê hy terwyl (int i = 17)
printf ("My naam is Sam.");
So wat gebeur wanneer ons hierdie kode?
Daar is 'n fout, wat sê die fout?
Kom ons trek dit en praat daaroor.
'N fout, dit sê.
Kom ons scroll down.
So is dit aan ons gegee het hierdie fout, en dit het gesê,
"Hey, ek verwag 'n uitdrukking."
Dit is kinda kriptiese.
Ja, so presies en weer,
sal daar nog 'n klein fout dat ons sal vang in net 'n sekonde.
Maar dit is nog een van daardie soort vreemde terminologie dinge,
so hierdie int i = 17
is nie 'n uitdrukking.
Wat dit lyk asof dit doen, is dit is
verklaar 'n heelgetal met die naam i
en die opstel van dit gelyk aan 17
of, eerder, om 17 in daardie int genaamd i.
En dit maak nie sin nie
in die konteks van hierdie while lus.
Dit maak sin, soos ons sal sien,
in die konteks van 'n lus, want vir lus verklarings nie begin
int i gelyk aan iets
en gaan op.
>> So het jy -
los iets, alles reg.
Hier gaan dit; awesome.
So nou is dinge 'n bietjie anders lyk.
'N paar van die dinge wat verander het.
Kan jy ons vertel die dinge wat verander het?
>> Ek het uit die int, so daar is geen verklaring [onhoorbaar] in plaas van 'n opdrag.
Die een-gelyk-aan-teken, ek het 2 gelyke tekens, wat beteken dat 'n gelykes.
Awesome.
Ja, so wat Sam gedoen het, was hy die int
wat reg was hier vroeër,
so as ek net kyk na hierdie - dit is wat dit vroeër was, het hy gesê int,
wat verklaar dat dit - so het ons uit die tipe.
Daar is int, char, string, kort,
dié tipes genoem word.
So jy het die tipe
en dan voorheen,
hy het net die single gelykaanteken
en wat hy gesê het was problematies hieroor is
wanneer jy 1 is gelyk aan teken,
Dit is 'n opdrag operateur.
Dit is nie die toets of 2 dinge gelyk is.
Dit is eintlik die opstel van iets gelyk na iets.
Ons is om die nommer 17 in die veranderlike i.
So daardie soort van vergelyking te doen,
jy die dubbele gelyk aan,
wat is 'n soort van 'n vreemde ding
maar dit is 'n redelik algemene fout.
En 'n ander ding sal ek daarop wys, as jy nie omgee nie,
is dat in
ons funksie hier in int hoof,
jy sien dat die liggaam van ons funksie
verplasing vanaf die linkerkant
4 spasies of 'n blad.
Die rede waarom ons dit doen
is net vir leesbaarheid.
Soos jy kan sien hier in Sam se while lus,
hy het nie streepje at all,
en dit het geen invloed op die funksionaliteit van die kode.
Dit sal loop presies dieselfde.
>> So byvoorbeeld, as ons op die top hier
en ons "Play" knoppie druk, sal dit bou,
dit sal hardloop,
en wat gaan gebeur?
Waarom dit nie nog sê?
>> Omdat dit sal aanhou herhaal hi.
Presies, en waarom hou dit herhaal hi?
>> Omdat die heelgetal nooit verander nie, so dit is altyd 17.
Ja, presies, so
Kom ons kyk, na - herinner my weer van jou naam?
Jimmy. So Jimmy het gesê dat
die rede waarom dit bly herhaal hi oor en oor weer
is omdat hierdie toestand is altyd waar.
Ons het nooit verander nie die waarde van i.
Ons het nooit verander nie die inhoud van wat in daardie veranderlike gestoor.
Dus, op hierdie punt ons het hierdie fout wat
jou program gegenereer te veel uitset,
en as ons scroll down en soort van kyk na wat hier aangaan nie,
kan jy sien dat dit is hi, hi, hi, hi, hi, hi, hi al die pad deur.
Awesome.
>> So soort van terug na die oorspronklike punt
dat dit die inkeping hier
in die liggaam van die while lus het geen invloed op enigiets.
Die program is nog steeds hardloop net 'n boete.
Tipies vir die goeie styl -
en dit is iets wat ons sien in jou probleem stelle -
vra ons u om streepje deur 4 ruimtes, wat jy kan doen
deur net druk op die Tab-sleutel
of deur die hand om in 4 ruimtes jouself.
Cool, okay so laat ons gaan terug en kyk na
Alexander se do-while.
>> Net kinda met 'n bietjie moeite.
Ok, laat ons werk deur dit.
Is dit koel?
>> Ja.
>> Okay, so hier gaan ons.
Dit is die kode wat Alexander geskryf.
Gaan jy deur Alex - okay.
So hier is die kode wat Alex geskryf het.
So, ons het ons verklaring van die belangrikste reg hier,
en dan het ons het hierdie heelgetal veranderlike genoem i
verklaar word hier.
Ons het 'n do verklaring
en dan weer die liggaam met hierdie draadjies,
so dit is die liggaam van die do-while -
laat my zoom in op hierdie, sodat dit meer leesbaar is -
en in die liggaam, ons probeer om te druk "Dit is die liggaam",
i + +,
so inkrementeer die inhoud van i en doen dit
totdat ek kry te wees 3,
en dan ons program eindig.
>> So wat gebeur wanneer ons hierdie program?
>> Ek verwag 'n identifiseerder.
Okay, so bou, hardloop, foute voorkom.
Wat gebeur?
Ons scroll down hier,
kry ons hierdie ietwat kripties soek ding,
verwag kommapunt na die boonste vlak verklaring.
Dit is kinda weird.
Het enige iemand 'n idee van wat kan gaan op?
Kinda weird, ja.
>> [Onhoorbaar] buite die hakies verklaar word?
So beteken dit dan nie toe te pas wanneer jy gebruik tussen hakies?
So het hy verklaar dat hierdie man buite wat tussen hakies?
O, hierdie ouens - die krullerige draadjies?
>> Ja.
Ja, presies.
So dit blyk dat
jy kan eintlik nie 'n veranderlike verklaar hier soos hierdie.
Wat jy kon gewees het probeer om te doen -
sny dit uit daar -
jy kan dit binne die kode tussen krulhakies hier
of 'n ander alternatief
is dit heeltemal buite te sit.
En so het hierdie - afhangende van waar jy eintlik sit die verklaring
van daardie heelgetal veranderlike,
2 baie verskillende soorte veranderlikes wat jy kan kry;
wanneer dit buite is van die hoof,
Dit is wat ons noem 'n globale veranderlike.
Dit is buite die bestek van enige van die funksies -
dit is nie in 'n funksie -
dat as ons dit binnekant van die hoof,
graag reg hier, dan is dit 'n plaaslike veranderlike genoem,
want dit is die plaaslike tot die omvang van die belangrikste.
En ons sal 'n bietjie meer praat oor wat die verskille is
tussen die 2 tipes en waarom jy die gebruik van verskillende veranderlikes,
maar vir nou,
kan jy hou net al die veranderlikes plaaslike,
want ons het nie 'n behoefte vir globale veranderlikes.
>> Okay, so dit is een ding reg daar.
Kom ons probeer om dit weer, kyk wat gebeur.
Hardloop, kry 'n ander fout.
Zoom in 'n bietjie, wat doen ons?
Ons kry hierdie verwagte hakies na doen / terwyl.
Enige idees wat gaan aan? Dan?
>> Is die rukkie dan hakies en dan -
Ek weet nie of jy moet int redeclare,
maar die doen terwyl (i <3).
Presies, ja.
So dit blyk dat Dan is presies reg.
Ons hoef nie hierdie tipe weer hier sit.
Ons kan eerder die dood van die tipe
en net dit te doen.
Alles reg.
Ek kom terug uitzoomen, probeer om dit een keer.
Kyk, dit loop suksesvol.
As ons scroll down, "dit is die liggaam" uit 3 keer gedruk.
Dit is redelik soet.
Goed gedoen het, goed gedoen, ouens.
Goed gedoen.
Hoe is dit gaan so ver?
Ordentlike tempo?
Okay, cool.
>> So, as ons soort van terug na die oorspronklike vraag,
ons - en as ons nou die verskil sien,
jy sien dat in hierdie do-while lus,
die toestand kom laaste.
So as die rekenaar lees die program
aangesien C programme soort uitgevoer in hierdie volgorde,
waar hulle letterlik begin met die eerste reël van die hoof,
en dan voer lyn 6, lyn 7, reël 8, lyn 9,
lyn 10, lyn 11,
al hierdie dinge reg hier aan die bokant
is om een ​​maal te gaan voer
voordat ons ooit hierdie toestand te toets om te sien
of ek of die inhoud van i, eerder -
is minder as die nommer 3.
En slegs indien sodra ons kry om lyn 12,
die inhoud van i is minder as 3
ons eintlik terug spring tot lyn 7
en dan herhaal die proses,
en dan het ons die toets van die toestand weer en weer en weer.
>> Sodat ons kan kontrasteer hierdie
met - inzoomen terug uit,
scroll af na Sam se weergawe,
ons gaan kyk na hierdie, effens verander sodat dit nie meer 'n oneindige lus -
waar as ons zoom in,
sien ons dat as hierdie program uitvoer,
dit gaan om eers verklaar int i,
stel die inhoud van i na 0,
en dan is dit treffers die toestand van die while lus 1,
in hierdie geval, hierdie liggaam, hierdie printf ("hi") en i + +
sal nie eens te voer
tensy ek is eintlik minder as of gelyk aan 2.
So as ek 3, byvoorbeeld,
as ons hierdie reg hier
gelyk is aan 4 - of ek 3 sal doen nie, want Ek het gesê 3 -
en dan loop dit,
dit sal bou, dit sal loop heeltemal fyn,
maar dit sal nie eintlik druk enigiets,
omdat dit nie dat die toets vir die eerste geval.
Dus, in die klas, het ons soort gepraat oor waarom hierdie do-while loops
is nuttig soms
en hoekom sou ons dit gebruik, in teenstelling met 'n while lus.
>> Is daar - julle enige voorstelle het
want waarom 'n do-while lus sou wees meer bruikbaar?
>> Wel, ek dink do-while loops is as jy wil die toevoer van die gebruiker,
want die manier wat jy kan laat hulle
iets in een keer, indien dit korrek is,
ons kan beweeg op die res van die program,
maar as dit nie korrek is nie, dan kan jy hou waarna die gebruiker
totdat jy het die reg om insette.
Ja, presies presies,
so 'n do-while lus is nuttig
want wanneer jy vir die toevoer van die gebruiker te vra
want jy moet die gebruiker se insette te kry voordat jy dit kan eintlik gaan.
So in pset 1, in pset 2,
waar jy aansporing vir die toevoer van die gebruiker om 'n baie,
wat is 'n handige ding om te gebruik
eerder as om net 'n eenvoudige while lus.
As jy 'n while lus het, kan jy dieselfde ding doen -
jy kan dieselfde ding doen met 'n while lus
as jy dit doen met 'n do-while lus.
Jy moet net soort van hierdie dubbele proses
waar jy die inset eerste en dan begin jou while lus.
AANGESIEN dat 'n do-while lus, jy moet net om dit een keer te skryf
en dit is 'n baie skoner.
>> Alles reg.
Enige vrae?
Sin maak?
>> Die opbrengs 0 - dit is net 'n soort van 'n stalletjie of is dit?
Ja, sodat ons kan -
goed, sal ons dek dit 'n bietjie meer later
maar dit blyk dat
hierdie opgawe 0 wat ons
aan die einde van die belangrikste al die tyd -
jy kan net kinda neem dit as iets wat ons doen
vir die oomblik.
Wat het ons begin om te praat oor met funksies
soort van aan die einde van verlede week en dan weer hierdie week
is dat 'n funksie
neem insette wat hierdie dinge binne die hakies is;
dit is 2 insette, ons argumente of parameters,
wat hulle ook geroep om ons vernaamste funksie,
en dan 'n funksie 'n uitset produseer
wat ons noem 'n opbrengs waarde.
En die terugkeer waarde in die geval van die belangrikste is hierdie int
hierdie heelgetal is,
en die manier waarop jy 'n funksie vertel, "Hey, dit is wat jou uitset
gaan wees, "met hierdie woord" return "is,
die navraag, maar eerder,
en so hoof terugkeer 0
of hoof printer 0
is standaard in C-programme
omdat terugkeer 0 van hoof beteken dat
"Hey, alles uitgevoer met my program net 'n boete."
As ons iets anders te maak as 0,
soos 1, byvoorbeeld,
wat gebruik word om te vertel wie hierdie program hardloop
dat iets verkeerd geloop het.
So as ons meer betrokke raak met die dinge oor die semester,
as jy ooit hoef te sê,
"Oeps, jy weet, iets het verkeerd gegaan met hierdie program,"
eerder as om my program crash, ek wil in kennis te stel
die voorloper van my program dat iets verkeerd geloop het,
jy kan gebruik om return value,
soos ons dit noem, dis nie 0.
>> So ons sal dek wat 'n bietjie meer
wanneer ons in funksies.
Dat die soort van sin maak?
Okay.
Funksies is soort van bisarre -
Ek dink vir mense wat baie van wiskunde agtergrond het,
dit kom 'n bietjie makliker,
veral as jy 'n bietjie meer abstrakte wiskunde agtergrond
en jy gebruik om te praat oor funksies
en al daardie soort van dinge.
Maar ons sal probeer en bedek dit
en gaan mooi en stadig soos hulle kom.
Net so, hierdie hele int argc,
char * bevat SPASIES [],
vir nou, kan jy ook dat as die ketel plaat.
Ons het begin om diegene wat 'n bietjie in die lesing te dek
wanneer ons praat oor die argumente wat in programme geslaag kry op die command line,
maar in jou probleem stelle en jou programme,
dit is heeltemal fyn net leemte te skryf en hou dit eenvoudig.
En wat hierdie leemte beteken is dat
"Hey, hoof gaan nie enige insette te aanvaar;
dit is net 'n program wat ons gaan net hardloop.
Ons is nie gonna gee dit enige ekstra inligting
elke keer as ons begin dit begin hardloop. "
So vir nou, kan jy dit doen;
jy kan selfs ook laat die terugkeer 0
aan die einde van jou programme en sal hulle hardloop net 'n boete,
maar ek raai net hou dat.
In 'n paar weke, sal ons begin om te soort van
trek terug die dekking 'n bietjie en verstaan ​​meer oor
al die verskillende klein bewegende dele.
>> Alle reg, nou, laat ons praat oor ons tweede vraag hier.
So, wat "onverklaarde identifiseerder" is gewoonlik 'n aanduiding
indien outputted deur kletteren?
Ek dink ons ​​kan reeds vandag gesien.
Kan iemand gee 'n herhaling van wat dit beteken?
Kom ons kyk, Kelly - een van Kelly.
>> So -
Ja, wat doen -
>> Ek dink dat wanneer jy, soos, nie die veranderlikes verklaar en jy probeer om dit te gebruik.
Ja, presies, presies.
So as jy ooit sien hierdie uitset
wanneer jy probeer en stel jou program,
net soos Kelly gesê het,
dit beteken dat jy gebruik om 'n veranderlike wat jy nie verklaar,
so as ek gaan terug na ons ruimte,
en ek iets doen soos
printf (
"Hallo% s")
en probeer en vul in wat% s
met 'n veranderlike is dat ek nie verklaar oral
en ek probeer om dit uit te voer,
jy sal sien wat ek kry op hierdie bodem hier:
"Die gebruik van onverklaarde identifiseerder 's'";
wat beteken dat jy nie jou veranderlike verklaar.
Dieselfde ding gebeur as
jy het x en jy probeer en stoor 7 in
en ek het nie verklaar X.
Ek kry daardie selfde fout:
"Gebruik van onverklaarde identifiseerder 'x'".
>> Alles reg,
sodat die keiser Cipher, nie baie veilig nie,
Ek laat julle ouens kyk na hierdie kort, soort van verstaan ​​waarom,
en hopelik na die doen van hierdie week se probleem wat
waar jy eintlik skryf 'n Caesar Cipher, sal jy 'n bietjie meer verstaan
oor wat dit beteken om 'n veilige en onseker -
of nie veilig nie, ek dink - onseker is effens anders.
Die ander ding is ons het hierdie ander vrae hier
oor funksies
en wat 'n funksie is,
en ons soort gepraat oor wat kortliks toe ons gepraat oor die terugkeer waardes;
vir iemand wat te doseer,
kan jy herhaling wat al vandag te doseer?
Alles reg.
Laat ons sien, laat ons - kan iemand vir ons vertel wat 'n funksie is?
Kelly?
>> >> Basies iets wat jy trek op iets wat geskryf is in die biblioteek wat is
meer ingewikkeld is daar, en dan kan jy net skryf 'n kort vorm van dit,
so soos jy verwys terug na daardie biblioteek, met behulp van
almal wat lang-kode en [onhoorbaar].
Ja, presies, en dan jy wil iets byvoeg dat?
>> Ja, ek dink oor dit as soortgelyk aan die konsep van 'n formule in wiskunde
waar jy net skryf 'n formule en dan kan jy prop veranderlikes in
en dit is wat 'n funksie is [onhoorbaar].
>> Ja, so ons het 'n paar van die antwoorde hier
wat werklik is goed en reg op.
Daar is verwys na kode wat geskryf is in die biblioteek iewers
wat is meer ingewikkeld
en dan kan jy teken op daardie kode
en eintlik gebruik dit deur net die skryf van die kort vorm van -
of, eerder, sy naam -
en dan is daar ook die vergelyking met 'n formule in wiskunde
of fisika, al daardie soort van dinge
waar jy 'n formule
en dan kan jy plug in
die veranderlikes aan daardie formule
en kry dan die resultaat van die formule,
so jy dink oor dit as soos die kwadratiese vergelyking.
Stel jou voor as eerder as om te leer oor
wat die kwadratiese formule in wiskunde klas,
jy moes net 'n bietjie sakrekenaar program wat het dit vir jou.
Het enigiemand sakrekenaar programme in wiskunde klasse in die hoërskool?
Ja, fisika klasse?
Waar jy kan net sê, "Hey, kwadratiese formule.
Dit is die veranderlikes wat ek wil invoer.
Nou gee my die antwoord. "
Dit is die soort wat 'n funksie is.
Dit is 'n manier vir ons om
soort van skryf soos 'n klein sub-program
binne ons groter program
en gebruik dit oor en oor weer
sodat ons nie te kopieer en plak kode,
ons kan gee verskillende insette en kry verskillende uitsette,
dit is super handig
wanneer jy probeer om op verskillende tye verskillende programme te kan skryf.
>> So byvoorbeeld, 'n funksie wat ons het al met behulp van oor en oor en oor weer
dwarsdeur die kursus is printf.
Printf is self 'n funksie
en dit blyk dat dit eintlik 'n redelik lang en ingewikkelde,
nare soek, funksie te skryf.
So eenvoudig soos dit lyk vir ons
dinge uit te druk op die skerm,
want ons almal het net gedoen wat aan die begin van die artikel vandag,
dit blyk dat dit eintlik is, jy weet,
'n goeie paar honderd lyne kode.
Dit is nie iets wat ek ooit wil om te skryf, vir seker,
maar ons kry dit elke dag gebruik, wat gaaf is,
sodat ons dit met mekaar te deel,
met verskillende programme,
so ons sal duik meer in funksies;
vir die oomblik, ons is nie -
die enigste funksie wat ons gaan skryf is die hoof.
Main self is ook 'n funksie,
en jy kan sien dit het sy produksie,
sy insette soos ons oor gepraat het,
en dan sy naam, wat is die hoof.
Main is 'n soort van 'n - is daar 'n spesiale funksie.
In jou C-program, moet daar 'n hoof funksie,
en so vir nou, ons het soort weggelaat skriftelik
die prototipe, of die verklaring van, hoof.
Ons gegee het wat aan u,
en ons het net het jy soort van die spasies in te vul.
>> >> Dus, vir die tweede probleem stel, het ons nie nodig het om te
skryf dit in die tweede funksie?
Ek dink nie so glo nie.
Ek glo dit is al hier.
Ja, so Caesar Cipher,
jy nie hoef te, beteken dit nie lyk,
en Vigenere, jy doen nie,
so - en dit blyk jy nooit eintlik het om te skryf
'n funksie, reg?
Julle noem sit altyd al jou kode binne hoof,
en baie programmeerders doen.
Soos ons beweeg,
ons begin met die bekendstelling van funksies as 'n manier
om skoon te maak om jou kode,
te maak dit meer elegant,
in geval jy het take - soort van soos wanneer ons gepraat oor loops,
hoe soms is daar dinge wat jy wil weer en weer en weer te doen,
en jy het soort van die naïewe manier -
of wat ons dikwels noem die "straw man" oplossing,
is om net kopieer en plak oor en oor weer -
jy kan dieselfde ding doen by funksies waar jy net kopieer en plak
dieselfde kode oor en oor weer,
maar dat kiezel jou kode -
dit eindig om jou kode baie lang -
en kry dit ook 'n bietjie verwarrend,
en dan is dit beteken dat jy nie in staat is om te hou -
as jy ooit wil dat die kode om weer te gebruik in 'n ander program,
jy ook vas kopieer en plak dit weer,
so een van die dinge wat ons sal praat oor is
soort van ontwerp en styl van jou programme,
en as dit sin maak soort
pakket iets en sit dit as 'n aparte funksie,
ons moedig u aan om dit te doen,
en dit is iets wat, weer,
daar is geen harde en vinnige reël.
Ons het selde sê dat jy moet 'n funksie het hierdie skryf,
maar dit is meer van een van daardie dinge wat jy net met verloop van tyd ontwikkel
as jy skryf meer en meer programme.
>> Nog meer vrae?
Okay, so laat ons nou
Gaan terug tot hierdie man hier,
so ek is nog steeds in hierdie afdeling van die vrae.
Ons het gepraat oor al hierdie verskillende mense,
wat is 'n funksie, hoekom funksies te skryf,
wanneer jy kan net kopieer en plak?
Hopelik het ons daarvan oortuig dat die skryf van funksies is 'n goeie ding.
So nou, laat ons gaan na hierdie MySpace program,
en ons sal spandeer 'n bietjie tyd om dit te doen.
>> So, laat ons sien,
kan ek iemand dit gelees het, vir my?
Let's het 'Mikhaila - sal jy lees dit vir ons?
>> Jy bedoel terug wanneer MySpace
Terug wanneer MySpace was cool.
>> "Terug toe MySpace was koel,
dit was al die woede te tik soos hierdie.
Miskien is dit? Ek is nie seker nie.
In elk geval, met behulp van die CS50 Appliance,
CS50 Run, of CS50 Ruimtes,
skryf 'n program wat die gebruiker vir 'n boodskap gevra
en uitgange dan die boodskap met sy eerste brief gekapitaliseer,
met al die ander letters in wisselende geval,
soos per die onderstaande voorbeeld van die uitvoer,
waarin boldfaced teks van sommige gebruiker se insette.
Vir eenvoud, kan u aanvaar dat die gebruiker
sal slegs insette klein letters en spasies.
Beskou hierdie probleem 'n geleentheid om te oefen;
jy sal nie gevra word om hierdie program in te dien. "
>> Awesome, dankie.
So as Mikhaila gesê,
ons gaan om 'n program te skryf wat jou kode MySpaces.
So het enige van julle ouens gebruik MySpace?
Enige van julle MySpace rekeninge?
O, ja, ja!
Dit was pretty cool.
[Lag]
Ek weet.
Uitgaan myself.
So wat ons probeer om te doen is om 'n program skryf
wat gaan deur
en kapitaliseer die eerste letter
en dan elke letter daarna -
of elke ander brief daarna, ek is jammer.
>> So - en jy kan sien in hierdie voorbeeld,
dit is hoe ons hardloop die program,
en so hierdie is net te sê: "Ons het 'n program genaamd a.out loop.
Die insette wat ons gaan gee dit
gaan word gevra.
Ons is nie gonna verskaf die insette op die command line. "
As jy al die lesings
en hoor oor die command line argumente,
dit is soort van waar daardie - daardie funky sintaksis
by die hoof kom in met die int argc, al daardie dinge,
So hier is ons is nie die gebruik van daardie, ons nie hier te doen met enige van daardie.
Ons is net gonna hierdie getikte kry deur die gebruiker,
en dan hierdie tweede lyn met die funky kapitalisasie
is wat ons wil om ons program te uitset.
>> So, sal ons eerder as die gebruik van die toestel of Run Gebruik spasies,
want ons het ruimtes,
En so, as jy ouens wil
kry jou kode om iets soos hierdie om te kyk,
so ek gaan hierdie hersiening te red
net sodat jy het die ketel plaat hier
wat lyk soos hierdie, int main (void), niks in nie.
Eintlik, wat ons sal doen, is ons net sal verwyder alles almal saam.
Ons wil 'n skoon lei,
want ons is nie gonna begin skryf kode;
Inteendeel, ons gaan probeer om die skryf van sommige pseudokode
wat beteken dat ons eintlik maar net gaan om iets wat is nie-kode te skryf
daardie soort beskryf wat ons wil doen,
kinda soos Dawid gedoen het op die eerste dag van die lesing,
of ek dink dit was die tweede dag van die lesing toe hy het die hele sokkies demo.
Julle ouens onthou dat - sien die sokkies?
Josef was daar soort van tik in Engels?
So ons is dieselfde ding gaan doen.
>> So toe ek begin skryf pseudokode,
Ek hou van om te begin deur te kyk na wat die insette gaan wees.
En ek gee myself 'n monster geval,
so soos "dankie vir die add!"
En dan het ek ook skryf wat ek wil om die uitset te wees,
wat in hierdie geval is iets soos hierdie.
En daardie soort gee vir my 'n goeie, soos, begin plek om oor na te dink,
"Okay, ek wil lyn 1 te neem
en ek wil dit te omskep in lyn 2, "
en dat die soort van help om my denke te lei.
Dit is 'n goeie plek om te begin.
Nog 'n manier om te dink oor dit, ook as ons kinda beweeg op
en as jy dit doen in jou eie programme, is om
dink oor die soort soos wat die rand gevalle tot hierdie?
Wat is soort van die vreemde scenario's?
Wat is die vreemde insette wat ons kan kry?
En wat moet die uitsette kyk?
Byvoorbeeld, 'n weird insette
hierdie een sou wees,
om absoluut niks te skep,
soos wat ons uitvoer in so 'n geval?
Iets wat ons wil hê om oor te dink, te.
>> So net so 'n vraag,
wat sou ons wil uitvoer?
As ons nie enige insette kry op alle, wat moet ons program printer word?
>> Niks nie.
Niks nie? Klink goed.
Daarom wil ons seker maak dat ons nie skryf enigiets uit
as ons niks doen nie.
Cool. Okay.
So
Ek gaan om te bel op 'n paar van die mense soos ons gaan deur
en net uitvind soort soos wat die algemene algoritme is
en ons sal soort begin werk deur middel van hierdie saam.
>> So, laat ons sien. Missy.
Hoe dink jy ons wil begin?
Wat sou 'n goeie plek wees om hier te begin
as ons wil om te transformeer, sê, lyn 1
in reël 2?
Kan jy soort van net vir my verduidelik, in Engels, wat jy dink?
Nie eens bekommerd wees oor die kode.
>> Die eerste ding wat ek sou doen sou wees om
soort van direkte die gebruiker om hulle te vertel wat jy wil.
Okay, so sê,
"Hey, gebruiker. Ek wil
'n string "- awesome.
So laat ons skryf dit neer.
Vra die gebruiker vir 'n string.
Dit klink soos 'n goeie begin.
Alles reg.
Kom ons vra Kelly Ren hierdie tyd.
Wat sal ons dan wil om volgende te doen?
Wat is soort van ons volgende?
>> Versamel hul insette en stoor dit as 'n veranderlike.
Groot.
So haal die tou,
stoor dit in 'n veranderlike.
So is daar iets spesiaal wat ons hier wil doen?
Wil ons hul insette om seker te maak
voor?
>> Ja.
Wat sou ons wil om te kyk vir?
>> Wel, jy het gesê dat ons nie hoef te kyk of dit is 'n getal, reg?
Want dit sal aanvaar dat dit is kleinletter?
Ja.
>> So dit blyk dat - ja.
So getString is gewaarborg om terug te keer vir ons 'n string.
Dit gaan nie om 'n nommer om terug te keer na ons of iets soos dit.
Daar syfer karakters binne daardie string kan wees, al is.
En diegene wat ons kan ignoreer as ons het die kapitalisasie.
Maar 'n leë string is heeltemal fyn,
sodat die saak reg hier op lyn 4 en 5,
regs, waar daar is geen insette,
en het ons niks as ons uitvoer.
Ons hoef nie te bekommer oor om seker te maak dat daar is iets in die tou
of dat die string is ten minste 4 karakters lank wees;
enigiets is goed.
So, dit is gekontrasteer, byvoorbeeld, soos die pennies programme wat jy geskryf het
waar jy het om seker te maak jy nie-negatiewe getalle kry;
jy het om seker te maak dat jy die korrekte aantal dae is om in 'n maand.
En hoe julle om dit te doen?
Hoe sou jy doen die toets?
Wat het wat vereis dat jy om te gebruik?
>> Do-while loops.
Doen terwyl loops, ander vorme van loops, ook, ja.
So dit blyk dat ons het nie 'n lus om te gebruik in hierdie geval,
wanneer ons te vra vir 'n string wat is 'n soort van mooi.
>> Alle reg, beweeg aan.
So, Stella.
Kan jy ons vertel 'n bietjie oor wat ons moet doen?
So nou het ons het die string, ons het dit in 'n veranderlike gestoor;
Wat het ons nodig om te doen met die tou?
>> Ons moet -
identifiseer die 2 -
Ja, sê dit net in Engels, dit is awesome.
>> Identifiseer die [onhoorbaar] hoofstede - of hoofletters.
Ja, so jy identifiseer watter hoofletters en kleinletters.
Ons kan nie 'n hoofletter of onderkas hulle totdat ons het watter geïdentifiseer.
So ons sal dit hier by.
>> So, net te dink oor hierdie proses,
Hoe doen ons hierdie identifikasie?
Weet jy, Dan?
Soort van wat ons - watter instrument wat ons wil hê om te gebruik uit van ons toolbox?
>> Ek wil sit dit in een of ander manier in soos 'n skikking of elke lyn
is sy eie klein boks,
en dan hoofletter dit daar is of nie.
Okay, so een instrument wat ons kan gebruik om 'n skikking.
Wat moet ons doen om te kyk in die tou,
al is, om uit te vind - ons het om te kyk na die karakters.
>> So jy het om te kyk na die lengte van die string?
Ja, so deel van wat is om die lengte van die string.
Net uit nuuskierigheid, wat ons gebruik om die lengte van 'n string te kry?
>> Strlen?
Ja, strlen, ons noem dit "strlen"
Al hierdie string funksies, so strlen is 'n funksie,
en dit is super handig, want ons kan dit gebruik om te sê,
Hey, strlen: Hier is 'n string, vertel my hoe lank dit is.
In die lesing van vandag, David het baie gepraat oor hoe strlen geïmplementeer word,
wat is eintlik agter die skerms aangaan.
Maar dit is een van die baie super handig kinders.
Daar is ander mense wat ook in die tou biblioteek,
soos strcmp, wat gespel "strcmp",
wat gebruik word om stringe met mekaar te vergelyk.
Ander mense wat jy sal gebruik soos strstr,
wat is goed vir die vind van van sub stringe en so aan.
Vir die grootste deel, het hulle almal begin met str en gaan dan op om iets anders te wees.
Die rede waarom hulle nie eintlik nie spel hulle soos 'n string en so aan
want terug in soos die vroeë dae van C,
wanneer mense was eerste skrif en alles wat,
hulle het beperkings op die aantal karakters wat jy kan gebruik
vir funksie name en veranderlike name,
so alles is soos super verkorte.
Maar elke keer as jy sien iets wat begin met str,
wat beteken gewoonlik dit het iets te doen met 'n string.
>> Goed, so jy het die lengte van die tou te kry,
en dan doen wat ons doen met die karakters?
Weet jy, Sam?
>> Ek het geen idee, ek het probeer om dit uit.
Ek weet regtig nie - ek wens daar was 'n manier om -
Ek bedoel, sou ek miskien dink ons ​​iets kan doen met kans en Evens,
maar ek weet nie van enige funksie soos dit.
Ja.
>> Maar dit - dit sal nie noodwendig werk,
want dan het jy sou kry om die spasies in te wees -
sou jy die ruimte om te wenke oor hoe om te kry -
Okay.
>> Ek weet nie - ek soort van verlore op hierdie punt.
Ja - nee, nee, nee, dit is goeie punte.
So, wat ons nodig het om te doen is, soos Sam gesê,
ons nodig het om te bepaal watter letters is die vreemde letters,
en watter is die aand letters.
Maar ons wil seker maak dat ons net nie op soek
by die ewe en onewe
indekse in die tou,
maar eerder op soek na die ewe en onewe letters in die string,
sodat ons nodig het om te kinda hierdie onderskeid tussen
letters - soos wat is eintlik A, B, C, D, of so op,
en alles wat nie letters, maar nog steeds in ons string.
Byvoorbeeld hier, soos hierdie uitroepteken is nie 'n brief nie,
maar dit is nog steeds deel van ons string, dit is nog steeds 'n char.
Net so, al hierdie ruimtes -
dit nie sin maak om 'n ruimte te kapitaliseer, reg?
Daarom wil ons seker maak dat ons op een of ander manier slaan dié
terwyl hy nog die dop van kans en Evens.
>> So 'n soort van in ons programmering toolbox
so ver, as jy wil,
ons het 'n aantal van verskillende instrumente wat ons het gepraat oor.
So, byvoorbeeld, is veranderlikes,
soos ons het gepraat oor hier.
Nog 'n instrument wat ons oor gepraat het is funksies.
Dus het ons gepraat oor die veranderlikes in ons pseudokode hier
as wat ons gaan gebruik om ons string op te slaan.
Ons het gepraat oor die funksies om die lengte van 'n string te kry, soos strlen.
Ons het gepraat oor iets anders, en ons het gepraat oor dit
vir 'n baie vroeër in artikel vandag: loops.
>> Wat doen julle dink oor die gebruik van 'n lus in hierdie program?
Jared, wat dink jy?
Sou ons gebruik 'n lus in hierdie program?
>> Waarskynlik nie, nee, want jy hoef nie te gaan deur dit meer as een keer.
Okay, hoef jy nie om te gaan deur middel van wat meer as een keer?
>> Die hele string.
Reg, so jy hoef nie te gaan deur die hele string.
Jammer dit het absoluut geen sin nie!
Jy hoef nie meer as een keer om te gaan deur die hele string.
Okay.
Wat dink jy?
>> Ek dink dat dit beter is om dit te gebruik
sodat ons dit kan doen soos kapitaliseer terwyl
die plek van dit is [onhoorbaar] nommer.
Groot, en so kapitaliseer wat?
Okay, so ons sê dat
ons moet 'n lus gebruik omdat ons wil
kapitaliseer 'n brief terwyl dit is nie 'n getal nie.
So - jammer, het jy wil om by te voeg?
>> Ek gaan om te sê dat die manier waarop jy behandel die string
en dit [onhoorbaar] die [onhoorbaar] op die karakters?
Ja.
>> En dan het ons die getalle kan toewys aan -
of gebaseer op die ligging van die letters in die string?
Ja.
>> En bepaal of dit is vreemd of selfs en die brief self te kapitaliseer
terwyl die plek van die brief is [onhoorbaar] - jammer.
Groot.
>> So net 'n herhaling.
Kan jy herinner my weer van jou naam - Achievement jammer.
>> Charlotte.
Charlotte, okay.
So, wat Charlotte sê,
wat is heeltemal reg - gosh, hierdie likes om motor streepje op my -
is dat as ons kyk na 'n string
soos hierdie een op die top -
"Thanks for the add" -
as 'n reeks van karakters
waar die by posisie 0,
h is by posisie 1.
A is op 2, dan het ons 3, 4, 5;
die ruimte is by posisie 6.
AANGESIEN wat volg - wat is die posisie van f?
7!
O? 8.
R? 9.
En dan het ons het 10, en dan kan ek nie regtig skryf sonder dat dit die
kinda kry morsige op die skerm.
Maar dit is eintlik hoe ons kan praat oor die snare in die geheue.
Is dit 'n string
is 'n reeks van karakters,
en wanneer ons verwys na 'n individuele karakter in 'n string,
ons doen dit dikwels deur te verwys na daardie karakter se standpunt
in die tou,
waarskynlik die dieselfde manier as wat ons praat oor September
synde die negende maand van die jaar
of Maandag synde die eerste dag van die week.
So bied ons 'n manier om
uit te vind wat is vreemd teenoor selfs
want jy hier kan sien,
as ons dit ooreenstem met hierdie T,
kan jy sien dat al die gekapitaliseerde
is by selfs posisies,
ten minste vir die eerste woord,
en dan dinge afgegooi wanneer ons getref het dat die ruimte,
want ons tel nie hierdie ruimte as 'n brief,
so is dit asof ons begin
en het 0, 1, 2, 3, 4, 5,
ruimte, 6, 7, 8, ruimte,
9, en dan 10, 11, 12, en so aan.
>> Cool, so ons sal beslis wil 'n soort van die lus te gebruik
om te gaan oor elkeen van die karakters in die beurt.
Dus, op hierdie punt,
ons sal terug te kom na ons ou pseudokode hier.
As deel van die identifisering van watter
hoofletters en watter is kleinletters,
ons sal wil hê om dit te doen in 'n soort van die lus.
Loop, kolon.
Watter soort van loop uit van die tipes lusse wat ons het,
lyk na 'n goeie een om te gebruik in hierdie geval te wees?
>> Ek het gedink die lus.
En hoekom dink jy van die for-lus?
>> Omdat dit begin by nul, en dan
wanneer ons bereik die lengte van die tou,
en dan elke iterasie jy kan [onhoorbaar], ook?
Ja, presies.
So, uit van die verskillende keuses van loops,
ons het vir loops, terwyl loops, en do-while loops.
Waar 'n lus is veral nuttig
is wanneer jy wil weet
soort van waar jy in die loop,
hoeveel keer die lus tot dusver uitgevoer.
Dit is presies wat ons wil weet in hierdie situasie,
soos Kelly gesê het,
gebaseer is af van Charlotte se vroeëre opmerking dat ons wil die posisie om te weet
van die karakter in die string,
en die lus sal ons net dat,
want as ons soort van begin om terug te kyk op ons string,
as ons begin ons for-lus op 0,
en laat ons optrek deur die lengte van die hele string,
dan kan ons assosieer die letter T
met die 0 in ons lus,
letter H met die 1 in ons lus, en so aan,
gaan al die pad deur die einde van die tou.
>> So laat ons begin kodering dit net 'n bietjie
net so julle ouens kry 'n gevoel vir wat dit lyk soos.
Ek gaan om dit te red,
so ons het ons pseudo-kode hier,
en ek gaan om alles te verwyder.
So ek het 'n skoon lei.
Ek gaan begin deur die skryf van int main (void)
{
Ek is die terugkeer 0 gonna sit in
en dan die.
So gewoonlik wanneer ek begin om te program, dit is wat ek begin met.
Ek sal dit red, sodat julle dit.
So was een van die eerste dinge het ons gepraat oor
toevoer van die gebruiker
en stoor dit in 'n string.
Hoe kry ons die insette van 'n gebruiker?
>> GetString.
GetString, alles reg.
So as ek tik GetString ()
en 'n kommapunt.
Kom ons probeer om hierdie, sal hierdie lopie in die eerste plek?
En waarom dit sal nie uitgevoer word nie?
>> Jy het die veranderlike te verklaar.
Ek het 'n veranderlike te verklaar. Okay.
>> So, hoe doen ek dit?
Gee jy om iets te skryf, deel dit?
En dan kan ons trek dit.
Kom ons kyk, Dan, reg, okay.
Of Daniel. Kopieer, string inset = GetString ().
Awesome.
Sal dit loop?
Kom ons probeer dit.
Hit run, uploading bron-kode, gebou, 'n fout.
Okay.
So whats gaan hier aan?
Gebruik van onverklaarde identifiseerder 'string'.
>> Ons het die biblioteke in te sluit?
Ja, so Dan se sê ons het die biblioteke in te sluit.
Is dit wat jy gaan om te sê, Stella? Awesome.
Dit is awesome, so Stella, kan jy
Kopieer hierdie kode uit Daniël se Space?
As jy kliek op Daniel Roland Ki, kopieer dit,
en dan sal jy die include lyn in, en stoor dit dan uit?
Laat my weet wanneer jy gereed is.
So, dit sluit in sintaksis is ook soort van funky;
daar is soos wat hash tag,
En daar is die sluit, en dan is daar die hoek tussen hakies.
Onthou jy hoe dit werk, of moet ek dit op hierdie kode hier?
>> Ek is 'n goeie.
Okay.
>> Ek het dit gedruk - ek was nie seker watter biblioteek, al is.
O, okay - ja, so is dit die CS50 biblioteek.
>> Oh, ek het Wiskunde Streek Leuven B. biblioteek.
>> O ja, het dit - ja, nee, that's -
sodat dit blyk dat die string is eintlik iets wat is spesiaal vir CS50.
Daar is eintlik nie 'n ware string tipe
want hier, string is in die tipe posisie, -
ons verklaar 'n veranderlike genoem insette van tipe string -
en ons sit binnekant van die toevoer
die waarde wat aan ons teruggestuur kry: die produksie van hierdie GetString funksie oproep.
Jy kan jou vertel dit is 'n funksie oproep want dit het die hakies, net soos printf doen,
net soos strlen nie.
Maar string is eintlik nie 'n ware tipe
in die C-taal.
Ons het dit in 'n tipe, en ons sal meer wat dit eintlik is
in C, want daar is 'n manier om te werk met stringe;
ons het net gedoen om iets te maak dat dit lyk 'n bietjie mooier.
>> So hier gaan ons.
Hier is Stella se kode.
Dit het die # sluit .
Ander mense noem dit soos 'n hash sluit soms of 'n skerp sluit.
Nou kan ons begin, hardloop,
en ons het nog steeds 'n foutboodskap kry.
Kom ons kyk wat gebeur.
"Ongebruikte veranderlike 'input'."
Okay, so dis cool, dis koel.
Ek bedoel, dit is nie werklik 'n koel,
omdat ons 'n fout kry en dit is nie hardloop,
maar wat dit sê nie, is dat
ons het nie gebruik word om ons veranderlike, wat sin maak.
Ons het nie probeer om iets te doen met dit.
Dit is 'n manier dat
Kletteren probeer om ons te help om seker te maak dat ons net nie die gebruik van veranderlikes
en dan roep hulle per ongeluk iets anders later in ons kode,
help om ons foute te vermy dat die pad.
>> Alle reg, sodat ons het insette van die gebruiker,
ons dit gestoor in 'n veranderlike.
Die volgende stap was om dan
begin kyk na al die karakters in die string
en die identifisering van wat mense moet hoofletters
en watter is kleinletter te wees.
En soos Kelly en Charlotte laat optrek het,
ons dit doen met behulp van 'n lus.
So nie almal onthou die sintaksis van 'n for-lus
en wil graag 'n steek te neem op die net skryf
die eerste reël van die for-lus, net vir bietjie?
Kelly, jy wil gee dit 'n probeer?
>> Ja, sodat jy eerste te inisialiseer,
so ek het i = 0,
en dan het ek het i <strlen ().
Is dit in jou ruimte - ek kan trek dit?
>> Ja, ek screwed up 'n bietjie, maar ja.
>> Goed, kom ons trek dit.
Awesome.
>> Maar dan het ek weet nie of jy het dat -
Ja, okay.
So hier is wat Kelly het: laat ons kyk na dit vinnig.
Sodat sy die cs50 biblioteek aan die bokant.
Sy is ingesluit om die standaard IO-biblioteek aan die bokant,
en die standaard IO het funksies soos printf,
so as jy ooit wil printf gebruik, moet jy daardie lyn.
En dan het sy die tou biblioteek,
wat ons nodig het,
omdat die string biblioteek strlen funksie,
wat ons kry in net 'n bietjie.
So as ons kyk na wat Kelly gedoen hier,
kan jy loop ons deur dit wat jy gedoen het?
>> Ja, so - ek bedoel, ek het foute, so -
Ja, nee, it's -
>> So ek wou om die string te noem dat ek net "string" het.
Ek wou uit die string te druk
en dan het ek -
Ek wou graag die string stel as soos 'n skikking van elke karakter
wat anders is [onhoorbaar], reg?
En dan het ek wou om te begin by posisie 0
en dan elke 2 ruimtes,
Ek gaan om te kapitaliseer,
so ek het net het dit beskryf as 23, want ek was op soek na die ASCII-tabel.
So dit is wat ek kon dink - ek weet dit is nie reg nie.
>> Het dit, so dit is 'n goeie begin.
Ek dink 'n baie van die raamwerk is in plek hier.
Kom ons gaan deur die soort reël vir reël en kyk wat gaan aan.
So is die manier wat ek wil om dit te doen is net begin deur die samestelling van die kode
en laat die opsteller my vertel soos wat is verkeerd met my kode,
omdat die samesteller is regtig 'n goeie by wat jy vertel wat is fout met jou kode.
So as ons dit speel, te bou, en dit bou nie.
Dit sê daar was 'n fout,
so as ons scroll down en kyk na die eerste fout,
dit gesê -
ons blaai terug na die top,
kan ons sien daar is 5 foute gegenereer hier aan die onderkant.
Oeps, is regtig wat afgesny.
Ek dink dit is net nie gaan beter kry.
>> Hier gaan ons.
So is daar 5 totale foute gegenereer.
Hier kan ek sien net die eerste 2,
so ek kan beweeg dit 'n bietjie en dan soort van scroll up.
Dit is die opdrag wat uitgevoer is om die kode op te stel,
en dan die eerste fout was reg hier in file.c:
"Verwag identifiseer of '(", en dit was op hierdie lyn
waar ons gesê string = GetString ().
Jy kan hier sien dat dit on line 8 van file.c,
en dan dink ek dat dit is 'n karakter 12 - dit is die fout.
So, wat is verkeerd gaan on line 8 - Kelly?
>> Jy hoef net om dit te noem, soos, 'n brief of iets,
soos string s of iets?
Ja, so dit blyk dat hierdie spesiale tipe name,
so string, int, char, kort,
hulle is almal spesiale sleutelwoorde,
en jy kan eintlik nie gebruik dit as die name van jou veranderlikes,
omdat die vertaler kyk en sê,
"O, ek weet dit is 'n soort"
sodat jy kan eintlik nie 'n string veranderlike genoem string,
soos ek hier probeer doen, dit sal nie werk nie.
Maar in plaas daarvan, kan ons noem dit iets soos of st of str.
Ons kan ook nie noem dit int.
Ons kan nie 'n string met die naam int.
Ons kan nie 'n string met die naam char, sal nie een van daardie werk.
>> So sal ons noem dit net vir die tyd.
Awesome.
So, wat volgende gaan in hierdie lyn?
String - hierdie lyn lyk redelik goed?
Kom ons gee dit 'n ander probeer, laat ons hardloop dit.
Okay, so ons kry nog steeds foute.
Hierdie keer, ons is af na 4 foute.
So ons het een van hulle.
Kom ons beweeg.
Msgstr "Onverwagte tik naam 'string': verwagte uitdrukking," ja?
>> Ja, dit is omdat ek probeer om die string te noem.
Ja, so dit lyk asof ons nou ook 'n fix om te gaan
almal van hierdie verwysings na string.
Jy kan sien daar is 'n verwysing na string, een hier, een hier,
sodat ons kan beweeg om al hierdie dinge te s.
Groot. Okay, loop dit weer.
Building - nog 'n Fout het voorgekom.
>> Okay, nou is ons af na een fout,
so int i = s en dan die vierkantige hakies.
So kan jy ons vertel 'n bietjie oor wat jy hier doen, Kelly?
>> Ja.
Dit was on line 10.
>> Ek weet nie of ons dit nodig gehad het,
maar ek dink ek het probeer om -
Ek sal dit red, sodat jy kan volg saam.
>> Ek dink ek was
probeer om dit te vertel om te begin by posisie 0
aan die begin van my lus,
so ek dink miskien is dit gesê was onnodig.
So net om te Kortom,
jy het gesê dat dit - jy probeer om dit te begin by posisie 0
en kry dit - ja,
so ek dink vroeër ook, wanneer jy loop deur die kode,
jy praat oor hoe jy wou die string te behandel as 'n skikking
sodat ons kan elke karakter individueel toegang.
Ek dink Dan genoem skikkings, ook probeer om stringe te omskep in 'skikkings.
>> Dit blyk dat die soort van onder die kap,
is eintlik 'n string as 'n skikking gestoor reeds
en jy dit kan oopmaak soos 'n skikking;
daar is geen omsetting wat jy hoef te doen nie.
'N string isn't - so -
'n string is nie regtig 'n skikking,
maar jy kan dit as sodanig toegang, omdat al die karakters word gestoor
een reg langs mekaar in die geheue,
so as jy wil die eerste karakter van die string te kry,
dit is dieselfde as om die eerste heelgetal in 'n heelgetal skikking.
So ons dikwels - sal ons
verwys na die 2 soos
oh, as 'n string, as synde 'n skikking,
selfs al is dit regtig - they're baie verskillende dinge,
maar jy kan behandel hulle baie dieselfde.
So dit blyk dat hierdie lyn -
ons hoef nie 'n omskakeling te doen,
en in werklikheid,
dit is eintlik nie 'n geldige uitdrukking,
en dit is wat ons samesteller vertel.
Dit sê, "Hey, dit verwag dat 'n uitdrukking,
en wat ek hier het, is iets wat nie 'n uitdrukking. "
'N skikking te verklaar,
al wat jy hoef te doen is om iets soos hierdie met 'n kommapunt,
en dan kan jy die skikking vertel hoe lank jy dit wil hê,
soos 5, so hierdie lyn 10
sal verklaar 'n skikking met die naam i met 5 heelgetalle in dit.
>> Dit is 'n eenkant, dit is nie nodig vir die kode,
maar dit is - dit is 'n soort van wat die verklaring lyk.
>> Hoe sou jy nie gebruik char i [strlen (s)?
Char i [strlen (s)?
>> Char i, en dan binne die hakies, strlen (s).
Ja, sodat ons kan -
ons kan dit doen,
en dit sou verklaar - wat sou dit doen?
>> Ek dink dit sou 'n skikking verklaar
, soos - of -
oh, jy hoef nie die i - oh,
ja, jy beslis nie nodig nie die i.
Jy verklaar 'n verskeidenheid van karakters
van lengte s.
En so wat Sam se sê is dat
hierdie lyn 10 - laat my sit 'n paar ruimte tussen dit en die res, sodat ons dit kan isoleer -
hierdie lyn 10 sou 'n skikking verklaar
van die karakters, strlen (s) ter waarde van hulle,
maar ons eintlik nodig het om die i,
en die rede waarom ons moet die i want ons moet die skikking 'n naam gee;
Anders sou ons nie 'n manier om te verwys na die skikking later in die kode.
>> So hierdie reg hier is die skikking naam
en binnekant is die lengte.
Dit sal vir ons 'n skikking,
maar dit is - weer, dit is 'n verklaring.
Dit is nie 'n opdrag nie, dit is nie 'n inisialisering.
As ons verklaar hierdie reeks soos hierdie,
daar is eintlik niks in die inhoud van die skikking.
Dis net junk - alles is daar.
En soos ons gesê het,
ons eintlik nie eens nodig om die omskakeling te doen,
want ons kan reeds behandel string as 'n skikking.
Ek weet dat ons 'n bietjie lank loop op tyd,
maar ek wil net baie vinnig kry om dit vir lus
en wys jou hoe om toegang te verkry tot die individuele karakters in die skikking,
want dit is die sleutel vir ons opdrag.
En dan sal ons u laat gaan van daar af.
>> So hier is, het ons 'n for-lus
wat lyk amper goed.
Wat is nie heeltemal amper daar?
What's - wat nie heeltemal reg oor hierdie lus?
>> Geen krullerige draadjies?
Geen kode tussen krulhakies, vir een.
Wil seker maak dat ons die liggaam van die lus met krullerige draadjies.
Oeps, nie die vierkantige brace!
En wat is die volgende ding wat ons nodig het om te doen met hierdie lus?
As ek probeer en hardloop,
Wat is hierdie fout wat ek kry?
Ek kry al hierdie foute - ek het i om te inisialiseer.
Groot.
So dit sal 'n lus te wees - dit is nie heeltemal daar,
maar dit is baie naby.
Hierdie kode kan ons nou hardloop,
bou, 'n fout begaan.
Waarom is dit nog steeds kla,
sê die uitdrukking is ongebruikte,
en dit is omdat hierdie lyn niks doen.
Ons het nie stoor dit op enige plek, ons het nie die resultaat stoor.
Waar moet ons hierdie resultaat spaar?
>> S of i?
Presies, en hierdie funky sintaksis,
hierdie s met die vierkantige hakies
beteken toegang tot die i-de karakter van s.
Dit gaan om iets wat is regtig belangrik vir die werkopdrag te wees.
Ongelukkig, ons gaan te hê om hier te stop,
sodat Sebastian artikel kan kom,
maar ek is gelukkig om na buite te bly en sal enige vrae het.
So dankie ouens vir die komende.
Dit behoort nou oplaai, bou, hardloop.
Ons kan 'n string soos "hallo"
en dit druk "QOX".
[Lag]
>> So nie heeltemal daar nie, maar beweeg, om teenoor diegene loops!
Dankie vir jou kom, en ek sal buite.