[Powered by Google Translate] [♪ ♪ bzučanie]
Takže Vám predstaviť, čo mám na obrazovke;
je to jeden z nástrojov, sme vyvinuli v lete;
je to tzv CS50 priestory,
a je to náš spoločný kódovanie aplikácie
že budeme používať v sekciách.
Je to celkom v pohode.
Už niekto z vás videl CS50 bežať ešte?
Dovoľte mi, aby som vytiahnuť, že až v inej karte.
Run.cs50.net
Tak
ak idete do run.cs50.net,
môžete vidieť, je vo vašom prehliadači ceste k
vlastne kód - písať kód v jazyku C,
a spustite ho,
tak to ako zostavuje ho, spustí ho, potom sa vráti výstup na vás,
takže to je trochu cool spôsob, ako experimentovať
s niektorými z kódu, ktorý David prejde na prednáškach
a my dať na vás na problémové súbory
bez toho aby ste museli oheň spotrebič.
>> Takže to, čo robí Priestory, ktoré sa líšia od
keď som prejsť späť k tejto karte,
Priestory je CS50 run, ako vidíte tu,
ale ak budeme prechádzať znova a pozrieť sa na druhej strane okna,
uvidíte právo som jediný človek v tomto priestore,
ale to, čo budem robiť, je požiadať vy, aby sa pripojili k tomuto priestoru so mnou
a my všetci sa kódu v rovnakom malom okne,
zdieľať kód navzájom,
a hovoriť o rozdieloch medzi naším kódom.
Takže je to niečo ako cool vec -
tak sa pripojiť, ak by ste navštíviť tento odkaz priamo tu na vrchole
že som zdôraznil,
stačí zadať apps.cs50.net/spaces/vqcspSnO.
>> Dobre, takže rozjazd,
Ja ti dám trochu o turné tohto.
Urobíme nejaké hlúpe malé kódovanie s ním na prvé,
len preto, že každý trochu dostane pocit, čo to je,
ale to, čo som urobil -
alebo čo sa chystám urobiť, tu je -
Chystám sa vziať kód, ktorý som napísal tu,
ktorý ako vidíte teraz je prázdna;
to nie je nič.
Je to len kotlový plech kód, zavoláme ho.
S málo úloh komentár.
Idem ju uložiť a stlačiť toto tlačidlo Uložiť.
A čo to robí, je to
zdôraznila to tu stručne - že revízia zachrániť zelené polia,
a teraz, ak hľadáte pre mňa v priestore,
kliknete moje meno,
môžete vidieť, že som dostal túto revíziu tu,
a ak kliknete na tejto revízii,
to bude nahrať tento kód do vášho priestoru, taky.
>> Takže sa všetci načítaný tento kód do svojich priestorov?
Dobre, ak ste tak ešte neurobili, choďte do toho a robiť to,
a potom to, čo chcem, vy robiť v tejto málo-do sekcie
je napísať trochu pomocou printf o sebe,
tak napríklad, by som písať
printf ("Volám sa Nate");
a potom som si napísať
"Absolvoval som v roku 2009
zo Stanforde "
a ja by som rád počul o
čo rok ste v škole,
či už ste na vysokej škole alebo obchodné školy
alebo iná škola Harvard,
čo ste študoval, ak je známe, doteraz;
ak to nie je známe, že je to úplne v pohode.
Ja som sa rozhodnúť, kým som bol neskoro v mojom druhom ročníku.
a potom by som tiež rád vedel
niečo blázon chcete mi povedať, alebo
niečo o triedu alebo len niečo iné.
Až budete hotoví písomne ​​oznámi, že s vašou malou printf,
ak ušetríte revíziu alebo skôr
najprv sa uistite, že môžete spustiť
a že vytlačí presne to, čo chcete, vytlačiť,
a potom, ak budete pokračovať a okrem toho, že revízia
pomocou revízie tlačidlo Uložiť, to prvý malý chlapec tu,
a budeme trochu prejsť a urobiť trochu úvod takhle.
Takže by ste mali len musíte trafiť tlačidlo Play,
ktorá je tu v ľavom hornom rohu,
tak to Play tlačidlo v ľavom hornom rohu bude
odoslať kód off na náš server, kde dostane skompilovaný a potom spustite.
Takže to, čo je tak trochu blázon je to
tento kód v skutočnosti nie je spustená v počítači;
je to skutočne odoslaná cez Internet.
>> Ako to ide, Charlotte?
>> I - v poriadku. Ja - ja myslím, že som
že ťažkosti uloženie
na serveri, napríklad, že môže byť - môžem spustiť program.
A potom, keď sa snažím spustiť, to hovorí, že je to chyba.
Deklarovaný ako vírus, ktorý nie je tam už.
Oh, pozrime sa, môžete stlačením Save znova?
Vidím to na obrazovke.
Právo >>, jo, tak to je to, čo mám.
A ja neviem, prečo to nie je dovoľte mi, aby som ho spustiť.
Oh, dobre, prepáč.
Môžete mi vysvetliť, prečo - to, čo sa deje - čo nefunguje s ním?
>> Jo, pretože som nevidel, že tam bol posledný riadok, kde je stále ešte premenná
že som sa prehlásil, ktoré som nemal v úmysle na to, že tam.
Jo, perfektné!
>> Teraz, keď som ho uložiť, myslím, že by to malo fungovať.
Teraz, keď ste uložili, funguje to, úžasné.
>> Tak jo, ako sme prejsť -
tak čo sa deje,
Idem len zopakovať to pre kameru.
Čo sa deje sa, že táto premenná je
zostal v po - Predpokladám, že ste zmazali nejaké ďalšie veci
kde ste vyhlásil, as,
a tak to bolo hádzanie veci preč a bol nenechať ho spustiť.
Tak to je presne to, čo chceme robiť v sekcii
ich ľudia skúsiť písať rôzne kusy kódu,
zostavovaní to, čo funguje, čo nie,
a potom trochu hovoriť o týchto veciach, pretože sa jedná o vypínacia body, ktoré
Aj stále stretávajú,
Aj napriek tomu - mám veľa hlúpych vecí po celú dobu,
a ja neviem, prečo to nefunguje,
takže sa poďme vytiahnuť Charlottina revízii 3,
a budeme ho spustiť.
>> Takže keď som bežať, teraz, že mám jej kód sem,
Aj môžete priblížiť, stlačte tlačidlo Run,
nahranie to, stavia ju, spustí ho,
hovorí, že bežal úspešne, a keď som sa posunúť nadol,
pozri Charlotte je junior na Adams House,
psychológie, sekundárne v ekonomike; úžasné.
Rád vás spoznávam!
Awesome.
Dobre, pohybujúce sa na, poďme k Danielovi,
prejsť na revíziu 3,
zostaviť, spustiť;
Prečo nepovieš nám niečo o sebe, Daniel?
>> Hovorte mi Dan.
Idem na obchodnú školu cez od vás,
a ja som bol v Marines pred tu,
a to je všetko pre mňa nové, tak jo.
Nevadí, ja som 30 a ja neviem, žiadne z týchto vecí.
Úžasné, vďaka, Dan!
Dobre, máme ďalšie Daniel.
Môžete ísť Daniel - budete predstaviť sami seba, Daniel?
>> >> Jasne, som Daniel.
Som v druháku na Mather teraz.
Ja som sa sústrediť na vládu,
ale chcel som, aby sa CS50, pretože som počul skvelé recenzie o triede
a ja som to nikdy neskúšala SK predtým.
Prejdite dole a ukážte tento - v pohode.
Pohybujúce sa na, Jared.
Ako to ide?
Dobrý >>, ako sa máš?
Ako môžete vidieť, že som junior filozofia koncentrátorom Eliot,
pôvodne z južnej Kalifornie,
a ja som záujem o CS50, pretože mám rád logiku toho,
a zdá sa, naozaj super robiť veci na počítači, tak.
Úžasné, kde v južnej Kalifornii ste?
>> Asi hodinu od [nepočuteľné], malé mesto [nepočuteľné].
Oh, áno, môj otec je z Redlands.
Vychytávky na stiahnutie.
>> Dobre, Jimmy, ako to ide, Jimmy?
Dobrý >>, ako sa máš?
Vedie veľmi dobre!
Povedzte nám niečo o sebe.
>> Som nováčik, a ja si nie som úplne istý, čo som odbor
ale ja som trochu sklony k ekonómii.
Rovnako ako Daniel predo mnou, ja som nikdy nerobil žiadnu SK, ale znie to celkom v pohode.
Som pôvodom z Chicaga.
Awesome. Tak pozrite sa na jeho výtlačok tu.
Chcel som sa opýtať, to urobil tlač tak, ako ste očakávali?
>> Nie, ja zabudol vytlačiť nový riadok.
Vlastne som zabudol, že keď som písal moja vec
prvýkrát, tiež.
Je to trochu bolesti nezabudnite dať tie ručne.
Bolo by pekné, keby to jednoducho viem, že je to to, čo si chcel.
>> Dobre, Kelly.
Wow, máme 2 Kellys, 2 Daniels, 2 Kellys.
Takže Kelly - chodíš Kelly Ren?
Dobre, úžasné.
Alebo Kelly, myslím.
>> Tak jo, tak som Kelly.
Som v druháku na PfoHo.
Som dostal e-mail, že dnes som ešte 7 týždňov vyhlásiť moju koncentráciu,
takže sa snažím sa na to nemyslieť na to,
a ja som rád pečenie, beh, a Craisins.
Nemám skúsenosti s väčšinou SK;
Som sa naučil sám vytvárať webové stránky, keď som bol naozaj mladý,
ale myslím, že asi sa naučil sám v poriadku mnohokrát.
Dúfam, že budem učiť trochu viac
a - jo.
>> Úžasné, dobre, ďakujem.
Poďme na druhú Kelly;
Nemám nič - si hovoril niečo tu?
>> [Nepočuteľné]
Tu to je!
Sweet!
>> Dobre, tak som Kelly.
Som prvý rok postgraduálne študent.
Som odbor Mind, mozog a školstva.
Absolvoval som v Franklin & Marshall College v roku 2008
s veľkých v psychológii a sociológii
a menšie vo francúzštine.
Beriem CS50
pretože som záujem o získanie titulu PhD v Neuroscience
a mám pocit, že to pomôže mi pochopiť technológie, ktoré sa používajú.
Awesome.
Pohybujúce sa na, Mikaela.
Je to správna výslovnosť?
Dobre, úžasné.
>> >> Som Mikhail.
Som v druháku na Kirkland House,
a ja sústredenie v strojárstve.
Moc sa mi páči na bicykli, postavený na bicykli tento rok v lete.
Beriem SK, vlastne,
ako koncentrácia požiadavku,
ale viete, ja si myslím, že je to ešte v pohode trochu inžinierskych triedy.
Awesome - si postavil motorku na toto leto?
Jo >>.
Wow, ako rám a to všetko?
>> Uh-hunh (kladné).
Wow, to je naozaj cool.
>> [Nepočuteľné off-camera chat]
[Smiech]
Jo, je to tak dlho.
Človek nikdy nevie, že jo?
No, v pohode, aj vďaka, Mikhail.
>> Dobre, Missy.
>> Volám sa Missy, som nováčik,
tak to znamená, že nič neviem!
Chcem sa sústrediť v astrofyzike.
V CS50,
Mám pocit, že určite pomôže s tým.
Zvláštne skutočnosti o mne je, že som národne certifikovaný hasič.
Wow!
Ako sa to stalo?
>> Som sa zúčastnil akadémiu
a prešiel peklom pre mnoho týždňov
a mám certifikáciu.
Wow, gratulácie!
To nie je maličkosť, pre istotu.
Dobre, takže teraz budeme robiť ma.
Som ďalší v rade.
Ja - spustite ho.
>> Takže moje meno je Nate.
Bol som trieda 2009 v Stanforde.
Bol som Symbolické systémy hlavné,
ktorý je podobný Mind, Brain, Behavior koncentrácia tu,
ale je to trochu z kombinácie
počítačovej vedy, lingvistiky, psychológie a filozofie.
Druh - jo, veľa podivné veci, ale bolo to skvelé,
a potom som môj pán je v informatike tam, rovnako.
Takže som nový Harvarde v tomto roku.
Naozaj som sa chcel dostať do výučby.
Strávil som posledné 4 roky na Stanforde TA-cich vedeckých tried počítačovej
a tak David dovoľte mi, aby som prišiel na,
a budem sa pomoc s CS50,
tak som to tento plný úväzok, nie som v škole grad.
Bolo to zábavné.
Dúfajme, že to bude aj naďalej bude legrace, som si istý, že bude.
>> Dobre, Same.
>> Volám sa Sam, som v druháku na vysokej škole, v práve špecificky.
Mojím hlavným bude histórie vedy, pravdepodobne, a VES sekundárne,
a moja obľúbená farba je žltá.
Netreba súdiť alebo tak niečo, ale je to dobrá farba!
A Stella.
>> Ahoj, ja som Stella, som v prvaku na Grays.
Nemám potuchy, čo som sústredený v ešte,
takže CS50 bolo tak nejako náhodne,
čo je zaujímavé.
Fun fakt, Jimmy bol prvý Harvard môj priateľ,
pretože sme obaja z Chicaga.
Cool, a Grace - že to má byť naozaj pekné, nie?
Myslel som, že >> [nepočuteľné].
Oh, yeah.
[Nepočuteľné / off-camera chat]
Dobre, ja som stále učí, stále učí.
>> Takže máme niečo iné, čo je celkom zaujímavé tu.
Jo, ja som len premýšľal, máte predstavu, čo sa deje tu?
Viete, ako interpretovať to?
>> Mal som byť kladený bodkočiarku po každom jednom riadku.
To je trochu bolesti.
Niekedy tie bodkočiarky môže byť skutočnou bolesť vystopovať.
Tak to dopadá, že
špeciálny program, ktorý používame v tomto roku
skompilovať našu kód v C sa nazýva zvonenie,
a dôvod, prečo sme začali používať rinčať tento rok -
pretože sme nepoužíva tento program v minulosti;
sme použili iný s názvom GCC, ktorý je veľmi populárny -
Rinčanie vlastne dáva vám chybové správy, ktoré dávajú zmysel.
To sa povie "očakáva", "po prejave",
a to dokonca vám povie výraz, po ktorej ste potreboval bodkočiarku.
Takže ste upevnenie?
>> Jo, práve teraz.
Úžasné, dajte mi vedieť a my vytiahnite ju hore, a budeme ho spustiť.
Ale jo, uvedenie týchto bodkočiarky v je druh bolesti.
>> Som opravil, takže si myslím, že by mal fungovať.
Awesome - revízia 3.
To vyzerá ako to.
Dobre, takže teraz, keď sme ho spustiť,
tam to ide.
Vychytávky na stiahnutie.
>> Dobrá.
Takže vďaka za tým, že.
Je skvelé, že vás spoznávam ľudí.
Čo budeme robiť teraz trávi ďalšie trochu
trochu potápanie do sekcie problémov
, Ktoré pochádzajú z problému stanovené z tohto týždňa
a budeme to robiť pre väčšinu sekcií
pre zvyšok obdobia,
a potom si necháme na posledný 15, 20 minút alebo tak
hovoriť o probléme stanovila
a potom len tak nejaké ďalšie otázky môžete mať všeobecne o triede.
To znamená, že to, čo naozaj chcete robiť
je už všetci zúčastňujú
pomocou Spaces veci,
hádzanie v kóde, hádzať návrhy,
a hovorí o tom, kedy veci, ako je táto prestávka
alebo nefungujú, len preto, že to sú veci, ktoré sa
Ja viem, že som narazil na
keď som začal kódovanie,
a bolo naozaj docela frustrujúce v čase
pretože ak je to ako 2 pm pred váš problém sada je spôsobené,
tak - len pre zverejnenie,
Nechcel som začať programovať, kým som bol v druháku na vysokej škole.
Bolo to celkom tejto podivné, neznáme veci
že som počul, bolo celkom v pohode
a tiež som počul, že by mohla byť skutočnou bolesť v zadku
ak ste zabudli bodkočiarka a to je len chyba udržať váš program pracovať
a udržať si od spaním,
tak určite,
Ak máte otázky, ako to,
Ak máte obavy, ako to, dajte mi vedieť,
pretože chcem, aby sa to dobrá skúsenosť pre vás.
>> Takže ste vy všetky načítané problém nastaviť ešte?
Trochu viem, kde to je? Dobre.
Tak pôjdeme na cs50.net, pretože nemám ho na tomto účte,
vytiahnuť problémové sady,
vytiahnuť problému set 2, a my sa pozrieme na štandardnej verzii dnes.
Dáme do špecifikácia tu.
Prejdite nadol.
Takže budeme začať hľadať v tejto sekcii otázok.
Už ste sledoval tieto šortky ešte?
Dobre.
Takže tam sú šortky na slučkách,
ktoré sa vykonáva Tommy, jeden z chlapíkov hlavy výučby.
Je tu ešte jedna o rozsahu,
Verím, že urobil ďalšie výučby kolega menom David
a potom jeden na Caesar Cipher tiež urobil David.
Sú celkom v pohode.
Už ste sa pozeral ich šortky tak ďaleko?
How've boli?
Užitočné? Ok, dobre vedieť.
Ak nie sú, môžete to tak povedať.
Ale skôr, ako tak urobíte,
Prečítal ste sa pozrel na tieto otázky
vôbec?
>> Poďme si o tom pohovoriť trochu.
Takže sme zaviedli v priebehu posledných pár týždňov
v prednáške
množstvo rôznych slučiek.
Je tu pre sláčiky,
cyklus while, a potom do-while,
a v prednáške, sme hovorili veľa o
ako tieto slučky sú
dosť podobné v mnohých ohľadoch,
a môžete urobiť veľa rovnakých vecí s while
že môžete s slučky for.
Stačí sa len trochu používať správne kombinácie premenných a podobne.
a tak vlastne
skutočný rozdiel medzi všetkými slučiek je to, že
niekedy sú viac užitočné
je používať naraz, ako v inej dobe.
>> Tak napríklad,
while líši od do-while.
Má každý pocit, že majú dobrú kľučku, keď
do-while je
užitočná, alebo aký je rozdiel?
>> Myslím, že rozdiel je do-while
beží - Neviem presne, čo je terminológia
ale rad funkcií v rámci slučky.
Tým sa automaticky - to robí svoje behy najmenej
pred tým, než skontroluje stav, alebo while sa spustí len, keď
to nepretržite beží - či už je alebo nie je podmienka sú splnené.
Jo, to má zmysel?
>> Poďme sa pozrieť na trochu kódu.
Takže len zopakovať otázku,
alebo odpoveď, skôr;
odpoveď bola, že
kým slučka bude kontrolovať, či podmienka
ktoré určíte je splnená
pred spustením telo slučky prvýkrát,
vzhľadom k tomu, do-while sa automaticky spustí telo slučky,
je to, čo hovoríme, že - je to divné terminológie,
ale keď som niekedy niečo, že nemá zmysel, dajte mi vedieť -
Telo cyklu je, že veci, ktoré ste vložili do medzi zložených zátvoriek.
A v do-while,
že telo si spustiť aspoň raz,
a potom stav dostane skontrolovať pred spustením každej následnej čas.
>> Takže vlastne, Sam,
nevadí vám písať jednoduché, zatiaľ čo slučka
v priestoroch?
>> Ako sa vám nejako ako
vytvoriť nový ...?
Len som zmazať, čo tam máš.
Jo, len zrušte to.
>> No, myslím, že som s to -
ktoré z nich chceš, a zároveň, alebo chceš ...?
Jo, len to je síce pravda, vytlačiť niečo.
A uvidíme.
Alexander, som si uvedomila, že nikdy predstavil vás.
>> Oh, to je v poriadku.
Páči sa vám - môžete kód vytvoriť do-while pre nás?
>> Jo, skúsim to.
Dobre, budeme len vytiahnuť to na obrazovke,
takže tak nejako mať rukoväť na to, čo sú rozdiely.
>> Tak tu je to, čo Sam urobil.
Má celé číslo s názvom i
že je inicializovaný do 17 rokov.
Potom hovorí, zatiaľ čo (int i = 17)
printf ("Volám sa Sam.");
Takže čo sa stane, keď sme sa spustiť tento kód?
Tam je chyba, čo chyba hovorí?
Poďme vytiahnite ju hore a hovoriť o tom.
Došlo k chybe, hovorí.
Poďme posunúť dole.
Tak to nám dal túto chybu, a povedal,
"Hej, som očakával výraz."
To je trochu záhadné.
Jo, tak presne - a opäť,
tam bude ďalší malý bug, že budeme chytať pár sekúnd.
Ale to je ďalší z tých trochu divné terminológie vecí,
takže tento int i = 17
nie je výraz.
Čo to vyzerá, že to robí, je, že je to
prehlasuje celé číslo volal aj
a nastavenia na rovný 17
alebo skôr, uvedenie 17 do tej int nazýva i
A to nemá zmysel
v súvislosti s týmto, zatiaľ čo slučky.
Dáva to zmysel, ako uvidíme,
v rámci slučky for, pretože pre slučky vyhlásenie sa začať
s tým pre int i rovná niečo
a pokračuje.
>> Takže si -
opraviť niečo, v poriadku.
Tu to ide; úžasné.
Takže teraz to vyzerá trochu inak.
Pár vecí sa zmenilo.
Môžete nám povedať, čo sa veci zmenili?
>> Vytiahol som int, takže to nie je vyhlásenie [nepočuteľné] namiesto priradenia.
Ten znamienko rovná sa, dal som 2 rovnítok, čo znamená, rovná.
Awesome.
Jo, takže to, čo Sam sa ho vytiahol int
že je tu skôr,
takže keď som sa na to - to je to, čo bolo predtým, to povedal int,
ktorá bola vyhlásením - a tak sme siahli, aký druh.
Tam je int, char, string, krátkeho,
tí sú nazývaní typy.
Takže ste sa, aký druh
a potom skôr,
on mal práve jeden znamienko rovnosti
a to, čo povedal, bolo problematické o tom bola
keď máte 1 znamienko rovnosti,
to je operátor priradenia.
To nie je testovanie, či je alebo nie je 2 veci sú si rovné.
To je vlastne nastavenie niečo rovnajúcu sa niečo.
Dávame číslo 17 do premennej i.
Takže k tomu, že druh porovnanie,
budete musieť použiť dvojnásobok rovná,
ktorý je tak trochu divný veci
ale je celkom častá chyba.
Takže jedna vec, ktorú som si poukázať, ak vám to nevadí,
je to, že v
naša funkcia tu v int main,
uvidíte, že telo nášho funkcie
je posun z ľavej strany
od 4 medzerami alebo tabulátorom.
Dôvod, prečo sme to
je len pre čitateľnosť.
Ako môžete vidieť v cykle while Sam tu,
nemal zarážky vôbec,
a že nemá vplyv na funkčnosť kódu.
To bude prebiehať presne rovnaký.
>> Tak napríklad, keď sa prísť na vrchol tu
a stlačte tlačidlo Play naše, bude to postaviť,
to bude spustite ho,
a čo sa stane?
Prečo to ešte povedať beží?
Vzhľadom k tomu, >> to bude neustále opakujú hi.
Presne, a prečo to neustále opakujú hi?
Vzhľadom k tomu, >> celočíselné nikdy nemení, takže je vždy 17.
Jo, presne tak,
uvidíme, po - mi pripomínajú vaše meno znovu?
Jimmy. Takže Jimmy povedal, že
Dôvod, prečo stále opakuje hi znovu a znovu
preto, že táto podmienka je vždy splnená.
Nikdy sme zmeniť hodnotu i
My sa nikdy nezmení obsah toho, čo je uložené v tejto premennej.
Takže v tomto bode sme dostali túto chybu, že
váš program vytvorený príliš veľa výstup,
a ak budeme posúvať dole a trochu pohľad na to, čo sa tu deje,
môžete vidieť, že je to hi, hi, hi, hi, hi, hi, hi celú cestu cez.
Awesome.
>> Takže druh späť do pôvodného bodu
ktoré majú odsadenie tu
v tele slučky while neovplyvnilo nič.
Program ešte bežala v pohode.
Typicky pre dobrú štýlu -
a to je niečo, čo hľadať vo vašich problémových sad -
žiadame Vás, aby ste zarážky tým 4 priestory, ktoré môžete urobiť
jednoduchým stlačením tabulátora
alebo ručne uvedenie do 4 priestorov sami.
Cool, jo tak sa poďme vrátiť a pozrieť sa na
Alexander je do-while.
Len trochu >> trochu problémy.
Dobre, dobre poďme pracovať cez to.
Je to v pohode?
Jo >>.
>> Dobre, tak ideme na to.
To je kód, ktorý Alexander napísal.
Myslíte si, ísť Alex - v poriadku.
Tak tu je kód, ktorý Alex napísal.
Takže, máme naše vyhlásenie o hlavnú tu,
a potom sme dostali tento celočíselné premenné nazýva aj
bola vyhlásená tu.
Máme urobiť vyhlásenie
a potom telo znova s ​​týmito zátvorkami,
takže to je telo z do-while -
dovoľte mi, aby som sa zamerať na to tak, že je to čitateľnejšie -
a v tele, snažíme sa tlačiť "je to telo",
i + +,
tak zvýšiť obsah aj, a to
kým som sa dostane na 3,
a potom náš program končí.
>> Takže čo sa stane, keď sme sa spustiť tento program?
>> Čakal som, že identifikátor.
Dobre, tak nech postavia, spustiť, dôjde k chybe.
Čo sa stane?
Sme prejdite sem,
dostaneme túto trochu tajomnú hľadáte vec,
Očakáva bodkočiarka po top level vyhlásení.
To je trochu divný.
Má niekto predstavu o tom, čo by sa mohlo diať?
Trochu divný, jo.
>> [Nepočuteľné] vyhlásená mimo zátvorky?
Takže to, že neuplatňuje potom, keď budete používať zátvorky?
Takže on deklaroval toho chlapa von z ktorých zátvorky?
Oh, títo chlapci - sú zložené zátvorky?
Jo >>.
Jo, presne tak.
Tak to dopadá, že
nemôžete skutočne deklarovať premennú tu takto.
Čo ste možno sa snaží urobiť, bolo -
znížiť ju odtiaľ -
môžete buď dať do zložených zátvoriek tu
alebo inú alternatívu
je, aby to úplne mimo.
A tak títo - v závislosti na tom, kde ste vlastne dal vyhlásenie
tejto celočíselné premenné,
môžete dostať 2 veľmi odlišné druhy premenných;
keď je to mimo hlavnej,
to je to, čo nazývame globálne premenná.
Je to mimo rámec niektorého z funkcií -
to nie je v rámci funkcie -
vzhľadom k tomu, či sme ju vo vnútri hlavnej,
ako tu, a potom sa to volá lokálne premenná,
pretože je to miestne pôsobnosti hlavného.
A budeme hovoriť trochu viac o tom, čo sú rozdiely
medzi 2 typy a prečo použiť rôzne druhy premenných,
ale teraz,
môžete len držať všetky premenné lokálne,
pretože nemáme žiadnu potrebu globálnych premenných.
>> Dobre, tak to je jedna vec, tu.
Skúsme to znovu beží, uvidíme, čo sa stane.
Spustiť, dostanete ďalšie chyba.
Zväčšiť trochu, čo dostaneme?
My stáhni očakávané zátvorku po do / while.
Nejaké nápady, čo sa deje? Dan?
Je >> zároveň potom zátvorka a potom -
Ja neviem, či je nutné, aby redeclare int,
ale robiť, keď (i <3).
Presne tak, jo.
Tak to dopadá, že Dan je presne to pravé.
Nepotrebujeme, aby tento typ tu zase.
Môžeme namiesto toho zabiť typ
a len to.
Dobrá.
Budem priblížiť späť, skúste to ešte raz.
Pozrite sa na to, že beží úspešný.
Ak by sme sa posunúť nadol, "toto je telo" vytlačiť 3 krát.
To je docela milé.
Výborne, výborne, chlapci.
Výborne.
Ako sa to deje tak ďaleko?
Slušná tempo?
Dobre, v pohode.
>> Tak, ako sme trochu späť k pôvodnej otázke,
sme - a teraz vidíme ak rozdiel,
uvidíte, že v tomto do-while,
podmienka je posledný.
Tak ako počítač číta program
od C programy sú vykonávané trochu v tomto poradí,
kde sa doslova začať s prvou líniu main,
a potom spustiť linku 6, riadok 7, riadok 8, riadok 9,
riadok 10, riadok 11,
všetky tieto veci na vrchole tu
bude vykonávať raz
predtým, než sme vôbec testovať túto podmienku vidieť
tiež aj - alebo obsahu i, skôr -
sú menšie, ako je číslo 3.
A iba v prípade, keď sa dostaneme na riadok 12,
obsah i-je menší ako 3
My vlastne skok späť do riadku 7
a potom opakujte postup,
a potom sme otestovať stav znovu a znovu a znovu.
>> Takže môžeme kontrastovať tento
s - zoom späť,
prejdite nadol na verziu Sam,
budeme pozerať na to, mierne sa zmenili tak, že už to nie je nekonečná slučka -
kde keby sme priblížite,
vidíme, že tento program spustí,
to bude najskôr deklarovať int i,
nastaviť obsah aj byť na 0,
a potom udrie stav slučky while prvý,
takže v tomto prípade, toto telo, tento printf ("hi") a i + +
sa ani vykonávať
ak aj je v skutočnosti nižšia ako alebo rovná 2.
Takže ak aj je 3, napríklad,
ak nastavíme toto právo tu
rovná 4 - alebo budem robiť 3, pretože som povedal, 3 -
a spustite ho,
to bude stavať, bude to bežať úplne v pohode,
ale to nebude v skutočnosti vytlačiť niečo,
pretože sa nepodarilo, že test v prvom prípade.
Takže v triede, sme trochu hovorili o tom, prečo sú tieto do-while
sú užitočné niekedy
a prečo by sme používať to, na rozdiel od cyklu while.
>> Existujú - to vy chlapci majú nejaké návrhy
, Prečo do-while môže byť užitočné?
>> No, myslím, že do-while slučky je, ak chcete vstup od užívateľa,
pretože tak môžete nechať im
dať niečo raz, ak je to správne,
môžeme presunúť na zvyšku programu,
ale ak to nie je správne, potom budete mať na vyzvanie užívateľa
Kým nevložíte správny vstup.
Jo, presne tak - presne,
tak do-while je užitočné
pretože keď dopytovania pre vstup užívateľa
pretože musíte získať vstup užívateľa, ako budete môcť skutočne skontrolovať.
Takže v PSet 1, v PSet 2,
kam výzvy pre vstup užívateľa veľa,
že je šikovný vec na použitie
ako protiľahlý k len jednoduché slučke while.
Ak používate while, môžete urobiť to isté -
môžete urobiť to isté s while
ako vy s do-while.
Stačí sa len trochu túto duplicitné proces
kde máte vstup a potom začnite while.
Vzhľadom k tomu, do-while, stačí napísať raz
a to je oveľa čistejšie.
>> Dobrá.
Nejaké otázky?
Zmysel?
>> Return 0 - to je len trochu stánku alebo je -?
Jo, takže môžeme -
dobre, budeme pokrývať to trochu viac neskôr
ale ukazuje sa, že
to return 0, že dáme
Na konci hlavného celú dobu -
môžete trochu proste to brať ako niečo, čo robíme
v súčasnej dobe.
To, čo sme začali hovoriť s funkciami
druh na konci minulého týždňa a potom znova tento týždeň
je to, že funkcia
berie vstupy, ktoré sú tieto veci v zátvorkách;
Jedná sa o 2 vstupy, naše argumenty alebo parametre,
to, čo tiež volal na našu hlavnou funkciou,
a potom sa funkcia produkuje výstup
ktoré nazývame návratovú hodnotu.
A návratová hodnota v prípade hlavné je to int,
Celé číslo,
a ako spoznáte funkciu, "Hele, to je to, čo váš výstup
bude, "je s týmto slovom" návratu ",
že kľúčové slovo, skôr
a tak hlavné návrate 0
alebo hlavné výstup 0
je štandard v programoch C
pretože návrate 0 z hlavných prostriedkov, ktoré
"Hej, všetko popravený s mojím programom v pohode."
Ak by sme mali dať niečo iné ako 0,
ako 1, napríklad,
, Ktorý je použitý povedať kto bežal tento program
že sa niečo pokazilo.
Tak ako sme sa viac zapojiť s materiálom nad semestra,
ak ste niekedy museli povedať,
"Jejda, viete, niečo sa pokazilo s týmto programom,"
skôr než s mojou chybu programu, chcem oznámiť
bežec môjho programu, že sa niečo pokazilo,
môžete použiť návratovú hodnotu,
ako mu hovoríme, že to nie je 0.
>> Takže sa budeme pokrývať, že trochu viac
akonáhle sa dostaneme do funkcie.
Takéto dáva zmysel?
Dobre.
Funkcie sú trochu bizarné -
Myslím, že pre ľudí, ktorí majú veľa matematiky pozadí,
príde trochu ľahšie,
najmä ak máte trochu viac abstraktné matematický pozadia
a ste zvyknutí hovoriť o funkciách
a všetky tieto veci.
Ale budeme sa snažiť a ich krytia
a ísť pekne pomaly ako oni prídu.
Podobne, celá táto int argc,
char * ArGV [],
práve teraz, môžete si tiež vziať to ako kotlový plech.
Sme začali na pokrytie tie trochu v prednáške
keď hovoríme o argumenty, ktoré sa dostanú prešli do programov na príkazovom riadku,
ale vo vašich problémových súborov a zoznam programov,
je to úplne v poriadku len písať neplatné a držať to jednoduchý.
A čo to void znamená, že
"Hej, hlavné je nebude prijímať žiadne vstupy;
to je len program, budeme len spustiť.
Nebudeme ho žiadne ďalšie informácie
zakaždým, keď sme ho spustite beh. "
Takže teraz, môžete to urobiť;
môžete tiež dokonca vynechať spiatočnej 0
na konci svojich programov a oni si beží v pohode,
ale ja odporúčam len držať, aby dovnútra
Za pár týždňov, začneme na druhu
povytiahnite kryt A trochu a pochopiť viac o
všetky tie rôzne malé pohyblivé časti.
>> Dobre, teraz hovorme o našu druhú otázku tu.
Takže to, čo sa "načierno identifikátor" zvyčajne označujú
ak výstup by Clang?
Myslím, že sme mohli vidieť, že už dnes.
Môže mi niekto dať rekapituláciu toho, čo to znamená?
Poďme sa pozrieť, Kelly - jeden z Kellys.
>> Tak -
Jo, to, čo robí -
>> Myslím, že keď, ako, že nie sú deklarovať premenné a pokúsite sa použiť.
Jo, presne tak, presne tak.
Takže ak ste niekedy videli tento výstup
Pri pokuse a skompilovať svoj program,
rovnako ako Kelly povedal,
to znamená, že ste použili premenné, ktorú nevzniesli,
takže keď som sa vrátiť do nášho priestoru,
a ja niečo ako
printf (
"Ahoj% s")
a pokúsiť sa naplniť tým, že% s
s premennou y, že som vyhlásil, nikde
a snažím sa ho spustiť,
uvidíte, čo sa dostanem dole v tomto dole tu:
"Použitie načierno Identifikátor 's'";
že jednoducho znamená, že nepriznal svoj premennú.
Rovnaká vec sa stane, keď
Máte x a pokúsiť sa uložiť 7 v ňom
a ja som nepriznal X.
To sa mi rovnakú chybu:
"Použitie nedeklarovaný identifikátor" x "".
>> Dobre,
takže Caesar Cipher, nie je moc bezpečné,
Nechám vy zhliadnuť krátke, druh pochopiť, prečo,
a dúfajme, že potom, čo robil tento týždeň problém nastaviť
kam vlastne napísať šifry Caesar, budete rozumieť, trochu viac
o tom, čo to znamená byť bezpečné a neistý -
alebo nie je bezpečná, myslím, že - neistý je mierne odlišná.
Ďalšia vec, ktorú bolo, že sme sa týmto ďalších otázok tu
o funkciách
a čo je funkcia,
a to sa nám hovorili o tom krátko, keď sme hovorili o návratovej hodnoty;
pre niekoho, kto bol na prednáške,
Môžete zhrnúť, kto bol na prednášku dnes?
Dobrá.
Poďme sa pozrieť, poďme sa - môže mi niekto povedať nám, čo funkcia?
Kelly?
>> V podstate >> niečo, čo čerpať na niečo, čo je napísané v knižnici, ktorá je
zložitejšie tam, a potom stačí napísať krátky formulár toho,
tak ako máte na mysli späť do tej knižnice, pomocou
všetko tak dlho kód a [nepočuteľné].
Jo, presne tak, a potom chceš niečo dodať k tomu?
>> Jo, myslím, že o tom, ako podobný pojmu vzorca v matematike
kde stačí napísať vzorec a potom môžete pripojiť premenné v
a to je to, čo je funkcia [nepočuteľné].
>> Jo, takže máme pár odpovedí tu
že sú obaja naozaj dobrá a priamo na.
Tam sa odkazuje na kód, ktorý bol napísaný v knižnici niekde
že je zložitejšie
a potom môžete čerpať týmto kódom
a vlastne používať ju len písať krátky tvar nej -
alebo skôr, jeho názov -
a potom je tu aj toto porovnanie na základe vzorca v matematike
alebo fyziky, všetky tieto veci
kde máte vzorec,
a potom môžete pripojiť
premenné uvedené vzorce
sa potom dostanete výsledok vzorca,
takže si myslíte, že o tom ako ako kvadratickej rovnice.
Predstavte si, že skôr než aby sa dozvedeli o
čo kvadratická rovnica je matematický triedy,
stačí si trochu kalkulačky program, ktorý to urobil za vás.
Bolo niekto používať kalkulačky programy v matematike tried na strednej škole?
Jo, fyzika triedy?
Kde si môžete len povedať, "Hej, kvadratickú rovnicu.
Jedná sa o premenné, ktoré chcem na vstup.
Teraz mi daj odpoveď. "
To je niečo, čo je funkcia.
Je to spôsob, ako pre nás
druh zápisu ako malý malý podprogramu
v rámci našej väčšej programu
a používať znovu a znovu
takže nemáme skopírovať a vložiť kód,
môžeme dať rôzne vstupy a získať rôzne výstupy,
je to super padnúci do ruky
keď sa snažíte písať rôzne programy v rôznych časoch.
>> Tak napríklad, funkcie, ktoré sme používali znovu a znovu a znovu
v celom kurzu je printf.
Printf je sám funkcie
a ukazuje sa, že je to vlastne celkom dlhá a zložitá,
nasty hľadáte, Funkcia pre zápis.
Takže tak jednoduché, ako sa zdá, že nám
vytlačiť veci na obrazovku,
pretože sme všetci len robili, že na začiatku sekcie dnes,
ukazuje sa, že je to vlastne, vieš,
dobrý pár stoviek riadkov kódu.
Nie je to niečo, čo by som nikdy nechcel písať, pre istotu,
ale dostaneme ju používať každý deň, to je celkom fajn,
tak sme si o neho podeliť s ostatnými,
s rôznymi programami,
takže budeme potápanie viac do funkcie;
v súčasnej dobe, nie sme -
iba funkcie budeme ich písanie je hlavné.
Hlavné sám je tiež funkcia,
a môžete vidieť, že to má svoj výstup,
jeho vstupy, ako sme sa rozprávali o tom,
a potom sa jeho názov, ktorý je hlavné.
Hlavné je druh - je špeciálna funkcia tam.
Vo vašom programe C, tam musí byť hlavné funkcie,
a tak pre túto chvíľu, máme Druh vynechal písanie
prototyp, alebo vyhlásenie o, hlavné.
Dali sme, že na vás,
a práve sme sa vyplniť vo forme vecného plnenia polotovarov.
>> >> Takže pre druhý problém sady, nepotrebujeme, aby
napísať, že v druhej funkcii?
Nemyslím, že áno.
Verím, že to všetko tu.
Jo, tak Caesar Cipher,
nemusíte sa, že to nevyzerá ako,
a Vigenere, vy tiež nie,
tak - a ukázalo sa, nemáte vôbec niekedy písať
funkcie, nie?
Zavoláte vždy dať všetky svoje kódu v main,
a mnoho programátorov urobiť.
Ako sme ďalej,
začneme sa zavádzajú funkcie ako spôsob
vyčistiť svoj kód,
aby to viac elegantné,
V prípade, že máte úlohy - niečo ako, keď sme hovorili o slučkách,
ako sa niekedy tam sú veci, ktoré chcete robiť znova a znova a znova,
a máte druh v naivným spôsobom -
alebo to, čo sme sa často nazývajú "strašiaka" riešenie,
ich stačí skopírovať a vložiť znova a znova -
môžete urobiť to isté s funkciami, kde stačí skopírovať a vložiť
rovnaký kód znovu a znovu,
ale že bloats kódu -
to skončí robiť kód naozaj dlho -
a to tiež dostane trochu mätúce,
a potom to znamená, že nie sú schopné ako -
ak ste niekedy chceli použiť tento kód znovu v inom programe,
vy ste tiež prilepené skopírovať a vložiť znova,
takže jedna z vecí, budeme hovoriť o
druh dizajnu a štýlu vašich programov,
a tak keď to dáva zmysel druh
Balíček niečo a položil ju ako samostatná funkcia,
odporúčame vám to urobiť,
a to je niečo, čo opäť
tam žiadna tvrdá a rýchla pravidlá.
Len zriedka povedať, že musíte napísať funkciu nazvanú to,
ale je to skôr jeden z tých vecí, ktoré jednoducho vyvíjať v priebehu času
ako písať viac a viac programov.
>> Nejaké ďalšie otázky?
Dobre, tak poďme sa teraz
Vráťte sa späť do toho chlapa tu,
tak som ešte v tejto časti otázok.
Hovorili sme o všetkých týchto rôznych tie,
Čo je funkcia, prečo písať funkcie,
keď si môžete skopírovať a vložiť?
Dúfajme, že sme presvedčení, že vás písanie funkcií je dobrá vec.
Tak teraz poďme sa presunúť na tomto MySpace programu,
a strávime trochu času robiť to.
>> Takže, poďme sa pozrieť,
môžem si niekto čítal to pre mňa?
Poďme sa Mikhail - budete čítať to pre nás?
>> Myslíš späť, keď MySpace -
Späť, keď MySpace bol v pohode.
>> "Vtedy, keď MySpace bol v pohode,
to bolo v móde, aby typ, ako je tento.
Možno to ešte je? Nie som si úplne istý.
V každom prípade, použitie CS50 Appliance,
CS50 Run, alebo CS50 priestory,
napísať program, ktorý vyzve užívateľa k správy
a potom vypíše správu s jeho prvé veľké písmeno,
so všetkými ostatnými písmenami striedavým prípade,
ako na ukážkovom výstupe nižšie,
kde tučne text predstavuje nejaké vstup užívateľa.
Pre jednoduchosť sa dá predpokladať, že užívateľ
bude zadávať iba veľké písmená a medzery.
Zvážte tento problém príležitosť k praxi;
nebudete vyzvaní na predloženie tohto programu. "
>> Úžasné, ďakujem.
Tak ako Mikhail povedal,
budeme písať program, ktorý MySpaces kódu.
Takže sa každý z vás používať MySpace?
Každý z vás má MySpace účty?
Oh, yeah, yeah!
Bolo to celkom v pohode.
[Smiech]
Ja viem.
Datovania sám.
Takže to, čo sa snažíme urobiť, je napísať program,
, Ktorá prechádza
a využíva sa prvé písmeno
a potom každý list potom -
alebo každý druhý list potom, ospravedlňujem sa.
>> Takže - a môžete vidieť na tomto príklade,
To je, ako sme sa spustiť program,
a tak je to len hovorí, "sme beží program s názvom a.out.
Vstup, ktorý budeme dávať ju
sa bude výzva.
Nebudeme poskytovať vstup na príkazovom riadku. "
Ak ste boli po všetkých prednášok
a rokovania o argumenty príkazového riadku,
to je niečo, kde ty - že funky syntax
na hlavnej prichádza s int argc, všetky tie veci,
tak sme práve nepoužívate, že, my nezaoberáme nič z toho.
Sme len tak si to napísané v užívateľom,
a potom druhá linka s funky kapitalizácie
je to, čo chceme náš program výstup.
>> Takže skôr než používať spotrebič alebo spustiť, budeme používať medzery,
pretože máme medzery,
a tak ak vy by
si, aby váš kód vyzerať nejako takto,
takže budem zachrániť túto revíziu
len tak máte kotla dosku tu
, Ktorý vyzerá takto, int main (void), nič v ňom.
Vlastne, čo budeme robiť, je, že sme si len odstrániť všetko dohromady.
Chceme prázdne bridlice,
pretože my nie sme to začať písať kód;
skôr budeme snažiť písať nejaké pseudokódu
čo naozaj len znamená, že budeme písať niečo, čo nie je kód
že druh popisuje, čo chceme robiť,
trochu ako David urobil na prvý deň prednášky,
alebo Myslím, že je druhý deň prednášky, keď on robil celý ponožky demo.
Vy si uvedomiť, že - vidieť ponožky?
Josef bol tam trochu písanie v angličtine?
Takže budeme robiť to isté.
>> Takže keď som sa začať písať pseudokódu,
Páči sa mi začať tým, že pri pohľade na to, čo je vstup bude.
A ja dávam ukážkový prípad,
tak ako "vďaka za add!"
A potom som aj písať, čo chcem výstup byť,
čo v tomto prípade je niečo ako toto.
A tento druh je pre mňa dobré, rovnako ako, východzie miesto na premýšľanie o tom,
"Dobre, chcem, aby sa riadok 1
a chcem transformovať ju do riadku 2, "
a tento druh pomáha riadiť svoje myslenie.
To je dobré miesto pre štart.
Ďalší spôsob, ako premýšľať o tom, taky, ako sme kind ďalej
a ako ste to vo vlastných programoch, je
premýšľať o tom, druhu ako to, čo je od okraja prípady, na to?
Aké sú druhy podivných scenárov?
Aké sú divné vstupy, ktoré by sme mohli dostať?
A čo by sa tieto výstupy vyzerať?
Napríklad jeden divný vstup
by byť jedno,
vytváranie vôbec nič,
ako čo by sme mali vystupovať v takom prípade?
Niečo, čo chceme myslieť taky.
>> Takže rovnako ako otázka,
čo by sme mohli chcieť výstup?
Ak sa nám nepodarí získať akýkoľvek vstup vôbec, čo by náš program výstupu?
Nič >>.
Nič? To znie skvele.
Takže chceme, aby sa ubezpečil, že nie sme písať nič z
ak sa nechcete dostať nič dovnútra
Cool. Dobre.
Tak
Idem zavolať na pár ľudí, ako sme sa prejsť
a len prísť na to, niečo ako to, čo všeobecný algoritmus je
a budeme trochu začať pracovať cez to spolu.
>> Takže, poďme sa pozrieť. Missy.
Ako si myslíte, že by sme začať?
Čo by bolo dobré miesto pre štart tu
ak chceme transformovať, povedzme, riadok 1
do riadku 2?
Môže tak nejako len vysvetliť mi, v angličtine, čo si myslíte?
Ani starosti kódu.
>> Prvá vec by som urobil, by bolo
druh priameho užívateľa im povedať, čo chcete.
Dobre, tak povedzme,
"Ahoj, používateľ. Chcem
string "- úžasné.
Takže poďme napísať túto nadol.
Vyzve užívateľa na zadanie reťazca.
To znie ako dobrý začiatok.
Dobrá.
Opýtajme sa Kelly Ren tento čas.
Čo by sme potom chceli robiť ďalej?
Čo je to druh náš ďalší -?
Zbierajte >> ich vstup a uložiť ju ako premennú.
Great.
Takže zbierať reťazec,
uložiť do premennej.
Takže je tam niečo zvláštne chceme robiť?
Chceme, aby sme zistili, či ich vstup
pred -?
Jo >>.
Čo by sme mohli chcieť skontrolovať?
>> Hovoril ste, že nemáme skontrolovať, či je to číslo, nie?
Vzhľadom k tomu, že predpokladám, že je to malá?
Jo.
>> Tak to dopadá, že - jo.
Takže getString je zaručené, že vrátiť nám reťazec.
Nebude to vrátiť číslo nám alebo niečo podobné.
Tam by mohlo byť číslice znakov v rámci tohto reťazca, hoci.
A tí, môžeme ignorovať ako sme to urobili veľkých písmen.
Ale prázdny reťazec je úplne v pohode,
tak u priamo tu na riadku 4 a 5,
Dobre, kde nie je žiadny vstup,
a dali sme nič ako náš výstup.
Nemáme sa starať o to, či je tu niečo, čo v reťazci
alebo, že reťazec je aspoň 4 znaky;
všetko je v poriadku.
Tak to je porovnaný napríklad s ako haliere programov, ktoré napísal
kde ste mali uistiť, že sa stále non-záporné čísla;
ste mali uistiť, že ste sa dostať správny počet dní v mesiaci.
A ako robíte, že?
Ako by ste to urobil ten test?
Čo to vyžadujú používať?
Do >>-while.
Do-while, iné druhy slučiek, taky, jo.
Tak to dopadá nemáme používať slučku v tomto prípade,
keď sme dotazovanie pre reťazec, ktorý je celkom pekné.
>> Dobre, ideme ďalej.
Takže, Stella.
Môžete nám povedať niečo o tom, čo by sme mali robiť ďalej?
Takže teraz máme reťazec, máme uložený v premennej;
Čo je teda potrebné robiť s reťazcami?
>> Musíme -
identifikovať 2 -
Jo, len povedať to v angličtine, to je úžasné.
>> Identifikovať [nepočuteľné] metropoly - alebo, veľká.
Jo, takže by ste určiť, ktoré z nich sú veľké a malé písmená.
Nemôžeme veľké alebo malé písmená, kým sme identifikovali, ktoré z nich.
Takže dáme, že sem.
>> Takže, len premýšľať o tomto procese,
ako to urobíme túto identifikáciu?
Viete, Dan?
Druh, čo sme - aký nástroj by sme museli použiť z nášho nástrojov?
>> Dal by som to do akosi ako pole alebo každý riadok
je jeho vlastný malý box,
a potom veľká od tam, alebo nie.
Dobre, tak jeden nástroj, ktorý môžete použiť, je pole.
Čo musíme sa pozrieť na v reťazci,
však zistiť - museli sme sa pozrieť na znaky.
>> Tak musíš sa pozrieť na dĺžku reťazca?
Jo, tak časť, ktorá sa dostáva dĺžku reťazca.
Len tak zo zvedavosti, čo máme použiť na získanie dĺžku reťazca?
>> Strlen?
Jo, strlen, hovoríme tomu "strlen"
Všetky tieto reťazce funkcií, takže strlen je funkcia,
a je to super padnúci do ruky, pretože môžeme použiť len povedať,
Hey, strlen: Tu je reťazec, povedz mi, ako dlho to je.
V prednáške dnes, David hovoril veľa o tom, ako je implementovaná strlen,
čo sa vlastne deje v zákulisí.
Ale to je jeden z veľmi Superpohodlná ty.
Existujú aj iné tie, ktoré sú tiež v reťazci knižnice,
ako strcmp, ktorý je hláskovanie "strcmp",
, Ktorý sa používa pre porovnanie reťazcov na seba.
Ďalšie z nich budete používať ako strstr,
ktorá je vhodná pre nájdenie sub reťazca, a tak ďalej.
Pre najviac sa rozdeliť, všetci začnú s str a potom ísť na niečo iné.
Dôvod, prečo sa v skutočnosti hláskovať je ako reťazec, a tak ďalej
Je tomu tak preto späť v ako začiatkoch C,
keď ľudia boli prvé písacie a to všetko,
mali o obmedzenie počtu znakov, ktoré môžete použiť
pre názvy funkcií a názvy premenných,
takže všetko je ako super kondenzovaných.
Ale kedykoľvek uvidíte niečo, čo začína str,
ktoré obvykle znamená, to má niečo do činenia s reťazcom.
>> Dobre, takže musíš dostať dĺžku reťazca,
a potom, čo budeme robiť s postavami?
Viete, Same?
>> Nemám potuchy, som sa snažil prísť na to.
Ja naozaj neviem, - Prial by som si, tam bol nejaký spôsob, ako -
Chcem povedať, myslím, že by sme mohli urobiť niečo s kurzom a vyrovnáva,
ale neviem o žiadnej funkcie, ako je to.
Jo.
>> Ale to - že by nutne fungovať,
pretože potom by ste si priestory sa -
budete musieť mať priestor získať tipy na to, ako -
Dobre.
>> Ja neviem - ja druh stratené v tomto bode.
Jo - nie, nie, nie, to sú dobré body.
Takže to, čo musíme urobiť, je, ako povedal Sam,
musíme sledovať, ktorá písmená sú nepárne listy,
a ktoré z nich sú dokonca listy.
Ale my chceme, aby sa ubezpečil, že nie sme len hľadáte
na párne a nepárne
indexy v reťazci,
ale pri pohľade na nepárnych a párnych písmen v reťazci,
takže musíme trochu mať tento rozdiel medzi
Písmená - ako to, čo je vlastne A, B, C, D, alebo tak,
a čo veci nie sú listy, ale stále v našom reťazci.
Napríklad tu, rovnako ako tento výkričníkom nie je písmeno,
ale je to stále súčasťou nášho reťazca, je to stále char.
Podobne, všetky z týchto priestorov -
to nemá zmysel využiť priestor, nie?
Takže chceme, aby sa ubezpečil, že sme si nejako preskočiť tie
zatiaľ čo ešte sledovanie kurzy a vyrovnáva.
>> Takže trochu v našej programovej nástrojov
tak ďaleko, ak chcete,
máme niekoľko rôznych nástrojov, ktoré sme hovorili.
Takže jeden, napríklad, sú premenné,
to, že sme hovorili o tu.
Ďalším nástrojom, ktorý sme hovorili o sú funkcie.
Takže sme hovorili o premenných v našom pseudokódu sem
ako to, čo budeme používať pre ukladanie náš reťazec.
Hovorili sme o funkciách získať dĺžku reťazca, ako je strlen.
Hovorili sme o niečom inom, a my sme o tom hovorili
za oveľa skôr v oddiele dnes: slučiek.
>> Čo si vy myslíte o použití slučky v tomto programe?
Jared, čo si myslíte?
Chceli sme použiť slučku v tomto programe?
>> Pravdepodobne nie, nie, pretože nemusíte ísť cez neho viac ako raz.
Dobre, nemusíte ísť cez to, čo viac ako raz?
>> Celý reťazec.
Správne, takže nemusíte ísť cez reťazec celú raz.
Ospravedlňujem sa, že z absolútne žiadny zmysel!
Nemusíte ísť cez celý reťazec viac ako raz.
Dobre.
Čo si myslíte?
>> Myslím, že je lepšie použiť
takže môžeme urobiť ako využiť pri
namiesto toho je [nepočuteľné] číslo.
Skvelé, a tak zarobiť čo?
Dobre, takže hovoríme, že
by sme mali používať slučku, pretože chceme, aby
Veľké písmeno aj keď to nie je číslo.
Takže - ospravedlňujem, sa chcete pridať?
>> Chcel som povedať, že spôsob, akým sa správate reťazec
a to [nepočuteľné] oddeľte [nepočuteľné] na postavy?
Jo.
>> A potom môžeme priradiť čísla -
alebo na základe umiestnenia písmen v reťazci?
Jo.
>> A určiť, či je to divné, alebo dokonca, a zarobiť na list sám
zatiaľ čo umiestnenie listu je [nepočuteľné] - sorry.
Great.
>> Takže len rekapitulácia.
Môžete mi pripomínajú svoje meno znovu - ospravedlňujem sa.
>> Charlotte.
Charlotte, v poriadku.
Takže to, čo Charlotte hovorí,
ktorá je úplne pravdu - bože, to rád na auto zarážky na mňa -
je, že keď sa pozrieme na reťazec
ako je tento v hornej -
"Vďaka za add" -
ako sekvencie znakov
kde je na pozícii 0,
h je na pozícii 1.
Je na 2, potom sme sa dostali 3, 4, 5;
priestor je v polohe 6.
Vzhľadom k tomu, - to, čo je pozícia f?
7!
O? 8.
R? 9.
A potom máme 10, a potom som si to naozaj písať bez nej
trochu dostať chaotický na obrazovke.
Ale to je vlastne, ako môžeme hovoriť o reťazca v pamäti.
Je to reťazec
je postupnosť znakov,
a keď sme sa vzťahujú k individuálnemu charakteru v reťazci,
sme často tak s odkazom na tento znak postavenie
v reťazci,
pravdepodobne rovnakým spôsobom, že budeme hovoriť o septembra
je deviaty mesiac v roku
alebo v pondelok je prvý deň v týždni.
Tak to nám poskytuje spôsob, ako
zistiť, ktoré z nich sú nepárne oproti dokonca
pretože si môžete pozrieť tu,
keby sme zápas to s týmto T,
môžete vidieť, že všetky tie kapitalizovaných
sú v párnych pozíciách,
aspoň pre prvé slovo,
a potom sa veci hodená off, akonáhle sa dostaneme, že priestor,
pretože nemáme počítať tento priestor ako list,
tak je to ako keď sme začali
a šiel 0, 1, 2, 3, 4, 5,
priestor, 6, 7, 8, priestor,
9, a potom sa 10, 11, 12, a tak ďalej.
>> Cool, takže určite bude chcieť použiť nejaký slučky
ísť nad každým zo znakov v poradí.
Takže v tomto bode,
vrátime k našej starej pseudokódu tu.
V rámci tejto identifikácie, ktoré z nich
sú veľké a ktoré z nich sú malé,
budeme chcieť, aby to v nejakom slučky.
Loop, dvojbodka.
Aký slučky, z typov slučiek, ktoré máme,
Zdá sa, že dobrý pre použitie v tomto prípade?
>> Myslel som, že pre sláčiky.
A prečo myslíš pre slučky?
>> Pretože začína na nule, a potom
keď sa dosiahnuť dĺžku reťazca,
a potom každé iterácii môžete [nepočuteľné], taky?
Jo, presne tak.
Takže, z rôznych možností slučiek,
máme pre slučky, zatiaľ čo slučky, a do-while.
Ak pre sláčiky je obzvlášť užitočné
je, keď chcete vedieť
druh, kde ste na v slučke,
koľkokrát slučka bol vykonaný tak ďaleko.
Čo je presne to, čo chceme vedieť, v tejto situácii,
ako Kelly povedal,
založená mimo skoršie komentár Charlotty, že chceme poznať postoj
znaku v reťazci,
a pre sláčiky, nám len to, že
pretože ak začneme trochu ohliadnutie na našom reťazci,
ak začneme náš pre slučku v 0,
a ideme hore cez dĺžku celého reťazca,
potom môžeme priradiť písmeno T
s 0 na našom pre slučke,
písmeno H s 1 na našom cykle for, a tak ďalej,
ísť celú cestu až do konca reťazca.
>> Tak začnime kódovanie to len trochu
len tak vy dostanete pocit, pre to, čo to vyzerá.
Chystám sa zachrániť to,
takže máme náš pseudo kód tu,
a budem mazať všetko.
Takže mám prázdne bridlice.
Začnem tým, že píše int main (void)
{
Ja som chcel dať spiatočnej 0 v
a potom}.
Takže väčšinou, keď začnem programu, to je to, čo som začať.
Zachránim to tak, že ste si to.
Takže jedna z prvých vecí, ktoré sme hovorili sa
dostať vstup od používateľa
a ukladanie v reťazci.
Ako sa dostať vstup od používateľa?
>> GetString.
GetString, v poriadku.
Takže ak som typ GetString ()
a bodkočiarka.
Skúsme beží to, bude to beh, prvé zo všetkých?
A prečo nebude to spustiť?
>> Musíte deklarovať premennú.
Mám deklarovať premennú. Dobre.
>> Tak ako to mám urobiť, že?
Nebude vám vadiť, písať niečo, zdieľanie?
A potom môžeme vytiahnuť ho hore.
Poďme sa pozrieť, Dan, vpravo, dobre.
Alebo Daniel. Kopírovanie, že v, vstup reťazca = GetString ().
Awesome.
Bude to beh?
Poďme to skúsiť.
Hit beh, nahrávanie zdrojový kód, stavebniny, došlo k chybe.
Dobre.
Takže čo to tu deje?
Použitie nedeklarovaný identifikátor "reťazec".
>> Máme zahrnúť knižnice?
Jo, tak Dan je že musíme zahrnúť knižnice.
Je to to, čo si chcel povedať, Stella? Awesome.
To je úžasné, tak Stella, môžete
skopírujte tento kód z priestoru Daniela?
Pokiaľ kliknete na Daniel Roland Ki, skopírujte ho,
a potom sa dáte include čiaru, a potom ho uložte von?
Dajte mi vedieť, až budete pripravení.
Tak toto syntaxe patrí tiež trochu funky;
je to ako tá hash tagu,
a tam je zahrnúť, a potom sú tieto ostré zátvorky.
Pamätáš si, ako to funguje, alebo by som mal dať to na tomto kóde tu?
>> Som v pohode.
Dobre.
Aj >> vytlačil - Nebola som si istá, ktoré knižnica, hoci.
Ach, áno - áno, tak je to CS50 knižnica.
>> Oh, som dal štádiách knižnicu.
>> Oh, to mám - jo, no, to je -
tak to dopadá, že reťazec je vlastne niečo, čo je zvláštne na CS50.
Tam vlastne nie je pravda, reťazec typu
pretože práve tu, je reťazec v polohe typu, -
sme deklarovať premennú s názvom vstup typu string -
a my sme uvedenie vnútri vstupu
hodnota, ktorá dostane sa k nám vrátil: Výstup z tohto GetString volanie funkcie.
Môžete povedať, je to volanie funkcie, pretože je to tu zátvorky, rovnako ako printf robí,
rovnako ako strlen robí.
Ale string je vlastne nie je skutočná typu
v jazyku C.
Urobili sme to do typu, a budeme trvať asi viac, čo to vlastne je
v C, pretože je tu spôsob práce s reťazcami;
sme jednoducho urobiť niečo, aby to vyzeralo trochu krajšie.
>> Tak ideme na to.
Tu je Stella kód.
Má to # include .
Ďalší ľudia budú hovoriť to ako hash patrí niekedy alebo ostré patrí.
Teraz môžeme spustiť, spustiť,
a my sme stále dostanem chybu.
Poďme sa pozrieť, čo sa deje.
"Nevyužité premennej" input "."
Dobre, tak to je v pohode, je to v pohode.
Myslím, že to nie je naozaj cool,
preto, že sme stále chybu a to nie je spustený,
ale čo to hovorí, je, že
Nepoužili sme našu premennú, ktorá dáva zmysel.
Sme sa pokúsili urobiť niečo s tým.
Jedná sa o spôsob, ktorý
Rinčanie sa snaží, aby nám pomohli, aby sa ubezpečil, že nie sme len pomocou premenných
a potom sa mimovoľne volať je niečo iné neskôr v našom kódu,
nám pomáha zabrániť chybám, ktoré tak.
>> Dobre, takže máme vstup od užívateľa,
sme uložili do premennej.
Ďalším krokom je potom
začať pri pohľade na všetky znaky v reťazci
a určenie, ktoré z nich majú byť veľká
a ktoré z nich sú malé písmená.
A rovnako ako Kelly a Charlotte vychoval,
Robíme to pomocou slučky for.
Takže nemá niekto pamätať syntax pre sláčiky
a rád by, aby sa pichnúť do len písanie
prvý riadok pre sláčiky, len pre trochu?
Kelly, chceš to skúsiť?
Jo >>, takže budete musieť inicializovať prvý,
tak som dal i = 0,
a potom som aj <strlen ().
Je to vo vašom vesmíre - môžem vytiahnuť ho?
>> Jo, som podelal trochu, ale jo.
>> Dobre, poďme vytiahnite ju hore.
Awesome.
>> Ale potom som nevedel, či si mal, že -
Jo, dobre.
Tak tu je to, čo Kelly má: pozrime sa na nej rýchlo.
Takže ona patrila cs50 knižnicu hore.
Ona je zahrnuté štandardné IO knižnice v hornej,
a štandardné IO má funkcie ako printf,
takže ak ste niekedy chceli použiť printf, musíte tento riadok.
A potom súčasťou reťazca knižnicu,
ktoré budeme potrebovať,
pretože reťazec má knižnica strlen funkciu,
ktoré dostaneme v len trochu.
Takže ak sa pozrieme na to, čo Kelly urobil tu,
môžete chodiť nám skrze to, čo si urobil?
>> Jo, tak - myslím, mám chyby, tak -
Jo, no, to -
Tak >> som chcel volať reťazec, ktorý som dostal len "reťazec".
Chcel som vytlačiť reťazec
a potom som -
Chcel som, aby mi nastaviť reťazec ako ako pole od každého znaku
bytia odlišné [nepočuteľné], že jo?
A potom som chcel začať na pozícii 0
a potom každé 2 priestory,
Chcel som využiť,
tak som práve opísal to ako 23, pretože som sa pozeral na ASCII tabuľky.
Takže to je to, čo som si myslel - ja viem, že to nie je v poriadku.
>> Mám ju, takže je to skvelý štart.
Myslím, že veľa z rámca je na mieste tu.
Poďme prejsť druhu riadok po riadku a vidieť, čo sa deje.
Takže, ako som chcel robiť je to len začať tým, že zostavovanie kódu
a nechať kompilátor mi ako to, čo sa deje s mojím kódom,
pretože kompilátor je naozaj dobrý v hovorím to, čo je v neporiadku s vašou kódu.
Takže ak budeme hrať to, stavebné, a to nestaval.
To hovorí, že došlo k chybe,
takže ak prejdite nadol a pozrite sa na prvej chybe,
to povedal -
sme sa posunúť späť na vrchol,
môžeme vidieť, že sú 5 chýb generovaných sem v dolnej časti.
Jejda, to, že naozaj cut off.
Myslím, že to jednoducho nebude nič lepšie.
>> Ideme na to.
Takže tam sú celkom 5 generované chyby.
Tu vidím len prvé 2,
tak som sa môže pohybovať až to trochu a potom druh scroll up.
To je príkaz, ktorý bol spustený kód kompilovať,
a potom prvá chyba bola v file.c tu:
"Očakáva identifikovať alebo" ("", a to bolo na tejto linke
kde sme si povedali, string = GetString ().
Môžete vidieť tu, že to bolo na linke 8 file.c,
a potom som presvedčený, je to znak 12 - to je chyba.
Tak čo sa deje zle na linke 8 - Kelly?
>> Stačí zavolať to, ako, list alebo tak niečo,
ako reťazec s alebo tak niečo?
Jo, tak to ukazuje, že tieto zvláštne názvy typov,
tak string, int, char, short,
všetci sú to špeciálne kľúčové slová,
a nemôžete skutočne použiť ako mená vašich premenných,
pretože kompilátor vyzerá na to a hovorí,
"Jo, ja viem, že je to typ,"
takže nemôžete skutočne reťazcové premenné s názvom string,
ako by som sa snažím robiť tu, to nebude fungovať.
Ale namiesto toho, môžeme nazvať niečo ako S alebo St alebo STR.
Tiež by to nenazýval int.
Nemôžeme mať reťazec s názvom int.
Nemôžeme mať reťazec s názvom char, nikto z tých, bude fungovať.
>> Takže budeme jednoducho hovoriť to v súčasnej dobe.
Awesome.
Takže čo ďalej sa deje v tejto rade?
String - táto položka vyzerá celkom dobre?
Skúsime to znova skúsiť,, poďme ho spustiť.
Dobre, tak sme ešte dostať chyby.
Tentokrát, sme až do 4 chýb.
Tak sme sa dostali jednu z nich.
Poďme hore.
"Neočakávaný typ názov" string ": očakávaný výraz," áno?
>> Jo, to preto, že som sa snažil pomenovať reťazec.
Jo, takže to vyzerá, ako by sme teraz tiež ísť fix
všetky tieto odkazy na reťazec.
Môžete vidieť, že je to odkaz na reťazec tu, jeden tu, jeden tu,
takže sa môžeme presunúť všetky tieto na s.
Great. Dobre, spustite ho znova.
Budova - iné chybe.
>> Dobre, teraz sme až na jednu chybu,
takže int i = y a potom hranaté zátvorky.
Takže môžete nám povedať niečo málo o tom, čo ste robili tu, Kelly?
Áno >>.
Bolo to na riadku 10.
>> Ja neviem, či sme potrebovali to všetko,
ale myslím, že som sa snažil -
Budem ho uložiť, takže môžete sledovať spolu.
>> Myslím, že som bol
sa snaží povedať, že kto v polohe 0
Na začiatku mojej slučky for,
takže si myslím, možno, že ostatné je zbytočné.
Takže len zhrnúť,
si hovoril, že to - ste sa pokúšali začať tento na pozíciu 0
a získajte tento - jo,
takže myslím, že skôr, taky, keď si prechádzal kódu,
si hovoril o tom, ako by ste chceli liečiť reťazec ako pole
takže môžeme pristupovať k jednotlivým znak samostatne.
Myslím, že Dan uvedených polí, tiež sa snaží previesť reťazca do poľa.
>> Ukazuje sa, že druh pod kapotou,
reťazec je v skutočnosti uložené ako pole už,
a môžete k nemu prístup ako pole;
nie je obrátenie, ktoré musíte urobiť.
String zatiaľ nič neobsahuje - tak -
string nie je naozaj poľa,
ale môžete pristupovať ako také, pretože všetky znaky sú uložené
jeden priamo vedľa seba v pamäti,
takže ak chcete získať prvý znak reťazca,
je to rovnaké ako dostať prvé celé číslo v celočíselnú maticu.
Tak sme sa často - Dáme
odkazovať na 2 ako
oh, ako reťazec, ako pole,
aj keď je to naozaj - Sú v veľmi odlišné veci,
ale môžete s nimi zaobchádzať veľmi podobne.
Tak to dopadá, že táto linka vlastne -
nepotrebujeme robiť žiadne konverzie,
a v skutočnosti,
to vlastne nie je platný výraz,
čo je to, čo naša kompilátor nám hovorí.
Je to hovorí, "Hej, očakáva sa výraz,
a to, čo som sa sem dostala, je niečo, čo nie je výrazom. "
Ak chcete deklarovať pole,
všetko, čo potrebujete urobiť, je niečo ako toto bodkočiarkou,
a potom povedať, pole, ako dlho chcete, aby to bolo,
ako 5, takže tento riadok 10
bude deklarovať pole s názvom aj s 5 celými číslami v ňom.
>> To je stranou, to nie je nutné pre kód,
ale to je - toto je to, čo vyhlásenie vyzerá.
>> Ako by ste nemožno použiť char i [strlen (s)]?
Char i [strlen (y)]?
>> Char i, a potom sa v zátvorkách, strlen (y).
Jo, tak sme mohli -
čo by sme mohli urobiť to,
a to by vyhlásiť - čo by to robiť?
>> Myslím, že by deklarovať pole
zo dňa, rovnako ako - v -
oh, nemusíte i - oh,
jo, určite nepotrebujete i
Môžete deklarovať pole znakov
dĺžky s
A tak to, čo Sam hovorí, že
Tento riadok 10 - dovoľte mi, aby som nejaký priestor medzi ňou a zvyškom, takže môžeme izolovať -
táto položka 10 by deklarovať pole
zo dňa znakov, strlen (s) v hodnote nich,
ale v skutočnosti to potrebujeme aj,
a dôvod, prečo potrebujeme aj je, pretože my potrebujeme, aby Array meno;
inak by sme nemali spôsob, ako odkazovať na pole neskôr v kóde.
>> Tak toto tu je pole názov
a vo vnútri je dĺžka.
To nám poskytne pole,
ale je to - opäť, to je vyhlásenie.
Nie je to úloha, to nie je inicializácia.
Ak by sme vyhlásiť toto pole ako je tento,
je to vlastne nič v obsahu poľa.
Je to len junk - čo je tam.
A ako sme povedali,
sme vlastne ani nemusíte robiť túto konverziu,
pretože už môžeme považovať string s ako pole.
Viem, že sme beží trochu dlhý na čas,
ale ja chcem len naozaj rýchlo dostať k tomu pre sláčiky
a ukázať vám, ako získať prístup k jednotlivé znaky v poli,
pretože to je kľúčové pre náš úlohu.
A potom ťa nechám ísť od toho.
>> Tak tu, máme pre sláčiky
, Ktorá vyzerá skoro dobre.
Čo to nie je úplne tam skoro?
What 's - čo nie je úplne v poriadku o tom pre sláčiky?
Žiadne >> Zložené zátvorky?
Žiadne zložené zátvorky, pre jedného.
Chceš, aby sa ubezpečil, že máme telo slučky so zloženými zátvorkami.
Jejda, nie štvorec ortéza!
A čo je ďalšia vec, že ​​musíme robiť s touto slučkou?
Ak sa pokúsim a spustite ho,
whats túto chybu, že som si?
Mám všetky tieto chyby - musím inicializovať i
Great.
Takže to bude slučka - to nie je úplne tam,
ale je to stále veľmi blízko.
Tento kód môžeme teraz spustiť,
stavať, stále dochádza k chybe.
Prečo je to stále sťažuje,
vyslovením výrazu je nepoužitý,
a to preto, že táto linka nie je nič.
Sme nebudú ukladať nikde, sme nemali výsledok uložiť.
Kde by sme mali byť úspora tento výsledok?
>> S alebo aj?
Presne, a to funky syntaxe,
Tento ss v hranatých zátvorkách
rozumie prístup k i-ty znak s
To bude mať niečo, čo je naozaj dôležité pre priradenie.
Bohužiaľ, budeme musieť zastaviť tu,
tak, aby Sebastian sekcie môže prísť,
ale som rád, že zostane po vonku a bude trvať nejaké otázky.
Takže ďakujem vám chlapci prišli.
To by malo teraz nahrať, vybudovať, spustite.
Môžeme zadať reťazec v tvare "ahoj"
a tlačí "QOX".
[Smiech]
>> Takže nie je úplne tam, ale pohybuje sa, ako sa na tie slučky!
Vďaka, že ste prišli, a ja budem vonku.