[Powered by Google Translate] [♪ ♪ brenčanje]
Tako, da vam predstavim, kaj imam na zaslonu;
to je eden od načinov, smo razvili čez poletje;
to se imenuje CS50 prostori,
in to je naša vloga sodelovanja kodiranje
da bomo za uporabo v oddelkih.
To je zelo kul.
Ali kdo od vas videl CS50 vožnjo še?
Naj potegnite izmislil na drugi kartici.
Run.cs50.net
Tako
če greš v run.cs50.net,
lahko vidite, je to v vašem brskalniku poti
dejansko številka - pisati C kodo,
in ga zaženite,
tako da sta ga pripravlja in ga vodi, nato pa se vrne izhod za vas,
tako da je to nekako kul način za poskus
z nekaj kode, ki gre čez David na predavanjih
in damo na vas na problematičnih skupin
ne da bi dejansko morali ogenj aparata.
>> Torej, kaj počne Prostori, ki se razlikuje od tistega,
če sem preklopil nazaj na tej kartici,
Prostori so CS50 run, kot jih vidite tukaj,
če pa se pomaknite čez, in pogled na drugo stran okna,
vidiš pravico, da sem edina oseba v tem prostoru,
ampak kaj bom storiti, je vprašal fantje, da se pridružijo tem prostoru z mano
in bomo vsi dobili kodo v istem majhnem okencu
deliti kodo s seboj,
in govorijo o razlikah med našo kodo.
Torej, to je nekako kul stvar -
tako, da se pridružijo, če bi to povezavo tukaj na vrhu
, ki sem jih izpostavila,
lahko samo tip v apps.cs50.net/spaces/vqcspSnO.
>> V redu, tako da začnete,
Bom dal malo na ogled tega.
Mi smo naredili nekaj neumnih kodiranje z njo na prvi pogled,
samo zato, da so vsi nekako dobi občutek za to, kaj je to všeč,
ampak kaj sem naredil -
ali kaj bom storiti, tukaj je -
Grem, da kodo, ki sem jih pisno tukaj,
ki je, kot vidite, sedaj je prazna;
da ne naredi ničesar.
To je samo kotel krožnik kodo, bomo ga pokličete.
Z malo opravil komentar.
Jaz grem, da ga shranite s pritiskom na ta gumb Save.
In kaj to naredi, je, da
Poudaril je, da tu na kratko - to save reviziji zeleno polje,
in zdaj, če iščete za mene v prostoru,
kliknete svoje ime,
boste videli, da sem dobil to spremembo tukaj,
in če kliknete na to revizijo,
da bomo naložili, da kodo v vesolje, preveč.
>> Torej je vsakdo naloži to kodo v svoje vesolje?
V redu, če tega še niste storili, iti naprej in to, da
in potem kaj želim vama storiti v to malo opravil oddelek
je napisal malo s pomočjo printf o sebi,
Tako, na primer, bi jaz napisal
printf ("Moje ime je Nate");
in potem sem napisal
"Diplomiral sem leta 2009
na Stanfordu "
in jaz bi rad slišal o
Katerega leta ste v šoli,
ali ste v šoli ali poslovno šolo
ali drugo šolo Harvard,
Kaj ste študira, če je to znano še;
če to ni znano, da je popolnoma v redu.
Nisem odloči, dokler sem bil pozno v svojem letniku letu.
in potem bi tudi jaz rad vedel
kaj noro mi hočeš povedati, ali
Nekaj ​​o razredu ali pa samo kaj drugega.
Ko končate s pisanjem, ki s svojim malo printf,
Če boste prihranili revizijo oziroma
najprej prepričajte, da ga lahko zaženete
in da natisne točno tisto, kar želite, da natisniti,
in potem, če greš naprej in shranite revizijo
gumbom Revizija Save, ta prvi mali fant sem,
in bomo nekako šla skozi in ne malo uvod na ta način.
Zato bi si morali zadeti gumb za predvajanje,
ki je tukaj v zgornjem levem kotu,
tako da je ta igra gumb v zgornjem levem kotu bo
pošlji kodo off na naš strežnik, kjer dobi je zbrala in nato zaženite.
Torej, kaj je nekako nora to
ta številka dejansko ne izvaja na računalniku;
to je pa dejansko poslali preko interneta.
>> Kako gre, Charlotte?
>> Jaz - v redu. Jaz - Mislim, da sem
Težave, ki ga shranite
na strežniku, tako da lahko - lahko zaženete program.
In potem, ko sem poskusil, da bi sistem deloval, pravi, da je to napaka.
Razglašen kot virus, ki ni več tam.
Oh, pa poglejmo, lahko zadeti Prihranite spet?
Jaz ga vidite na zaslonu.
>> Ja, v redu, tako da je tisto, kar imam.
In ne vem, zakaj ga ni mi ga zaženete.
V redu, oprosti.
Ali lahko pojasnite, zakaj - kaj je bilo narobe - kaj ni delal z njo?
>> Ja, ker nisem videl, da je zadnja vrstica, kjer je še spremenljivka
da sem ni prijavljena, kar nisem nameraval za to, da so tam.
Ja, odlično!
>> Zdaj, če sem ga rešil, mislim, da bi bilo delo.
Zdaj, ko ste ga shranili, da deluje, super.
>> Torej, ja, ko gremo skozi -
kaj se dogaja,
Jaz sem le, da bo ponavljal za kamero.
Kaj se je dogajalo, da je bila ta spremenljivka y
je ostalo v po - Predvidevam, da ste izbrisali nekatere druge stvari
kjer je deklariran kot,
in tako je bilo to metanje off stvari in se ne pusti ga zaženete.
Torej, to je točno tisto, kar želimo narediti v oddelku
se ljudje poskusili sestaviti različne dele kode,
ga pripravi, kaj deluje in kaj ne,
in potem nekako govoriti o teh stvareh, ker so točke, ki spotika
Jaz še vedno srečujejo,
Še vedno - delam veliko stvari neumno ves čas,
in ne vem, zakaj to ne deluje,
tako da je dvigni revizijo Charlotin 3,
in ga bomo teči.
>> Torej, ko sem teči, sedaj imam svojo kodo tukaj,
Jaz lahko povečate, hit gumb Zaženi,
dodane je, da gradi, ga zmanjka,
pravi, da je tekel uspešno, in če bi se pomaknite navzdol
glej Charlotte Adams junior v hiši,
psihologija, sekundarna iz ekonomije, super.
Lepo, da sva se spoznala!
Neverjetno.
Ok, gremo naprej, gremo Danielu
pojdite na pregled 3,
zbiranje, teči;
Zakaj ne poveste nekaj o sebi, Daniel?
Pokliči me >> Dan.
Jaz grem v šolo poslovne nasproti vas,
in sem bil v mornarici, preden tukaj,
in to je vse čisto novo zame, tako da ja.
Ne počutim slabo, jaz sem 30 in ne vem o teh stvareh.
Super, hvala, Dan!
V redu, smo dobili še Daniela.
Greš z Danielom - se boste uvedli, Daniel?
>> >> Seveda, jaz sem Daniel.
Jaz sem v drugem letniku na Mather zdaj.
Jaz sem se osredotoča na vlado,
vendar sem želel, da bi CS50 ker sem slišal veliko pregledov o razredu
in še nisem poskusil CS prej.
Pomaknite se dol in pokazati - kul.
Moving on, Jared.
Kako gre?
>> Dobro, kako ste?
Kot vidite, sem mlajši filozofija koncentrator v Eliot,
izvira iz južne Kalifornije,
in me zanima pri CS50, ker mi je všeč to logiko,
in to se mi zdi zelo kul stvari na računalniku, tako da.
Awesome, kjer je v južni Kaliforniji ste?
>> Približno eno uro pred [neslišno], majhno mesto [neslišno].
Oh, ja, moj oče je iz Redlands.
Cool stvari.
>> V redu, Jimmy, kako gre, Jimmy?
>> Dobro, kako ste?
Gre dobro!
Povejte nam kaj o sebi.
>> Jaz sem novinec, in nisem povsem prepričan, kaj sem smer
ampak sem nekako nagibala k ekonomiji.
Kot Daniel pred mano, nikoli nisem naredil nobene CS, ampak se sliši nekako kul.
Jaz sem doma iz Chicaga.
Neverjetno. Torej preverite svoje izpisa tukaj.
Hotela sem vprašati, pa te točke, kot ste pričakovali?
>> Ne, pozabil sem natisniti v novo vrstico.
Pravzaprav sem pozabil, da ko sem pisal moja stvar
Prvič, preveč.
To je neke vrste bolečine, da se spomnimo, da naj tisti ročno.
Bilo bi lepo, če bi le vedeli, da je tisto, kar si hotel.
>> V redu, Kelly.
Vau, imamo 2 Kellys, 2 Daniels, 2 Kellys.
Torej Kelly - ti pojdi z Kelly Ren?
Ok, super.
Ali Kelly, mislim.
>> Torej, ja, tako da sem Kelly.
Jaz sem v drugem letniku, v Pfoho.
Sem dobil e-pošto, da je danes še vedno imam 7 tednov prijaviti mojo koncentracijo,
Tako Poskušam ne misliti na to,
in mi je všeč peka, teče, in Craisins.
Nimam izkušenj z večino DS;
Sem se učil za izgradnjo spletnih strani, ko sem bil res zelo mlad,
ampak mislim, da bom verjetno naučil sem narobe veliko krat.
Upam, da bom izvedeti malo več
in - ja.
>> Super, dobro, hvala.
Gremo na drugo Kelly;
Nimam nič - si kaj rekel tukaj?
>> [Neslišno]
Tukaj je!
Sweet!
>> V redu, tako da sem Kelly.
Jaz sem prvi letnik podiplomski študent.
Jaz sem smer uma, možganov in izobraževanje.
Diplomiral sem na Franklin & Marshall College v letu 2008
z velikih psihologije in sociologije
in manjše v francoščini.
Jaz sem ob CS50
ker sem zainteresirana za pridobivanje doktor Neuroscience
in počutim se kot da bo to pomoč mi razumeti tehnologije, ki se uporablja.
Neverjetno.
Moving on, Mikaela.
Je to pravilna izgovorjava?
Ok, super.
>> >> Jaz sem Mikhaila.
Jaz sem v drugem letniku, v Kirkland House,
in sem se osredotočili na strojništvo.
Res mi je všeč kolesarjenje, zgrajena s kolesom to poletje.
Jaz sem ob CS, pravzaprav,
kot koncentracije zahteva,
toda, veste, mislim, da je še vedno kul vrsta razreda inženiringa.
Awesome - ste zgradili kolo letošnje poletje?
>> Ja.
Wow, kot okvir in vse to?
>> Uh hunh (pozitivne).
Vau, to je res kul.
>> [Neslišno off-kamero klepet]
[Smeh]
Ja, to je bilo tako dolgo.
Nikoli ne veš, kajne?
No, super, hvala tudi, Mikhaila.
>> V redu, Missy.
>> Moje ime je Missy, da sem novinec,
tako da pomeni, ne vem ničesar!
Želim, da se osredotoči na astrofizike.
V CS50,
Počutim se, kot bo zagotovo pomagal pri tem.
Čudno dejstvo o meni je, da sem članica certifikatom gasilec.
Vau!
Kako se je to zgodilo?
>> Sem se udeležil akademije
in je šel skozi pekel za veliko tednov
in dobil certifikat.
Vau, čestitke!
To ni majhna feat, zagotovo.
Ok, zdaj bomo mi storiti.
Jaz sem naslednjič na vrsti.
Jaz - prost.
>> Torej, moje ime je Nate.
Bil sem razred 2009 na Stanfordu.
Bil sem simbolnih sistemov velike,
ki je podobna uma, možganov, koncentracijo Behavior tukaj,
ampak to je nekakšna mešanica
računalništvo, jezikoslovje, psihologija in filozofija.
Nekako - ja, veliko čudnih stvari, vendar je bilo super,
in potem sem naredil moj magisterij iz računalništva tam, kot dobro.
Torej sem nov na Harvardu letos.
Zelo sem si želel priti v poučevanju.
Sem preživel zadnja 4 leta na Stanford naravoslovnih razredov TA-nih računalniških
David in tako mi daj,
in bom lahko pomagal z CS50,
tako da sem naredil to s polnim delovnim časom, da nisem v šoli grad.
Bilo je zabavno.
Upajmo, da bo to še vedno zabavno, prepričan sem, da bo.
>> V redu, Sam.
>> Moje ime je Sam, sem v drugem letniku na šoli, v pravu posebej.
Moj glavni bo zgodovina znanosti, verjetno, in ves sekundarni,
in moja najljubša barva je rumena.
Ni potrebe, da izda sodbo ali kaj podobnega, ampak to je dobra barva!
In Stella.
>> Živjo, jaz sem Stella, sem novinec v Grays.
Nimam pojma, kaj sem osredotočena na še
Tako CS50 je le nekako naključno,
kar je zanimivo.
Zanimivost, Jimmy bila prva Harvard moj prijatelj,
ker sva oba iz Chicaga.
Ohladimo in Grace - to naj bi bilo res lepo, kajne?
Mislil sem, da >> [neslišno].
Oh, ja.
[Neslišno / izklop kamere klepet]
Ok, sem še vedno učenje, še vedno uči.
>> Torej imamo nekaj drugega, kar je zanimivo tukaj.
Ja, jaz sem samo spraševala, ali imate idejo, ki se dogaja tukaj?
Saj veš, kako je treba razlagati to?
>> Pa naj bi se dal podpičje po vsaki vrstici.
To je neke vrste bolečine.
Včasih se ti podpičja lahko resnično bolečino, da bi izsledili.
Tako se izkaže, da
Poseben program bomo z letos
sestavi svoj C kodo, se imenuje Jek,
in zato smo začeli uporabljati Jek letos -
ker nismo uporabljati ta program v preteklosti;
smo uporabiti drugo imenovano GCC, ki je zelo priljubljena -
Jek dejansko vam daje sporočilo o napaki, ki smisla.
Ta pravi, da "pričakuje", "Po izrazu"
in celo vam pove izraz, po katerem je potrebna podpičje.
Torej ste jo pritrditi?
>> Ja, prav zdaj.
Čudovito, da mi sporočite in bomo ga potegnite navzgor in ga bomo teči.
Ampak ja, s čimer te podpičji v je nekako bolečine.
>> Popravil sem, zato mislim, da bi bilo delo.
Awesome - revizija 3.
To izgleda tako.
V redu, zdaj, če bi sistem deloval,
tam gre.
Cool stvari.
>> V redu.
Torej, hvala za to, da je.
To je super, da izpolnjujejo vas.
Kaj bomo naredili zdaj pa preživite ob malo
Nekako potapljanje v rubriki težave
, ki izvirajo iz določenega problema s tem tednu
in bomo naredili, da je za večino delov
za preostanek mandata,
in potem bomo shranili v zadnjih 15, 20 minut ali tako
govoriti o problemu zastavila
in potem samo katera koli druga vprašanja imate na splošno o razredu.
To je dejal, kaj si zares želiš storiti
se je vsi, ki sodelujejo
z Spaces stvari,
metanje v kodi, metali v predloge,
in ko govorimo o stvari, kot je ta odmor
ali ne deluje, samo zato, ker so to stvari, ki
Vem, da sem prišel čez
ko sem začel kodiranje,
in so bili res nekako neprijetno na trenutke
ker če je kot 2:00, preden tvoj problem niz je posledica,
tako - samo za razkritje,
Nisem začel programiranja, dokler sem bil v drugem letniku na univerzi.
To je nekako čudno, neznano stvar
Slišal sem, da je bilo nekako kul
in sem tudi slišal, da bi se lahko resnično bolečino v riti
Če ste pozabili podpičje in to je edina napaka držimo svoj program iz delovnega
in vas obvešča, da gredo spat,
tako zagotovo,
Če imate vprašanja, kot je ta,
Če imate pomisleke, kot je ta, povej mi,
ker želim, da bi to dobra izkušnja za vaju.
>> Torej ste vi vsi naloženo Problem nastavite še?
Nekako vem, kje je? Ok.
Torej gremo v cs50.net, ker sem ga nimam na ta račun,
dvigni težavnih sklopov,
dvigni problem sklop 2, in da bomo lahko na standardno različico danes.
Mi bomo dvigni specifikacijo tukaj.
Pomaknite navzdol.
Torej bomo začeli videti v tem delu vprašanja.
Ste vi gledali te hlače še?
Ok.
Torej so hlače na zank,
ki ga opravlja Tommy, eden od fantov učnih glavo.
Še ena o obsegu,
Menim, da opravi drugo učno sodelavec z imenom David
in potem ena na Cezarjeva šifra tudi z Davidom.
Oni so kul.
So fantje gledal svoje hlače tako daleč?
How've so bili?
V pomoč? Dobro, dobro, da vem.
Če niso, lahko ti tako praviš.
Toda preden to storite,
so fantje pogledal na ta vprašanja
sploh?
>> Pogovorimo se o tem malo.
Tako smo uvedli v zadnjih nekaj tednih
V predavanju
število različnih zank.
Tam je za zanke,
Medtem pa so zanke, nato pa do-while zanko,
in v predavanju smo se pogovarjali veliko o
kako te zanke so vsi
precej podobna na veliko načinov,
in lahko naredite veliko istih stvari z while zanko
da lahko z zanko za.
Moraš nekako uporabiti prave kombinacije spremenljivk in podobno.
in tako dejansko
dejanska razlika med vsemi zank je, da
Včasih so bolj koristni
da jih uporabljajo naenkrat, kot v drugem času.
>> Tako na primer,
Medtem pa so zanke drugačno od do-while zanko.
Ali se vsi počutijo, kot da imajo dober ročaj, ko
do-while zanko je več
koristen, ali v čem je razlika?
>> Mislim, da je razlika do-while zanko
deluje - ne vem čisto, kaj je terminologija,
ampak vrsta funkcij v zanko.
Ti avtomatsko - to počne svoje teče vsaj
preden se preveri stanje, ali pa zanka bo samo teči, ko
da stalno deluje - ali je pogoj izpolnjeni.
Ja, pa to smiselno?
>> Oglejmo si malo kode.
Torej samo ponoviti vprašanje,
ali je odgovor, ne;
Odgovor je bil, da
while zanki preverja, če je izpolnjen pogoj
, ki ga je treba točno določiti izpolnjeni
preden zmanjka telo zanke prvič,
ker je do-loop, medtem ko se bo samodejno zažene telo zanke,
pravimo, da - to je čudno terminologijo,
ampak, če bom kdaj rekla, da nima smisla, da mi sporočite -
zanka telesa je, da stvari, ki si dal v med zavite oklepaje.
In v do-while zanko,
da se telo, da se vsaj enkrat
in potem se stanje preveri, preden zmanjka časa vsako naslednjo.
>> Torej, dejansko, Sam,
bi vas motilo pisanje preprostih while zanko
v prostore?
>> Kako ste nekako všeč
bo novo ...?
Pravkar sem izbrisati vse, kar je notri.
Ja, samo to jasno navedeno.
>> No, mislim, da imam to -
katero hočeš, medtem ko je, ali hočeš ...?
Ja, samo ne pa res, natisniti nekaj ven.
In poglejmo.
Alexander, sem spoznal, da nikoli uvedena.
>> Oh, to je v redu.
Ali ste - lahko kodo pripravi do-while zanko za nas?
>> Ja, bom poskusil.
V redu, bomo samo potegnite to na zaslonu,
tako da nekako je lotil kakšne so razlike.
>> Torej, tukaj je tisto, kar je naredil Sam.
Ima celo število, imenovano i
, ki je bil inicializiran do 17.
Potem pa pravi, (int i = 17)
printf ("Moje ime je Sam.");
Torej, kaj se zgodi, ko zaženete to kodo?
Tam je napaka, kaj je napaka rekel?
Naj ga potegnite navzgor in se pogovorila o tem.
Prišlo je do napake, pravi.
Naj se pomaknite navzdol.
Tako da nam je dal to napako, in je dejal,
"Hej, sem pričakoval izraz."
To je nekako skrivnosten.
Ja, točno tako - in spet,
da bo še malo napako, da bomo ujeli v samo sekundo.
Ampak to je še eden od tistih, nekako čudno terminologijo stvari,
tako da je ta int i = 17
ni izraz.
Kaj izgleda, da to počne je, da je
razglasitvi celo število se imenuje i
in jo določa, da bo znašal 17
ali, bolje rečeno, dajanje v to 17 notr sem klical.
In to nima smisla
V okviru tega while zanko.
To pa smisla, kot bomo videli,
v okviru za zanke, saj za zanko izjave ne začnete
s tem za int i je enak nekaj
in gre naprej.
>> Torej si -
popraviti nekaj, v redu.
Tukaj gre, super.
Torej, zdaj stvari videti nekoliko drugače.
Nekaj ​​stvari so se spremenile.
Ali nam lahko poveste, kaj so se stvari spremenile?
>> Vzel sem int, tako da ni izjava [neslišno] namesto nalogo.
Tisti, enačaj, sem dal 2 enake znake, kar pomeni enako.
Neverjetno.
Ja, pa kaj Sam si je vzel ven int
da je bil tukaj že prej,
Torej, če sem samo pogled na to - to je tisto, kar je bilo prej, je dejal int,
ki so ga razglasila - zato smo vzeli ven vrsto.
Tam je int, char, string, kratke,
ki se imenujejo vrste.
Torej si vzel vrsto
in potem prej,
je imel le en enačaj
in kaj je po njegovih besedah ​​problematična, o tem je bilo
če imate 1 enačajem
To je naloga upravljavca.
To ni testiranje, ali so 2 stvari enako.
To je pravzaprav nekaj, o višini nekaj.
Mi dajete številko 17 v spremenljivko i.
Torej narediti te vrste primerjave,
boste morali uporabiti dvojni sebi enake,
ki je nekako čudna stvar
vendar je precej pogosta napaka.
Tako bo še ena stvar, ki sem poudaril, če vas ne moti,
je, da v
Naša naloga tu v int main,
boste videli, da je telo našega delovanja
se izravna z leve strani
za 4 prostore ali na kartici.
Razlog za to počnemo
je samo za berljivost.
Kot lahko vidite v zanko, medtem ko Sam je tukaj,
da ni alinea sploh,
in da ne vpliva na funkcionalnost kode.
Potekala bo popolnoma enak.
>> Tako na primer, če pridemo do vrha tukaj
in pritisnite gumb za predvajanje naš, ga bo gradil,
da bomo teči,
in kaj se bo zgodilo?
Zakaj še vedno teče reči?
>> Ker se bomo še naprej ponavlja hi.
Točno tako, in zakaj ne ponavljajo hi?
>> Ker cela nikoli ne spreminja, tako da je vedno 17.
Ja, točno tako
Poglejmo, potem - me spominjajo na ime?
Jimmy. Tako Jimmy je rekel, da
Razlog za to se ponavlja hi znova in znova
je zato, ker je ta pogoj vedno velja.
Mi nikoli ne spremenite vrednost i.
Mi nikoli ne spremenijo vsebino tega, kar je shranjen v tej spremenljivki.
Torej, v tem trenutku smo dobili to napako, da
vaš program ustvari preveč moči,
in če se pomaknite navzdol in nekako pogledati, kaj se dogaja,
Kot lahko vidite, je hi, hi, hi, hi, hi, hi, hi vse skozi.
Neverjetno.
>> Tako nekako nazaj do prvotne točke
da imajo zamik tukaj
v telesu, medtem ko zanke ne vpliva na karkoli.
Program še vedno tekel v redu.
Značilno za dober stil -
in to je nekaj, kar smo si v svojih problematičnih skupin -
Prosimo vas, da to alineo za 4 prostore, ki jih lahko storite
s samo pritiskom na tipko Tab
ali z ročno dajanje v 4 prostorih sami.
Cool, prav tako pa gremo nazaj in pogledamo
Aleksander je naredil, medtem ko.
Tako nekako >> imajo nekaj težav.
Ok, dajmo delati z njim.
Je to v redu?
>> Ja.
>> Ok, gremo.
To je koda, ki Alexander napisal.
Greš z Alex - v redu.
Torej, tukaj je koda, ki je napisal Alex.
Torej, imamo našo izjavo o glavni tukaj,
in potem smo dobili to celo spremenljivko imenovano i
pa se prijavi tukaj.
Imamo narediti izjavo
in potem telo spet s temi oklepaji,
tako da je to telo naredi-ko -
Naj povečati na to, da je bolj berljivo -
in v telesu, smo poskušali natisniti "To je telo"
i + +,
Tako prirastek vsebine i in to
dokler sem dobil na 3,
in potem naš program konča.
>> Torej, kaj se zgodi, ko zaženete ta program?
>> Pričakoval sem identifikator.
Ok, tako pri razvoju, izvajanju, pride do napake.
Kaj se zgodi?
Mi se pomaknite dol,
smo dobili ta precej Grobni videti stvar,
Pričakuje podpičje po zgornji izjavi ravni.
To je nekako čudno.
Ali ima kdo idejo, kaj bi se dogaja?
Nekako čudno, ja.
>> [Neslišno] razglasiti izven oklepajev?
Torej, ali to ne velja takrat, ko uporabite oklepaje?
Tako je izjavil, ta fant, ki zunaj oklepajev?
Oh, ti fantje - kodrasti naramnice?
>> Ja.
Ja, točno tako.
Tako se izkaže, da
ne moreš dejansko razglasi spremenljivko tukaj všeč.
Kaj bi ti lahko bili poskuša narediti, je bilo -
nehaj ven -
Lahko ga dajo v zavitih oklepajih tukaj
ali druga alternativa
je, da je popolnoma zunaj.
In tako to - glede na to, kje ste dejansko dal izjavo
te celo spremenljivko,
lahko dobite 2 zelo različne vrste spremenljivk;
ko je zunaj glavnega,
to je tisto, čemur pravimo globalna spremenljivka.
To je zunaj področja uporabe katerekoli funkcije -
ni v funkciji -
ker, če jo postavimo znotraj main,
všeč tukaj, potem pa se imenuje lokalna spremenljivka,
ker je lokalno na področje glavni.
In bomo govorili malo več o tem, kaj so razlike
med 2 vrstami in zakaj uporabljate različne vrste spremenljivk,
vendar za zdaj,
lahko samo da vse spremenljivke, lokalne,
ker nimamo nobene potrebe po globalnih spremenljivk.
>> Dobro, to je ena stvar tam.
Poskusimo še enkrat teče, kaj se bo zgodilo.
Teci, dobil drugo napako.
Povečaj malo, kaj smo dobili?
Smo dobili to pričakovano zaklepaj do / ko.
Vse ideje, kaj se dogaja? Dan?
Je pa >> nato oklepaj in nato -
Ne vem, če boste morali redeclare int,
vendar ne while (i <3).
Točno tako, ja.
Tako se izkaže, da je Dan ravno prav.
Mi ne potrebujemo, da bi to vrsto tu.
Mi lahko namesto ubiti vrsto
in prav to.
V redu.
Vrnem pomanjšati, jo poskusite še enkrat.
Poglej to, da deluje uspešno.
Če smo se pomaknite navzdol ", je to telo", natisnjene 3-krat.
To je zelo lepo.
Dobro opravljeno, dobro opravljeno, fantje.
Dobro opravljeno.
Kako se to dogaja sedaj?
Dostojno tempo?
V redu, v redu.
>> Torej, kot smo nekako nazaj na prvotno vprašanje,
smo - in zdaj, če bomo videli razliko,
boste videli, da je v tem do-while zanko,
Pogoj pride zadnji.
Tako kot računalnik bere program
saj se programi izvajajo C nekako v tem vrstnem redu,
kjer so dobesedno začeli s prvo vrstico glavnih,
in potem izvršijo vrstico 6, 7 linijo, linijo, linijo 8 9,
linija 10, linija 11,
vse te stvari na vrhu tukaj
se bo enkrat izvršitev
preden smo ga preizkusiti to pogoj za prikaz
ali i - ali vsebine i, ne pa -
so manjše od števila 3.
In le, ko bomo prišli do linije 12,
Vsebino i manj kot 3
bomo dejansko skok nazaj do črte 7
in ponovite postopek,
in potem bomo preizkusili stanje znova in znova in znova.
>> Tako bomo lahko primerjal to
z - povečave nazaj ven,
pomaknite navzdol na različico Sam je,
bomo pogled na to, kar je nekoliko spremenila, tako da je ni več neskončna zanka -
če, če želimo povečati,
vidimo, da je ta program izvaja,
to se dogaja, da se najprej ugotovi, int i,
določene vsebine i so na 0,
in nato pade na stanje, medtem ko zanke 1.,
tako da v tem primeru je to telo, ta printf ("hi") in i + +
sploh ne bo izvršitev
če sem v resnici manjša ali enaka 2.
Torej, če je i 3, na primer,
Če smo si zastavili to pravico tukaj
enako 4 - ali pa bom naredil 3, ker sem rekel, 3 -
in ga zaženite,
da bomo graditi, da bomo teči popolnoma v redu,
vendar to ne bo dejansko natisniti ničesar,
saj ni, da je test v prvem primeru.
Torej, v razredu, smo nekako pogovarjali o tem, zakaj so te do-while zank
Včasih so koristne
in zakaj bi jih uporabljamo v nasprotju z while zanko.
>> Ali obstajajo - vi pa imate predloge
zakaj ne, medtem ko bi zanka je bolj koristno?
>> Mislim, da ne, medtem ko zanke je, če želite vnos uporabnika,
saj lahko na ta način jih pustite
dajo nekaj na enkrat, če je pravilna,
gremo lahko naprej v druge dele programa,
če pa to ni pravilna, potem naprej poziva uporabniku
dokler si dal pravi način.
Ja, točno tako - točno,
tako do-while zanko je koristno
ker ko pozove za vnos uporabnika
ker morate priti uporabnika prispevek, preden lahko dejansko preveriti.
Torej, v pset 1, 2 pset,
kje ste pozivanje za vnos uporabnika veliko,
To je priročna stvar za uporabo
v nasprotju s preprostim zanko, medtem ko.
Če uporabljate while zanko, lahko narediš isto stvar -
lahko narediš isto stvar z while zanko
kot ti z do-while zanko.
Moraš nekako imajo to podvajanje procesa
, kjer boste dobili vložek in šele nato začnete while zanko.
Ker je do-while zanko, boste morali napisati enkrat
in to je veliko čistejši.
>> V redu.
Kakšno vprašanje?
Smiselno?
>> Return 0 - to je le neke vrste stojnici ali pa je -?
Ja, tako da bomo lahko -
No, bomo obdelali to malo več kasneje
vendar se je izkazalo, da je
to return 0, da smo se
na koncu glavne ves čas -
lahko nekako ga vzemite kot nekaj, kar počnemo
zaenkrat.
Kaj smo začeli govoriti s funkcijami
nekako konec prejšnjega tedna in nato še enkrat v tem tednu
je, da je funkcija
meni vložke, ki so te stvari v oklepaju;
To so 2 vhoda, naši argumenti ali parametri,
tisto, kar se imenuje tudi naše glavne funkcije,
in potem funkcija izdela izhod
ki smo ga poimenovali povratno vrednost.
In vrne vrednost v primeru main je to int,
to celo,
in način, kako povedati funkcijo, "Hej, to je, kaj je tvoj izhod
se bo, "je s to besedo" vrnitvi ",
da je ključna beseda, temveč
in tako glavni vrne 0
ali glavni predvajanju 0
je standard v programih C
saj pri vračanju 0 od glavnih sredstev, ki
"Hej, vse, kar izvajajo z mojim programom v redu."
Če bi dal nekaj drugega kot 0,
kot 1, na primer,
, ki je uporabljena za povedati, kdo je potekal ta program
da je šlo nekaj narobe.
Tako kot smo se bolj ukvarjajo z več stvarmi semestra,
če ste kdaj morali povedati,
"Joj, veste, kaj je šlo narobe s tem programom"
namesto mojega zrušitev programov, želim obvestiti
runner mojem programu, da gre kaj narobe,
lahko uporabite vrnjeno vrednost,
kot mu pravimo, da ni 0.
>> Torej bomo kritje, ki malo bolj
ko smo prišli v funkcijah.
To je nekako smiselno?
Ok.
Funkcije so nekako čudno -
Mislim, da za ljudi, ki imajo veliko ozadju matematike,
gre malo lažje,
še posebej, če imate malo več abstraktnega matematičnega ozadja
in ste navajeni, da govorimo o funkcijah
in vse, kar vrsta stvari.
Ampak bomo poskušali in jih zajema
in pojdi lepo in počasi, kot so prišli gor.
Prav vsa ta int argc,
char * argv []
za zdaj, lahko tudi, da se kot kotla ploščo.
Smo začeli zajemati tiste malo na predavanju
Ko govorimo o argumentih, ki se prenesejo v programe v ukazni vrstici,
ampak tvoj problem sklopov in vaših programih,
je popolnoma v redu, samo da napišete praznino in naj bo enostavno.
In kaj to pomeni, je nična, da
"Hej, glavno ne bo sprejela nobenih vnosov;
to je samo program, bova šele teči.
Mi ne bomo dati vse dodatne informacije
vsakič, ko smo ga začeli prikazovati. "
Torej za zdaj, lahko to storite;
lahko tudi celo izpustiti povratno 0
Na koncu svojih programov in jih bom teči v redu,
vendar vam priporočam, da se držimo samo noter
V nekaj tednih bomo začeli vrsto
potegnite nazaj pokrov malo in razumeti več o
vsi ti različni malo gibljivih delov.
>> V redu, sedaj pa govori o našem drugo vprašanje tukaj.
Torej, kaj pomeni "črno identifikator" običajno kažejo
Če ga izhodne Jek?
Mislim, da smo lahko videli, da je že danes.
Mi lahko kdo dal ponovno na kaj to pomeni?
Poglejmo, Kelly - eden od Kellys.
>> Torej -
Ja, kaj -
>> Mislim, da če, kot so, ne morejo prijaviti spremenljivk in jo poskusite uporabljati.
Ja, točno, točno.
Torej, če ste že kdaj videli ta proizvodnja
Ko poskusite pripraviti svoj program,
tako kot Kelly je dejal,
to pomeni, da ste uporabili spremenljivko, ki ga ni prijavil,
Torej, če se vrnem na naše vesolje,
in jaz nekaj podobnega
printf (
"Pozdravljeni% s")
in poskušamo izpolniti, da% s
s spremenljivo je, da nisem nikjer prijavljeni
in se trudim, da bi sistem deloval,
boste videli, kaj sem dol na dnu te tukaj:
"Uporaba neprijavljeno identifikator 's'";
da samo pomeni, da ni prijavil svojega spremenljivke.
Enako se zgodi, če
imaš x in poskusite in shranite v njem 7
in nisem izjavi X.
Dobim isto napako:
"Uporaba" x "neprijavljeno identifikator".
>> V redu,
tako da Cezarjeva šifra, ki niso zelo varna,
Jaz bom pustil fantje gledam ta kratek vrste razumeli, zakaj,
in upam, da po tem ta teden problem določiti
kjer ste dejansko napisati šifra Caesar, boste razumeli, malo več
o tem, kaj pomeni biti varna in nezanesljiv -
ali ni varno, se mi zdi - negotovo je nekoliko drugačna.
Druga stvar, ki je nimamo teh drugih postavi tukaj
o funkcijah
in kaj je funkcija,
in smo nekako na kratko govoril o tem, ko smo se pogovarjali o izračunani vrednosti;
za nekoga, ki je bil na predavanje,
lahko povzamem, ki je že na predavanje danes?
V redu.
Poglejmo, kaj je je - lahko nekdo povej nam, kaj je funkcija?
Kelly?
>> >> V bistvu nekaj, kar črpati nekaj, kar je zapisano v knjižnici, ki je
bolj zapletena tam, in potem samo napisati kratek obrazec za to,
tako, kot da ste se obrača na tej knjižnici, pri čemer
vse to dolgo kodo in [neslišno].
Ja, točno tako, in potem hočeš nekaj dodati, da je?
>> Ja, mislim, da o tem, kot podoben koncept formuli matematiki
kjer si napisati formulo, nato pa ga lahko priključite spremenljivk
in to je tisto, kar je funkcija [neslišno].
>> Ja, imamo nekaj odgovorov tukaj
da sta res dobra in desno.
Tam je sklicevanje na oznako, ki je bila napisana nekje v knjižnici
da je bolj zapleteno
in potem lahko zaprosi za to oznako
in dejansko uporabljajo le za pisno kratek obrazec za to -
ali bolje, njegovo ime -
in potem je tudi ta primerjava s formulo iz matematike
in fizike, vse, kar vrsta stvari
če imate formulo
in lahko potem priklopite
spremenljivke v tej enačbi
da potem dobili rezultat formule,
tako da si misliš o njej, kot kot kvadratne enačbe.
Predstavljajte si, da namesto da bi spoznali
kaj Kvadratna enačba je v matematiki,
si imel malo kalkulator program, ki je to naredil za vas.
Je kdo uporabite kalkulator programe matematike pouka v šoli?
Ja, fizika razredi?
Kje lahko samo rečem: "Hej, kvadratne enačbe.
To so spremenljivke, ki jih želim vhod.
Zdaj mi pa povej odgovor. "
To je nekako tisto, kar je funkcija.
To je način, da
vrsta pisati kot majhni predhodnega programa
znotraj našega širšega programa
in jo uporabite znova in znova
tako da se nam ni treba kopirati in prilepiti kodo,
lahko ji različne vhode in dobili različne rezultate,
to je super priročno
če hočeš pisati različne programe v različnih obdobjih.
>> Tako na primer funkcija, ki smo jih uporabljali znova in znova in znova
ves čas je printf.
Printf je sama funkcija
in se izkaže, da je dejansko precej dolgotrajni in zapleteni,
grdo videti, delovati pisati.
Torej, tako enostavno, kot se zdi, da nas
natisniti stvari ven na zaslonu,
ker vsi to storila v začetku današnjega oddelku,
Izkazalo se je, da je dejansko, saj veš,
Dober par sto vrstic kode.
To ni nekaj, kar bi jaz rad, da napišete, za prepričani,
vendar smo dobili, da ga uporabljate vsak dan, to je nekako kul
Tako smo dobili, da ga delite z drugimi,
z različnimi programi,
Tako bomo v potapljaški več funkcij;
zaenkrat, ne bomo -
edina funkcija bomo pisal, je glavni.
Glavna sam je tudi funkcija,
in lahko vidite, da ima svojo moč,
njegovih vhodov, kot smo govorili,
in nato njegovo ime, ki je glavni.
Glavna je nekako - je posebna funkcija tam.
V programu C pa mora biti glavna naloga,
in tako za zdaj, smo nekakšno opustil pisanje
prototip, ali izjava, glavni.
Smo glede na to, da vas,
in smo pravkar je lahko izpolnite v naravi prazne.
>> >> Torej za drugi sklop problemov, mi ni treba
napisati v drugi funkciji?
Jaz ne verjamem.
Verjamem, da je vse tukaj.
Ja, Cezarjeva šifra,
vam ni potrebno, saj ni videti,
in Vigenere, ne veš niti,
tako - in se izkaže, da nikoli ne dejansko morali napisati
Funkcija, kajne?
Pokličete vedno dal vse svoje kode v main,
in mnogi programerji storiti.
Kot smo korak naprej,
začnemo o uvedbi funkcije kot način
počistiti kodo,
da bi bilo bolj elegantno,
V primeru, da imate nalog - nekako tako kot ko smo govorili o zank,
kako se včasih obstajajo stvari, ki jih želite storiti znova in znova in znova,
in imaš nekakšno naivni način -
in kaj smo pogosto imenujemo "slamnatega moža" rešitev,
je samo kopirajte in prilepite znova in znova -
lahko narediš isto stvar s funkcijami, kjer si kopiraj in prilepi
isto kodo znova in znova,
ampak da bloats kodo -
se konča tako kodo res dolgo -
in to tudi dobi malo zmedeno,
in potem to pomeni, da ne boste mogli imeti rad -
če si kdaj želeli uporabiti to kodo znova v drugem programu,
ste tudi zaljubljen kopirate in prilepite še enkrat,
Tako je ena od stvari bomo govoriti o tem,
vrste obliko in stil vaših programov,
in tako, ko je smiselno, da nekako
Paket kaj gor in ga kot posebno funkcijo,
vam priporočamo, da za to,
in to je nekaj, da se ponovno
ni težko in hitro pravilo.
Smo le redko rečemo, da moraš napisati funkcijo imenovano to,
ampak to je več od teh stvari, ki ste ga pravkar razvijajo skozi čas
kot ste napisali več programov.
>> Vse več vprašanj?
Ok, tako da je zdaj
pojdi nazaj do tega tipa tukaj,
tako da sem še vedno v tem delu vprašanja.
Govorila sva o vseh teh različnih tiste,
kaj je funkcija, zakaj pisati funkcij,
ko si lahko samo kopiraj in prilepi?
Upamo, da smo vam prepričan, da je pisanje naloge, je dobra stvar.
Torej, zdaj gremo na tej MySpace programa,
in bomo porabili malo časa za to.
>> Torej, poglejmo,
Lahko sem nekdo prebral to zame?
Pa Mikhaila - boste prebrali to za nas?
>> Misliš nazaj, ko MySpace -
Takrat MySpace je kul.
>> "V času, ko je bil MySpace kul,
je bilo vse bes v vrsto, kot je ta.
Mogoče še vedno je? Nisem ravno prepričan.
V vsakem primeru, z uporabo aparata CS50,
Run CS50, CS50 ali prostori,
napisati program, ki od uporabnika zahteva za sporočilo
in nato izpiše sporočilo s prvo črko z veliko začetnico,
z vsemi ostalimi črkami v izmeničnem primeru,
kot na vzorcu proizvodnje spodaj
pri čemer boldfaced besedilo predstavlja nekega uporabnika prispevek.
Za lažjo predstavo, lahko predpostavimo, da uporabnik
bo le vnos male črke in presledki.
Upoštevati ta problem priložnost, da prakso;
da se ne bo zahtevalo, da predloži ta program. "
>> Super, hvala.
Tako kot je rekel Mikhaila,
bomo napisali program, ki MySpaces kodo.
Torej si vsak od vaju uporabljati MySpace?
Vsak od vas ima MySpace račune?
Oh, ja, ja!
Bilo je precej kul.
[Smeh]
Saj vem.
Sam hoditi.
Torej, kaj poskušamo storiti, je napisati program
ki gre skozi
in prvo črko
in nato vsaka črka potem -
ali vsak drugi črka potem, žal mi je.
>> Torej - in si lahko ogledate v tem primeru,
To je, kako zagnati program,
tako da to je samo rekel: "Zmanjkuje nam program, imenovan a.out.
Vhod, da bomo to daje
se bo pozvani.
Ne bomo ponudbo vložek v ukazni vrstici. "
Če ste bili po vseh predavanjih
in poslušamo o argumentov v ukazni vrstici,
To je vrsta, kjer so - da funky skladnja
V glavni prihaja z int argc, vse te stvari,
tako da tukaj smo, da ne uporabljate, ne bomo se ukvarjajo s katerim koli od tega.
Mi bomo samo dobili to vnesli v uporabnik,
in potem je to druga vrstica s funky kapitalizacijo
je tisto, kar želimo, da je naš program na proizvodnjo.
>> Torej, namesto da z uporabo aparata ali teči, bomo uporabili Spaces,
saj imamo Spaces,
in tudi če bi se vidva
dobite kodo izgledal nekako tako,
tako da bom rešiti ta pregled
samo zato, da imaš ploščo kotla tukaj
da izgleda tako, int main (void), nič v njem.
Pravzaprav, kaj bomo naredili, je, da bomo šele izbrisati vse skupaj.
Želimo nepopisan list,
saj ne bova začela pisati kodo;
ampak bomo poskušali pisati nekaj psevdokod
ki je res samo pomeni, da bomo napisali nekaj, kar ni koda
da je vrsta opisuje, kaj želimo narediti,
Nekako tako kot David storil na prvi dan predavanja,
ali Mislim, da je drugi dan predavanje, ko je naredil celo nogavice demo.
Fantje ne pozabite, da je - videli nogavice?
Jožef je bil tam nekako vnesete v angleščini?
Tako bomo naredili enako.
>> Torej, ko sem začel pisati Psevdokoda
Všeč mi je, da začnete z iskanjem, kaj vložek se bo.
In jaz dam vzorčno zadevo,
Tako kot "hvala za dodati!"
In potem sem tudi napisal, kaj hočem biti proizvodnja,
, ki je v tem primeru kaj takega.
In to nekako mi daje dober, kot, začetno mesto za razmislek o tem,
"V redu, želim, da bi linijo 1
in želim, da jo preoblikovati v vrstici 2 "
in da je vrsta pomaga usmerjati svoje razmišljanje.
To je dober kraj za začetek.
Drug način, da razmišljajo o tem, tako kot nekako gremo naprej
in kot ste to naredili v svojih programih, je
razmišljam o podobni tisti kateri so primeri roba na to?
Katere so vrste čudnih scenarijev?
Kakšne so čudni vložki, da bi mi dobili?
In kaj bi ti dosežki videti?
Na primer, ena čudna vhod
bi bila ta,
ustvarja ničesar,
kot kaj bi morali oddajati v tem primeru?
Nekaj ​​smo želeli, da razmišljajo o tem, preveč.
>> Torej, tako kot vprašanje,
kaj bi radi, da izhod?
Če ne bomo dobili vse surovine na vse, kar bi morala biti naša program prikazovanje?
>> Nič.
Nič? Sliši se odlično.
Zato želimo zagotoviti, da ne bomo ničesar od pisanja
Če ne bomo dobili ničesar noter
Kul. Ok.
Tako
Bom poklical na nekaj ljudi, ko gremo skozi
in samo ugotoviti vrste, kot so, kaj je glavni algoritem
in bomo nekako začeti delati s tem skupaj.
>> Torej, poglejmo. Missy.
Kako mislite, da bomo začeli?
Kaj bi lahko bil dober kraj za začetek tukaj
Če želimo spremeniti, recimo, vrstica 1
uskladi 2?
Ali lahko nekako samo razloži mi, v angleščini, kaj misliš?
Sploh ne skrbi kode.
>> Prva stvar, jaz bi naredil, bi bilo
vrsta neposrednega uporabnika, da jim povem, kaj hočeš.
Ok, tako da, recimo,
"Hej, si. Želim
string "- super.
Torej, kaj je zapisati.
Poziv uporabnika za niz.
Sliši se kot dober začetek.
V redu.
Vprašajva Kelly REN tokrat.
Kaj bi pa rad, da naredim?
Kaj je nekako naša naslednja -?
Zberite >> njihov prispevek in ga shranite v spremenljivko.
Čudovito.
Torej zbirajo niz,
ga shranite v spremenljivko.
Torej, je kaj posebnega želimo tu narediti?
Ali želimo preveriti njihov prispevek
Pred -?
>> Ja.
Kaj bi radi, da preverite?
>> Rekel si, da mi ne bi bilo treba preveriti, če je številka, kajne?
Ker bo domneva, da je to malimi?
Ja.
>> Tako se izkaže, da - ja.
Tako je zagotovljeno, da se vrnete getString nam niz.
To se ne bo vrnil več k nam ali kaj podobnega.
Morda je mestni znakov v tem nizu, čeprav.
In tisti, lahko odmislimo kot smo to storili velike začetnice.
Toda prazen niz, je popolnoma v redu,
tako da če tukaj na liniji 4 in 5,
V redu, če ni vhod,
in smo dal ničesar, kot je naš izhod.
Mi ne bo treba skrbeti, se prepričajte, da je nekaj v nizu
ali niz je vsaj 4 znake;
vse je v redu.
Tako je to v nasprotju na primer s tako kot penijev programe, ki ste jih napisali
kjer ste morali poskrbite, da boste dobili so non-negativne številke;
boste morali prepričati, da so dobili ustrezno število dni v mesecu.
In kako se vi s tem?
Kako bi to naredil test?
Kaj to zahtevajo, da uporabljate?
>> Do-while zank.
Sam pa zank, druge vrste zank, preveč, ja.
Tako se izkaže, da ne bi bilo treba uporabiti zanko v tem primeru,
ko smo pozivanje za niz, ki je nekako lepo.
>> V redu, gremo naprej.
Torej, Stella.
Lahko poveš malo o tem, kaj bi morali storiti?
Torej, zdaj imamo niz, imamo shranjen v spremenljivko;
kaj moramo storiti z vrvico?
>> Moramo -
prepoznavanje 2 -
Ja, samo to povedati v angleščini, to je super.
Ugotovite >> [neslišno] prestolnice - ali velike črke.
Ja, tako, da boš ugotoviti, kateri so tisti z velikimi in malimi črkami.
Ne moremo velike ali male črke jih dokler smo ugotovili, katere so.
Torej bomo dal, da je tukaj.
>> Torej, samo razmišljal o tem procesu,
kako bomo to identifikacijo?
Ali veste, Dan?
Nekako kar smo - kaj bi imeli orodje za uporabo iz naše zbirke orodij?
>> Sem ga dal v nekako kot matriki ali vsako linijo
je svoj lasten polje,
in nato velike črke od tam ali ne.
Ok, tako da eno orodje lahko uporabite, je matrika.
Kaj moramo pogledati v nizu,
čeprav, da ugotovimo, - smo morali gledati znakov.
>> Torej moraš pogledati na dolžino niza?
Ja, zato je del, ki je že na dolžino niza.
Samo iz radovednosti, kaj bomo uporabili, da bi dobili dolžino niza?
>> Strlen?
Ja, strlen, imenujemo to "strlen"
Vsi ti niz funkcij, da je funkcija strlen,
in to je super priročen, saj ga lahko uporabljamo za samo rečem,
Hej, strlen: Tukaj je niz, povej mi, kako dolgo je.
V predavanju danes, David se veliko pogovarjali o tem, kako se izvaja strlen,
kaj se dejansko dogaja v zakulisju.
Ampak to je ena od zelo super priročne narave.
Obstajajo tudi druge možnosti, ki so tudi v niz knjižnici
kot strcmp, ki je utonili "strcmp",
, ki se uporablja za primerjanje nizov med seboj.
Drugi tisti, ki ga boste uporabili kot strstr,
kar je dobro za iskanje sub strune in tako naprej.
Za večino del, so vsi začeli z Str in nato nadaljujte, da je nekaj drugega.
Razlog, da jih dejansko ne napiše kot niz in tako naprej
ker je, kot že v prvih dneh C
ko so bili ljudje 1. pisanje in vse to,
so imeli omejitve glede števila znakov, ki jih lahko uporabite
Za funkcijske imena in imena spremenljivk,
tako da je vse super, kot zgoščeno.
Toda kadarkoli videli nekaj, kar se začne z Str,
, ki običajno pomeni, da ta ima nekaj opraviti z vrvico.
>> Ok, tako da moraš priti na dolžino niza,
in potem, kaj naj naredimo z znaki?
Veš, Sam?
>> Pojma nimam, sem poskušal ugotoviti.
Res ne vem - Želim si na nek način -
Mislim, jaz bi mislim, da bi lahko nekaj storiti s kvotami in izravnava,
ampak ne vem, za katero koli funkcijo, kot je ta.
Ja.
>> Ampak - to ni nujno delo,
ker potem bi dobili prostor za -
da bi moral imeti prostor, da bi dobili nasvete o tem, kako -
Ok.
>> Ne vem - Jaz sem nekakšen izgubil na tej točki.
Ja - ne, ne, ne, to so dobri točk.
Torej, kaj moramo storiti, je, kot so Sam je dejal,
moramo slediti, katere črke so čudne črke,
in tiste, ki so tudi črke.
Vendar želimo zagotoviti, ne bomo samo gledaš
na čudno in celo
Indeksi v nizu,
ampak gledamo na lihe in celo pisma v nizu,
zato moramo nekako imajo to razlikovanje med
Črke - kot tisto, kar je dejansko A, B, C, D, ali pa tako naprej,
in kaj stvari, ki niso črke, vendar še vedno v našem nizu.
Na primer tukaj, kot je ta klicaj ni pismo,
vendar je še vedno del našega niza, je še vedno znak.
Prav tako so vsi ti prostori -
da nima smisla, da se izkoristijo prostor, kajne?
Zato želimo prepričati, da smo nekako preskočili tistih
medtem ko še vedno sledenje kvote in izravnava.
>> Tako nekako v naši orodjarni programskega
do sedaj, če hočeš,
imamo veliko različnih orodij, ki smo govorili o tem.
Nekdo, na primer, so spremenljivke,
kot smo se pogovarjali o tem.
Drugo orodje smo govorili, so funkcije.
Zato smo se pogovarjali o spremenljivkah v naši psevdokod tukaj
kot kaj bomo uporabili za shranjevanje naš niz.
Govorila sva o funkcijah, da bi dobili dolžino niza, kot strlen.
Govorili smo o nečem drugem, mi pa smo se pogovarjali o tem
Za veliko prej v oddelku danes: zanke.
>> Kaj vi menite o tem z zanko v tem programu?
Jared, kaj misliš?
Bi jih uporabljamo v zanki v tem programu?
>> Verjetno ne, ne, saj vam ni treba iti skozi to več kot enkrat.
V redu, vam ni treba iti skozi kaj več kot enkrat?
>> Celoten niz.
Točno, tako da vam ni treba iti skozi celoten niz enkrat.
Žal mi je, da je popolnoma brez smisla!
Ni vam treba iti skozi celoten niz več kot enkrat.
Ok.
Kaj menite?
>> Mislim, da je bolje, da jih uporabljajo
tako da lahko naredimo tako izkoristili, medtem ko
lokacija ji je [neslišno] število.
Super, in tako unovčiti kaj?
Ok, tako da smo pravi, da
moramo uporabiti zanko, ker želimo
veliko črko, medtem ko to ni več.
Torej - Oprostite, ali želite dodati?
>> Hotel sem reči, da je način, kako zdraviti niz
in [neslišno] ločijo [neslišno] na znake?
Ja.
>> In potem bomo lahko dodelitvi številk -
ali na podlagi lokacije črk v nizu?
Ja.
>> in ugotoviti, ali je to nenavadno ali celo, in izkoristiti pismo sam
medtem ko je lokacija pisma je [neslišno] - Žal mi je.
Čudovito.
>> Torej samo Rekapitulacija.
Lahko me spomni svojega imena enkrat - Žal mi je.
>> Charlotte.
Charlotte, v redu.
Torej, kaj Charlotte pravi,
kar je popolnoma prav - bog, to rad avto alinea name -
je, da če pogledamo niz
, kot je ta na vrhu -
"Hvala za dodati" -
kot zaporedje znakov
če je v položaju 0,
h je na 1. mestu.
Je na 2, potem imamo 3, 4, 5;
prostor je na položaju 6.
Ker je - kaj je položaj f?
7!
O? 8.
R? 9.
In potem imamo 10, in potem res ne morem napisati brez njega
nekako dobili grdo na zaslonu.
Ampak to je v bistvu, kako lahko govorimo o godala v spominu.
Je niz
je zaporedje znakov,
in ko smo se nanašajo na posamezen znak v nizu,
pogosto storite tako, da se nanaša na položaj te lika
v nizu,
Verjetno na enak način, da govorimo o september
pri čemer je 9. mesec v letu
ali ponedeljek je bil prvi dan v tednu.
Torej, to nam zagotavlja pot do
ugotoviti, kateri so tisti liho celo v primerjavi s
ker si lahko ogledate tukaj,
če jo ujemajo s tem T,
lahko vidite, da so vsi tisti, kapitalizirano
so na parnih položajih,
vsaj za prvo besedo,
in potem se stvari vrgli ko smo zadeli ta prostor,
ker se ne šteje toliko prostora kot pismo,
Tako je, kot da smo začeli
in odšel 0, 1, 2, 3, 4, 5,
prostor, 6, 7, 8, prostor,
9, nato pa 10, 11, 12 in tako naprej.
>> Cool, zato bomo zagotovo želeli uporabiti neke vrste zanke
iti čez vsako znakov v vrsti.
Torej, na tej točki,
bomo prišli nazaj v našo staro psevdokod tukaj.
Kot del tega identifikacijo katere
so velike in male črke, katere so,
bomo želeli, da to storijo v nekakšnem krogu.
Loop, debelo črevo.
Kakšno zanke, iz vrst zanke, ki jih imamo,
Zdi se, da je dobra za uporabo v tem primeru?
>> Razmišljala sem za zanko.
In zakaj misliš, za zanko?
>> Ker se začne na nič, nato pa
ko pridemo na dolžino niza,
in nato vsaka ponovitev lahko [neslišno], preveč?
Ja, točno tako.
Torej, od različnih izbir zank,
imamo za zanke, medtem ko zanke in do-while zank.
Če zanka je še posebej koristno
je, ko ste želeli vedeti
vrste, kje si v zanki,
kolikokrat je bila zanka izvaja do sedaj.
Kar je točno tisto, kar bi radi vedeli, v tem primeru,
Kelly, kot je dejal,
temelji off prejšnji komentar Charlotte, da bi radi vedeli, položaj
lika v nizu,
in bo v zanko, da nam le, da so
ker če začnemo nekako se ozremo na našo nizu
Če začnemo pri zanko na 0,
in gremo po vsej dolžini celotnega niza,
potem bomo lahko povezali s črko T
z 0 v našem za zanke,
črka H z 1 v naša zanka, in tako naprej,
bo vso pot do konca niza.
>> Torej začnimo kodiranje to le malo
samo zato, da vi dobite občutek za to, kaj to izgleda.
Grem rešiti to,
tako da smo dobili naše psevdo kodo tukaj,
in bom izbrisati vse.
Torej imam prazno skrilavcev.
Bom začel s pisanjem int main (void)
{
Bom dal povratno 0 v
in potem}.
Torej ponavadi, ko sem začela s programom, to je tisto, kar sem začel s.
Bom ga shranite tako, da vi ga imate.
Torej, ena od prvih stvari, ki jih je govoril
dobili prispevek od uporabnika
in ga shranite v nizu.
Kako bomo prišli prispevek od uporabnika?
>> GetString.
GetString, v redu.
Torej, če sem tip GetString ()
in podpičje.
Poskusimo to deluje, bo to run, najprej?
In zakaj ne bo to delovalo?
>> Morate deklarirati spremenljivke.
Moram prijaviti spremenljivko. Ok.
>> Torej, kako naj to naredim?
Vas moti pisanje nekaj, da ga delite?
In potem bomo lahko ga potegnite navzgor.
Poglejmo, Dan, prav, v redu.
Ali Daniel. Kopiranje da, vnos niza = GetString ().
Neverjetno.
Bo to delovalo?
Poskusimo.
Hit vožnjo, nalaganje izvorne kode, gradnjo, je prišlo do napake.
Ok.
Torej, kaj se dogaja tukaj?
Uporaba "niz" neprijavljeno identifikator.
>> Moramo vključiti knjižnice?
Ja, tako je rekel Dan moramo vključiti knjižnice.
Je to tisto, kar si hotel povedati, Stella? Neverjetno.
To je super, da Stella, lahko
prepišite kodo iz prostora Danielov?
Če kliknete na Roland Daniel Ki, ga kopirati,
in potem boš dal include črto, nato pa ga shranite ven?
Povej mi, ko boš pripravljen.
Torej, to sintakso vključujejo tudi vrste funky;
tam je všeč ta hash tag,
in tam je tudi, in potem so ti kotni nosilci.
Se spomnite, kako to deluje, ali pa naj ga dajo na to kodo tukaj?
>> Jaz sem dobro.
Ok.
>> Jaz ga natisnejo - Nisem bil prepričan, katera knjižnica, čeprav.
Oh, v redu - ja, to je to CS50 knjižnica.
>> Oh, sem dal izravnalnik stdio knjižnico.
>> Oh, razumem - ja, ne, that -
Tako se izkaže, da je dejansko niz nekaj, kar je nekaj posebnega, da CS50.
Obstaja dejansko ni res, tip niza
ker je prav tu, niz je v vrsti položaju -
smo razglasitvi spremenljivko z imenom vnos niza tipa -
in smo dajanje v notranjosti vložka
vrednost, ki jo dobi vrnil k nam: proizvodnja tega GetString klic funkcije.
Lahko povem, da je to funkcija klic, saj je dobil oklepaje, tako kot printf ne,
tako kot strlen ne.
Toda niz pravzaprav ni pravi tip
v jeziku C.
Smo se prebili v vrsto, mi pa bomo o tem še kaj je v resnici
v C, saj je način dela s strunami;
pravkar smo storili nekaj, da bi bilo videti malo lepše.
>> Torej, gremo.
Tukaj je koda za Stella.
To je dobil # include .
Drugi ljudje bodo to imenujemo kot hash so včasih ali ostre so.
Zdaj ga bomo lahko začeli, prost dostop,
in smo še vedno dobili napako.
Poglejmo, kaj se dogaja.
"Neizkoriščena spremenljivka" vložek "."
Ok, tako da je v redu, je že v redu.
Mislim, da to ni res kul,
zato, ker smo dobili napako in to ne deluje,
ampak kaj je to rekel je, da
nismo uporabljali naše spremenljivke, ki ima smisel.
Nismo poskušali storiti ničesar s tem.
To je način, da
Zvoka se trudi, da bi nam pomagali zagotoviti, da bomo ne samo z uporabo spremenljivk
in nato nehote kliče jim nekaj drugega kasneje v našo kodo,
nam pomagali, da bi se izognili napakam način.
>> V redu, tako da imamo vnosa od uporabnika,
ga shrani v spremenljivko.
Naslednji korak je bil takrat
začnete iskati na vse znake v nizu
in identifikacijo katere so se velike črke
in tiste, ki so se z malimi črkami.
In kot Kelly in Charlotte odraščali,
bomo to z uporabo za zanko.
Torej, ali kdo spomni sintakso za zanke
in bi rad izkoristil stab na samo pisanje
prva linija zanka, samo za malo?
Kelly, bi rad, da ga poskusite?
>> Ja, tako da boste morali inicializirati prvič,
zato sem dal i = 0,
in potem sem i <strlen ().
Ali je v vašem prostoru - lahko ga potegnite navzgor?
>> Ja, sem zajebal malo, ampak ja.
>> V redu, ga potegnite navzgor.
Neverjetno.
>> Potem pa nisem vedel, če bi imeli to -
Ja, v redu.
Torej, tukaj je, kaj Kelly dobil: poglejmo to hitro.
Torej, ona je vključeval cs50 knjižnico na vrhu.
Ona je vključen v standardno IO knjižnico na vrhu,
in standard IO ima funkcije, kot so printf,
tako da, če si kdaj želeli uporabljati printf, morate to vrstico.
In potem je vključen niz knjižnico,
ki jo bomo potrebovali,
ker niz knjižnica strlen funkcijo,
, ki ga bomo v zelo malo.
Torej, če pogledamo, kaj je naredil Kelly tukaj
nam lahko sprehodite skozi kaj si naredil?
>> Ja, torej - mislim, imam napake, tako da -
Ja, ne, it's -
>> Torej sem hotel poklicati niz, da sem dobil samo "niz".
Želel sem, da natisnete niz
in potem sem -
Želel sem želel nastaviti kot niz kot niz posameznih značaja
različno [neslišno], kajne?
In potem sem želel, da začnete v položaju 0
in nato vsaki 2 prostore,
Hotel sem izkoristiti,
tako da sem ga pravkar opisal kot 23, ker sem bil videti v ASCII tabeli.
Tako da je tisto, kar sem mislil - Vem, da to ni prav.
>> Razumem, da je to dober začetek.
Mislim, da je veliko tega okvira je v mestu tukaj.
Pojdimo po vrsti po vrsticah in videli, kaj se dogaja.
Torej tako, kot sem želel narediti je to šele začetek z zbiranjem kodo
in pustite, da prevajalnik mi všeč, kaj je narobe z mojo kodo,
ker je prevajalnik je res dobro povedal, kaj je narobe s tvojo kodo.
Torej, če jo imajo, gradnjo, in ne graditi.
Pravi, da je bila napaka,
tako da, če se pomaknite navzdol in pogled na prvo napako,
je dejal -
se pomaknete nazaj na vrh,
lahko vidimo, da so napake, ki nastanejo 5 dol na dnu.
Ups, je res, da je prekinil.
Mislim, da se le ne bo obrnilo na bolje.
>> Pa gremo.
Torej je 5 skupaj ustvarijo napake.
Tukaj lahko vidim le prvi 2,
da bom lahko premikate gor to malo, nato pa nekako navzgor.
To je ukaz, ki je bila zagnana za prevajanje kode,
in potem prva napaka je bila v file.c tukaj:
"Naj opredeli, ali '('", in da je na tej liniji
če smo rekli niz = GetString ().
Si lahko ogledate tukaj, da je bil na liniji 8 file.c,
in potem verjamem, da je to znak 12 - to je napaka.
Torej, kaj je šlo narobe na liniji 8 - Kelly?
>> Potrebuješ samo, da ga pokličete, kot, pisma ali kaj podobnega,
kot niz s ali kaj?
Ja, tako se je izkazalo, da ta posebna vrsta imen,
Tako niz, int, char, kratke,
oni so vse posebne ključne besede,
in ne moreš jih dejansko uporabljajo kot imena vaših spremenljivk,
ker prevajalnik pogleda in reče, da je,
"Vem, da je to vrsta"
tako da ne more dejansko imajo niz spremenljivko, imenovano niz
kot sem poskušal narediti tukaj, to ne bo delovalo.
Toda namesto da bi lahko rekli, da je nekaj takega kot s ali ST ali Str.
Prav tako ne bi rekli int.
Ne moremo imeti niz imenovano int.
Ne moremo imeti niz se imenuje znak, noben od teh bo delovala.
>> Torej bova rekli je za nekaj časa.
Neverjetno.
Torej, kaj zdaj se dogaja v tej vrstici?
String - ta vrstica izgleda precej dobro?
Dajmo mu še poskusil, pa si jo vodijo.
Ok, tako da smo še vedno zaslužiti napake.
Tokrat smo na 4 napake.
Tako smo dobili od njih.
Gremo gor.
"Nepričakovana vrsta ime" niz ": pričakovani izraz," ja?
>> Ja, to je zato, ker sem se potrudil, da ime niz.
Ja, izgleda, da imamo sedaj tudi iti popravek
Vse te sklicevanja na vrvico.
Vidite lahko, da je sklicevanje na vrvico tu, tu, tu,
tako da lahko gremo vse to, da je.
Čudovito. Dobro, da ga ponovno zaženete.
Zgradba - drugo prišlo do napake.
>> Ok, zdaj smo na eno napako,
Tako int i = i in nato oglati oklepaj.
Torej lahko poveš malo o tem, kaj je tu kaj, Kelly?
>> Da.
Bilo je na liniji 10.
>> Ne vem, če je potrebno vse,
ampak mislim, da sem poskušal -
Bom ga shranite, tako da lahko sledite skupaj.
>> Mislim, da je bila
poskušam povedati, da začnete v položaju 0
Na začetku mojega za zanke,
tako da mislim, da je rekel, da je nepotrebno.
Torej, samo da povzamem,
ste rekli, da je to - ste poskušali začeti to v položaju 0
in dobil to - ja,
zato mislim, da prej tudi, ko sta hodila skozi kodo,
ste govorili o tem, kako si je želel zdraviti niz kot niz
tako da bomo lahko dostopate vsak znak posebej.
Mislim, da daN, navedenih nizov, tudi poskuša spremeniti nizov v matrikah.
>> Izkazalo se je, da se vrste pod pokrovom,
Niz se dejansko shrani v matriko že
in lahko dostopate do njega kot niz;
ni pretvorbe, ki jih morate storiti.
Niz Ali ni - tako -
Niz ni res matrika,
vendar pa lahko dostopate kot take, saj so shranjene vse znake
1 zraven drugega v spominu,
tako da, če želite, da se prvi znak v nizu,
to je isto kot že prvo celo število v celo število matrike.
Zato smo se - Bomo
nanašajo na 2, kot
oh, kot niz, kot matrika,
čeprav je res - they're zelo različne stvari,
lahko pa z njimi ravnajo zelo podobno.
Tako se izkaže, da je ta postavka dejansko -
nam ni treba storiti vse za pretvorbo,
in v resnici,
To pravzaprav ni veljaven izraz,
, ki je tisto, kar naša prevajalnik nam govori.
To je rekel: "Hej, pričakuje se izraz,
in kaj sem tukaj imam nekaj, kar ni izraz. "
Za prijavo niz,
vse, kar morate storiti je, da se kaj takega s podpičjem,
in potem poveš niz kako dolgo želite, da je,
kot 5, tako da je ta proga 10
bo razglasila niz imenovano i s 5 števil v njej.
>> To je razveljavilo, to ni potrebno za kodo,
vendar pa je to - to je nekako tisto, kar izjava izgleda.
>> Kako, da ne bi uporabil char i [strlen (s)]?
Char i [strlen (s)]?
>> Char i, in nato znotraj oklepajev, strlen (e).
Ja, lahko mi -
Lahko bi to naredili,
in bi to izjavo - kaj bi to storil?
>> Mislim, da bi razglasila niz
o, kot je - od -
oh, ne boste potrebovali i - oh,
ja, vam zagotovo ne potrebujete i.
Če ugotovi niz znakov
proporcev dolžine.
In kaj Sam pravi, da je
Ta postavka 10 - dovolite mi, da nekaj prostora v med njim in ostalim, da bomo lahko izloči -
Ta linija 10 bo razglasila niz
od znakov, strlen (i) v vrednosti od njih,
vendar pa dejansko ne potrebujemo i,
in zato smo morali na i pa zato, ker moramo dati array ime;
v nasprotnem primeru ne bi imeli način, da se sklicujem na polju pozneje v kodo.
>> Torej, ta tukaj je matrika ime
in notri je dolžina.
To nam bo dalo niz,
ampak to je - spet, to je izjava.
To ni naloga, da to ni inicializacija.
Če bomo razglasi, da ta niz, kot je ta,
tam je pravzaprav nič v vsebini polje.
To je samo za v smeti - kar je notri.
In kot rečeno,
smo dejansko sploh ne potrebujete narediti to spremembo,
saj lahko že obravnavajo niz je kot matriko.
Vem, da ste tekmovanje v teku malo dlje od časa,
ampak rad bi samo zelo hitro prišli do tega, za zanko
in vam pokaže, kako lahko dostopate do posameznih znakov v polju,
ker je to ključnega pomena za našo nalogo.
In potem vas bomo od tam.
>> Torej, tukaj imamo za zanko
da izgleda skoraj dobro.
Kaj ni čisto skoraj tam?
Tisto, kako - kaj ni prav, pa ta zanka?
Ni >> zavite oklepaje?
Brez zavitih oklepajih, za eno leto.
Bi se prepričajte, da imamo telo zanke zavitih oklepajih.
Ups, ni kvadrat naramnicami!
In kaj je naslednja stvar, ki jo moramo storiti s to zanko?
Če sem poskusil zagnati,
kaj to napako, da sem dobil?
Sem dobil vse te napake - Moram i inicializirati.
Čudovito.
Torej bo to zanko - to ni čisto tam,
ampak to je že zelo blizu.
Ta oznaka se lahko zdaj,
graditi, napaka še vedno pojavlja.
Zakaj se še vedno pritožuje,
pravi izraz ne uporablja,
in da je zato, ker ta postavka ne naredi ničesar.
Nismo ga shranite kjerkoli, nismo shrani rezultat.
Če bi morali varčevanje tega rezultata?
>> Ov ali jaz?
Točno tako, in to funky sintaksa,
to je z oglatimi oklepaji
pomeni dostop do i-tega značaja je.
To bo nekaj, kar je zelo pomembno za nalogo.
Žal bomo morali tu ustaviti,
tako da lahko Sebastian oddelek pridejo,
ampak sem vesel, da ostanejo zunaj, in po tem, ko bo na vsa vprašanja.
Torej, hvala vam fantje prišli.
To naj bi zdaj prenesti, gradnjo, zagon.
Mi lahko vnesete niz, kot je "zdravo"
in tiska "QOX".
[Smeh]
>> Torej ni čisto tam, ampak se gibljejo, dobili do teh zank!
Hvala za obisk in bom zunaj.