[Powered by Google Translate] [♪ ♪ zujanje] Dakle predstaviti vam ono što sam ustala na zaslonu; to je jedan od alata koje smo razvili tijekom ljeta; to se zove CS50 mjesta, i to je naš suradnički kodiranje aplikacija da ćemo koristiti u dijelovima. To je prilično cool. Jeste li tko od vas vidio CS50 vožnju još? Dopustite mi povući da se u drugoj kartici. Run.cs50.net Tako ako idete na run.cs50.net, možete vidjeti to je u vašem pregledniku putu zapravo kod - napisati C kod, a zatim ga pokrenuti, pa kako ga sastavljaju, to radi, onda vraća izlaz na vas, pa to je vrsta cool način da se eksperiment s nekim od koda da David ide preko na predavanjima i mi dati na vas na problematične setovima bez da zapravo ložiti aparata. Dakle, ono što Prostori se da je različit od onoga ako sam prebaciti na ovoj kartici, Prostori je CS50 mali, kao što vidite ovdje, ali ako mi pomicanje više i pogledati s druge strane prozora, vidiš pravo sam jedina osoba na ovom prostoru, ali ono što ću učiniti je pitati vi da se pridruže ovom prostoru sa mnom i svi ćemo doći do koda u istom malom prozoru, dijeliti kôd jedni s drugima, i razgovarati o razlikama između našeg koda. Dakle, to je vrsta cool stvar - tako da se pridruže, ako će posjetiti ovaj link ovdje na vrhu da sam istaknuo, možete samo upisati apps.cs50.net/spaces/vqcspSnO. U redu, tako da počnete, Ja ću vam dati malo obilazak ovo. Mi ćemo napraviti neke blesave kodiranje s njim na prvi, samo tako da svatko nekako dobiva osjećaj za ono što je kao, ali ono što sam učinio - ili ono što sam o to učiniti ovdje je - Ja ću uzeti kod koje sam pismeni ovdje, koji kao što ste vidjeli upravo sada je prazna; to ne učiniti ništa. To je samo kotao ploča kod, mi ćemo ga zvati. Uz malo-učiniti komentar. Ja ću ga spasiti od udarca ovaj gumb Spremi. A što da se je to to istaknuto ovdje ukratko - da revizija spasiti zeleni okvir, i sada, ako se traži za mene u prostoru, kliknete moje ime, možete vidjeti da sam dobio ovu reviziju ovdje, a ako kliknete na tu izmjenu, to će učitati taj kod u svoj prostor, previše. Tako je svatko učitava taj kod u njihovom prostoru? U redu, ako još niste, ići naprijed i učiniti da se, i onda ono što želim ti dečki učiniti u ovo malo za to poglavlje je napisati malo koristeći printf o sebi, tako da za primjer, ja bih pisati printf ("Moje ime je Nate"); i onda bih napisati "Ja sam diplomirao u 2009 Stanford " i ja bi volio čuti o godine što ste u školi, da li ste na faksu ili poslovne škole ili drugi Harvard škole, Što ste studiranje ako je poznat još; ako to ne zna, to je totalno cool. Nisam odlučiti dok sam bio kasno u mom sophomore godini. a zatim Također bih volio znati nešto ludo što želite, recite mi ili nešto o razredu ili samo bilo što drugo. Kada završite pisanje da sa svojim malo printf, ako ćete uštedjeti na reviziju, odnosno prvi bi bili sigurni da možete ga pokrenuti i da ispisuje točno ono što želite ispisati, i onda ako idete naprijed i spasiti tu reviziju koristite gumb Revision spasiti, ovaj prvi mali čovjek ovdje, a mi ćemo nekako proći i napraviti malo uvod koji način. Dakle, samo treba pogoditi gumb Play, koja je ovdje u gornjem lijevom kutu, tako da je ovo predstava gumb u gornjem lijevom kutu će poslati svoj kod off na naš server gdje se dobiva sastavio i onda pokrenuti. Dakle, ono što je nekako luda o tome je ovaj broj zapravo ne izvodi na računalu; to je zapravo šalju preko Interneta. Kako ide, Charlotte? >> Sam - ok. Ja - Mislim da sam poteškoća spremanja na poslužitelju, kao da je to moguće - ja mogu pokrenuti program. I onda kad sam pokušati pokrenuti ga, on kaže da je pogreška. Proglašen kao virus, što nije u tamo. Oh, da vidimo, može li pogoditi Spremi opet? Ja ga vidjeti na ekranu. >> Točno, ok, tako da je ono što ja imam. I ne znam zašto to ne dopustite mi da ga pokrenuti. Oh, u redu, ispričavam se. Možete li objasniti zašto - što je bio u krivu - što nije bilo raditi s njim? >> Da, jer nisam vidjela da je zadnja linija tamo gdje je uvijek promjenjiva da nisam proglasio, koji sam nije namjeravao za to što postoji. Da, savršeno! >> Sada, ako sam ga spasiti, mislim da bi trebalo raditi. Sada kada ste ga spremili, to radi; strašan. Tako da, kao što smo proći kroz - tako da ono što se događa, Samo ću ponoviti ovo za kameru. Što se događa je da ta varijabla s je napustio poslije - Pretpostavljam da ste izbrisani neke druge stvari gdje se izjašnjavali kao, pa to je bacanje stvari off, a ne ostavljajući ga pokrenuti. Dakle, to je upravo ono što želimo učiniti u odjeljku je su ljudi pokušati snimiti različite dijelove koda, ga sastavljanju, vidjeti što radi, pogledajte što ne, i onda nekako razgovarati o tim stvarima, jer su to Tripping točke koje Ja još uvijek susreću, Ja još uvijek - znam puno blesav stvari cijelo vrijeme, i ne znam zašto to ne radi, pa ajmo podići Charlotte reviziju 3, a mi ćemo ga pokrenuti. Dakle, kada sam pokrenuti, sad da sam dobila kod ovdje, Ja mogu zumirati, pogodio Run gumb, dodano ga, gradi, to traje, kaže da uspješno vodio, a ako sam se pomaknite prema dolje, vidi Charlotte je juniorska u Adams House, psihologija, sekundarna u ekonomiji; strašan. Velika je upoznati vas! Strašan. Ok, kreće na, ajmo Danielu, ići u reviziju 3, sastaviti, pokrenuti; zašto ne reći nam nešto o sebi, Daniel? >> Zovite me Dan. Idem na poslovnoj školi preko vas, a ja sam bio u marincima prije ovdje, i to je sve novo za mene, tako da. Ne osjećam se loše, ja sam 30 i ne znam bilo koji od ovih stvari. Strašan, hvala, Dan! U redu, imamo još jedan Daniela. Možete ići Daniel - bit ćete predstaviti sebe, Daniela? >> Naravno, ja sam Daniel. Ja sam student na Mather upravo sada. Ja sam koncentriraju na vlasti, ali ja sam htjela da se CS50 jer sam čuo sjajne mišljenja o klasi i nikada nisam pokušao CS prije. Dođite ovamo i pokazati - super. Premještanje na, Jared. Kako ide? >> Dobro, kako ste? Kao što možete vidjeti, ja sam mlađi filozofija Koncentrator u Eliota, podrijetlom iz južne Kalifornije, i ja sam zainteresiran za uzimanje CS50 jer volim logiku njega, i čini se stvarno super raditi stvari na računalu, tako. Strašan, gdje je u južnoj Kaliforniji ste? >> Oko sat od [nečujno], mali grad [nečujno]. Oh, da, moj tata je iz Redlands. Cool stvari. U redu, Jimmy, kako ide, Jimmy? >> Dobro, kako ste? Doing prilično dobro! Recite nam nešto o sebi. >> Ja sam brucoš, i nisam posve siguran što sam majoring u ali ja nekako sam sklona ekonomije. Poput Daniela prije mene, ja nikad nisam učinio bilo CS, ali to zvuči nekako cool. Ja sam podrijetlom iz Chicaga. Strašan. Dakle, check out njegov ispis ovdje. Htjela sam pitati, je li ovaj ispis kao što ste očekivali? >> Ne, zaboravio sam ispisati novu liniju. Ja sam zapravo zaboravio da kada sam pisao moj stvar po prvi put, previše. To je vrsta boli se sjetiti staviti one u ručno. Bilo bi lijepo kad bi to samo znaju da je ono što ste htjeli. Ok, Kelly. Opa, imamo dva Kellys; 2 Daniels, dva Kellys. Dakle, Kelly - ne idete Kelly Ren? Ok, strašan. Ili Kelly, mislim. >> Tako da, tako sam Kelly. Ja sam student u Pfoho. Dobio sam e-mail danas da još uvijek imam 7 tjedna objaviti svoju koncentraciju, pa ja pokušavam ne misliti o tome, i ja bih za pecivo, trčanje, i Craisins. Nemam iskustva s najviše CS; Ja sam učio da izgradite web stranice kad sam bio jako mlad, ali mislim da je vjerojatno učio sam u krivu puno puta. Nadam se da ću naučiti nešto više i - da. Strašan, dobro, hvala na pitanju. Idemo na drugu Kelly; Nemam ništa - jeste li nešto reći ovdje? >> [Nečujan] Tamo je! Sweet! >> U redu, tako da sam Kelly. Ja sam prve godine apsolvent. Ja sam majoring na umu, mozgu i obrazovanja. Diplomirao sam u Franklin & Marshall College u 2008 s većim psihologije i sociologije i maloljetnika u francuskom. Vodim CS50 jer sam zainteresiran za dobivanje doktora neuroznanost i ja se osjećam kao da će mi pomoći da razumiju tehnologije se koriste. Strašan. Premještanje na, Mikaela. Je li to točno izgovor? Ok, strašan. >> Sam Mikhaila. Ja sam student u Kirkland House, i ja sam koncentriraju u strojarstvu. Stvarno mi se sviđa biciklizam, izgrađena bicikla ovog ljeta. Vodim CS, zapravo, kao koncentracijskom zahtjeva, ali znate, ja mislim da je još uvijek svjež vrsta inženjering klase. Strašan - ste izgradili bicikl ovog ljeta? >> Da. Wow, poput okvira i sve to? >> Uh-hunh (potvrdno). Wow, to je stvarno cool. >> [Nečujno off-kamera chat] [Smijeh] Da, to je bilo tako davno. Nikada ne znate, zar ne? Pa, cool, i hvala, Mikhaila. U redu, gospođica. >> Zovem se gospođica, ja sam brucoš, pa to znači da ja ne znam ništa! Želim se koncentrirati na astrofizike. U CS50, Osjećam se kao da će definitivno pomoći u tome. Čudno činjenica o meni je da sam nacionalno certificirani vatrogasac. Wow! Kako se to dogodilo? >> Sam pohađao akademiju i prošao kroz pakao za puno tjedana i dobio sam certifikat. Wow, Cestitam! To nije mali podvig, to je sigurno. Ok, tako da sada ćemo mi učiniti. Ja sam sljedeći u nizu. Ja - to pokrenuti. Dakle, moje ime je Nate. Bio sam razred 2009 na Stanfordu. Bio sam na simboličan sustavi većih, koji je sličan umu, Brain, ponašanje koncentracije ovdje, ali to je neka vrsta mješavine informatika, lingvistika, psihologija i filozofija. Vrsta - Da, puno čudnih stvari, ali to je bio velik, i onda sam moj magisterij iz računalnih znanosti postoji, kao dobro. Dakle, ja sam novi na Harvard ove godine. Stvarno sam želio da se u nastavi. Proveo sam zadnjih 4 godine na Stanford TA-ing Computer Science klasa i tako David pusti me hajde, i ja ću se pomaže sa CS50, pa sam to učiniti puno radno vrijeme, a ja nisam u grad školu. Bilo je zabavno. Nadam se da ću i dalje biti zabavno, siguran sam da hoće. U redu, Sam. >> Moje ime je Sam, ja sam student na koledžu, u zakonu posebno. Moj glavni će biti povijest znanosti, vjerojatno, i VES sekundarne, i moja omiljena boja je žuta. Nema potrebe da sudiš ili ništa, ali to je dobra boja! I Stella. >> Bok, ja sam Stella, ja sam brucoš u Grays. Ja nemam pojma što sam koncentriran na još, tako CS50 bio samo vrsta slučajna, što je zanimljivo. Zabava činjenica, Jimmy je bio prvi Harvarda prijatelj, jer smo oboje iz Chicaga. Cool, i Grace - koji je trebao biti jako lijepo jedan, zar ne? >> Mislio sam [nečujno]. Oh, da. [Nečujna / off-kamera chat] Ok, ja još uvijek učim, još uče. Dakle, imamo nešto drugo to je vrsta zanimljiv ovdje. Da, ja sam samo pitate, imate li ideju da se ovdje događa? Znate kako protumačiti ovo? >> Trebao sam biti staviti zarez nakon svakog retka. To je vrsta boli. Ponekad ti zarezom mogu biti pravi bol u trag. Tako ispada da je Poseban program smo pomoću ove godine sastaviti našu C koda se zove zveka, i razlog zbog kojeg smo počeli koristiti zveka ove godine - jer nismo koristili taj program u prošlosti; upotrijebili smo još jednom pozvao GCC koji je jako popularan - Jeka zapravo vam daje poruke o pogreškama koje imaju smisla. Ovaj jedan kaže: "Očekuje se ';' nakon izražavanja", i to čak vam govori izraz nakon što vam je potrebno zarez. Tako su ga popravljajući? >> Da, upravo sada. Strašan; javite mi, a mi ćemo ga podići, i mi ćemo ga pokrenuti. Ali da, stavljanjem tih zarezom u je vrsta boli. >> Sam ga fiksni, tako da mislim da bi trebalo raditi. Strašan - revizija tri. To izgleda kao da je. U redu, tako da sada ako mi ga pokrenuti, tamo to ide. Cool stvari. U redu. Dakle, hvala za to. To je velika da zadovolji vas. Što ćemo učiniti sada je provesti sljedeći malo nekako ronjenja u poglavlju problema koji dolaze iz problema postavljen od ovog tjedna a mi ćemo to učiniti za većinu dijelova za ostatak izraza, i onda ćemo spasiti posljednju 15, 20 minuta ili tako razgovarati o problemu se postaviti a zatim samo sva ostala pitanja imate općenito o klasi. To je rekao, ono što mi stvarno želiš je su svi sudjeluju pomoću Spaces stvari, bacanje u kodu, bacanje u prijedlozima, i pričaju kad stvari kao što je ovaj pauzu ili ne rade, samo zato što su to stvari koje se Znam da sam došao preko kada sam počeo kodiranja, i bili su stvarno nekako frustrirajuće na vrijeme jer ako je to kao 02:00 prije tvoj problem skup je zbog, tako da - samo za otkrivanje, Nisam početi programiranje dok sam bio student na faksu. To je vrsta ovog čudnog, nepoznatog stvar da sam čuo bio kinda cool i ja također čuo da bi mogao biti pravi bol u stražnjicu ako propustite zarez, te da je samo pogreška imajući svoj program iz radnog i održavali od odlaska na spavanje, tako da definitivno, ako imate pitanja kao što je to, ako imate pitanja kao što je to, javite mi, jer želim da to dobro iskustvo za vas. Tako su ti dečki sve skinuti Problem postaviti još? Nekako znam gdje je to? Ok. Dakle, mi ćemo ići na cs50.net, jer ja ga nemam na tom računu, podići seta problema, podići problema set 2, a mi ćemo gledati na standardnom izdanju danas. Mi ćemo podići specifikaciju ovdje. Pomaknite se prema dolje. Tako ćemo početi gleda na ovom dijelu pitanja. Jeste vi gledali ove gaćice još? Ok. Dakle, tu su gaćice na petlji, koji je to učinio Tommy, jedan od momaka glavu nastavnih. Ima jedan na opseg, Vjerujem da neke druge nastave momka zvanog David i onda jednog dana Cezarova šifra također učinio Davidu. Oni su prilično cool. Jeste li dečki su gledajući svoje gaćice do sada? How've oni bili? Koristan? Ok, dobro je znati. Ako oni ne, možete reći tako. No, prije nego što učiniti, Jeste li dečki pogledao ovih pitanja uopće? Ajmo pričati o tome malo. Dakle, uveli smo tijekom posljednjih nekoliko tjedana u predavanju broj različitih petlji. Tu je za petlju, dok petlja, a zatim do-while petlja, i predavanja, mi smo bili govori puno o kako te petlje su svi prilično slični u puno načina, i vi možete učiniti mnogo istih stvari s while petlje da možete sa za petlju. Vi samo morati nekako koristiti pravo kombinacije varijabli i takvih. i tako stvarno pravi razlika između svih petlje je da ponekad oni više koristan ih koristiti u jednom trenutku nego u drugo vrijeme. Tako, na primjer, dok petlja se razlikuje od A do-while petlje. Da li svi osjećaju kao da imaju dobru ručku kada do-while petlja je više korisno ili što je razlika? >> Mislim razlika je ne-while petlja radi - ne znam baš ono terminologija, ali niz funkcija unutar petlje. Oni automatski - to ne svoje vožnje barem prije nego što provjerava stanje, odnosno dok se petlja samo da će ga pokrenuti kad kontinuirano radi - da li ili ne stanje se zadovoljan. Da, to ima smisla? Ajmo pogledati malo koda. Dakle, samo da ponovi pitanje, ili odgovor, a; Odgovor je bio da petlja dok će provjeriti da li je uvjet koje ste naveli se sastao prije nego što ga pokreće tijelo petlje za prvi put, dok do-while petlja će automatski pokrenuti tijelo petlje, je ono što mi zovemo ga - to je čudno terminologija, ali ako sam ikada išta reći da nema smisla, javite mi - petlja tijelo je da stvari koje ste stavili u između vitičastih zagrada. A u ne-while petlje, to tijelo se izvoditi barem jednom, i onda uvjet dobiva provjeriti prije to radi svaki sljedeći put. Tako zapravo, Sam, ti smeta pisanje jednostavnih while petlja u prostorima? >> Kako ste nešto poput napraviti novi ...? Upravo sam izbrisati sve što imate tamo. Da, samo ga rasprodati. >> Pa, ja vjerujem da imam ovo - koje ne želite, dok, ili želite ...? Da, samo ne dok istina, ispisati nešto. I neka se vidi. Aleksandar, shvatio sam da nikada vas upoznao. >> Oh, to je u redu. Dali - možete kodirati do učiniti-while petlja za nas? >> Da, pokušat ću. U redu, samo ćemo povući ovih gore na zaslonu, tako da vrsta ima ručku na što su razlike. Dakle, ovdje je ono što Sam je učinio. On je dobio cijeli zove ja da je on inicijaliziraju 17. Tada je, kaže, dok (int i = 17) printf ("Moje ime je Sam."); Dakle, ono što se događa kada smo pokrenuti ovaj kod? Tu je pogreška, što znači pogreška reći? Idemo ga podići i razgovarati o tome. Došlo je do pogreške, ona kaže. Ajmo se pomaknite prema dolje. Tako nam je dao ovu pogrešku, a to je rekao, "Hej, očekivao sam izraz." To je nekako zagonetan. Da, tako je točno - i opet, tu će biti još malo bug da ćemo uhvatiti u samo sekundi. No, to je još jedan od onih kakve čudne stvari terminologiju, tako da ovaj int i = 17 nije izraz. Što to izgleda kao da radi je to proglašavanje integer zove ja i to postavljanjem jednaka do 17. ili, bolje rečeno, stavljajući 17 u tom int i zove. I to nema smisla u kontekstu ovog while petlje. To nema smisla, kao što ćemo vidjeti, u kontekstu za petlju, jer za to petlja deklaracije krenuti s tim za int i iznosi nešto i ide dalje. Dakle, vi - popraviti nešto, svi pravo. Ovdje to ide; strašan. Tako sada stvari izgledaju malo drugačije. Par stvari su se promijenile. Možete li nam reći što su se stvari promijenile? >> Sam izvadio int, tako da nema deklaracija [nečujno] umjesto zadatku. Onaj znak jednakosti, stavio sam dvije jednake znakove, što znači jednak. Strašan. Da, pa što Sam nije bio on izvadio int koji je bio ovdje ranije, pa ako sam samo gledati na to - to je ono što je bilo ranije, da je rekao int koji je to proglašavanje - tako da smo izvadio tip. Tu je int, char, string, kratko, oni su pozvani vrste. Dakle, izvadio tip a zatim prethodno, on je imao samo jednog znaka jednakosti i ono što je rekao bilo je problematično o tome je kada imate jedan znak jednako, da je operator pridruživanja. To nije testiranje da li ili ne 2 stvari su jednake. To je zapravo postavljanje nešto jednako nešto. Mi smo stavljanjem broj 17 u varijablu ja. Dakle, učiniti takvu usporedbu, morate koristiti duplu jednak, koja je vrsta čudan stvar ali je prilično uobičajena pogreška. Dakle, jedna druga stvar Istaknut ću, ako ti ne smeta, da je u naša funkcija ovdje u int main, vidiš da je tijelo naše funkcije je pomak od lijeve strane po četiri razmacima ili karticu. Razlog što to učinite je samo za čitljivost. Kao što možete vidjeti u Samov while petlje ovdje, nije alineje uopće, i da ne utječe na funkcionalnost koda. To će se izvoditi isti. Tako na primjer, ako dođemo do vrha ovdje i pritisnite tipku Play naše, to će ga graditi, to će ga pokrenuti, i što će se dogoditi? Zašto je to još uvijek reći radi? >> Budući da ću držati ponavlja hi. Točno, i zašto je to držati ponavlja hi? >> Budući da je cjelobrojni nikada ne mijenja, tako da je uvijek 17. Da, točno, tako neka se vidi, nakon - podsjećaju me zoveš? Jimmy. Dakle, Jimmy je rekao da razlog to drži ponavlja hi iznova i iznova jer ovo stanje je uvijek istina. Mi nikada promijeniti vrijednost i. Mi nikada ne mijenjaju sadržaj onoga što je pohranjen u tom varijablom. Dakle, u ovom trenutku imamo tu pogrešku da vaš program generira previše izlaz, i ako mi se pomaknite prema dolje i vrsta pogled na ono što se ovdje događa, možete vidjeti da je to hi, hi, hi, hi, hi, hi, hi sve na putu kroz. Strašan. Dakle, vrsta leđa to izvorni točke da imaju uvlačenje ovdje u tijelu while petlje nije utjecalo na ništa. Program je još vodio sasvim u redu. Tipično za dobar stil - i to je nešto što ćemo gledati u svojim problematičnim setovima - pozivamo Vas da alineji to četiri mjesta, što možete učiniti po samo pritiskom na tipku Tab ili ručno stavljajući u četiri prostorima sebe. Cool, ok pa ajmo se vratiti i pogledati Alexander je to-a. >> Samo nekako ima malo problema. Ok, dobro ajmo raditi kroz njega. Je li to super? >> Da. Ok, pa ovdje mi ići. To je kod koji je napisao Alexander. Da li ići Alex - ok. Dakle, ovdje je kod koji Alex je napisao. Dakle, imamo našu deklaraciju glavni ovdje, i onda imamo ovo cjelobrojna varijabla zove ja se proglasio upravo ovdje. Imamo napraviti izjavu , a zatim tijelo opet s tim zagradama, tako da je ovo tijelo do-a - neka mi zumirati na to tako da je više čitati - iu tijelu, mi pokušavamo ispisati "ovo je tijelo", i + +, pa povećajte sadržaj 'i to dok ja dobiva se 3, i onda naš program završava. Dakle, ono što se događa kada smo pokrenuti ovaj program? >> Sam očekivao identifikator. Ok, tako graditi, pokrenuti, pojavljuje se pogreška. Što se događa? Mi dođite ovamo, smo dobili ovu pomalo grobni izgleda stvar, Očekuje se zarez nakon najvišoj razini deklaracije. To je nekako čudno. Ima li netko ideju što bi moglo biti događa? Nekako čudno, da. >> [Nečujno] biti proglašen izvan zagrade? Dakle, ne da ne primjenjuje onda kada koristite zagrade? Dakle, on je izjavio tog tipa izvan kojih zagrade? Oh, ti dečki - The vitičastih zagrada? >> Da. Da, točno. Tako ispada da je zapravo ne može proglasiti varijablu ovdje ovako. Ono što je možda pokušava učiniti je - izrezati ga od tamo - možete ga staviti unutar vitičastih zagrada ovdje ili druga alternativa je staviti ga u potpunosti izvan. I tako to - ovisno o tome gdje se zapravo staviti deklaraciju te integer varijable, možete dobiti dvije vrlo različite vrste varijabli; kada je izvan glavne, to je ono što mi zovemo globalna varijabla. To je izvan dosega bilo koje od funkcija - to nije u funkciji - a ako ćemo ga staviti unutar glavna, sviđa ovdje, onda se to zove lokalna varijabla, jer to je lokalna na opseg glavni. A mi ćemo govoriti malo više o tome što su razlike između dvije vrste i zašto koristiti različite vrste varijabli, ali za sada, možete samo zadržati sve varijable lokalne, jer mi nemamo nikakvu potrebu za globalnim varijablama. Ok, tako da je jedna stvar tamo. Pokušajmo trčanje opet, vidjeti što se događa. Trčanje, dobiti još jednu pogrešku. Zoom malo, što smo dobili? Mi smo dobili ovu očekuje zagrade nakon učiniti / dok. Bilo koji ideja što se događa? Dan? >> Je, a zatim zagrada i onda - Ne znam je li potrebno redeclare int, ali ne dok (i <3). Točno, da. Dakle, ispada da je Dan je to točno. Mi ne trebamo staviti ovaj tip opet ovdje. Mi umjesto toga može ubiti tip i samo to. U redu. Ja ću uvećanje natrag, pokušajte ga još jednom. Pogledajte kako, to traje uspješna. Ako smo pomicali prema dolje ", ovo je tijelo" ispisati tri puta. To je prilično slatko. Bravo, dobro učinio, dečki. Bravo. Kako to ide tako daleko? Pristojan ritam? Ok, cool. Dakle, kao što smo vrsta leđa to izvorni pitanje, mi - a sada, ako vidimo razliku, vidiš kako ovom do-while petlji uvjet dolazi posljednji. Dakle, kao što je računalo čita program budući da su C programi izvode vrsta u ovom redoslijedom, gdje su doslovno početi s prve crte glavnih, i tada izvršiti liniju 6, 7, liniju linije 8, 9, linija linija 10, linija 11, sve ove stvari na vrhu ovdje će se izvršiti nakon prije nego što smo ikada testirali ovaj uvjet vidjeti hoće li ili ne ja - ili sadržaju ja, a - su manje od broja 3. I samo ako nakon što smo dobili na liniji 12, sadržaj ja smo manje od tri mi zapravo skočiti natrag do linije 7 , a zatim ponovite postupak, i onda smo testirati stanje opet i opet i opet. Tako možemo usporediti ovaj s - zumiranje natrag, pomaknite se dolje da Sam verziji, ćemo gledati na to, malo promijenila, tako da to više nije beskonačna petlja - gdje ako smo povećali, vidimo da je kao ovaj program izvršava, to će prvi proglasiti int i, postavite sadržaj ću biti na 0, i onda ga pogodi stanje while petlje prvi, tako da u ovom slučaju, ovo tijelo, ova printf ("hi") i ja + + neće ni izvršiti osim ako sam je zapravo manje od ili jednaka 2. Dakle, ako sam je 3, na primjer, ako smo postavili ovo pravo ovdje jednaka 4 - ili ću napraviti tri, jer sam rekao 3 - a zatim ga pokrenuti, to će graditi, to će pokrenuti potpuno u redu, ali to se neće ispisati ništa, jer to nije taj test za prvom slučaju. Tako je u klasi, mi vrsta razgovarali o tome zašto ti učiniti-dok petlje korisni su ponekad i zašto bismo ga koristiti za razliku od while petlje. Jesu li - da li vi momci imate bilo kakve prijedloge zašto ne-while petlja može biti više koristan? >> Pa, mislim da uradi dok petlje je ako želite korisničkog unosa, jer na taj način možete ih pustiti staviti nešto u jednom, a ako je to točno, možemo prijeći na ostatak programa, ali ako to nije točno, onda držati na pitajući korisnika dok ste stavili pravi ulaz. Da, točno - točno, tako učiniti-while petlja je korisno jer kad pitajući za unos korisnika jer vam je potrebno da biste dobili korisnikov unos prije nego što zapravo može provjeriti. Tako je u pset 1, u pset 2, gdje ste pitajući za unos korisnika puno, da je zgodan stvar za koristiti za razliku od samo jednostavan while petlje. Ako koristite while petlja, možete učiniti istu stvar - možete učiniti istu stvar s while petlje kao što učiniti s ne-while petlje. Vi samo morati vrsta imaju ovaj dvostruki proces gdje ste dobili ulaz prvi, a zatim pokrenuti while petlja. Dok učiniti-while petlja, samo morate ga pisati jednom i to je puno čišći. U redu. Ima li pitanja? Smisla? >> Povratak 0 - to je samo vrsta pašu ili je to -? Da, tako možemo - dobro, mi ćemo pokriti to malo više kasnije ali ispada da je ovo povratak 0 da smo stavili na kraju glavnog sve vrijeme - ti nekako mogu samo uzeti kao nešto što radimo zasad. Ono što smo počeli razgovarati o tome s funkcijama vrsta krajem prošlog tjedna, a onda opet ovaj tjedan je da funkcija uzima inpute koji su ove stvari unutar zagrade; to su dva ulaza, naši argumenti ili parametri, ono što oni su također pozvani na našoj glavnoj funkciji, a zatim funkcija stvara output koje zovemo povratnu vrijednost. I povratna vrijednost u slučaju Glavni je ovo int ovaj broj, i način reći funkciju, "Hej, to je ono što vaš izlaz će biti ", je sa ovom riječi" povratka ", ta ključna riječ, a, i tako glavni povratka 0 ili glavna izlaza 0 je standard u C programima jer se vraćaju 0 od glavnih znači da "Hej, sve izvode s mog programa samo fino." Ako smo bili staviti nešto drugo osim 0, poput 1, na primjer, koja se koristi za reći tko je vodio ovaj program da je nešto pošlo po zlu. Dakle, kao što smo dobili više uključeni u stvari preko semestra, ako ikada se trebaju reći, "Ups, znate, nešto je pošlo krivo s ovim programom," umjesto da moje padove programa, želim obavijestiti trkač mog programa da je nešto pošlo po zlu, možete koristiti povratnu vrijednost, kao što smo ga zovu, to nije 0. Tako ćemo pokriti da malo više nakon što smo dobili u funkcijama. Takvo smisla? Ok. Funkcije su vrsta bizarno - Mislim da je za ljude koji imaju puno matematike pozadini, to dolazi malo lakše, pogotovo ako imate malo više apstraktne matematike pozadinu i na koje ste navikli govoriti o funkcijama i sve takve stvari. No, pokušat ćemo i pokriti ih i ići lijepo i sporo kao oni dolaze gore. Isto tako, cijela ova int argc, char * argv [], za sada, također možete uzeti kao tanjur kotla. Mi smo počeli da pokriju one malo u predavanju kada govorimo o argumentima koji se prenose u programe iz komandne linije, ali tvoj problem setovima i svojim programima, to je potpuno u redu samo napisati prazninu i držati ga jednostavno. A što ta praznina znači da je "Hej, glavna neće prihvatiti nikakve ulaza; ovo je samo program ćemo samo pokrenuti. Nećemo će mu dati bilo kakve dodatne informacije svaki put kad smo ga pokrenuti trčanje. " Dakle, za sada, možete to učiniti; možete čak i izostaviti 0 povratnu na kraju svoje programe i oni će pokrenuti sasvim u redu, ali ja preporučujem samo čuvanje da u. U nekoliko tjedana, počet ćemo s vrstom povući poklopac malo i razumjeti više o svi oni različiti mali pomični dijelovi. U redu, sada idemo razgovarati o našem drugo pitanje ovdje. Dakle, ono što ne "neprijavljenog identifikator" obično ukazuju ako outputted po jeka? Mislim da smo mogli vidjeti da je već danas. Može li netko dati rekapitulacija što to znači? Hajdemo vidjeti, Kelly - jedan od Kellys. >> Dakle - Da, ono što čini - >> Mislim kada, kao, ne proglasiti varijable i pokušati ga koristiti. Da, točno, točno. Dakle, ako ste ikada vidjeli ovaj izlaz kada pokušate sastaviti svoj program, baš kao i Kelly rekao je, to znači da ste koristili varijablu da ne proglasi, pa ako se vratim na naš prostor, i ja nešto slično printf ( "Pozdrav% s") i pokušati ispuniti da% s s promjenjivom je da nisam nigdje proglasio i ja pokušati ga pokrenuti, ćete vidjeti što mogu dobiti dolje na dnu ovog ovdje: "Korištenje neprijavljenog identifikator 'S'"; to samo znači da nije proglasiti svoju varijablu. Ista stvar će se dogoditi ako imate x, a vi pokušajte i pohraniti sedam u njemu i nisam proglasiti X. Ja dobiti tu istu pogrešku: "Korištenje neprijavljenog identifikator 'X'". U redu, pa Cezarova šifra, a ne što je vrlo siguran, Pustit ću ti dečki gledaju ovu kratku, kakve razumjeti zašto, i nadamo se nakon toga ovotjedno problema postaviti gdje se zapravo napisati Cezarova šifra, shvatit ćete malo više o tome što to znači biti siguran i nesiguran - ili nije sigurna, pretpostavljam - nesigurno je malo drugačija. Druga stvar je da su ove Ostala pitanja ovdje o funkcijama a što je funkcija, i mi vrsta razgovarali o toj nakratko kada smo razgovarali o povratnih vrijednosti; za nekoga tko je bio na predavanju, možete proučiti tko je bio na predavanju danas? U redu. Hajdemo vidjeti; popijmo - možete nam netko reći što je funkcija? Kelly? >> Uglavnom nešto što osloniti na nešto što je zapisano u knjižnici koja je složeniji tamo, a onda ti samo napisati kratku formu njega, tako kao da ste se odnosi natrag na toj knjižnici, pomoću sve to dugo kod i [nečujno]. Da, točno, a onda želiš nešto dodati na to? >> Da, mislim o tome kao sličan koncept formule u matematici gdje ste samo napisati formulu i onda možete priključiti varijable u i to je ono što je funkcija [nečujno]. Da, tako mi imamo nekoliko odgovora ovdje da su oboje jako dobro i pravo. Tu je pozivajući se koda koji je bio napisan u knjižnici negdje to je više komplicirano a onda možete osloniti na tom kodu i zapravo ga koristiti samo pisanje kratki oblik njega - ili, bolje rečeno, njegovo ime - i onda tu je i ova usporedba na formuli u matematici ili fizika, sve takve stvari gdje imate formulu i onda možete priključiti varijable u toj formuli do tada dobili rezultat formule, tako da mislite o tome što kao kvadratnu jednadžbu. Zamislite da umjesto da uče o što kvadratni formula je u math class, samo je imao malo kalkulator program koji to učinio za vas. Je li itko koristiti kalkulator programe u matematici nastave u srednjoj školi? Da, fizika klase? Gdje možete samo reći: "Hej, kvadratnu formulu. To su varijable koje želim ulaz. Sada mi dati odgovor. " To je vrsta ono što je funkcija. To je način za nas da vrsta pisati kao malom malo sub programa unutar našeg većeg programa i koristiti ga iznova i iznova tako da mi ne morate kopirati i zalijepiti kôd, možemo dati različite ulaze i izlaze dobiti različite, to je super zgodan kada pokušavate pisati različite programe u različitim vremenima. Tako na primjer, funkcija koja smo koristili iznova i iznova i iznova tijekom tečaja je printf. Printf je sama funkcija i ispada da je zapravo prilično dugo i komplicirano, gadno izgleda, funkcionira pisati. Dakle, kao jednostavan kao što se čini da nas ispisati stvari van na zaslonu, jer smo svi samo to učinio na početku dionice danas, Ispada da je to zapravo, znate, dobar par stotina linija koda. To nije nešto što sam ikada htio napisati, sigurno, ali smo dobili ga koristiti svaki dan, to je vrsta cool, tako da smo dobili da ga dijele jedni s drugima, s različitim programima, pa ćemo biti više u ronjenju funkcija; zasad, nismo - jedina funkcija da ćemo biti pismeno je glavni. Glavni sama je također funkcija, i možete vidjeti da je dobila izlaz, njegovi inputi kao što smo razgovarali o tome, a zatim njegovo ime, što je glavni. Glavna je vrsta - je posebna funkcija postoji. U vašem C programu, mora postojati glavna funkcija, i tako za sada, mi smo vrsta izostavljen pisanja prototip, ili izjava, glavni. Mi smo s obzirom da je za vas, i upravo smo je li ispuniti vrste praznine. >> Tako je za drugi set problema, ne trebamo se napisati u drugoj funkciji? Ja ne vjerujem da je tako. Vjerujem da je sve ovdje. Da, tako je Cezar Cipher, ne morate, ne izgledaju, i Vigenere, ne znaš ni tako - a to ispada da nikada ne zapravo imaju pisati funkcija, zar ne? Možete nazvati uvijek staviti sve svoje koda unutar Main, i mnogi programeri učiniti. Kao što smo premjestiti na, počnemo uvođenjem funkcije kao način očistiti svoj kôd, da bi ga više elegantan, u slučaju da imate zadatke - vrsta kao kada smo razgovarali o petlji, kako ponekad postoje stvari koje želite učiniti opet i opet i opet, i imate kakav naivan način - ili što mi često nazivamo "slamnati čovjek" rješenje, je samo kopirati i zalijepiti iznova i iznova - možete učiniti istu stvar s funkcijama gdje se samo kopirati i zalijepiti Isti broj iznova i iznova, ali da bloats kôd - to završi što je kod jako dugo - i ona također dobiva malo zbunjujuće, i onda to znači da niste u mogućnosti da se sviđa - ako ikada želite koristiti taj kod ponovno u drugom programu, također zapeli kopirati i zalijepiti opet, tako da jedna od stvari koje ćemo razgovarati o tome vrsta dizajna i stila vaših programa, pa kad ima smisla vrsta Paket nešto gore i staviti ga kao zasebnu funkciju, savjetujemo vam da to učinite, i to je nešto što, opet, nema tvrdih i brzo pravila. Rijetko smo reći da morate napisati funkciju zove to, ali to je više od jednog od tih stvari koje ste upravo razviti s vremenom kao što napisati više i više programa. Svaki više pitanja? Ok, pa ajmo sad Vratite se do ovog momka ovdje, pa ja sam još uvijek u ovom dijelu pitanja. Razgovarali smo o svim tim različitim one, što je funkcija, zašto pisati funkcije, kada možete samo kopirati i zalijepiti? Nadam se da smo vas uvjerili da je pisanje funkcija je dobra stvar. Dakle, sada idemo na ovom MySpace programa, a mi ćemo provesti malo vremena radi toga. Dakle, neka je vidjeti, može sam netko pročitati ovo za mene? Popijmo Mikhaila - bit ćete pročitati ovo za nas? >> Misliš vratiti kada MySpace - Natrag kad myspace je super. >> "Povratak kada MySpace je cool, to je sve bijes na tipu kao što je ovaj. Možda je to još uvijek? Nisam baš siguran. U svakom slučaju, pomoću CS50 aparati, CS50 Run, ili CS50 mjesta, napisati program koji traži od korisnika za poruke a zatim ispisuje poruku sa svojim prvo slovo veliko, sa svim ostalim slovima u izmjenične slučaju, po uzorku izlaz ispod, gdje boldfaced tekst predstavlja neki korisnik je ulaz. Radi jednostavnosti, možete pretpostaviti da je korisnik će samo ulazni mala slova i razmake. Razmotrite ovaj problem priliku da praksu; nećete biti zamoljeni da pošaljete ovaj program. " Fenomenalno, hvala. Dakle, kao Mikhaila rekao, ćemo napisati program koji MySpaces svoj kôd. Dakle, nije netko od vas koristiti MySpace? Svaki od vas ima myspace račune? Oh, da, da! To je prilično cool. [Smijeh] Znam. Ja Dating. Dakle, ono što mi pokušavamo učiniti je napisati program koja prolazi kroz i iskorištava prvo slovo a zatim svaki pismo toga - ili svaki drugi pismo nakon toga, žao mi je. Dakle - i što možete vidjeti u ovom primjeru, ovo je, kako smo pokrenuti program, pa to je samo rekao: "Mi smo trčanje program koji se zove a.out. Ulazni da ćemo ga dati će biti zatraženo. Mi ne ćeš dostaviti ulaz na naredbenog retka. " Ako ste nakon svih predavanja i rasprava o naredbenog retka argumente, to je vrsta gdje su oni - koji funky sintaksa na glavnom dolazi u sa int argc, sve te stvari, pa ovdje nećemo koristiti da, nismo se bave bilo to. Mi smo samo gonna get to upisali u od strane korisnika, i onda je to druga linija s funky kapitalizacije je ono što želimo naš program za izlaz. Dakle, umjesto da koristite aparati ili pokrenuti, koristit ćemo prostore, jer imamo prostore, pa ako ti dečki bi dobili kôd izgledati nešto poput ovoga, pa ću spasiti ovu reviziju samo tako imaš kotao ploča ovdje da izgleda ovako, int main (void), ništa u njemu. Zapravo, ono što ćemo učiniti je samo ćemo izbrisati sve zajedno. Želimo praznu listu, jer nećemo početi pisanje koda; a, mi ćemo pokušati snimiti neki pseudocode koji zapravo samo znači da ćemo napisati nešto što nije broj takav opisuje ono što želimo učiniti, nekako poput Davida učinio na prvi dan predavanja, ili mislim da je bio drugi dan predavanju kad je to učinio cijelu čarape demo. Vi se sjetiti da je - gledajući čarape? Josip je bio tamo vrsta tipkati na engleskom jeziku? Tako ćemo napraviti istu stvar. Dakle, kada sam početi pisati pseudocode, Ja bih početi gleda na ono što je ulaz će biti. I ja sam osobno dati slučaj uzorak, pa kao "hvala za dod!" A onda sam pisati ono što želim izlaz da se, koja je u ovom slučaju je nešto poput ovoga. I takav mi daje dobar, kao, startno mjesto za razmišljanje o tome, "Dobro, želim da se linija 1 i želim ga pretvoriti u liniji 2, " i takav pomaže voditi moje razmišljanje. Ovo je dobro mjesto za početak. Drugi način da mislite o tome, previše, kao što smo nekako premjestiti na i kao što ste to učinili u svojim programima, je razmišljati o vrsti kao što su rubni slučajevi na to? Koje su vrste od čudnih scenarija? Koje su čudni ulazi da bismo mogli dobiti? A što bi ti izlazi izgledati? Na primjer, jedan čudan ulaz će biti ovaj jedan, stvaranje apsolutno ništa, kao što bismo trebali čuti u tom slučaju? Nešto želimo razmišljati, previše. Dakle, baš kao i pitanje, što bi moglo želimo izlaz? Ako mi ne bi bilo ulaz na sve, što bi naš program biti izlaza? >> Ništa. Ništa? Zvuči sjajno. Dakle, želimo biti sigurni da ne pišete ništa ako ne dobijemo ništa u. Cool. Ok. Tako Ja ću pozvati na nekoliko ljudi, kao što smo proći kroz i samo shvatiti vrsta kao što opći algoritam a mi ćemo vrsta početi raditi kroz to zajedno. Dakle, neka je vidjeti. Missy. Kako mislite da ćemo početi? Što bi bilo dobro mjesto za početak ovdje ako želimo transformirati, recimo, linija 1 u skladu dvije? Može li vrsta samo mi objasniti, na engleskom jeziku, što misliš? Nemojte ni brinuti o kodu. >> Prvo bih učiniti da bi se vrsta izravnih korisnika da im kažem ono što želite. Ok, tako da, recimo, "Hej, korisnik. Želim string "- strašan. Tako ćemo napisati ovo dolje. Traži od korisnika za niz. To zvuči kao dobar početak. U redu. Pitajmo Kelly Ren ovaj put. Što bi mi onda želite učiniti sljedeće? Što je vrsta naš sljedeći -? >> Prikupiti njihov doprinos i pohraniti ga kao varijablu. Izvrsno. Dakle, prikupiti niz, ga spremiti u varijablu. Tako je bilo nešto posebno želimo učiniti ovdje? Ne želimo da provjerite njihov doprinos prije -? >> Da. Što bi moglo želimo provjeriti? >> Pa, rekli ste mi nemamo provjeriti da li je to broj, zar ne? Budući da ćemo pretpostaviti da je mala? Da. Tako ispada da - da. Dakle getString je zajamčeno da se vrate nam niz. To se neće vratiti broj za nas ili nešto slično. Tu bi moglo biti znamenka znakova unutar tog niza, ipak. A oni, možemo ignorirati kao što smo učinili kapitalizaciju. Ali prazan string je potpuno u redu, pa slučaju ovdje na liniji 4 i 5, Dobro, gdje nema unosa, i mi smo stavili ništa kao naše proizvodnje. Mi ne morate brinuti o tome da li da postoji nešto u nizu ili da je string najmanje 4 znaka; sve je u redu. Dakle, to je u suprotnosti, na primjer, s poput novčića programa koji su pisali gdje ste imali biste bili sigurni da su uzimajući non-negativne brojeve; imali ste kako bi bili sigurni da ste dobivanje točnog broja dana u mjesecu. A kako vi radite to? Kako bi ti taj test? Što da zahtijevaju da koristite? >> Do-a petlje. Do-a petlji; druge vrste petlji, također, da. Tako ispada da ne morate koristiti petlju u ovom slučaju, kad smo pitajući za niz, što je vrsta lijepo. U redu, idemo dalje. Dakle, Stella. Možete li nam reći nešto o tome što bismo trebali učiniti sljedeće? Dakle, sada smo dobili niz, imamo ga pohraniti u varijablu; ono što trebamo učiniti s nizom? >> Moramo - identificirati 2 - Da, baš to reći na engleskom jeziku, to je strašan. >> Prepoznajte [nečujne] prijestolnice - ili, veliko. Da, tako da bih identificirati one koji su velika i mala slova. Mi ne možemo velika slova ili mala slova dok ih smo identificirali one koji. Tako ćemo staviti to ovdje. Dakle, samo razmišljam o tom procesu, kako ćemo to učiniti ovu identifikaciju? Znate li, Dan? Vrsta ono što smo - što alat morali bismo koristiti izvan naše alatni? >> Ja bih ga stavio u nekako u kao niz ili svaku liniju je njegov vlastiti mali okvir, , a zatim ga velika slova od tamo ili ne. Ok, tako da jedan alat možemo koristiti je niz. Što moramo pogledati u nizu, iako, shvatiti - morali smo pogledati znakova. >> Dakle, moraš gledati na duljinu niza? Da, tako je dio koji je uzimajući duljinu niza. Samo iz znatiželje, što ćemo koristiti da biste dobili duljinu niza? >> Strlen? Da, strlen, a mi to nazivamo "strlen" Sve ove niza funkcija, pa je strlen funkcija, i to je super zgodan, jer ga možemo koristiti na samo reći, Hej, strlen: Evo string, recite mi koliko je to. U predavanju danas, David je govorio puno o tome kako strlen se provodi, što se zapravo događa iza kulisa. No, to je jedna od vrlo praktičnih super one. Postoje one druge koji su također u string knjižnici, kao strcmp, koja je u obliku "strcmp", koji se koristi za usporedbu žice međusobno. Ostale one koje će se koristiti kao strstr, što je dobro za pronalaženje pod žice i tako dalje. Za veći dio, svi oni početi sa str i onda ići na nešto drugo. Razlog oni ne ih zapravo čarolija kao string i tako dalje je zato natrag u kao u ranim danima C, kada su ljudi bili prvi pisanje i sve to, su imali ograničenja o broju znakova da ste mogli koristiti za funkciju imena i imena varijabli, tako da je sve kao super kondenzirani. No, kad god vidim nešto što počinje sa str, koji obično znači da to ima veze s nizom. Ok, tako da moraš dobiti duljinu niza, i onda, što ćemo učiniti s likovima? Znate li, Sam? >> Ja nemam pojma, ja sam bio težak to shvatiti. Ja stvarno ne znam - Volio bih da su na neki način da - Mislim, ja bih misliti možda bismo mogli učiniti nešto s omjerima i izjednačava, ali ja ne znam ni za funkciju kao što je to. Da. >> No, to - to ne bi nužno raditi, jer tada bi dobili prostora da se - ti bi trebala imati prostora da biste dobili savjete o tome - Ok. >> Ne znam - Ja sam takav izgubljen u ovom trenutku. Da - Ne, ne, ne, to su dobri bodova. Dakle, ono što trebate učiniti je, kao što je Sam je rekao, trebamo pratiti što slova su ak slova, i one koji su čak i slova. No, mi želimo biti sigurni da nismo samo gleda na neparan, pa čak i indeksi u nizu, nego gleda ak, pa čak i slova u nizu, tako da ćemo morati nekako imati tu razliku između slova - kao što je zapravo A, B, C, D, ili tako dalje, i što stvari nisu slova, ali još uvijek u našem nizu. Na primjer ovdje, kao što je ovaj uskličnika nije pismo, ali to je još uvijek dio našeg niza, to je još uvijek char. Isto tako, sve ove prostore - to nema smisla da iskoriste prostor, zar ne? Dakle, želimo biti sigurni da smo nekako preskočite one dok je još uvijek prate koeficijente i izjednačava. Tako nekako u našem programskom alatni do sada, ako hoćete, imamo niz različitih alata da smo razgovarali o tome. Dakle, jedan, na primjer, varijable, kao što smo razgovarali o ovdje. Drugi alat smo razgovarali o su funkcije. Tako smo razgovarali o varijabli u našem pseudocode ovdje kao što ćemo koristiti za pohranjivanje naš niz. Razgovarali smo o funkcijama da biste dobili duljinu niza, kao strlen. Razgovarali smo o nečem drugom, a mi smo razgovarali o tome za puno ranije u poglavlju danas: petlje. Što vi mislite o korištenju petlju u ovom programu? Jared, što mislite? Bismo li koristiti petlju u ovom programu? >> Vjerojatno ne, ne, jer ne moraju proći kroz to više nego jednom. Ok, ne morate proći kroz ono što više od jednom? >> Cijeli niz. Točno, tako da ne morate proći kroz niz cijelom jednom. Žao nam je da je apsolutno nema smisla! Vi ne morate proći kroz cijeli niz više nego jednom. Ok. Što vi mislite? >> Mislim da je bolje da ih koriste tako da možemo učiniti kao kapitalizirati dok mjesto nje je [nečujno] broj. Odlično, i tako kapitalizirati što? Ok, tako da smo reći da trebamo koristiti petlju jer želimo veliko slovo, a to nije broj. Dakle - Oprosti, jesi li želite dodati? >> Htio sam reći da je način na koji postupa niz i to [nečujno] zasebna [nečujno] na likovima? Da. >> A onda možemo dodijeliti brojeve - ili na temelju lokacije slova u nizu? Da. >> i utvrditi da li je to čudno ili čak i kapitalizirati pismo sama dok je lokacija pisma [nečujno] - žao. Izvrsno. Dakle, samo rekapitulacija. Možete li me podsjetiti svoje ime ponovno - Žao mi je. >> Charlotte. Charlotte, ok. Pa što Charlotte govori, koja je potpuno u pravu - Bože, ovo sviđa da auto alineji na mene - je da, ako gledamo niz kao što je ovaj na vrhu - "Hvala za add" - kao slijed znakova gdje je na položaju 0, h je na poziciji 1. Je na dva, onda imamo 3, 4, 5; prostor je na položaju 6. Dok - što je položaj f? 7! O? 8. R? 9. A onda smo dobili 10, a onda ja stvarno ne mogu ga napisati bez njega nekako uzimajući nered na ekranu. No, to je zapravo kako možemo govoriti o gudače u sjećanju. Je li to niz je niz znakova, i kada govorimo o pojedinom liku u nizu, često smo učiniti pozivajući se na taj lik poziciju u nizu, Vjerojatno isti način na koji smo razgovarati o rujna što je deveti mjesec u godini ili ponedjeljak kao prvi dan u tjednu. Dakle, to daje nam način da se shvatiti one koji su čudno u odnosu na čak jer možete vidjeti ovdje, ako ga se slagala s ovom T, možete vidjeti da sve one kapitalizirane su na čak pozicijama, barem za prve riječi, i onda se stvari izbačen nakon što smo pogodak u taj prostor, jer mi se ne računaju ovaj prostor kao pismo, pa to je kao da smo počeli i ode 0, 1, 2, 3, 4, 5, prostor, 6, 7, 8, prostor, 9, a zatim 10, 11, 12, i tako dalje. Cool, pa ćemo definitivno želite koristiti neku vrstu petlje ići preko svakog od likova u red. Dakle, u ovom trenutku, vratit ćemo se na našu staru pseudocode ovdje. Kao dio ovog identifikaciju one koji su velika i one koji su mala slova, mi ćemo to želite učiniti u nekakvoj petlji. Petlja, debelog crijeva. Kakav petlje, od vrste petlji koje imamo, Čini se da je dobar za korištenje u ovom slučaju? >> Razmišljao sam for petlja. A zašto ste mislili za petlje? >> Budući da počinje od nule, a zatim kad smo doći duljinu niza, i onda svaki iteracija možete [nečujno], previše? Da, točno. Dakle, iz različitih izbora petlje, imamo za petlje, dok petlje, i učiniti-a petlje. Gdje za petlje je posebno korisno kada želite znati vrsta gdje ste na u petlji, koliko puta se petlja izvršen tako daleko. Koji je točno ono što želimo znati u ovoj situaciji, kao što je Kelly rekao je, temelji off od Charlotte ranije komentar da želimo znati poziciju lika u nizu, i za petlje će nam dati upravo to, jer ako počnemo vrsta osvrtanja na našem nizu, ako krećemo za petlju na 0, i idemo gore kroz duljinu cijelog niza, onda možemo povezati T slovo s 0 u našem za petlju, slovo H s jednom u naš for petlje, i tako dalje, ide sve na putu do kraja niza. Pa krenimo kodiranja ovo samo malo samo tako dečki dobili osjećaj za ono što izgleda. Idem spremiti ovo, pa mi imamo našu pseudo kod ovdje, i ja ću izbrisati sve. Dakle, imam praznu listu. Ja ću početi pisati int main (void) { Ja ću staviti povratnu 0 u a zatim}. Dakle, obično kad sam početi program, to je ono što sam početi sa. Ja ću ga spasiti tako da vi to imate. Dakle, jedna od prvih stvari koje smo razgovarali o bilo dobivanje informacije od korisnika i pohranjivanja u nizu. Kako smo dobili informacije od korisnika? >> GetString. GetString, sve u redu. Dakle, ako sam upisati GetString () i zarez. Pokušajmo radi toga; će ovaj mali, prije svega? A zašto ne će to pokrenuti? >> Morate proglasiti varijablu. Imam proglasiti varijablu. Ok. Pa kako ću to učiniti? Dali smeta pisanje nešto, to dijeljenje? A onda možemo ga podići. Hajdemo vidjeti, Dan, pravo, ok. Ili Daniel. Kopirajte da, gudački ulaz = GetString (). Strašan. Hoće li to pokrenuti? Pokušajmo. Hit vožnji, učitavanje koda, zgrada, došlo je do pogreške. Ok. Dakle, što se događa ovdje? Koristite neprijavljenog identifikator "string". >> Moramo uključiti knjižnice? Da, tako je Dan rekavši moramo uključiti knjižnice. Je li to ono što si htio reći, Stella? Strašan. To je strašan, tako Stella, može li kopirajte ovaj kod od Daniela prostoru? Ako kliknete na Daniela Roland Ki, kopirajte ga, i onda ćete staviti uključi liniju, a zatim ga spremiti van? Javite mi kad ste spremni. Dakle, to uključuje sintaksa je također vrsta funky; tu je kao onaj hash tag, i tu je uključiti, a zatim tu su ti kutnika. Sjećate li se kako to radi, ili bih trebao staviti ga na ovom kodeksu ovdje? >> Ja sam dobro. Ok. >> Sam ga ispisati - Nisam bio siguran što knjižnica, iako. Oh, u redu - da, tako je to CS50 knjižnica. >> Oh, ja sam stavio stdio knjižnicu. Oh, to je dobio - da, ne, that's - pa ispada da je niz je zapravo nešto što je posebno CS50. Tu zapravo nije pravi tip niza jer ovdje, niz je u tipa položaju, - mi smo deklariranje varijable zove ulaz tipa string - i mi smo stavljajući unutar ulaza vrijednost koja dobiva vratio nas: izlaz ovog GetString funkcije poziva. Možete reći ovo je funkcija poziv, jer to je dobio zagrade, baš kao i printf radi, baš kao i strlen ne. No, niz je zapravo nije pravi putovanja u C jeziku. Mi smo to napravili u vrsti, a mi ćemo se o više što to zapravo jest u C, jer postoji način da se rad sa nizovima; upravo smo učinili nešto da izgleda malo ljepše. Dakle, ovdje mi ići. Evo Stella koda. To je dobio # include . Ostali će ljudi to zovu kao mljeveno meso su ponekad ili oštar uključiti. Sada možemo početi, pokrenuti ga, i još uvijek se pogreška. Idemo vidjeti što se događa. "Nekorištene varijabla 'ulaz'." Ok, tako da je cool, to je cool. Mislim, to nije stvarno cool, jer smo uzimajući greška i to ne radi, ali što to govori da je nismo koristili našu varijablu, što ima smisla. Nismo pokušali učiniti ništa s njim. To je način na koji Jeka pokušava nam pomoći bi bili sigurni da nećemo samo pomoću varijabli i onda nehotice nazivajući ih nešto drugo kasnije u našem kodu, pomaže nam izbjeći pogreške na taj način. U redu, tako da smo dobili informacije od korisnika, smo ga pohraniti u varijablu. Sljedeći korak je do tada početi gleda na sve znakove u nizu i identificiranje one koji su se velikim slovima i one koji su se mala. I kao što je Kelly i Charlotte odrastao, mi to pomoću for petlje. Dakle, ne netko sjetiti sintaksu za petlje a željeli uzeti nož na samo pisanje prva linija za petlje, samo za malo? Kelly, želiš dati ga probati? >> Da, tako da ćete morati inicijalizirati prvi, pa sam stavio i = 0, i onda sam ja > Da, ja sam zeznuo malo, ali da. Ok, ajmo ga povucite prema gore. Strašan. >> Ali onda ja ne znam ako je to - Da, u redu. Dakle, evo što Kelly je dobio: pogledajmo to brzo. Dakle, ona je uključena cs50 knjižnicu na vrhu. Ona je uključeno standardni IO knjižnicu na vrhu, i standard IO ima funkcije kao što su printf, pa ako ste ikada želite koristiti printf, morate tu liniju. I onda je ona uključena string knjižnicu, koje će trebati, jer je niz knjižnica ima funkciju strlen, koji ćemo dobiti u samo malo. Dakle, ako ćemo gledati na ono što je Kelly je učinio ovdje, Možete li nam kroz ono što si učinio? >> Da, tako - mislim, dobio sam pogreške, pa - Da, ne, it's - >> Tako sam htio nazvati niz koji sam dobio samo "niz". Htjela sam isprintati niz i onda - Htjela sam da bih postaviti niz kao kao niz svaki znak biti drugačiji [nečujno], zar ne? A onda sam htjela početi na poziciji 0 i onda svakih dva mjesta, Htio sam kapitalizirati, tako da sam samo opisao ga je kao 23, jer sam bio u potrazi na ASCII tablice. Dakle, to je ono što sam mislio - Znam da to nije točno. Uspio sam, tako da je ovo odličan početak. Mislim puno okviru je mjesto ovdje. Idemo kroz vrste redak po redak i vidjeti što se događa. Dakle, način na koji mi se sviđa da to učinite je samo početak prikupljanjem kod i ostavljajući prevodilac mi reći kao što je krivo s mojim kodom, jer prevodilac je stvarno dobar u vam reći što nije u redu s kodom. Dakle, ako smo ga igrati, izgradnju, i to ne graditi. Ona kaže došlo je do pogreške, pa ako mi se pomaknite prema dolje i pogledati prve pogreške, to je rekao - smo pomicanje natrag do vrha, možemo vidjeti postoji pet pogrešaka koje generira ovdje dolje na dnu. Ups, to je stvarno odsječen. Mislim da se jednostavno neće dobiti ništa bolje. Ovdje ćemo ići. Dakle, postoje 5 ukupno pogreške nastale. Evo ja mogu samo vidjeti prvi 2, tako da mogu premjestiti ovaj se malo i onda vrsta pomaknite se prema gore. Ovo je naredba koja je pokrenuti sastaviti kôd, i onda je prvi pogreška bila u file.c ovdje: "Očekuje se identificiraju ili '('", i to je bio na toj liniji gdje smo rekli string = GetString (). Možete vidjeti ovdje da je bio na liniji 8 od file.c, i onda vjerujem da je to lik 12 - to je pogreška. Dakle, ono što je pošlo krivo na liniji 8 - Kelly? >> Vi samo trebate ga nazvati, poput, pismo ili tako nešto, kao niz s ili nešto? Da, pa ispada da su ti posebna vrsta imena, tako niz, int, char, short, oni su svi posebni ključne riječi, a vi zapravo ne može ih koristiti kao imena svojih varijabli, jer prevodilac gleda da i kaže, "Oh, znam da je to vrsta" tako da zapravo ne može imati string varijabla zove string, kao što sam pokušava učiniti ovdje, to neće raditi. No, umjesto toga, možemo to nazvati nešto kao s ili st ili STR. Mi također ne bi se moglo nazvati int. Mi ne možemo imati niz zove int. Mi ne možemo imati niz zvan char; nitko od onih koji će raditi. Dakle, samo ćemo ga nazvati i zasad. Strašan. Dakle, što je sljedeće što se događa u ovoj liniji? String - ova linija izgleda prilično dobro? Dajmo mu još probati, ajmo ga pokrenuti. Ok, tako da smo još uvijek dobiti pogreške. Ovaj put, mi smo do četiri pogreške. Tako smo dobili jednu od njih. Idemo gore. "Neočekivana vrsta naziv 'string': očekivani izraz," da? >> Da, to je zato što sam pokušao navesti niz. Da, tako da izgleda kao da smo sada također morati ići popraviti svih tih referenci na žici. Možete vidjeti postoji referenca na string ovdje, jedan ovdje, jedan ovdje, tako da možemo premjestiti sve to s. Izvrsno. Ok, to ponovno pokrenuti. Građevinsko - druga pogreška dogodila. Dobro, sad smo dolje na jednom pogreškom, tako int i = e, a zatim su uglate zagrade. Dakle, možete li nam reći malo o onome što su radili ovdje, Kelly? >> Da. To je bio na liniji 10. >> Ja ne znam da li mi je potrebno sve to, ali mislim da sam bio težak to - Ja ću ga spasiti tako da možete slijediti zajedno. >> Mislim da sam bio pokušava reći početi na poziciji 0 na početku moje za petlje, pa mislim možda da je rekao bilo nepotrebno. Dakle, samo na recap, ste rekli da je to - da su pokušavate pokrenuti to na poziciji 0 i dobiti ovaj - da, tako da mislim da je ranije, također, kada su hodali kroz koda, ste pričali o tome kako ste htjeli liječiti niz kao polje tako da možemo pristupiti svaki lik pojedinačno. Mislim Dan spomenutih polja, također, pokušava pretvoriti konce u nizovima. Ispada takvu ispod haube, Niz zapravo je pohranjena kao polje, već a možete mu pristupiti kao niz; nema pretvorbe koje morate učiniti. Niz nije li - tako - Niz nije stvarno polje, , ali možete mu pristupiti kao takav, jer su svi likovi pohranjeni jedan tik do drugoga u memoriji, pa ako želite da biste dobili prvi znak niza, to je isto kao i dobivanje prvi cijeli broj u integer niz. Tako smo često - hrapavi odnose se na točku 2 kao oh, kao niz, kao niz, iako je zapravo - they're vrlo različite stvari, ali možete ih liječiti vrlo velik dio isti. Tako ispada da je ova linija zapravo - ne trebamo učiniti sve pretvorbe, i zapravo, to zapravo nije valjan izraz, što je ono što naša prevodilac nam govori. To je rekao: "Hej, to očekivalo izraz, i ono što sam dobio ovdje je nešto što nije izraz. " Da proglasiti niz, sve što trebate učiniti je nešto ovako sa zarezom, i onda reći lepezu koliko dugo želite da bude, kao 5, tako da ovaj linija 10 će proglasiti niz zove ja s pet brojeva u njemu. Ovo je stranu, a to nije potrebno za kodu, ali to je - to je vrsta ono što je izjava izgleda. >> Kako ne bi li koristiti char ja [strlen (s)]? Char ja [strlen (e)]? >> Char sam, a zatim unutar zagrada, strlen (s). Da, tako da smo mogli - bismo mogli to učiniti, i to će proglasiti - što bi to učiniti? >> Mislim da će proglasiti niz od, kao što su - od - oh, ne morate i - oh, Da, svakako ne treba ja. Možete objaviti niz znakova duljine s. I tako ono što Sam kaže da je ova linija 10 - neka me stavi neki prostor između njega i ostatka tako da ga možemo izolirati - ova linija 10 će proglasiti niz od znakovi, strlen (e) u vrijednosti od njih, ali mi zapravo ne treba ja, a razlog trebamo Ja je zato moramo dati niza ime; inače, ne bismo imali način da se odnosi na niz kasnije u kodu. Dakle, ovo ovdje je niz ime i unutar je duljina. To će nam dati niz, ali to je - opet, ovo je izjava. To nije zadatak, to nije inicijalizacije. Ako ćemo proglasiti ovaj niz ovako, tu je zapravo ništa u sadržaju polja. To je samo smeće - što god je tamo. I kao što smo rekli, mi zapravo ni ne treba to učiniti pretvorbe, jer smo već može liječiti niz s kao polje. Znam da smo trčanje malo dugo na vrijeme, ali ja želim samo jako brzo doći do ove for petlje i pokazati vam kako biste pristupili pojedinačne znakove u nizu, jer to je ključ za naš zadatak. A onda ćemo vas pustiti odande. Dakle, ovdje, imamo za petlje da izgleda gotovo dobro. Ono što nije sasvim gotovo tamo? What's - što nije baš točno o tome za petlje? >> Nema vitičastih zagrada? Nema vitičastih zagrada, za jedan. Želite li biti sigurni da imamo tijelo petlje s vitičastim zagradama. Ups, nije trg braće! I ono što je sljedeća stvar koju trebamo učiniti s tom petlje? Ako sam probati i pokrenuti ga, Produljenje ovu pogrešku da ću dobiti? Ja se sve ove greške - Moram ja inicijalizirati. Izvrsno. Dakle, ovo će biti petlja - to nije baš tamo, ali to je sve jako blizu. Ovaj kod sada možemo pokrenuti, graditi, pogreška i dalje javlja. Zašto je to još uvijek žali, govoreći izraz je neiskorišten, i da je zbog toga ova linija ne učiniti ništa. Nismo ga spremiti bilo gdje, a mi se nije štedjelo na rezultat. Gdje bismo trebali biti štedljivi ovaj rezultat? >> E ili ja? Točno, a to funky sintakse, ovo je s uglatim zagradama znači pristupiti i-ti karakter s.. To će biti nešto što je jako važno za dodjelu. Nažalost, mi ćemo morati zaustaviti ovdje, tako da Sebastian poglavlje može doći u, ali ja sam sretan da ostane nakon izvana i da će poduzeti sva pitanja. Dakle, hvala vam dečki za dolazak. To sada treba uploadati, izgraditi, pokrenuti. Možemo unijeti string poput "Hello" i ispisuje "QOX". [Smijeh] Dakle, nije baš tamo, ali se kreće, uzimajući prema tim krugovima! Hvala što ste došli, a ja ću biti vani.