[MUSIC JOC] JASON Hirschhorn: OK, toată lumea. Bine ați venit la secțiunea. Aceasta este CS50, foarte nostru primul super secțiune. După cum știți cu toții, săptămâna viitoare secțiuni regulate vor începe, dar în această săptămână suntem împreună. Există mine. Numele meu este Jason. Sunt un lector în informatică. Avem Andi, cine e șef AT de CS50. Și Scaz, profesorul Brian Scassellati, el este un profesor in Computer Science. Suntem capetele CS50 la Yale. Puteți trimite prin email întotdeauna ne heads@cs50.yale.edu. Vom fi la prelegeri. Vom fi la birou ore. Dacă e ceva ce putem vreodată face pentru tine, orice ai nevoie, nu ezitați de a ajunge la noi. Deci, ce vom face astăzi? Sau înainte de atunci, ceea ce este vine în această săptămână? Deci orelor de program este de luni, marți, Miercuri, și joi, 08:00 - 11:00. Există un program de pe site-ul. Secțiunile, cum am menționat, sunt începând de săptămâna viitoare. Și veți găsi în această săptămână ce cronometra secțiune este, ce zi este, și cine este TA ta. Problema Set 1 se datorează la joi la amiază, vineri la prânz, cu o zi mai târziu. Da, aveți nouă zile întârziere. Și acolo sunt nouă seturi de probleme. Și poate folosi doar un singur zi întârziere pe set problemă. Da, de fapt, toate problemă seturi sunt datorate vineri la prânz. Asta e tot. Tot ce detaliile sunt pe programa. În fiecare vineri, avem prânzuri. Ne place pentru a face acest mare Desigur simt un pic mai mic. Deci ești binevenit să RSVP. Masa de prânz gratuit cu colegii colegii și personalul. cs50.yale.edu/rsvp. Toate aceste lucruri pe care Am pe ecran, și mai mult, puteți găsi cs50.yale.edu sau cs50.harvard.edu, dacă te duci la Harvard și sunt urmăriți acest on-line. De asemenea, pe aceste site-uri, nu sunt o tona de resurse pentru tine. Fiecare curs are nu numai video de curs, dar remarcă, de asemenea. Cineva vor urmări curs și ia notițe pentru tine. Astfel încât să puteți plăti doar atenție în timpul prelegeri, sau puteți utiliza notele lor / noastră ia act pentru a suplimenta propriile note. Există diapozitive on-line. Sursa code-- tot David trece peste în curs, sau Scaz trece peste prelegere, care codul sursă este disponibil online precum și, după cum cum am, video menționat. Secțiunile, de asemenea, vor fi toate filmat. Toate aceste diapozitive va fi disponibil. Toate din acest cod va fi disponibil pentru tine. Există pantaloni scurți pe site-ul în cazul în care Membri ai personalului CS50 cheltui cinci pana la 10 minute trec prin subiecte pentru tine. Unii dintre cei care le-ați deja întâlnite în seturi de probleme. Orelor de serviciu, după cum am menționat, luni prin joi, 8:00 la 11:00. CS50 studiu este o resursă fantastic. Există probleme practice, slide-uri de propoziții, bug-uri cunoscute că studenții place să curgă în, pentru fiecare esență, noi subiect va acoperi în acest curs. Și, în sfârșit, cu privire la acest diapozitiv cel puțin, Reference50 care vă oferă informații pe toate funcțiile C ai putea vreodată, eventual, spera de a utiliza și multe, multe altele. Din nou, faptul că dot dot dot la în partea de jos a ecranului este de a indica faptul că există chiar și mai multe resurse de pe cele două site-uri: cs50.yale.edu, cs50.harvard.edu. Deci, ce facem azi? Ei bine, în primul rând am de gând să dea te uiti la resursele. A făcut deja asta. Uită-te la noi. Acum, vom trece peste tipurile de date și operatorii din C. Atunci Andi va veni aici și du-te peste biblioteci în C, printf (), o funcție cu care sunteți deja familiar sau va deveni rapid foarte familiar. Și veți merge, de asemenea peste condiționale și bucle. Și apoi în cele din urmă, Scaz va trece peste ID-ul CS50. Dacă nu ați porumbel în deja în Problema Set 1, precum și modul de utilizare a comenzi terminale și utile și apoi vă dau câteva demo-uri și codificare practică în ID-ul CS50. Înainte de a sări în acest conținut de pe partea asta, cineva are întrebări până acum? Grozav. BINE. Schimbarea unelte. [Schimbare a vitezelor] Asta am fost eu deplasare unelte într-o mașină manual. Deci, tipurile de date în C, nu poți avea doar un X variabilă și l-au fi pe linia 10, un număr întreg, poate numărul 1, pe linia 20, un număr zecimal 10.5, și linii atunci un cuplu mai târziu, un șir de caractere, iubesc CS50. În C, variabilele pot fi numai un singur lucru, și doar un singur lucru. Și deci va trebui să le dea tipuri. Și pe acest forum, am au o listă de tipuri. Există caractere, care suport pentru caractere. Deci asta e o literă A, B, C, D. Aceasta poate fi, de asemenea, un spațiu, sau care poate fi, de asemenea, un nou personaj linie. Există numere întregi, care sunt la fel numere, întreg Numere întregi sau rather-- dar nu zecimale. Pentru zecimale, avem Numerele în virgulă mobilă. Plutitoare numerele punctelor sunt numere cu zecimale. Apoi, există tânjește, care sunt numere întregi, în esență, mai lungi. Veți observa că o lungă este 8 întrucât un int este de 4. Voi ajunge la faptul că într-o secundă. Asta pentru că tânjește poate stoca chiar mai multe numere întregi decât un întreg poate stoca. Dublu este un float lung. Și, în sfârșit, ne-am string, care este un tip care le-au folosit probabil înainte. Dacă includeți hashtag # includeCS50.h în fișierul sursă, atunci puteți utiliza un tip de șir. Nu e de fapt construit în C. Există câteva alte tipuri de asemenea. Dar acestea sunt cele principale cu pe care le va folosi și se confruntă. C ca, din nou, am menționat, fiecare se variable-- poate fi doar un singur tip și un singur tip. Asta pentru că C este un static limbă dactilografiate, spre deosebire pentru limbi tastat dinamic în cazul în care dacă veți crea o variabilă puteți schimba ceea ce este stocat în l ca te duci pe la programul tău. Aici pe dreapta parte, am diferite dimensiuni din aceste tipuri de date în octeți. Deci, un caracter este de 1 octet. Asta e 8 biți. Și asta înseamnă că 8 biți există opt 0s și 1s. Am văzut aceste demo-uri în primul săptămână cu care becuri binare. Cu 8 biți sau 1 octet, putem reprezintă numere 0-255. Dreapta. Dacă toate 8 biți sunt 0 e 0. În cazul în care primul bit este 1, care este numărul o, și așa mai departe, tot drumul până la 255. Și de aceea pentru caractere pe care le puteți au, în esență, de până la 255 de ei, dar asta e o multime pentru a acoperi toate personajele care avem nevoie pentru a utiliza. Pentru numere întregi, puteți avea și 0 atunci va trebui 2 la 32 minus 1. Acestea sunt cât mai multe opțiuni aveți pentru numere întregi. Pentru un timp, aveți 0 la 2 la 64 minus 1. Deci, aveți multe, multe, mai multe opțiuni pentru tânjește. Siruri de caractere, care este un semn de întrebare pentru că asta e un cliffhanger pentru mai târziu. Da. Aș putea spune toată lumea e pe marginea scaunului lor, ca ceea ce e semn de întrebare? Este un cliffhanger. Vom acoperi în cele din urmă dimensiunea siruri de caractere și vorbi mai mult despre siruri de caractere. Deoarece string este de fapt una dintre roțile de formare am pus în această Desigur, la începutul și apoi scoate mai târziu pe, pentru că siruri de caractere in C sunt de fapt indicative pentru tablouri de caractere. Dar, din nou, e un Cliffhanger pentru mai târziu. Înainte de a trece la orice întrebări, comentarii, preocupările legate de acest diapozitiv? BINE. Trebuie să fiu un explainer fantastic. De asemenea, atunci când ați programare, ai de gând să utilizați acești operatori. Semne foarte simplu care poate face simplu operațiuni, cu care esti, probabil, deja foarte familiar. De exemplu, pe partea dreaptă în partea stângă, vom vedea adăuga. Pentru a adăuga, faci doar un semn plus. Și așa s-ar putea avea două variabile x și y. Puteți face x + y în codul dumneavoastră. Poate vrei sa-- spui au numărul 7 și 3, doriți să stocați pe care într-o sumă variabilă numită. Puteți face int pentru tipul, spațiul sumă, numele variabilei, = 7 + 3; Ce-ar care se păstra în sumă? Oricine? Dacă aș fi avut în suma = 7 + 3. Ce s-ar fi stocate în sumă? Puteți doar strige. Audiența: 10. JASON Hirschhorn: 10! Asta-i exact corect. Ce zici de la suma = 7-3, Eu folosesc doar ca semn de bord. Ce se întâmplă pentru a fi stocate? Audiența: 4. JASON Hirschhorn: 4. Sumă este, probabil, numele greșit pentru variabila, dar 4 ar fi stocate. Să se înmulțească în C, utilizați putinul Caracter Star, nu utilizați un x. Pentru a împărți, a utiliza un Forward Nu Slash simbolul diviziune. Și de a modulo, utilizați simbolul sută. Deci, să spunem că vreau să văd Int z = 7% 3, ceea ce ar fi stocate în z? Deci, asta e, în esență, întreabă ce face modulo? Stie cineva ce face modulo? Da. y 4. SPEAKER 1: Este restul. JASON Hirschhorn: este restul, atunci când împărți. Deci, 7 împărțit la 3 este de 2 rest 1. Deci 1-ar fi stocate. Ai făcut scădere, dar asta e modul în care funcționează. Asta e ceea ce face operatorul modulo. Este nevoie de un număr de ea împarte cu un alt număr și se întoarce la tine ce a mai rămas. Deci, din nou, cu 7% 3 vă oferă o, pentru că 7 împărțit la 3 este de 2 rest 1, și returnează restul. Ce zici să mergem înapoi un pas în acest semn divizare. Dacă am făcut 7 / împărțit la 3 nu cunosc pe nimeni că ceea ce se va întoarce? SPEAKER 2: 2. JASON Hirschhorn: De ce 2 si nu 2.333? SPEAKER 2: Cred că ia off după numărul întreg. JASON Hirschhorn: Deci asta e exact dreapta. În C, dacă faci divizie a două numere întregi 7 împărțit de 3, acesta devine răspunsul pe care în acest caz 2.3333 totdeauna și se constată că punctul zecimal și taie tot de pe urma zecimal și doar tu întoarce 2. Deci, dacă am făcut 8 împărțit la 3. Că, de fapt, știm care să se întoarcă 2.666, dar taie tot de pe la zecimal, totul trunchiază, și doar se întoarce la tine 2. Deci 6 împărțit la 3, 7 divizat de 3, 8 împărțit la 3, sunt toate de gând să se întoarcă la tine 2. Stie cineva, sau au o presupunere, cu privire la cum aș putea obține de fapt, răspunsul complet dacă vreau asta zecimal? Da. Daţi-i drumul. SPEAKER 3: Folositi un float? JASON Hirschhorn: Ce vrei să spui? SPEAKER 3: Pentru că au spus float este pentru numere [Inaudibil] JASON Hirschhorn: dreapta. Deci, asta e exact dreapta. 7 este un număr întreg. Dar dacă am vrut să rândul său, că într-un număr în virgulă mobilă, Mi-ar fi pentru a stoca că ca 7.0 deoarece computerul este de fapt stupid-- am văzut că cu example-- PB și J se va face doar exact ceea ce-l spun. Așa că, dacă scrie 7, aceasta Cred că e un număr întreg. Dacă ați scrie 7,0, chiar dacă știu aceste lucruri sunt echivalente, se tratează ca ca o plutitoare număr punct. Deci, dacă ai făcut 7,0 împărțit de 3, sau împărțit la 3,0, ar spune, OK, acum avem de-a face cu flotoare. Mă voi întoarce la tine 2.333333 totdeauna. Dar nu chiar pentru totdeauna, pentru că așa cum am văzut, de asemenea, în curs, aceste numere în virgulă mobilă nu sunt exact precise. Deci, dacă vrei asta zecimal, sau o parte din care zecimal, atunci va trebui să use-- una dintre ele trebuie să fie un număr în virgulă mobilă și computerul trebuie să înțeleagă că acesta este un punct plutitoare esti a face cu, nu un număr întreg. Orice întrebări cu privire la acest tabel pe pe partea dreaptă, până în prezent? Sau partea ta stângă, dvs stânga, partea ta stângă. Da. SPEAKER 4: dreapta. Pentru ca un obișnuit doar numere întregi, ar trebui să write-- ar va trebui să scrie plutească? JASON Hirschhorn: Da așa. Ei bine, dacă doriți să creați o variabilă care este un float, aveți nevoie pentru a spune float Z este egal cu ceva. SPEAKER 4: OK. JASON Hirschhorn: Dar dacă am vrut să face 7 împărțit la 3 și obține zecimal, Mi-ar face float z = 7,0 / 3,0 de; și care mi-ar da în virgulă mobilă număr. SPEAKER 4: OK. JASON Hirschhorn: Dacă am făcut-o ceva de genul int z = 7 / cu 3, că mi-ar da un întreg, pentru că acestea sunt toate numere întregi. Asta face sens? SPEAKER 4: Da. JASON Hirschhorn: OK. Grozav. Orice alte intrebari despre acest tabel? Într-adevăr? Sunt atat de incantat. BINE. Deci, alte lucruri pe care le va folosi, deseori în condiții sau bucle, sunt aceste tipuri de operators-- aceste tipuri de expresii booleene. Și, după cum am aflat, == este ceea ce utilizați pentru a verifica dacă două lucruri sunt egale. Deci, aici eu sunt de verificare în cazul în care x == y, să din nou presupunem că x este 7 și Y este 3. Deci, dacă am scris 7 == 3, ceea ce ar care se întoarcă la mine? E adevărat sau fals? Audiența: Fals. JASON Hirschhorn: OK. Mă simt ca toată lumea poate obține această unul. Deci toată lumea, ceea ce s-ar întoarce asta? Audiența: Fals. JASON Hirschhorn: Fals. Grozav. 7 nu egal 3. Deci, 7 == 3 se va întoarce false. Tu ai un semn nu este egal, deci, dacă am verificate 7! = 3, ceea ce s-ar întoarce asta? Audiența: Adevărat. JASON Hirschhorn: Adevărat. Excelent. Cineva a fost foarte categoric în spate și apreciez asta. Atunci vei avea mai putin operatorului, mai mică sau egală cu operatorul, mai mare decât operatorul, mai mare mică sau egală cu operatorul. Deci, încă o verificare bun-simț. Dacă aș fi avut 7 este mai mare decât sau egală cu 3. Ce s-ar întoarce asta? Audiența: Adevărat. JASON Hirschhorn: Adevărat. Da. Camera din spate, partea din spate din cameră, fantastic. Puteti combina aceste expresii dacă doriți, de asemenea, cu o logică și care este && Sau o logică sau care este || ||. Și așa acum puteți testa doi lucruri together-- E amuzant? De ce este așa de amuzant? Deci, dacă am vrut, eu pot să spun este 7 mai mare de 3, I 2 este mai mică de 4? Ei bine, în cazul în care este mai mare de 7 mult de 3, e adevărat. 2 este mai mică de 4, e adevărat. Deci, toată chestia asta se va întoarce true. Dacă am testat 7 este mai mare de 3 si-- Eu doar iau numere aleatoare here-- 4 este mai mică de 2, ei bine, asta e fals. Atât de adevărat și de a face false. Și puteți merge mai departe și se combină ca multe condiții împreună, ca vrei. Are cineva întrebări, comentarii, preocupări până acum? Și văd pe unii dintre voi a lua imagini de mine în ecran, pe care o apreciez. Să sperăm că, nu este Snapchat. Din fericire, e pentru note. Dar toate acestea sunt de gând să fie disponibile online. Deci nu trebuie să face fotografii în acest sens. Cum am menționat, totul vor fi disponibile online pentru tine. BINE. Sunt pe cale de a obține afara scenei, la fel oricine vreau să spun nimic înainte de acest lucru se întâmplă? Întrebări? [Interpunerea VOCI] JASON Hirschhorn: Oh, opriți. Voi sunteți prea frumos. BINE. Am de gând pentru a eticheta afară. Să mergem. ANDI Peng: Vom face o schimbare ciudat mic acum. JASON Hirschhorn: Sunt va lua acest off. ANDI Peng: apreciem sprijinul, băieți. Ma auzi? Este atât de bună? Perfect. Frumoasa. Permiteți-mi să învelesc că, în. BINE. Deci, eu sunt pe cale de a face ca un gigant informații cu privire benă voi chiar acum. Și nu vă faceți griji dacă sunteți un fel de nu ca urmare fiecare linie puțin din ceea ce Sunt pe cale să-ți arăt. Așa cum a spus Jason, totul este complet on-line. Doar vom încerca să introducă toată lumea să conceptele acoperite în unele dintre aceste diapozitive. Deci, trebuie doar să urmezi de-a lungul. Nu vă faceți griji dacă nu înțeleg totul; Cu toate acestea, în cazul în care în orice punct te simti pierdut, pentru a ridica dvs. mână, vom opri, nu vă faceți griji. Misto. Deci, eu cred că ceva David are deja un fel de menționat în curs și Jason a un fel de aluzie la ziua de astazi este ceea ce o bibliotecă este. Deci, în programare, avem aceste lucruri numite biblioteci. În cazul în care, în esență, toate acestea sunt este doar un set de funcții, care este în esență, doar cod care este fost deja scris de altcineva care putem toți utilizați în cadrul programelor noastre. Deci, cum face o normală lucru bibliotecă, nu? Intri ușa bibliotecii. Aveți toate acestea cărțile pe care le puteți scoate și puteți accesa informații în acele cărți. Același lucru în programare. Aveți o bibliotecă care are deja scris de către alte persoane. Și modul în care puteți, ca programator sau un student, pot avea acces la acea bibliotecă este prin hashtag # include. De exemplu, în C ne au trei C- cel mai utilizate în mod obișnuit trei standard de C libraries-- biblioteca de intrare / ieșire, biblioteca string, și biblioteca matematica. Deci, în primul seturi cuplu problemă, acestea vor fi cele trei pe care îl utilizați în primul rând. Deci, ca David deja a explicat în curs, I Standard / biblioteca O, sau intrare / ieșire biblioteca standard face exact asta. Acesta vă permite, în codul dvs., la intrare nimic de la utilizator și de ieșire care la ecran, în esență tipărirea se pe ecran. Și așa de fiecare dată când utilizați funcții, de exemplu printf funcția (), care vom trece peste slide-ul urmator, asigurați-vă că pentru a include standard I / O bibliotecă sau altceva ce nu o să putea utiliza funcția printf (). Pentru ca tu, ca programator nu a scris de fapt această funcție, te folosind doar cineva Codul altcuiva în propriul cod. Are vreun sens toată lumea? Misto. Și apoi ajungem în esență pe biblioteca string.h și math.h bibliotecă, .h înseamnă doar bibliotecă, alte biblioteci pe care le veți în cele din urmă fie folosind în codul dumneavoastră. Cu toate acestea, în scopuri a acestei biblioteci, avem, de asemenea have-- acestui class-- avem, de asemenea ceea ce se numește biblioteca CS50, cs50.h, în cazul în care ne-am, pentru examinare atentă dumneavoastră au creat multe funcții importante și utile. Astfel încât să ca un programator poate salut norocos off ceea ce am scris deja, astfel încât Această funcție este disponibilă pentru a vă pentru utilizarea dumneavoastră. Voi fi acoperind o pereche de funcțiile utilizate în mod obișnuit, dar știu că acestea sunt toate on-line googleable. Simte-te liber, trageți în sus biblioteca CS50 și atunci aveți toate funcțiile acolo. Da. SPEAKER 5: Deci, dacă nu au fost utilizând software-ul care este furnizat de către noi clasa, face asta Adică vom avea pentru a descărca și de a găsi Acest antet ne fișier și spune computerul unde este? ANDI Peng: marea întrebare. Exact. Deci e ca daca nu esti prezent fizic la o bibliotecă, nu exista nici o modalitate de a de fapt, du-te și-l accesați. Deci același lucru cu programare în C, vă trebuie să vă asigurați că sunteți folosind nostru aparat pentru că biblioteca este deja fost încorporată în ea. Și apoi când hashtag #include, bibliotecii acolo. Da. Buna intrebare. Toată lumea bună? Misto. In regula. Deci vom lovi, În esență, ceea ce este prima funcție pe care Noi, ca programatori sunt va folosi în codul nostru. Aceasta se numește (funcția printf). Deci, printf (funcția), cum am a declarat deja în ultimul diapozitiv, este inclusă în standard I / O, standard de intrare / ieșire, bibliotecă. Deci, asigurați-vă că indiferent ce using-- oh, lasă-mă să iau laser pointer-- ori de câte ori utilizați (funcția printf), trebuie să includă standardul I / O bibliotecă sau altceva, atunci când compilați, ai de gând pentru a obține o eroare deoarece computerul va fi ca, oh nu știu unde printf () este, tu nu-mi spui unde printf () este. Ei bine, printf () este inclus în I Standard / O, astfel încât atunci când utilizați printf (), asigurați-vă că pentru a avea linie de mai sus codul. Deci, de exemplu, printf () aici este o funcție. Tot ce face este de imprimare ceva în interiorul parantezelor pentru utilizator. Cineva ar dori să ia o lovitură de cuțit la ce această linie de cod drept aici se va imprima? Prin urmare, răspunsul e pe ecran. Oricine? VERDI: Fundul. ANDI Peng: Verdi, de ce nu te duci înainte și spune tot declarația? VERDI: Buna ziua, numele meu este Andi, și eu sunt 20 de ani. ANDI Peng: Ah, minunat. Deci, în această linie vom imprima, Buna ziua, numele meu este Andi, și am 20 de ani, care este de fapt o declarație adevărată. Sintaxă. Deci, câteva aspecte sintactice care Vreți să vă asigurați că știți. Citate. Ghilimele duble Spune- computer care totul în interiorul va fi imprimat. Totul în interiorul poate doar să fie exact cum îl scrieți, cu excepția de obicei la sfârșitul anului, vom dori să includă un hash-- oh sorry-- o liniuță n. Deci, o liniuță n. Vrea cineva să ia o presupunere la ce care face să codul nostru? Da. SPEAKER 6: Se pune pe o linie nouă. ANDI Peng: Exact. Deci, toate acestea nu este permite orice se întâmplă Dupa aceasta, după această declarație, pentru a fi imprimate la o nouă linie. Astfel încât atunci când scrii dvs. Codul nu aveți la întâmplare lucruri însăilat pe la sfârșitul care nu vrei. Că totul devine imprimate frumos o linie și apoi vom începe pe următoarea linie. Are cineva aminte că ceea ce punct și virgulă nu atunci când suntem de codificare? Da. SPEAKER 7: Declaratie. ANDI Peng: Îmi pare rău? SPEAKER 7: se termină declarația? ANDI Peng: Da. Deci, în C, sau orice programare limbă, punct și virgulă denotă sfârșitul unei linii de programare. Deci, de exemplu, în limba engleză vom folosi perioadă să spun, oh acest lucru este sfârșitul unei propoziții. În programare, același lucru, avem o punct și virgulă pentru a indica sfârșitul unei linii. Deseori, atunci când sunteți incepand de a programa, vei îți dai seama uitați să adăugați punct și virgulă și apoi încercați să executați dumneavoastră Codul și nu funcționează. Și tu ești ca, Ah, eu nu știu de ce, ar trebui să fie de lucru. Sansele sunt, probabil, ai uitat un punct și virgulă sau un suport sau ceva undeva. Deci, asta e important să ne amintim. Misto. Bine, spectacol de mâini, cât de mulți oameni de aici au vreodată luate AP Informatică sau programate în Java înainte, niciodată? BINE. Lovely. Asta nu se va aplica atunci, dar în Java, tu au ceva numit System.out.println care nu există în C. Deci, în C, ori de câte ori doriți să adăugați în variabile în tot ce vrei pentru a imprima, e o sintaxă specifică vom utiliza. Asta se numește placeholding-- esență vom adăuga substituenți în loc cu un număr întreg sau variabila pe care dorim să le imprimați. Deci, ca voi puteti vedea am inclus un nou antet bibliotecă fișier aici. Biblioteca CS50. Și conținute în acea bibliotecă CS50 este o funcție comună, vom folosi în cursul nostru numit getint (). Vrea cineva să ia o lovitură de cuțit la ce poate fi, eventual, face getint (). Audiența: [inaudibil] ANDI Peng: Îmi pare rău. Nu puteai auzi. Maddie, oricine. Maddie: Oh, solicită te pentru un număr întreg. ANDI Peng: Exact. Deci această funcție, un alt funcție care este deja fost scris de altcineva că putem chema acum. Tot ce este este solicita dvs., utilizatorul, pentru a introduce ce vrei ca codul de se execută și se stochează whatever-- în acest caz, noi suntem getint () - ing, astfel încât înseamnă că suntem obținerea unui număr întreg. Și am de gând să stoca că într-o altă întreg că tocmai am făcut sunat vârstă. Care fac sens pentru toată lumea? Misto. Deci, acum că ne-am stocat acest întreg, care le-am determinat din partea utilizatorului, în această variabilă, am creat de tip int numita vârstă, putem merge mai departe și locul că, în printf nostru () funcție. Deci sintaxa de obicei pentru printf () este că ori de câte ori în fizică dumneavoastră actuale linia pe care doriți să includă că întreg, ai făcut asta simbol chiar acolo, simbolul la sută, cu tip de variabile pe care doriți. Deci, în acest caz, de vârstă este un număr întreg. Deci ai de gând să includă % i pentru că este un număr întreg. Și apoi după-ul declarație, ai de gând Pentru a face virgulă și Numele variabilei. Deci, aici, vom imprima out, Buna ziua, numele meu este Andi, și eu sunt de ani goale vechi. Hashta-- sau, sorry--, vârstă cu tot ce intrare. Deci, dacă ar fi să intrare 20 pentru getint meu () aici, ar imprima exact același lucru. Dar, dacă am vrut să intrare ceva altceva, cum ar fi, probabil, 40 sau 45 de ani, atunci veți vedea că reflectat în consecință, în codul. Deci acesta este un exemplu ceva în care se imprimă afară și se uită la tine, ca daca e acelasi lucru, dar sub capota calculatorul nu e de fapt lucruri foarte diferite se întâmplă. Misto. In regula. Și ce dacă vrem mai multe variabile? Destul de ușor. Același lucru. Avem, de asemenea o nouă funcție aici numit getString (), De asemenea, sunt incluse în cadrul bibliotecii CS50, că tot ce face este solicita utilizatorului pentru un șir, care este doar un set de caractere, astfel ca o propoziție sau ca un nume. Deci, în acest caz, am avea două substituenți% s pentru coarde și% i pentru întreg. Și am de gând să urmeze că prin cele două variabile Vrem inclus, în ordinea că acestea apar în propoziția. Deci, de exemplu, numele meu este gol, vreau un nume acolo, așa că am de gând să aibă mai întâi numele. Și apoi după aceea, vreau vârstă, doresc să aibă de-al doilea vârstă. Și așa, dacă am vrut să de intrare, Buna, ziua, Numele meu Andi, și am 20 de ani. Dacă am introdus Andi și 20, același lucru exact ar imprima; Cu toate acestea, acum avem două stocate variabile de nume, precum și Int. Da. SPEAKER 8: Ar fi capabil să ruleze, dacă pornit numele și vârsta la sfârșitul acestei? ANDI Peng: Da. Asta e foarte bine întrebare. Deci, pe scurt, nu. Deoarece numele și age-- ce tip de variabilă este numele? SPEAKER 8: String. ANDI Peng: Și ce tip de variabilă este vârsta? SPEAKER 8: Integer. ANDI Peng: Deci, aici avem un substituent pentru coarde și întreg, nu? Deci, dacă ați fost pentru a comuta acestora, computerul nu va ști. Se va verifica pentru un șir, și dacă încerci să-i dea un int, că va fi ca așteptați Sunt confuz, tu mi-a spus că ar trebui să fie alocarea de memorie pentru un int. Și aici, atunci când se așteaptă un număr întreg și vă va oferi un nume și un șir de schimb, este, de asemenea, va fi foarte confuz, ea nu va rula exact așa cum trebuie. Deci, aici, numirea și sintaxa este foarte important pentru rularea de cod. Toată lumea bună? Da. Maddie. Maddie: Aici, eu știu că am uitat la exemple în clasă, în cazul în care ei cer ceea ce este vârsta ta, ceea ce este numele tau. Aici, ar fi că doesn't-- dacă am fost pentru a rula acest cod, nu ar cere pentru asta? Dar v-ar doar de intrare două numere și apoi ar fi așa? ANDI Peng: Da, exact. Deci, dacă ai vrut pentru ca acesta să afișaj, vă rugăm să introduceți vârsta ta, puteți adăuga doar o (funcția printf) Asta spune, Vă rugăm să introduceți vârsta, deasupra ei. Asta-i o întrebare bună. Da. SPEAKER 9: Deci, ar fi deja incluse în getint () [neauzit]. ANDI Peng: Nu, de fapt nu este. Deci, toate acest lucru nu este doar solicită un ecran gol a utilizatorului să introducă ceva. Dacă doriți, dacă doriți să imprimați ceva care spune utilizatorul ca, Vă rugăm să da-mi de vârsta ta, atunci ar trebui să printf (), care tine. Pentru că toată lumea folosește acest Funcția de lucruri diferite, ai putea fi stocarea vârstă, ai putea fi stocarea adresa, ai putea fi memorarea numerelor de telefon. Și așa este într-adevăr până la utilizări individuale baieti dumneavoastră pentru ceea ce vrei tu să spui. Da. SPEAKER 10: Deci, doar pentru a clarifica, în cazul în care a face tu de intrare numele și vârsta astfel încât să se apare în loc de% s? ANDI Peng: Ca și în ghidul? SPEAKER 10: Da, ca și cum nu am face it-- cazul în care nu am pus Andi, și în cazul în care nu am pus 20? ANDI Peng: Da. Deci, dacă ar fi să rula de fapt, acest cod, Nu mă fapt rulează Codul, aceasta este doar aici, chiar acum. Daca as fi fost pentru a rula cod, aș compila codul, face dosar, rula codul, și atunci nu ar doar să fie două spații pentru mine să-l de intrare. Da. Voi veți vedea atunci când joci în jurul valorii de cu codul tine. Bine vom muta în secțiunea următoare a ceea ce vom acoperă astăzi. Vom trece peste ceea ce Declarații condiționale sunt. Deci, dacă voi aminti și amintesc de curs, Declarații condiționale, toate acestea sunt sunt un set de instrucțiuni calculatorului în care, dacă o anumită condiție este adevărată, executați codul în interiorul acestei condiții. Deci, în esență, rămășițe mare tema de azi este că voi avea deja toate văzut logica din spatele tot că ne acoperă. Și tot ce facem este traducere ceva care a fost foarte intuitiv în Zero, și greu de codificare-l în sintaxa vom folosi pentru clasa care este C. Deci în mod logic, toate acest bloc a fost este acea bucata de cod chiar acolo. Da. BINE. De asemenea, vom ajunge într-o dacă ... altceva declarație care este doar un strat suplimentar de complexitate la if în cazul în care calculatorul are o privire la acest și vede, în cazul în care această condiție este adevărată, nu indiferent de interiorul acestor două paranteze, else-- astfel un fel de implicit dacă aceasta nu îndeplinește condition-- face acest lucru. E ca o furculiță în drum. Dacă plouă afară, mi-am pus pe o haina de ploaie, altfel nimic altfel nu-mi pune pe un sacou de ploaie. Asta logica sens pentru toată lumea? Misto. In regula. Deci, ca un exemplu greu de aceasta că ne-ar vedea în C este dacă am vrut să creeze un variabilă numită ore teme. Și dacă este mai puțin temele ore mult de cinci, spun Viața este mare. E minunat. Cu toate acestea, spun Lupta este real-- care este ceea ce noi toți de pe acest luni după-amiază până Știință Hill sunt Probabil face dreptate now-- Audiența: [rîzînd] ANDI Peng: Ei fel ne ar fi, vă mulțumesc pentru asta. Modul în care ne-ar hardcode acest lucru în C este if-- să presupunem avem deja o variabilă de tip Int numit ore pentru acasă aici. Dacă ore teme este mai mică de cinci printf (), Viața este mare. Amintiți-vă să păstreze / n, deoarece vrei o linie nouă după. Print altceva, lupta este real. Are toată lumea să înțeleagă cum Am trecut de la acest bloc în acest bloc de cod? Misto. In regula. Deci, acum vom lua o privire la mai multe declarații Dacă totul. Deci, haideți să își asume Scopul acestui program a fost am solicita utilizatorului pentru un grad. Am Prompt folosind getint () pentru o calitate, și au o valoare de intrare, și doriți să se afișeze ce tip de clasa au primit. Deci, dacă aș fi pentru a proiecta un program, am Adică de obicei în toate ochii noștri, 90 - 100 este un A, 80-90 la o B, și așa mai departe și așa mai departe. Ce este în neregulă cu acest bucată de cod care nu este face ceea ce vreau să fac. Da. SPEAKER 11: Ei au limite inferioare, dar ele nu au limite superioare. ANDI Peng: Exact. A tuturor auzit ce-a spus? Nu va fi superior limite, dar nu mai mici. limite Ne pare rău, alt mod în jurul valorii de, limite inferioare, nici superioare. limite Deci doriți să să ia o lovitură de cuțit la spunând ceea ce ar fi imprimat pe acest ecran dacă ar fi să rula acest cod. SPEAKER 11: O eroare? ANDI Peng: o eroare? Mare presupunere, nu destul de bine. Are cineva un alt lovitură de cuțit? Da, Aaron. AARON: Dacă ați pus în ceva mai mare decât 90, aceasta ar arăta toate calitatile pe care le ai. Aceasta ar arăta ai un A, ai un B, ai o C. ANDI Peng: Da. Asta-i exact corect. Deci, ar fi minunat. Cu toate acestea, ele sunt reciproc exclusiv, cred. Daca as fi fost pentru a rula această bucată de cod. Și apoi să spunem, am introdus gradul de 95. Deci, 95 este acum stocate în int numita clasa. Și așa C este un limbaj de care rulează până sus în jos, asa ca va întotdeauna rula până la partea de jos. Deci o să vină aici, în cazul în care citește grad este mai mare sau egal cu 90, printf () ai un A. Excelent, eu au un 95, care este mai mare de 90. O să imprimați, Am o A. Va să aruncăm o privire la acest lucru, dacă, va spun, bine 95 este, de asemenea mai mare de 80, este de gând să imprima ai, de asemenea, un Got un semn de exclamare B, și așa mai departe și așa mai departe. Deci, după cum putem vedea toate, aceasta este o problemă comună care pot apărea atunci când suntem scrierea de cod pentru a privi afară pentru. Oricine, orice întrebări cu privire la de ce se întâmplă? Grozav. BINE. Deci, cum putem rezolva această problemă, este în mod evident logic Următoarea întrebare. Ei bine, avem aceste frumoase lucruri numite dacă altcineva dacă altceva dacă declarațiile altceva. Deci, puteți vedea, dacă ai vrut pentru a schimba această problemă, ai vrut să facă fiecare dintre Condiții exclud reciproc, v-ar adăuga un alt ... if. Și acestea de course-- cred că de ei ca scari, sau ca trepte pe ladder-- aveți posibilitatea să adăugați cât mai multe dintre acestea în timp ce doresc pentru cât mai multe condiții, după cum doriți. Deci, aici, în cazul în care am introdus gradul de a fi 95. Dacă într-un grad mai mare de 95, printf (), am primit un A. Marea. Se va vedea un alt ... dacă și o să știe, Oh, nu, Am executat deja prima altceva. Am know-- sau prima if-- știu că Nu trebuie să se uite la oricare dintre aceste că una dintre ele a fost deja adevărat. Deci, este de gând să ruleze de sus în jos. De îndată ce prima este adevărată, atunci este de gând să săriți peste toate celelalte de altceva ... FI. Asta face sens? Deci, în acest fel, aveți diferite niveluri de verificare și de îndată ce una dintre ele este falsă, odihnă sunt, de asemenea, ei nici măcar nu va verifica. Misto. In regula. Deci, acesta este un exemplu de un alt un fel de declarație condițională vedem mai rar, dar le vom vedea și de a le folosi. Și ei sunt de multe ori mai mult eficientă pentru anumite cazuri. Deci, avem ceea ce se numește o declarație comutator. Deci, înainte de am acoperit ceea ce este un altceva declarație, o dacă ... altceva declarație. Aici, avem ceea ce sunt numit declarații comutator. Asa ca atunci cand folosim comutator declarații este cheia? Deci, într-o declarație comutator, vă de obicei, de obicei, de fapt, tu poate doar numere întregi de intrare pentru dvs. variabilă care te verificare. Deci, dacă am vrut să verifica pentru a vedea în cazul în care o anumită number-- de exemplu un grad, în cazul în care am primit un 90. Vreau să văd dacă e un A, B, sau C. am putea avea un caz aici. Cu toate acestea, cazul a a fi un alt constant. Deci, în acest sens, declarație comutator poate doar verifica pentru egalitatea de două numere. Aceasta nu verifică pentru nimic altceva. Așa că e ceva să fie foarte atentă a atunci când utilizați acest. Deci, aici, în cazul în care am vrut să verifica pentru a vedea dacă gradul meu de 90 este egală cu 90 sau 80 sau 70 sau 60, și apoi de imprimare clasa corespunzătoare, Aș fi în stare să scrie că într-o declarație comutator. Deci o să vină aici, verificare este acest număr întreg egal cu această constantă? Dacă nu, o să săriți. Este egal cu constanta doua, și așa mai departe și așa mai departe, până când a lovit implicit, dacă nici unul dintre ei sunt egale. De îndată ce unul dintre ei este setat pentru a fi egal, este de gând să facă acest lucru linie de cod și break. Ceea ce înseamnă că va lovi ca alerga, rupe, și doar complet săriți la partea de jos a codului. Deci, în acest sens, un fel de funcții ca o dacă altcineva dacă altceva if. Deci, aici e un beton exemplu pentru voi. Deci, să presupunem că am vrut să a crea o variabilă numită an fondat. Și vreau să solicite utilizatorului să introducă anul în care a fost fondată școala lor. Deci, eu pot crea o declarație comutator aici. Și să spunem, am de intrare 1636. Acest cod de aici se va vedea comutator Anul înființării care este egal cu 1636. O să vezi cazul 1,636, oh acestea sunt egale, printf () nu ar trebui să fii la acea școală în nord? Pentru că noi presupunem că nu du-te aici dacă merg la Harvard, pauză și trece la sfârșitul. Daca as fi fost pentru a introduce 1701, care Presupun noi toți ar fi de intrare, ar trece peste acest caz, vin până la caz două care este 1701, și de imprimare Bine ati venit la Yale! Break, trece la sfârșitul. Altfel probabil luați acest curs online in care case-- bun venit minunat pentru Yale-- se merge la implicit de imprimare, Buna ziua Internet! Și rupe. Da. SPEAKER 12: Poti folosi altceva în loc de default acolo? ANDI Peng: Nu, pentru că încât această funcție întreg comutator este construit, sintaxa te necesitatea de a utiliza este caz implicit caz. E ca și cum, dacă else if, aceasta un e caz implicit caz. Da. SPEAKER 13: Ai Poate deja a spus acest lucru, dar poate ai mai mult de două cazuri? ANDI Peng: Da, ai putea au ca multe cazuri, după cum doriți. Ganditi-va ca la fel ca infinit adăugarea pe. SPEAKER 14: Dacă a apelat la 1,701 cu 1636, aceasta nu face cu adevărat o diferență drept? E doar de gând să fie de verificare pentru ea. ANDI Peng: Acesta este un foarte bun întrebare. Și vom atinge la acest lucru mai târziu, dar doar Știu că e comutatorul afirmație este infinitely-- e mai eficient decât în ​​cazul în care și altceva în cazul în care, pentru că funcționează folosind un alt tip de funcție care vă permite, să esență, la doar sari direct la cazul în care trebuie să fie la. Da. SPEAKER 14: cool. Mulțumesc. ANDI Peng: Da SPEAKER 14: Și nu a putut face cazuri ca și mai mare decât. ANDI Peng: Nu. Deci, asta e ceea ce limitarea About declarație comutator este că aveți să aibă constante doar, doar numere întregi. Da. BINE. Deci, aceasta este ceva ce baieti va întâlni mai rar de, dar am vrut doar să introduce-o în cazul în care. Avem aici ceea ce este numit un operator ternar. În cazul în care, în esență, e la fel ca o if compilate într-o singură linie. Aici, voi merge pe linia următoare, pagina următoare, pentru că este mai ușor pentru a vedea. Deci am văzut toate astea drept? Acest lucru este destul de usor de urmat. Dacă am vrut să fac o variabilă numită string numit s, în cazul în care un anumit număr Eu dau este mai mică de 100, am doriți să atribuiți scăzut la șir, altceva vreau să atribui mare. Acest aici este de a face exact același lucru cele opt linii de cod fac. Deci, aici vreau să crea un șir de variabile. Și aceasta este condiția eu sunt verificarea, în cazul în care un număr este mai mic de 100, apoi atribuiți valoarea scăzută, altceva atribui valoarea mare. Aceste slide-uri vor fi on-line, nu vă faceți griji dacă voi nu obține acest jos. Acesta este doar un mod mai simplu, o mai modalitate eficientă de cod scris. BINE. Deci, acum vom introduceți ceea ce, pentru majoritatea oamenilor sunt ca un foarte, foarte confuz lucru să se gândească la inceput. Secțiunea buclă. Așa că astăzi, vom vorbi aproximativ trei tipuri de bucle. Vom începe cu un timp bucla, atunci vorbim despre o face în timp ce bucla, și apoi vorbi despre bucle. Deci, în esență, pentru mai mult elevii vizuale acolo, avem, în esență, un grafic reprezentare a ceea ce face o buclă în timp ce. Deci, într-o programare, ar trebui să înceapă și introduceți bucla la un moment dat. Cameră o condiție. Și dacă condiția este adevărată, executați codul interior. Și te întorci în jurul valorii de și să verificați. Dacă este încă adevărat că continua să fie difuzate acest cod în jurul valorii de și în jurul într-o buclă. Cu toate acestea, a doua că condiția devine falsă, ai de gând să rupă și să pună capăt bucla. Și aceasta este, în esență, sintaxa ai de gând să utilizeze. În timp ce o anumită condiție este adevărat face acest lucru, dacă nu e adevărat, ai de gând pentru a trece la sfârșitul și merge mai departe cu programul. BINE. Are cineva un exemplu asupra a ceea ce se poate întâmpla potențial dacă am încerca pentru a rula acest bucată de cod? Apropo, SAJ-- e Scaz, Andi, Jason-- vom semnează e-mailurile noastre, Dragoste, SAJ. Asta e de noi. BINE. Oricine are un exemplu, sau au o idee asupra a ceea ce ar imprima? Un fel de întrebare capcană. Deci, aici, amintiți-vă starea suntem de verificare este adevărat timp. Deci în timp ce acest lucru este adevărat, este merge pentru a imprima, îmi place SAJ! Există orice punct în care ne-ar schimba asta ceva altfel? Nu, nu? Deci aici avem întâlnite ceea ce este, probabil, va fi o mulțime de bugging programele, bucla infinită. Veți găsi că, dacă rula acest bucată de cod, este doar de gând să păstreze imprimare, îmi place SAJ! În timp ce noi apreciem sprijinul, nu vrem computere sa se prabuseasca pentru că ține de imprimare Îmi place SAJ! Deci, vă rugăm, vă rog, evita bucla infinita pentru că niciodată nu se va pentru a evalua la fals și niciodată nu vei să părăsească bucla. Și ai de gând să fi aspirat în totdeauna. Misto. BINE. Al doilea tip de buclă vom vorbi despre ziua de azi este face în timp ce bucla, în timp ce bucla face. Și se numește în timp ce bucla do pentru că aveți un do și o vreme. Deci, aceasta este destul de similar cu un timp bucla, dar un pic diferit. Aici, ai de gând să faci indiferent de interiorul acestui în timp ce o anumită condiție este adevărată. Deci, dacă aș fi C și computerul sunt rulează în jos această bucată de cod, Am arunca o privire la partea de sus. Mă duc la C, spun fac acest lucru. Și apoi m-am verifica, în timp ce aceasta Este adevărat, am să-l repete. Dar în timp ce acest lucru este fals, apoi m-am merge mai departe și niciodată nu mă întorc la acea bucla din nou. Poate cineva să ia o lovitură de cuțit la ce diferenta între această buclă și cea pe care o doar sa uitat la a fost, practic,. Da. SPEAKER 15: Condiția vine după în loc de înainte de? ANDI Peng: Exact. Deci, ea a declarat ca starea vine după, nu înainte. În cele din urmă, diferența între acest lucru și în timp ce bucla este că sunteți doar de gând să faci indiferent de interiorul acestui indiferent de dacă este sau nu starea dumneavoastră este adevărat, și apoi verificați starea. Deci, în acest caz, ești always-- în acest fel, te mereu asigurandu- indiferent de e rulează în interiorul cel puțin o dată înainte de verificare pentru a vedea dacă doriți să se execute din nou. Și aici este un exemplu de când ne-ar folosi. Deci, de exemplu, în cazul în care am vrut să am o variabilă de tip int numit vârstă, și vreau să solicite utilizatorul pentru vârsta lor, Am de gând să fac printf () Care este varsta ta? vârsta = getint (), care este determinat utilizatorul. Și unii oameni vor fi foarte enervant. Și nu vrei bug-uri în dvs. program de cineva introducere cum ar fi, oh Sunt negativ de 4 ani sau orice altceva. În cazul în care în cazul în care face acest lucru, aceasta evalueaza la adevărata, ceea ce înseamnă că am de gând să trebuie să păstreze merge înapoi și de a face acest lucru. Deci, acest lucru se întâmplă pentru a menține re-determinat utilizatorul pentru a vă oferi ca un adevarat Numărul de vârstă și este O să mergi înapoi și refacerea ea până când vă dau o varsta reala mai mare decât unu, sau nu este zero. Deci aluzie, aluzie. Acest lucru va fi foarte, foarte util pentru una dintre problemele tale PSET. Da. SPEAKER 16: Hopa, îmi pare rău. ANDI Peng: Da. SPEAKER 16: Există, nu să fie un ticălos, dar-- ANDI Peng: Nu vă faceți griji. SPEAKER 16: --are acolo reguli diferite aici, sau ai uitat doar pentru a pune oferta? ANDI Peng: Oh, da. Îmi pare rău, asta e cu totul rău mea. Asta a fost cu siguranta Trebuia să fie o cotatie. Bun de captură. Care nu ar fi alerga. BINE. Deci, ultimul tip de bucla vom vorbi despre și, în cele din urmă, un fel de cele mai multe complex este de bucla. Nu vă faceți griji dacă nu știu ce înseamnă asta. E destul de confuz la început. Vom trece peste un exemplu. Tot ceea ce se întâmplă într-o buclă de este că aveți trei declarații care ai de gând să includă. Deci, pentru un anumit lucru, tu ești O să inițializa o variabilă. Ai de gând să adăugați condiția de a care această buclă va continua să fie difuzate. Și apoi, la sfârșitul bucla, ai de gând să-l actualizeze. Puteți actualiza variabila pe care doriți să urmăriți de. Deci, vom folosi de obicei pentru bucle de când am doriți să rulați o buclă pentru o anumită cantitate de ori si stim deja, Oh vreau această buclă să execute ca de 10 ori, atunci do-- voi trece peste un exemplu pe pagina următoare. Deci, aici, de exemplu, în Scratch, dacă vrut ceva pentru a repeta de 10 ori, tot ce a avut de spus a fost, Repeta de 10 ori am iubesc SAJ! care este o mai acceptabil spectacol de sprijin pentru noi mai degrabă decât bucla infinită. Aici, cum ați trecerea la C și scrie care este pentru int-- am de gând să creeze sau declara o variabila de tip int numit i. Am de gând pentru a inițializa l la 0, asa ca i = 0; și acest lucru va fi starea mea. Deci i este mai mică de 10. Și apoi la end-- ultima declarație esti Va trebui este actualizarea ce se întâmplă cu i variabila la sfârșitul pentru bucla. Deci e un fel de confuz, pentru că diferite părți ale acestei linii se întâmplă la diferite tipuri de bucla. Dar voi trece peste un exemplu pseudocod de care și poate explica acest doar un pic mai bine. Deci, aici. Asta e bucla doar am văzut. În esență în pseudocod, ceea ce se întâmplă în acest program, este primul creez I, se inițializează la 0. Sunt de verificare pentru a vedea dacă i este mai puțin de 10, în care caz prima dată, este deoarece 0 este mai mică de 10. Astfel, bucla se va rula. Și apoi am de gând să imprimați această linie. Și apoi, la sfârșitul acestei linii, drept aici, am de gând să fac creștere i, i ++, tot ceea ce înseamnă este incrementarea prin unul. Deci, i este acum un. Pentru că a fost o dată 0, dacă am incrementa e, e acum 1. Și apoi am de gând să mă întorc la începutul buclei și am verifica starea. Este condiția încă adevărat? Da, 1 este în continuare mai puțin de 10. Deci o să imprimați din nou, du-te și apoi incrementa I, și a verifica condiția continuu, continuu, până când veți obține în cele din urmă până la punctul unde i reprezintă 10. Ai de gând să Printeaza aceasta de 10 ori și apoi am va egal 10. Ai de gând să verifice starea. Este mai puțin de 10 10? Nu, ce este fals. Astfel, această buclă nu va pentru a rula, se va rupe, și ai de gând să continua cu codul. Deci, ca voi poate vedea, acest lucru este un exemplu foarte mare de o buclă, puteți programa în ruleaza pentru o anumită sumă de ori. Fiecare clar o? Da. SPEAKER 17: Ce zici de creștere exponențial, este diferit de codificare? ANDI Peng: Ai can-- vom merge peste acest lucru în slide-ul urmator. Buna intrebare. Este cineva, înainte de a mă muta on-- cineva la toate confuz, pentru că acest lucru este un concept foarte greu. Nu vă faceți griji, dacă you're-- OK. Misto. In regula. Doar un diapozitiv generală. Această buclă în timp ce este de a face exact același lucru pentru bucla a fost. E doar scris diferit. Voi citi cu atenție poate diapozitivele la care vă convine mai târziu. Dar știu doar că există mai multe modalități de a scrie același lucru să se întâmple cu diferite bucle. BINE. Deci, acum avem în întrebarea de ce dacă avem o buclă în interiorul unei bucle. Primim în imobiliare Tipul chestii Inception aici. Când vrei să faci lucruri mai multe ori de alte lucruri în interiorul care fac lucruri de mai multe ori, doresc ceea ce se numește un imbricat pentru buclă. Pentru cei dintre voi care văd mai întâi acest lucru și se foarte confuz, tot ce facem aici are un pentru buclă în care avem o variabilă de rând. Dar interiorul ei, avem, de asemenea un alt pentru bucla de o coloana variabilă numită. Și am foarte sugerăm toți care sunt confuzi pentru a menține primul track-- trage acest lucru, trage asta. Nu încercați să motiv doar prin ea, el scoate. În capul tău, pe această bucată de hârtie, sau orice altceva, scrie rând, ține evidența a ceea ce rând este egală cu. Scrie coloană, ține evidența de ce coloana este egal cu. Și ține evidența a ceea ce este imprimarea cu fiecare iterație. Fiecare repetare a acestei bucle, fiecare iterație a buclei care mai mari, doar ține în urma logica. Și vă garantez, veți iubi ceea ce vezi, pentru că este, de asemenea, foarte aplicabil pentru seturi de probleme. Misto. In regula. Deci cel mai important lucru că voi sunt, probabil, toate gândesc acum, sunt probleme Set 1s tale, care sunt datorate joi / vineri. În programul water.c, indiciu ai de gând să aibă a solicita utilizatorului pentru o intrare. Cadrul programului mario.c ai de gând să aibă să utilizeze un imbricat pentru buclă, care este o buclă de interiorul unei bucle pentru, pentru a imprima un bloc de piramidă, în esență ca ceea ce Mario are de sari prin. Și apoi în interiorul dvs. greedy-- sau poate Efectuarea de Schimbare, dacă oricare dintre voi au auzit vreodată de that-- ai de gând să trebuie să fie foarte atentă a primelor valori în virgulă mobilă. Amintiți-vă zecimale plutitoare și întregi nu sunt același lucru. Ține evidența care unul este care. Și ai de gând să utilizați Declarații condiționale, precum și. Bine, ultimul lucru. Am câteva minute. Stil. Deci, aceasta este ceva care nu efect de fapt eficiența, sau de funcționare efectivă a codului. Cu toate acestea, ne afectează ca gredere tale, ca cititori. Aceasta afectează le dacă sunteți încercarea de a găsi o problemă. Aceasta afectează lizibilitatea codului. Deci stil, ca atunci când sunteți încercarea de a stilul un eseu pentru limba engleză, dacă nu au avut paragrafe, ai totul fel de amestecate împreună pe o singură linie, aceasta face foarte dificil pentru oricine pentru a citi eseul tău, chiar dacă punctele tale sunt logic sunet. Același lucru în programare. Puteți avea oribil obscure cod care Scaz va acoperi, si se poate rula și funcția încă. Dar pentru noi, ca AT dragi, care vor fi citit și evaluarea PSets tale, asta nu e foarte frumos. Deci, vă rugăm, de dragul de noi și le atunci când sunteți încercarea de a repara o problemă în codul dvs., și sunteți încercarea de a citit propriul cod, face vă că urmați unor convenții că vom trece peste. Deci primul. Dă variabilele nume semnificative. Dacă doriți să stocați un număr întreg numita vârstă, vă rugăm să-l numele vârstă. Nu-l numi înălțime. Când sunteți încercarea de a stoca o vârstă în înălțime, face totul foarte confuz pentru noi. Noi nu le place să fie confundate. Nu-ți place să fie confundate. Nimeni nu îi place să fie confundate. Dacă aveți de gând pentru a crea ceva, nume ceva semnificativ. Cu toate acestea, în timp bucla, cu un singur variabile de caractere sunt de obicei bine. Și în pentru bucla, dacă doriți doar I, și j, k, nu ezitați a face doar asta. Inițializare consistent. Deci, ce înseamnă asta? Asta înseamnă punct de vedere tehnic, teoretic, puteți iniția și de a crea mai multe variabile pe aceeași linie. Deci, de exemplu, pot crea un număr întreg numit scaz_age, și întreg numit andi_age = 20, și un număr întreg numit jason_age pe aceeași linie. Și eu pot atribui, de asemenea, doar unul din ei și nu pe ceilalți la valorile. Vă cerem să vă rugăm să nu faci asta. Pentru că aici ați creat în esență, trei variabile, dar numai unul dintre ele de fapt, are o valoare. Și apoi când suntem încercarea de a citi codul, sau dacă sunteți încercarea de a repara o problemă în codul dvs., este foarte confuz de urmat. Deci, doar pentru lizibilitate dvs., pentru lizibilitatea nostru, nu face asta. Acolade consistente. Unii oameni să afișezi lor acolade în locuri diferite. Nu contează. Doar asigurați-vă că sunteți consecvent în ta Cod propriu pe care ați vrea să le pun. Spațiere consistent. Dacă puneți un spațiu după un pentru bucla, face întotdeauna. Nu doar ca un fel de a face acest lucru la unele locuri, nu o fac în altele. Doar să fie în concordanță. În al doilea rând, în cazul în care cineva ar dori să ia cunoștință Style Ghidul CS50, avem în mod oficial un ghid de stil care vă toate aceste convenții spune, plus mai mult. E on-line. E ca și cum cs50.net/style sau asa ceva. Puteți să-l Google. Coerența este cheia. Deci, nu vă faceți griji ce alte persoane fac, doar asigurați-vă că sunteți consistent în propriul cod. Oricine are orice întrebări cu privire la asta? Da. SPEAKER 18: Deci lucrul propriu-zis de a face cu initializare este doar le pe toate într-o separat linie, este că ceea ce vrei să spui? ANDI Peng: Deci, eu rareori am întâmpla acest lucru. Dar dacă ai vrut să, dacă ai vrut să fie ca economie de spațiu în codul dvs., sau orice altceva, puteți face acest lucru. Noi cerem ca tu chiar nu inițializa un singur lucru și nu pe ceilalți. Deci, dacă vrei să faci Int scaz_age, Int andi_age, Int jason_age, e în regulă. Doar nu inițializa un și nu pe ceilalți este tot. Întrebări? In regula. Am de gând să treacă pe microfon, iar indicatorul cu laser, și bagheta la Scaz în acest moment. Acest lucru este ciudat. Aici este. BRIAN SCASSELLATI: Mulțumesc. Cum e asta pentru un sunet? Sunetul este bun? . Excelent. BINE. Deci, Max toată lumea. Am de gând să încerc să lucreze prin un exemplu practic cu tine. Și am de gând să utilizeze lui CS50 mediu de dezvoltare, ceea ce se numește Mediu Integrat de Dezvoltare. Și ați văzut acest demonstrată în curs. Și în Problema Set 1, ești va avea posibilitatea de să-l folosească, și joci cu l, și să se obișnuiască cu ea, pentru că vom să-l folosească prin restul semestrului. Deci, în acest IDE, aveți ceea ce pare ca un browser de fișiere foarte tradițional peste pe una din fețe. Ai o porțiune de până top unde mergi pentru a vedea codul sursă, dvs Cfile, codul pe care le scrie. Și în jos partea de jos, veți au o fereastră terminal pe care le veți folosi pentru a atât compila programul și pentru a rula sau a executa programul. BINE. Deci, doar să ne dea un pic de fundație, în fereastră terminal, ai de gând să fie folosind un set de comenzi că sunt comenzi standard, în întreaga de cele mai multe sisteme Unix sau Linux. Și așa că, dacă ați folosit vreodată orice formă de Unix, Ubuntu, sau oricare dintre celelalte arome, acestea sunt de gând să se uite familiar. Dacă nu ați făcut, nu vă faceți griji. Nu e nimic complicat despre ei. Ei doar folosind un alt sintaxa, o denumire diferită convenție decât ați văzut până acum. Deci, pentru a lista afară fișierele într-o anumită director, ei vor să utilizeze un comandă numit ls, sau lista. Dacă doriți să vedeți totul cu toate detaliile, veți utiliza o comandă argument conformitate cu ls -l. Și că să-ți arăt tot mai detaliat, inclusiv permisiunile pentru un fișier. Pentru a schimba directorul, vei folosi comanda cd. Și veți fi capabil de a schimba directorul atât pentru a merge la directorul tau de casa. Asta e doar cd toate de în sine, cd cu două puncte veti reveni la o nivelul la directorul anterior. Și puteți, de asemenea CD pe un subdirector prin tastarea în cd și numele pe care subdirector. Puteți crea, de asemenea, noi directoare. Și vom să meargă prin aceasta în doar un minut. Ci doar pentru a pune totul pe ecran. Astfel încât să puteți să le vedeți. Veți avea, de asemenea, capacitatea de pentru a manipula fișiere direct din linia de comandă. Veți avea posibilitatea de a le copia, de a mutați-le, sau pentru a le elimina, care este, în mod eficient, pentru a le șterge. IDE CS50 vă oferă din plin putere de argumente în linia de comandă. Și asta înseamnă că puteți, de asemenea fac lucruri extrem de periculoase. BINE. De exemplu, puteți elimina, sau că este de ștergere, un fișier, fără a cere o confirmare. Și aveți posibilitatea să eliminați chiar recursively-- asta e bord r flag-- un întreg subdirector și tot conținutul acestuia. BINE. Sunt enumerate în roșu pentru că ar trebui să cred că "Pericol" de fiecare dată vezi aceste lucruri. BINE. In regula. Acum în cele din urmă, lucrurile pe care sunt va fi foarte valoros pentru tine, sunt acolo sunt câteva trucuri bun sa stiti ca esti de navigație prin această fereastră terminal. În primul rând, puteți șterge ecranul la în orice moment doar prin tastarea în clar. Și ai de gând să vezi mi fac asta destul de des. Puteți, de asemenea, doar afișa textul unui fișier prin tastarea mai mult și apoi numele fișierului. Veți putea apoi pentru a derula înapoi și mai departe cu care tocmai cu bara de spațiu și săgeată tastele. Dacă aveți, așa cum am făcut astăzi în curs, un program care se execută în mod continuu în buclă infinită, tu poate opri acest program de executare prin tastarea în control, care deține în jos de control-C. Și s-ar putea trebuie să faci Acest multiplu ori. Computerul devine departe de tine. Și tu, uneori, trebuie să da o pereche de eseuri inainte de a va veni de fapt prin intermediul. Veți fi, de asemenea, posibilitatea de a Sortare prin comenzile pe care tocmai ați tastat cu ajutorul tastei sus, tasta săgeată, și apoi tasta săgeată în jos. Și ceea ce este cel mai util este schimb tastați în nume de fișiere lungi vei putea pentru utilizare Tab pentru a Completare automată câteva instrucțiuni. Acum vom demonstra toți cei în doar o secundă. Deci, dacă nu-ți amintești le, nu vă faceți griji. Acestea sunt lucruri pe care le vei ridica și de a folosi ca mergem de-a lungul. BINE. Deci, în C- spre deosebire de rămășițe C este un limbaj compilat. Asta înseamnă că vom avea o sursă de file-- că e textul pe care îl scrie, comenzile pe care le scrieți, The printf () declarații, buclele, tot else-- și vom să ia acel fișier și mână-l la un program numit compilator. Compilatorul va lua apoi acest text pe care le-ați scris și-l traduce în instrucțiunile binare că computerul este de fapt merge utilizare. Asta se numește obiectul sau fișierul executabil. Dacă te uiți la acest fișier, te duci pentru a vedea codul pe care le-ați scris. Dacă te uiți la acest fișier, te duci pentru a vedea o secvență aleatoare de caractere care fac nici un fel de sens. Asta pentru ca aceasta este binar. Nu este menit pentru tine de a fi citit. Cu toate acestea, în orice moment pe care doriți să rula ceva, ce ai de gând care urmează să fie difuzate este acest fișier obiect. Așa că atunci când lucrăm cu aceste fișiere, vom scrie un fișier în C. Vom apoi compila, folosind un comandă ca make care va invoca zăngănitul compilator pentru limbajul C. Și care va produce un obiect depune, ca un out, sau în acest caz, numele, dosarul meu, pe care l-am pus în. In regula. Deci, hai să încercăm de fapt acest lucru. Așa că am venit cu un exemplu din ceea ce am vrut să încerc. Și unul dintre lucrurile pe care ma fascineaza este animația. Așa că am de gând să încerc să fac un pic animației folosind doar caractere ASCII. Caractere putem imprima cu ușurință acum. Deci, aici este cel mai bun încercarea mea crearea pentru tine animație de un iepuras trece prin iarba înaltă. Acolo este. BINE. Deci, el nu fuge încă, dar e stând acolo în iarba înaltă. Acum, dacă aș fi un animator, în vechea școală versiune de animație, ceea ce am ar face este să va produce o imagine a acestui bunny în iarbă. Și apoi mi-ar obține un alt picture-- un alt ceea ce au numit cell-- că a bunny doar ușor mutat. Apoi treime unul care a avut bunny mutat un pic mai departe. Și eu ar produce un întreg secvență de aceste celule. Unii unde iepuras este de peste pe partea stângă. Și apoi se mută încet, o de unul spre mijloc. Și apoi din mijloc pe la dreapta. Și dacă aș fi fost, atunci, într-adevăr norocos, am putut pune împreună și aș putea să le anima. Și nu e bunny meu trece prin iarbă. Asta e marele meu PowerPoint truc pentru a doua zi. BINE. Deci, acest lucru este la fel de bun ca acesta devine. BINE. Deci, aici încă o dată, aici este nostru bunny trece prin iarbă. SPEAKER 19: Din nou. BRIAN SCASSELLATI: O mai mult timp, în regulă. Nu e bunny ta. BINE. Deci, ceea ce astazi vom să faceți este să mergem pentru a încerca pentru a automatiza procesul de de a produce aceste celule. Noi nu destul va primi până la punctul de fiind capabil să le pună împreună. Dar, vom încerca să pentru a automatiza proces de generare acestei secvențe. Și aceasta este ceea ce o mare parte din animație de astăzi este ca. Asta este, nu faci lucruri în mod necesar prin tragere la totul cu mâna. Noi folosim un calculator pentru a automatiza părți ale acestui proces. BINE. Deci lasă-mă să comuta acum la IDE nostru CS50. Și am creat pentru us-- și să ma mări aici un pic bit-- Am a creat pentru noi un punct de pornire. De fiecare dată când vă cerem să stai în jos și scrie o bucata de cod, ceea ce suntem cu adevarat te cer să faci este ne cere să rezolve o problemă. Și modul în care ar trebui să cred despre a face asta este de incepand cu unele simplu parte din această soluție. Și apoi construi de la acea parte. Și asta e ceea ce vom face astăzi. Deci, mai degrabă decât a încerca dintr-o dată la scrie întregul buchet de cod care este O să producă cele 10 celule de animație, vom începe în loc cu o bucată care funcționează. Și apoi vom construi o pic în jurul valorii de faptul că și un pic mai mult și un pic mai mult. Acum, un lucru bun despre rezolvarea problemelor în acest fel este faptul că vă va permite să începeți mereu cu ceva care știți lucrări și să introducă o schimbare treptată. Și asta e un mod minunat de pentru a afla cum să cod, pentru că de fiecare dată când face un schimbare, veți vedea ce impact are. BINE. Deci, aici e punctul nostru de plecare. BINE. Deci, la începutul fișierul meu, Am hash stdio.h #included. Asta e astfel încât să pot obține printf () funcție pentru a lucra. Am atunci am funcția mea principală. Și acest lucru încă arată un pic arcane sau obscure pentru unii dintre voi. Asta e ok. Tot ce spune este că funcția principală are mijloace nu arguments-- nule nimic în C. Și întoarce de convenție un număr întreg. Principal revine întotdeauna un număr întreg, de obicei, un cod de a spune lucruri a mers bine sau nu a mers bine. BINE. Dar principala trebuie sa aiba ca forma pentru noi acum. Apoi m-am pus în trei linii de cod. Și, împreună cu fiecare linie de cod, am pus un comentariu. Acum, unul dintre lucrurile pe care vom insista pe care le faci, și este astfel un important practica de programare, este de a comenta mereu codul. Scrie întotdeauna în jos într-o Engleză comentariu ceva care credeți că Codul ar trebui să facă. În acest fel, mai târziu, pe când te-ai întors la ea, poti sa te uiti la ea si se poate spune, oh, îmi amintesc ce am fost încercarea de a face cu acest lucru. Sau atunci când o TA sta jos cu tine la încerca să vă ajute la ore de birou, ei pot uita la asta și du-te, eu vezi ce ai încercat să faci, ci aceasta este ce se întâmplă cu adevărat. BINE. Așa că am trei părți la codul meu, Am de gând să în primul rând de imprimare câteva puncte la începutul. Voi imprima apoi afară meu iepuras extrem de fantezie. Și apoi unele pic de puncte la sfârșitul. Iar aceste trei declarații de imprimare ar trebui uita-te familiar pentru tine în acest moment. Tot ce fac în fiecare dintre ele este că sunt tipărirea o secvență de caractere. Nu sunt variabile implicate. Totul este doar plat. BINE. Deci, dacă mă duc jos acum la terminal-- meu să vedem dacă pot obține acest înapoi out-- și am de gând să tastați din nou clar. SPEAKER 20: Ne utilizați dublu slash pentru a comenta? BRIAN SCASSELLATI: Can utiliza Da double--. Există mai multe modalități de a lăsa comentarii în C. One modalitate este să utilizați dublu slash. Cealaltă este de a utiliza un slash și o stea și apoi închideți cu o stea si un slash. In regula. În primul rând, am de gând să începe navigarea pe aici. Deci, dacă mă duc la directorul meu acasă, M-am schimbat directoare acolo, Am de gând să se uite și să vedem ce-i în acel director, LS, lista afară. Mă duc să văd că am Are două subdirectoare. Să facem acest lucru un pic mai mare aici astfel încât să putem vedea toate. Văd că am Are două subdirectoare. Voi schimba directorul pentru a merge în spațiu de lucru. Și am de gând doar să tastați în o parte din ea, și apoi a lovit doar Tab. Și-l vom finaliza restul pentru mine. Fancy. O să mă uit și văd în spațiul de lucru. Iar acum, lucrez pe supersecțiunii că suntem predarea acum. Asa ca voi merge in acel director. Și, în sfârșit, arata si a se vedea. Și am acel fișier bunny.c. Bine asa ca lasa-ma clar încă o dată. Și am de gând să now-- din nou că sunt încă stau în acel director și îmi spune că sunt în acel director supersecțiune. Am de gând să merg mai departe și face bunny programul meu. Și comanda, face iepuras, în timp ce sună un pic ciudat, invocă, de asemenea, compilatorul zăngănit. Și este produsă de mi o ieșire, care este o o funny-- executabil fișier executabil numit iepuras. BINE. Pot apoi, și acest lucru sună chiar mai rău, executa iepuras. BINE. Și să vedem ce face. BINE. Asta-i un pic de ceea ce ma asteptam. Am poza mea bunny acolo, dar am un fel de toate dorit de la sine. Ce am pierdut? SPEAKER 21: Slash l sau N Slash. BRIAN SCASSELLATI: N Slash. BINE. Așa că haideți să ne întoarcem aici. Și voi iesi din asta. Și voi merge înapoi în asta. Și haideți să aruncăm o privire acum din funcția mea principală aici. Si ce ar trebui sa fac? Vreau să pună capăt linie. Asa ca voi pune într-un comentariu. Voi pune într-o printf (). Și ce trebuie să pună în? / n. BINE. Ce trebuie să se termine cu? Punct și virgulă. In regula. Acum, într-adevăr una dintre cele mai lucruri importante este să vă asigurați de fiecare dată când face o schimbare în codul dvs., pe care le salva. Dacă nu ați salvat codul, ești O să observați că un pic în sus stea. Și că tu spune stele nu au salvat acest cod. Dacă am compila acum, nu este va pentru a reflecta orice din aceste modificări, deoarece compilatorul se uită la fișierul care este pe disc, nu fișierul care este deschide în editorul de. In regula. Deci, haideți să-l salvați și apoi vom merge chiar pe aici, vino înapoi. Coboară la terminalul meu. Și să îndepărteze spațiul din nou. Si putem merge mai departe și unul mai timp face programul nostru iepuras. Și să execute iepuras. Care nu au de lucru, fie. Slash greșit. Deci, dacă te uiți la ceea ce am, am pus o / n acolo, dar am avut slash greșit. Tot ce computerul Are este foarte explicit. OK? O greșeală puțin de punctuație, și dintr-o dată nu obține ceea ce vrei. In regula. Așa că haideți să zoom înapoi din nou. Vom merge înapoi. Ei bine, face ca repararea foarte rapid. Vom pune slash chiar în. Vom salva. Vom mări din nou. Din anumite motive, nu e a fi fericit, dar hai să mergem mai departe și vom merge înapoi la terminal aici. Clar-l. Vom mări. Și încă o dată, vom face iepuras. Și acum destul de sigur, că funcționează. Ura. BINE. Deci, haideți să încercăm să facem acest lucru un pic mai general. Să vedem dacă în loc de doar imprimare un anumit cadru, Să vedem dacă putem face acest lucru astfel încât să putem obține toate 10 dintre aceste cadre animate că am vrut să aibă. Deci, din nou, să luăm un pas la un moment dat. Să-l mai întâi generaliza, nu ca să fac toate cadrele, dar, așa că am face nici unul cadru care s-ar putea dori. Deci, ce este diferența între cadrele? Este iepurașul la fel? Audiența: Da. BRIAN SCASSELLATI: Da. Care este diferența? Audiența: Poziție. BRIAN SCASSELLATI: poziția, nu? Și cum pot controla poziția? Câte puncte sunt punerea la începutul și cât de multe puncte sunt punând la sfârșitul anului. Așa că am avut cinci la începutul și cinci de la sfârșitul. Să înlocuiască cinci cu o buclă pentru. BINE. Și am de gând să creeze un pentru buclă acum că va spune, Am de gând să imprima un numar de puncte de la început. Am de gând să utilizeze o variabilă. Să spunem, cum eu, ca despre contorul în buclă mea. Și am de gând să-l declare până sus. Și apoi în bucla de Am nevoie pentru a face trei lucruri. Primul lucru ce trebuie să fac este am nevoie pentru a inițializa i. Ce ar trebui să inițializa să înceapă să fie? 0. BINE. Atunci am nevoie să spun, ceea ce este condiția de terminare? Când ar trebui să mă opresc? Ei bine, cât de multe puncte a face tu doriți să imprimați pe asta? Audiența: Cinci. BRIAN SCASSELLATI: Cinci din nou? Ce zici să facem ceva altfel, am făcut cinci. Să arate că e diferit. SPEAKER 22: Doi. BRIAN SCASSELLATI: Doi. BINE. Deci, dacă vreau două puncte, ceea ce ar trebui să am pus aici? Audiența: Trei. BRIAN SCASSELLATI: Trei. BINE. De câte ori este că va trece prin? Care va trece prin de trei ori, 0, 1, 2 și, nu? Bine, hai să mergem înapoi la două. Acum vom avea două puncte. Și ce vreau să fac în fiecare când mă duc prin bucla? Ce trebuie să se schimbe de fiecare dată când mă duc prin? SPEAKER 23: Adaugă un punct. BRIAN SCASSELLATI: Trebuie să continui. Am de gând să adăugați un punct. Am de gând pentru a imprima un punct, de fiecare dată prin bucla. Dar cum mă urmărire a modului în care de multe ori am fost prin bucla? Sunt folosind I, care variabilă, care contra. Deci, de fiecare dată, prin, am de gând a incrementa contorul de unul. Acum, că e la fel de mă spunand ca i = i + 1. Asta e ok. Am putea-o face that-- îmi place stenografie, așa că voi spune eu ++. BINE. Să facem același lucru aici în partea de jos. Doar am facut un fel de asta. Am de gând să lase voi face acest lucru un complet. In regula. Deci, ce ar trebui să scriu aici? Iată mea pentru bucla. Am de gând să fac un printf () și am de gând pentru a face astfel încât să imprimați doar o singură punct pe care partea de jos. Ce ar trebui să scrie în interiorul acestui bucla de acum? Ei bine, în primul rând ceea ce variabile ar trebui sa folosesc? SPEAKER 24: J. BRIAN SCASSELLATI: Mi-ar prinde J. Pot folosi același cu cel? Pot să folosesc din nou? Da. Asta e OK, pentru că IS că eu sunt, folosind aici, Nu am nevoie de ele din nou, atunci când I a lua în jos la acest punct. Deci, ce ar trebui să am inițializa la? SPEAKER 25: 10. BRIAN SCASSELLATI: 0. Ce ar trebui să verifice? Câte puncte am nevoie acum, la sfârșitul dacă am două puncte, la începutul? Am nevoie de opt la final, asa ca ce ar trebui să verifice, am mai puțin than-- Audiența: Șapte, opt, nouă. BRIAN SCASSELLATI: Am auzit șapte. Am auzit opt. Și am auzit nouă. BINE. Deci suntem toți în dreapta ball-- Jason spune 10. BINE. Dacă am nevoie de două puncte pentru primul, cât de multe face Eu-- și am nevoie de opt puncte pentru m Ultima Unu am pus de două deasupra, ceea ce ar trebui să am pus jos? Audiența: Opt. BRIAN SCASSELLATI: Opt. Pentru că o să conta la zero prin intermediul a șapte. Și asta e de opt ori prin bucla. BINE. Și ce trebuie să fac la sfârșitul? Audiența: i ++. BRIAN SCASSELLATI: i ++. In regula. Așa că se uită destul de bine acolo. Să încercăm și să vedem ce face. BINE. Deci vom să-l salveze. Frumos și salvat. Vom micșora înapoi. Vom încerca aici, în terminal. Vom mări. Oops. Vom, încă o dată, face programul nostru iepuras. Și mergeți mai departe și să execute iepuras. Și nu este. Deci nu e bunny nostru. În cazul în care are două puncte de la începutul și opt puncte la sfârșitul. Toată lumea cu mine? BINE. Deci, l-am construit. Am construit un iepuras, un anumit cadru. Acum am fost în stare să generaliza că pentru a construi mai mult, diferite tipuri de rame. Acum să mergem mai departe, și au genera nu doar un cadru, dar sa genereze 10 rame, unde incet face iepuras muta toate drumul peste câmpul. In regula. Să ne întoarcem. Și vom încerca acum. Deci ce am nevoie pentru a schimba aici? De ce am nevoie pentru a schimba? SPEAKER 26: trebuie mai întâi să schimba numărul de puncte maxim la inceput. Pentru că dacă facem 10 puncte, se va avea nevoie de până la scară. BRIAN SCASSELLATI: Da. Deci, chiar acum am o un fel de hardwired de a face întotdeauna două puncte de la începutul și întotdeauna a face opt puncte la sfârșitul anului. Vreau să construiască o altă buclă, nu? Pentru ca nu vreau construi doar o imagine iepuras, Vreau să construiască 10 imagini iepuras. Așa că am nevoie pentru a construi o altă buclă, și cum am trece prin asta buclă, Vreau să se schimbe cât de multe puncte imprima la început și cât de multe puncte imprim la sfârșitul anului, pe baza cărora ciclu prin bucla Am intrat. In regula. Așa că hai să-un alt contor. Cineva a spus, înainte de J, asa ca vom face un alt J. Și acum, vom construi un alt pentru buclă. Ce se în interiorul că bucla? Chestia asta trebuie să meargă în interiorul buclei, nu? Are iepuras au pentru a merge în interiorul buclei? Am nevoie de un iepuras in fiecare dintre aceste 10 cadre? Audiența: Uh-huh. BRIAN SCASSELLATI: Da. Vreau un iepuras în fiecare din 10 cadre, nu? Ce zici de punctele de la cele din urmă, nu am nevoie de asta? BINE. Deci, am de gând să indenta toți. Am de gând să subliniez toate acest lucru, și am de gând să lovi Tab. Și asta o să-i împingă pe toți un pic, astfel încât este ușor pentru mine pentru a vedea ce este în bucla. Și apoi voi termina. Sa spunem. OK? Acum, în această buclă, care Sunt building-- Hopa, face ca astfel încât să puteți see-- Am contra mea J. Voi a început la 0. De câte ori vreau să treacă prin această buclă? Audiența: de 10 ori. BRIAN SCASSELLATI: de 10 ori. Deci, ce număr ar trebui să pun aici? Audiența: 9, 10. BRIAN SCASSELLATI: 9, 10, Cineva trebuie să spună 11, nu? Am vrut două puncte înainte și a pus eu mai puțin de 2. Am vrut opt ​​puncte, Am pus eu mai puțin de 8. Acum vreau să trec prin 10 ori, asa ca am pus j mai than-- Audiența: 10. BRIAN SCASSELLATI: 10. Nu mergem. Și ce fac la sfârșitul pentru a J? ++, Ea incrementa. BINE. Acum, aici e partea complicat, ceea ce este se va întâmpla acum, dacă am face acest lucru? Am de gând să imprima 10 cadre? SPEAKER 27: Cred că vor fi toate la fel. BRIAN SCASSELLATI: Vor toate să fie la fel, nu? Deoarece toate dintre ele sunt încă în desfășurare pentru a pune două puncte de la început. Dar eu nu vreau să-le pe toate au două puncte de la început. Câte puncte îmi doresc la început? Audiența: Schimbarea. BRIAN SCASSELLATI: I vreau să se schimbe, nu? Deci, ce am eu aici că se schimbă de fiecare dată când bucla trece prin? Audiența: Numărul de puncte, J. BRIAN SCASSELLATI: J, numărul de puncte. Așa că am putea schimba acest lucru să fie J. Prima dată prin buclă, ce că va fi? Ce pot seta j la cel mai întâi? Audiența: 0. BRIAN SCASSELLATI: Deci câți ori am de gând să fac acest lucru? 0. A doua oară prin bucla, J anii Va fi o pentru că l-am incrementa. Câte puncte am de gând să imprima? 1. A treia oară prin bucla, câte puncte am de gând să imprima? Audiența: Trei. BRIAN SCASSELLATI: J va fi de 3. Câte puncte am de gând să imprima? Oh, îmi pare rău, J va fi de 2. Câte puncte am de gând să imprima? Audiența: 2. BRIAN SCASSELLATI: 2. OK, așa că am de gând să păstreze incrementing că, mergem de-a lungul. Ce zici de jos? Ce se duce în jos aici? Nu vreau 8 întotdeauna la mai final? SPEAKER 28: 10. BRIAN SCASSELLATI: Vreau 10 puncte? Vreau să se schimbe, de asemenea. Deci, cum vreau să se schimbe? Audiența: [neauzit]. BRIAN SCASSELLATI: Ei bine, dacă am au cinci puncte de la început, câte lui dot primesc la sfârșitul? Audiența: Cinci. BRIAN SCASSELLATI: Dacă am șase puncte, la începutul, câte primesc la sfârșitul? Audiența: Patru. BRIAN SCASSELLATI: Dacă am primit șapte puncte, la începutul, câte primesc la sfârșitul? Audiența: Trei. BRIAN SCASSELLATI: dacă am doar de buline j la început, câte primesc la sfârșitul? 10-j. BINE. Deci, hai să încercăm asta. Deci, am de gând să salveze programul nostru iepuras. Încă o dată, vom micșora. Vom coborî la terminalul nostru. Vom clar. Și mări. Vom face programul nostru iepuraș, din nou. Si vom executa. Uh-oh. Stai, să micșora. Am primit 10 cadre? Ei bine, cum de multe iepurași îmi văd acolo? 1 2 3 4 5 6 7 8 9 10. Am 10 cadre. Sunt toate la fel? Audiența: Da. Nu. BRIAN SCASSELLATI: Nu. Asta în primul rând unu, Bunny este acum pe partea stângă. Și aici, iepurașul este departe cu privire la SPEAKER 29: dreapta. BRIAN SCASSELLATI: Deci, Ce am uitat să fac? SPEAKER 30: Începeți un rând nou. BRIAN SCASSELLATI: Mi-am uitat pentru a începe o nouă linie, din nou. Aceeași greșeală pe care am făcut înainte. Bine, să mergem repara asta. Acum, am încă codul acolo pentru a face o nouă linie. De ce nu a făcut-o de lucru? SPEAKER 31: Nu e in interiorul buclei. BRIAN SCASSELLATI: Oh, nu e în interiorul buclei. Asa este. E în afara ședinței aici. Și pentru bucla este totul care este în interiorul acestui text. Deci, am de gând să se mute acest interiorul bucla for. Și voi Tab în fața lui la arată că este în locul potrivit. Și acum, vom salva din nou. Vom micșora. Vom trece pe la terminalul nostru. A mari. Vom reface programul nostru iepuras. Și acum, acum avem noastre 10 cadre. [Aplauze] BRIAN SCASSELLATI: OK. Asa ca. Aici este imbricate noastră pentru bucle. Noi am fost capabil să genereze în bucla interioară câte puncte am vrut pentru a imprima la început, la sfârșitul. Și bucla exterioară controlată câte cadre am fost construirea. Am inceput cu o mică nucleu a problemei, si am construit de la acel punct. In regula. Să facem încă un pas. Ești gata? Există un singur lucru în cazul în care aici am primit de fapt un fel mai complexitate decât avem nevoie. Hai să aruncăm o privire. Deci, în programul nostru iepuras, dacă am micșora aici, De fapt, fac parte din același lucru de peste si peste din nou. Ce fac asta e un fel de același lucru repetă de două ori? SPEAKER 32: Print puncte. BRIAN SCASSELLATI: Da Imprima aceste puncte de două ori. Într-adevăr, ar trebui să am acest comentariu aici. Imprima unele puncte la începând, chiar aici. Și apoi am imprima unele puncte la sfârșitul anului. Și eu fac un fel de exact același lucru. Ce vom începe de lucru pe în următoarele câteva săptămâni este posibilitatea de a lua acele blocuri de cod pe care le folosim peste si peste din nou, și printr-un proces numit abstracție, vom să-i scoate și le scrie o dată astfel încât să putem apoi le reutiliza de peste si peste din nou. Deci, haideți să încercăm. Gata? Vom lua acest bloc de cod. Și am de gând să-l scoată de acolo. Și am de gând să define-- in partea de jos, Am de gând să scrie o nouă funcție. Nu va pentru a reveni nimic. Și am de gând să-l sun printDots. Se va lua o argument, un număr întreg care spune că ar trebui să howManyDots imprima. Și acum, în loc de imprimare puncte j, voi imprima spune howManyDots că ar trebui să imprima. Și există o mică problemă aici. Știe cineva ce este? Ce am eu care este listat aici care nu este definit? Audiența: [inaudibil] BRIAN SCASSELLATI: Ei bine, cum mai multe puncte este definită până aici, dar eu sunt, folosind ca variabile i. Așa că am de gând să ia că variabila i și am de gând să-l definească în aici în schimb. Deci, acum o să stay-- oops, au caps lock pe somehow-- Sunt O să am păstra în aici. Deci, acum aici e funcția mea mica sau sub-rutină, și se spune, câte puncte am de gând să imprima? Și-l va trece prin această buclă și a le imprima de peste si peste din nou. Pot modifica apoi programul meu aici. Și ce eu numesc această funcție? printDots. Așa că sun printDots. Câte puncte vreau să imprimați prima dată în fața iepurașul? Audiența: J. BRIAN SCASSELLATI: J. Câte puncte vreau să imprimați la final, după ce iepurașul? 10-j. Și e un lucru îmi lipsește. După cum ați văzut în curs de astăzi, vom declara printDots până mai sus pentru a da prototip. BINE. Deci, ce am făcut e că am încercat să izola partea refolosit de cod care le-am făcut de peste si peste din nou. Și am încercat să-l scoate, astfel încât tot de care este conținută într-un singur loc. În acest fel, dacă am o greșeală pe undeva, Trebuie doar să-l repara într-un singur loc. In regula. Deci, haideți să-l salveze. Și să vă asigura că funcționează. Așa că hai să mergem afară. Vom merge din nou la terminalul nostru. Vom mări. Vom face acest proces iepuras. Oh. Și este mi-a dat un avertisment. Ce se-mi spui? Ei bine, în oricare dintre aceste ori, vrei mereu pentru a defila până la prima error-- acum pe asta, am doar unul. Ea mi-a spus în bunny.c, pe linia 8, coloana 9, există o problemă. Se spune, ai declarat acest Am variabilă și nu l-au folosit. Acum, în mod normal, asta e nu cel mai rău eroarea. Asta e una ușoară de a stabili. Și, de fapt, ne putem întoarce în. Ne putem întoarce la Bunny. Și în acest caz, tot ce trebuie să faceți este să scape de I, pentru că nu utilizați Am în principal mai. Noi doar folosind-o în nostru sub-rutina. Deci, haideți să salveze. Vom merge înapoi. Și mări. Vom unul de mai mult timp să iepuras. Și din nou acolo sunt noastre 10 cadre. BINE. De fiecare dată când te dat un procedure-- Da. SPEAKER 33: Am un-- eu sunt confuz. Poți să te întorci la codul? BRIAN SCASSELLATI: Da. SPEAKER 33: Deci, atunci când a scris prototip dumneavoastră, argumentul te l-au numit fost numit howmany? Dar, below-- BRIAN SCASSELLATI: Oh, da. SPEAKER 33: le --called ceva diferite, eu nu înțeleg. BRIAN SCASSELLATI: De ce sunt diferite. Deci asta este o întrebare foarte bună. Deci întrebarea era, până aici, am scris howmany, și jos, am scris howManyDots. Motivul este că, până în prototip dumneavoastră, de fapt nu este atent la numele pe care îl pune în. Toate într-adevăr îi pasă este că este un număr întreg. Vrea să știe formularul de ceea ce pune în. Acum stylistically-- oops-- ceea ce ar trebui să Nu, este îmi place să fac aceste partida. BINE. Pentru că veți fi păstrați-l mai ușor pentru mine să-și amintească. Dar asta a fost greseala mea Da. SPEAKER 34: Și așa de prototip de a lucra, doar scris că linia, scris prototip, permite ca funcție care vine chiar sub ea pentru a merge până la capăt și de a prelua ce înseamnă asta? BRIAN SCASSELLATI: Ce înseamnă este atunci când compilatorul trece prin, merge de la partea de sus a codul la partea de jos. Și ce acest prototip este, este practic o promisiune. Se spune, că va fi o funcție definită pe undeva. O să fie numit printDots. Și că va lua un argument care va fi un număr întreg si va reveni la nimic, de tip void. BINE. Îți promit că te va fi definit undeva pe drum. Dar de fiecare dată când vedeți că, așa cum te duci în jos prin restul de meu Funcția principală, vreau să trateze ca pe un funcție care are o intrare întreg. Și astfel, atunci când compilatorul se duce în jos Prin aceasta, se vede că promisiune. Și atunci când acesta devine în jos, păstrează merge, continuă merge, constată prima dată printDots este menționat. Și se spune, Oh, dai -mi J. j este un număr întreg. Ei bine, mi-ai promis că va fie un număr întreg și ce-i drept. Asta e ok. Și apoi în cele din urmă, în jos chiar partea de jos, înainte de a mă la sfârșitul meu fișier, fac bine pe promisiunea mea și l-am defini. OK? SPEAKER 35: Deci, saves-- Programul va salva spații goale că merge înapoi și umple la sfârșitul? BRIAN SCASSELLATI: Nu este cu privire la alocarea de memorie. De fapt, doar despre ceea ce Tipul te asteptam sa vedem. În cazul în care acest lucru au un argument, sau cinci argumente? Ar fi trebuit să fie numere întregi dat să-l, sau siruri de caractere? Asta e tot ce se uită să faceți este să verificați, te-mi da drept un fel de argument. OK? In regula. Lasă-mă să te las cu un alt bit să se uite la. ASCII arta nu este marea modelul de animație așa cum este astăzi. Dar unii oameni, desigur ia lucrurile și ei l împinge la extreme lor. Aceasta este, după cum o demonstrează David în curs, o bucata de cod că ar trebui să în nici un caz încercați să vă duplicat. Pentru ca este groaznic stilistic. De fapt, acesta este conceput pentru a fi la fel de greu ca posibil de citit. BINE. Deci, pentru a face din nou, să măriți aici. Am de gând să plec acum, director schimbare. Am de gând să meargă în sus cu un nivel, înapoi la spațiul de lucru meu. Voi schimba atunci director în acest alte director pe care le-am creat. Și aceasta este International Obfuscated C de programare Concurs. Mijloace obfuscated fi greu posibil, pentru a înțelege. Deci, vă rugăm, nu-ți fie frică dacă te uiți la acest și du-te, nu pot citi asta. Acesta este punctul de ea. OK? Dar, avem această program de minunat că eu sunt O să se uite la doar prin tastarea mai mult. Și să vedem dacă pot micșora doar un pic, astfel încât să puteți vedea Și aceasta este programul. Este numit endo.c. Si se pare ca acest lucru găleată cu un fel de scrisori F-L-U-I-D în ea. Aceasta este de fapt un program de. Este scris în cea mai obscură încât autorii ar putea eventual scrie. Dar e o piesă minunat mic care generează un model de dinamica fluidelor. Și așa vom da acest model o intrare care arata ca acest lucru, de un staired set de recipiente cu unele lichid, unele lichid, până la partea de sus. Și vom avea simula ce se întâmplă cu ea. Așa că sun această funcție, endo. Și o să-l dau ca fișier de intrare pe care le-am avut. Și există simbol nostru de ASCII art. Un simulator dinamic fluid complet rulează în doar câteva linii de cod. Acum, ceea ce este de fapt foarte uimitor despre acest program mic este că vreau să-l oprească acum, așa că am de gând să utilizeze ceea ce comandă? Audiența: Control-C. BRIAN SCASSELLATI: Control-C. BINE. Așa că voi folosi Control-C. C Asta opri. Voi șterge din nou. Iar acum am de gând să invoce Programul, executa programul, folosind-se ca intrare. Și vom vedea dinamica de fluid simulare de ea topire. BINE. Vă rugăm să nu lăsați acest program fi un lucru pe care le confundă. E doar astfel încât să putem încheia la ceva cool si interesant. BINE. Cel mai bun de noroc cu seturi de probleme. Vom fi bucuroși să răspundem la întrebări după clasa. Multumesc mult, băieți.