>> Jason Hirschhorn: Bine ați venit la CS50 secțiune, toată lumea.
Numele meu este Jason Hirschhorn.
Sunt o mulțime de TFS ta, dar o mulțime de oamenii vor fi, sperăm, alături de noi
on-line, elevii de extindere sau studenți încercând să se uite prin secțiunea dacă
ratat punctul lor de acea săptămână sau doar prinde din urmă, dacă au vrut
pentru a revizui unele materiale.
>> Deci, ca pe programa, care toate de ce ați citit, corect?
Vad o multime de dă din cap.
Secțiuni vă oferi oportunități pentru a explora curs de
material într-un mediu mai intim, precum arunca cu capul în
hands-on activități.
>> Deci, asta e de fapt ceea ce suntem gând să faci în fiecare săptămână.
Vom merge prin ceea ce avem determinat pentru a fi cel mai important
Subiectele acoperite în curs, precum și cele probabil, de asemenea, cele mai utile si
cel mai probabil să vină pe seturi de probleme și în teste, și în codificare dvs.
viata in afara de CS50.
Așa că am de gând să meargă în aceste subiecte, le discuta, du-te peste ei,
răspunde la orice întrebări ați avea, și apoi vom face o mulțime de
probleme de practică în codificare.
>> Ai adus toate laptop-uri, care este fantastic.
Aceasta este o clasă de informatică.
Cu toate acestea, o mulțime de exerciții pe care le facem, nu veți avea nevoie de laptop-uri pentru.
Le puteți face pe o foaie de hârtie.
Asta e cum ai de gând să le facă pe chestionare.
Și într-adevăr, că este o modalitate foarte bună de a într-adevăr știu că vă cum să faci
ceva dacă nu aveți Sosire de 50 de se bazează pe sau de a face să se bazeze pe, spunându-
ați făcut orice erori.
>> Deci, ești binevenit să codul de aparat sau run.cs50.net, care este
un alt instrument care vă permite să cod on-line, dar, de asemenea, s-ar recomanda, în cazul în care
nu ați încercat, folosind o foaie de hârtie și încearcă aceste practici
problemele de pe o foaie de hârtie.
Pentru că, din nou, că este în cele din urmă ceea ce ai de gând să fie
a cerut să facă pe teste.
>> Așa că haideți să începem cu noi ordinea de zi pentru ziua de azi.
Vom trece peste anumite norme pentru secțiunea noastră, atunci vom arunca cu capul
în tablouri, funcții, și linia de comandă argumente, care este ceea ce voi
au acoperit în această săptămână trecut în curs și apoi luni, și ceea ce veți acoperi
mai mult de mâine.
Și în final, vom pentru a vorbi despre pset2.
Dacă am putea obține un spectacol de mâini, dacă nu s-au uitat la setul problema doi
caietul de sarcini.
Vom spune toată lumea.
Fantastic.
>> Vom vorbi despre seturi de probleme într-un pic, dar dacă ai citit setul problema
caietul de sarcini, care este tot ce trebuie sa faci.
Dacă ați citit că înainte de a veni la clasa și secțiunea marți, veți
fie o poziție de mare.
Putem merge prin setul de probleme, care este ceea ce vom
să facă la sfârșitul.
Vom merge prin logica, asigurați-vă că
toată lumea este pe aceeași pagină.
>> Vreau să fie în măsură să plece marți simti foarte confortabil cu ceea ce
trebuie să facă pentru probleme set din această săptămână, și dacă nu, o voi face fericit
rămâne după ce și de a lucra cu tine.
Dar asta este un lucru pe care trebuie să fac, dar cred că ar fi foarte inteligent,
doar pentru a citi setul problema specificație de clasă marți,
care se pare ca o mulți dintre voi a făcut.
>> Voi începe cu o ordine de zi pentru fiecare clasă astfel încât să știu unde mergem.
Acest lucru este, de asemenea, util pentru oameni vizionarea on-line pentru fiecare secțiune
este cod de culoare, așa că dacă vrei să vii pe spate și priviți la doar 10 minute, mai degrabă
decât întreaga secțiune de 90 de minute, te pot merge doar la secțiunea cu coduri de culori
si uita-te la acea parte.
Așa că am încercat să-i rupe în frumos module care vă va permite să -
dacă vrei să vii înapoi și să revizuiască, sau alți studenți care sunt doar
vizionarea o secțiune pentru a examina -
pentru a găsi un lucru specific care Vreau să acorde o atenție la
si de a invata mai multe despre.
Dulce.
>> Norme.
Sunt un lider POP în campus.
Nu știu dacă cineva a făcut POP.
Ai cineva face FOP?
O persoană a făcut POP.
Doi oameni au POP.
Minunat.
Deci, FOP este primul an în aer liber Program de orientare.
Ne ia bobocilor în pădure și să facă experiențele cele mai magice de
viața lor, corect?
Da.
Sunete despre dreapta.
>> Așa că am vrut doar să înceapă prima noastră secțiune prin discutarea unor norme
pentru clasa și relația noastră pentru că eu cred
sunt foarte importante.
În primul rând, ca cei care sunt partea mea s-au primit și
a fost discutată în acel e-mail, îmi place acest lucru.
Aceasta este partea mea favorita din an.
Am fost atat de entuziasmat.
Am fost aici de ore azi.
Nu am părăsit această clădire cu excepția a mergi sa mananci pentru că îmi place CS50 secțiune, am
place să predau, îmi place de lucru cu voi.
>> Una dintre prioritățile mele, dacă nu-mi prioritatea numărul unu, nu numai pentru
această clasă, dar inclusiv alte meu clase și extrașcolare, este de a
sprijini voi, și vă ajut, și fac tot ce pot pentru a vă asigura că
baieti au un minunat, distracție, productiv, angajarea, captivant
experiență în această clasă.
Asta e ceea ce am angajat.
Asta e ce-mi place să fac asta.
Acesta este numărul meu de un singur lucru, sprijinirea voi.
Dacă aveți orice întrebări despre curs, Setul problema, sectiune,
viață, chiar dacă vrei să vorbim despre viață, vă rugăm să nu ezitați să ajungă.
>> Ai numărul meu de telefon mobil, aveți e-mail meu
adresa, aveți Gchat mea.
Ma puteti contacta la orice sau toate dintre cei ori de câte ori, dar, probabil, nu va primi
un răspuns ori de câte ori.
Eu încerc să mă întorc în 24 de ore.
Deseori aceasta va fi cuprinsă 20 de minute sau 24 minute.
Ar fi trebuit sa spus că pentru a face o paralelă.
Dar va primi un răspuns destul de repede.
>> Dacă mă text de o oră înainte de Setul problema e din cauza, eu vă va calma
în jos și de a face exercitii de respiratie profunda cu tine, dar dacă nu au început,
esti, probabil, nu vor termina, și Eu nu te pot ajuta cu adevărat acolo
chiar dacă voi încerca meu cel mai bun.
Așa că voi face tot Eu pot să vă susțină.
Vă rugăm să nu ezitați să ajungă dacă este în secțiunea din nou, la Orar de lucru
daca ma vezi, sau chiar în afara.
Sunt fericit să înființeze un timp pentru a răspunde și locul de muncă prin probleme
cu sau trece peste materialul.
Astfel că este numărul unu, de sprijin.
Voi face tot ce pot să vă susțină.
>> Numărul doi, reuniunea la mijloc.
Oricât de mult aș vrea să fi, eu sunt nu omnipotent și atotputernic sau
atotștiutor, așa că nu știu tot timp dacă ceea ce fac este obtinerea
peste, dacă modul în care predau subiect vă ajută să-l învețe, sau dacă
sunt confuzi cu privire la un subiect, dar nu ridica mâna sau intreaba-ma
sau trimite-mi un e-mail.
Sau, chiar dacă, din nou, sunt confuz despre ceva pe platourile de filmare problema.
Dacă nu ajunge la mine, Nu pot să știu că pentru sigur.
Am de gând să fac tot ce pot pentru check-in pe voi, asigurați-vă că totul este
merge bine, încearcă să învețe lucruri într-un mod care va conduce la cele mai multe dintre
stiluri de învățare, dar în cazul în care există Pot să fac ceva, să-mi spuneți.
>> De-a lungul acestor linii, dacă aveți nevoie de ajutor cu set de probleme, eu sunt mai mult
decât fericit să vă ajute cu setul problema.
Am de gând să faci o mulțime de că spre a doua
jumătate din această secțiune.
Dar dacă nu ați citit problema stabilește spate și nu s-au uitat la plimbare
prin și nu au privit pantaloni scurți și așteaptă-mă să te învăț
tot ceea ce a fost filmat on-line sau pe care le puteți găsi la CS50
Studiul, care nu e chiar corect la mine sau a altor colegii dumneavoastră.
>> Asa ca te rog, eu sunt mai mult decât fericiți să vă ajutăm tine, dar voi trebuie să se întâlnească cu mine în
la mijloc.
Avem tone de resurse pentru vă la dispoziție pe CS50.
Am menționat unele dintre ele.
Vă rugăm să profite de ele.
Dacă sunteți confuz, eu sunt mai mult decât fericit pentru a vă ajuta să le explicați în
un alt mod, dar nu este corect dacă elevii apar la ore de birou,
nu au început nimic, și e Joi noapte și ei așteaptă
TF să le plimbe prin fiecare lucru pentru problema stabilit din cauza
la prânz a doua zi.
Face sens?
Din nou, vă rugăm să ne întâlnim la mijloc.
>> Și, în sfârșit, așteptările ridicate.
Am de gând să fie de clasificare toți cei care-i în secțiunea mea, sau scor dvs.
seturi de probleme.
Nu s-au întors problema setat la zero sau unul încă.
Ne pare rău pentru asta.
Ne-a luat ceva timp sa sfârșit stabili secțiuni, și acum
putem începe clasificare.
>> Îi voi lua înapoi la tine cât mai curând posibil.
Acestea sunt unele dintre meu advisees acolo.
Îi voi lua înapoi la tine cât mai curând posibil.
Și pentru set de probleme a doua, vom fi pe programa și vom începe să obtinerea ei
pentru a te destul de repede după le predai
>> Când ajungi problema ta setat înapoi, va obține scoruri, după cum știți de la
citirea programa - corectitudinea, proiectarea, domeniul de aplicare, precum și stilul de scoruri.
Veți primi, de asemenea comentarii.
Observațiile sunt mai importante decât scorurile.
Cred că este sigur să spun că.
>> Scorurile sunt doar un număr la unu la cinci.
Este greu de citit în cele.
Este greu pentru a îmbunătăți de la cele.
Dar comentariile vor sublinia specifice ce ai făcut bine sau zone
vă puteți îmbunătăți și vă dau câteva idei pentru viitor sau alternative
moduri de a face lucruri.
>> Așa că vă rog, vă rog, vă rugăm să citiți prin comentarii.
Am pus o mulțime de timp în aceste comentarii.
Va rugam sa cititi si nu numai derulați în jos în partea de jos a
PDF, uita-te pentru scor, sau du-te on-line și găsi scorul dvs., și apoi ignora
comentariile.
Asta nu e cum esti mergi la a lua mai bine.
Asta nu e cum ai de gând să crească scoruri în cele din urmă, doar
uitandu-se la scoruri.
Vă rugăm să se uite la aceste comentarii.
>> Și de-a lungul liniei de așteptările mari, din nou, cum am spus, voi
poate fi marcat de la unu la cinci.
Câte doi, câte trei, și patru labe sunt marea majoritate a scorurilor
ai de gând să fie obținerea.
Ones și cinciari sunt ambele foarte rare.
Există întotdeauna lucruri putem face mai bine.
Ori de câte ori am codul de un program, există întotdeauna ceva
ar fi putut face mai bine.
>> Deci, mai degrabă decât a spune te o perioadă de cinci tot timpul pe toate și a făcut
totul perfect, nu cred nici o dintre noi cred cu adevărat că noi - sau
Din fericire, noi nu facem totul perfectă tot timpul.
Deci, nu fi îngrijorat dacă te nu a primit un cinci.
Un cinci nu harta pe un A, un patru nu harta pe un B, un trei nu
Nu harta pe o C. Asta nu e cum funcționează scorurile.
>> La fel ca David a spus de multe ori, la sfârșitul semestrului toate scorurile și
de intrare de la mine, TF ta, vin împreună și de a determina o nota finală pentru tine.
Dar, din nou, nu-i cinci, A, patru, B, et cetera.
Așa că am de gând să aibă așteptări mari pentru voi.
Am de gând să aștepte bine problema seturi și am de gând să dea
te feedback-ul ca atare.
Și nu o să spui că ești gând pentru a obține un grad mai rău.
Vă sunt clasificate în funcție de progresul din săptămână
zero la cursul lui.
>> Și, în sfârșit, în ceea ce privește mare așteptări din clasa, îmi place când
oameni să participe.
Înțeleg că unele persoane se simt mai mult sau mai puțin confortabil participante.
Alte persoane sunt participante nu prin ridicarea mâinii lor și
vorbind tot timpul.
Dar noi în această clasă vor fi face o mulțime de probleme mici, foarte mult
de mini întrebări, și apoi unele mai mare de codificare probleme.
Deci, cu siguranta lucra aceste exerciții în atunci când o facem pe computer sau pe
o foaie de hârtie.
>> Dar voi, de asemenea, da ceva timp înainte are cineva sa raspunda la unele
de întrebări cer.
Așa că eu vă va da ceva timp pentru a gândiți-vă, pentru că vom
de a face lucrurile în parteneri, uneori, Voi aștepta toată lumea
pentru a fi angajat oarecum.
Și pentru lipsa unui termen mai bun, acolo va fi, probabil, de asteptare la rece, care
este locul unde toată lumea va avea o șansă să se gândească la răspuns, și apoi
Voi suna pe tine, și apoi vei spune răspunsul.
>> Nu vă faceți griji sau să fie speriat de asta.
L-am făcut în trecut și am găsit care este mult mai mult succes,
citit, de asemenea, cercetarea educațională pe ea pentru a determina dacă este sau nu a fost un
buna tactica.
Este foarte util, mai ales dacă da elevilor timp să se gândească la
răspunsuri și nu le face doar vin afară și spune right off BAT.
Dar dacă nu vă simțiți confortabil răspunde, eu sunt, de asemenea, destul de bine la
simțind asta, iar noi nu vom ai pus la loc, mai ales pe
camerei, chiar dacă nici unul dintre sunteți pe camera chiar acum.
>> Deci, acestea sunt normele pe care le am.
Un lucru mai mult de-a lungul liniilor a reunit la mijloc.
Am de gând să vă dau baieti o mulțime de feedback.
Vă rog să-mi feedback-ul, de asemenea.
Există un site web, sayat.me/cs50.
Deci, este un feedback sincer.
Dacă doriți să-l dea în secțiune, Primesc un e-mail de fiecare dată când se întâmplă.
Vom lua o pauză într-un pic, așa că voi uita-te prin feedback-ul atunci.
Dacă aveți vreodată orice feedback, vă rugăm să-mi acolo.
>> Dacă-mi dai feedback-ul pe Q, care este minunat, dar asta e ghidul
pe care le face la sfârșitul anului.
Dar care va fi la sfârșitul semestrului, astfel Eu nu va fi capabil să ia orice de care
feedback-ul și ao transforma în predare mai bine voi.
Deci, vă rugăm, dacă aveți orice feedback-ul, dă-mi.
Îmi place feedback-ul.
Înapoi la FOP, vom primi feedback tot timpul.
>> Puteți să-mi dai plusuri, lucruri bune, delte, lucruri pe care le pot ameliora.
Puteți comenta pe costumele mele.
Că nu va fi la fel de util, dar tu esti Bine ați venit pentru a comenta cu privire la orice și
totul.
Vă rugăm, vă rugăm să-mi dea feedback-ul.
Apreciez foarte mult și-l înseamnă mult pentru mine.
>> O normă mai mult, distractiv.
Vom avea o mulțime de distracție.
Sperăm că în acest curs, veți au o mulțime de distracție.
Vom avea bomboane la secțiunea.
Vom avea muzica.
Noi sperăm că va fi de a cunoaște unul un alt oarecum bine, asa ca vreau
aceasta să fie o distracție, experiență angajarea.
>> Știu că unii dintre voi au adormit în prelegerile ai avut mai devreme,
deci sperăm că nu vor este cazul acum.
Și dacă acesta este cazul acum, doar Nu sforăi, pentru că s-ar putea
fi prins pe camera foto.
Dulce.
Orice întrebări, comentarii, sau nelămuriri înainte de a trece la cam tot ce am
a vorbit despre?
Mare.
>> Deci, vom merge în primele tablouri.
Acesta este modul în care vă face o matrice.
Am mai văzut asta înainte.
Ai un tip de date, aveți un nume, și apoi aveți o dimensiune.
Chiar aici, am crea două tablouri.
Prima dintre ele este un tablou de caractere, și are 26 de locuri.
Doilea este o matrice de scoruri, și are trei
spații pentru trei numere întregi.
Da?
>> STUDENT: Sunt toate aceste diapozitive disponibil undeva pentru noi?
>> Jason Hirschhorn: marea întrebare.
Întrebarea a fost, sunt toate de aceste diapozitive disponibil?
Da.
Toate aceste slide-uri vor fi disponibile, și în viitor, voi e-mail-
te înainte de secțiune.
Dar astăzi, pentru că aceasta este prima săptămână, am avut un început târziu.
Deci, de obicei, veți obține aceste slide-uri, dar acestea vor fi disponibile online și
O să le e-mail la tine imediat după clasa.
Orice alte întrebări?
>> Deci, din nou, tablouri sunt cutii, pentru lipsa de un cuvânt mai bun, care dețin mai multe
elemente de un tip de date, și sunt unul lângă altul în memorie.
Și astfel, din nou, acest lucru este modul în care se poate face două tipuri de tablouri.
>> Deci, după ce ați făcut matrice cu că prima linie - Rezultate int, suport
, suport de aproape trei - te Vreau să-l inițializa.
Vrei să pun niște valori de acolo.
Și acest lucru este modul în care ai pus niște valori în acolo, alege doar indice și
scris numărul.
Să ne trage pe tablă.
Se poate vedea toata lumea?
Toată lumea poate vedea.
Dulce.
>> Astfel că va fi meu array numit Rezultate.
După cum puteți vedea, e dimensiune trei.
Există trei cutii acolo.
Fiecare se poate potrivi ceea ce tip de tip de date?
>> STUDENT: Integer.
>> Jason Hirschhorn: Un întreg în aceasta.
Am scris scoruri int, și primul cuvânt este tipul de date care va
du-te în cutii în care matrice.
Deci, eu pot potrivi trei.
De ce am de zero până acolo de pe bord?
De ce nu se spune scor zero este egal cu 1?
Amintește-mi numele tău.
>> STUDENT: Kurt.
>> Jason Hirschhorn: Kurt.
>> STUDENT: Da.
>> Jason Hirschhorn: De ce?
>> STUDENT: Pentru primul indice este la zero, vom începe numărarea de la zero.
>> Jason Hirschhorn: Deci, vom începe numărare la zero.
Asta e exact dreapta.
Aceasta este parte confuz și călătorie va te-ai trezit, mai ales atunci când sunteți
încercarea de a parcurge tablouri, pe care vom face într-un pic.
Vom începe numărarea de la zero.
Deci, dacă vreau să mă refer la primul cutie, nu e cutia unul.
Din păcate, e la zero cutie.
Doilea este de cutie, și în acest caz, al treilea este cutie doi.
>> Ce despre box trei?
Unde este cutia trei?
Sau, dacă vreau să fac scoruri, suport trei, suport aproape, ce e asta?
Deci, ai spus caracter nul.
Orice alte gânduri?
Ce este suport scor trei suport?
>> STUDENT: Nu există cu adevărat, deoarece ați definit doar ca scoruri,
suport trei.
>> Jason Hirschhorn: Deci tu spui ea nu exista cu adevarat.
În unele cazuri, atunci când avem de-a face cu siruri de caractere, în general, vom pune un nul
caracter la final.
Vom ajunge la faptul că într-o secundă.
Dar în acest caz, există nu este a treia cutie aici.
Deci, ultima cutie din orice matrice este dimensiunea minus 1.
Deci, dacă avem o serie de mărime n, prima casetă revine la zero, ultima este
la n minus 1.
Și în acest caz, ea nu există.
Nu este ceva aici, în memorie, dar nu este al nostru.
Noi nu-l dețin.
Noi nu am cerut-o.
Deci, dacă am încerca să-l acceseze, pe care le vom face într-un pic, suntem, probabil, va
avea probleme.
>> În acest caz, am inițializarea mea matrice cu trei variabile.
Vom pune un unul în cutie de zero, a doua în cutie, și trei în cutie doi.
Are cineva vreo întrebare despre inițializarea un tablou?
>> Așa că am trecut peste asta chiar acum.
Scoruri, suport trei, suport aproape, că nu există.
Suntem la zero indexate în informatică, așa că începe numărarea de la zero.
Ultima cutie disponibile pentru noi, este a treia cutie, dar se numește box
numărul doi.
>> În continuare, acest lucru este o alternativă modul de inițializare matrice.
Deci, în loc de a crea matrice pe una linie, de umplere prima casetă, apoi
a doua casetă, apoi de-a treia casetă, poți face totul într-o singură linie.
Deci, în această linie, ambele tablouri.
Acest lucru creează același tablou exact ca și ceea ce am creat aici, dar
doar într-o singură linie nu.
>> Acum, ne-am creat gama noastră.
De obicei, odată ce vă creați un tablou, te vrei sa faci ceva cu ea, dacă
asta e umple sau a lua lucrurile din ea si le imprima pe ecran.
În acest caz, vom merge prin intermediul nostru scoruri matrice, pe care am initializat pe
prima linie aici în gri.
Și apoi pe a doua linie, vom începe iterarea prin matrice.
Are cineva întrebări despre structura pentru o buclă?
>> Deci, aceasta este pentru bucla.
Avem starea noastră inițială, și apoi starea noastră finală, iar apoi am
repeta, eu, fiecare bucla.
Și în acolade în acest pentru buclă, ce se întâmplă dacă am fost pentru a rula
acest program?
Poate cineva să-mi spui ce ne-ar lua?
[? Matu? ?]
>> MATU: Imprimați toate scorurile pe fiecare linie.
Aceasta s-ar imprima fiecare scor pe o linie separată.
>> Jason Hirschhorn: Ce anume ar imprima?
>> STUDENT: Aceasta ar imprima o, apoi două, apoi trei.
>> Jason Hirschhorn: Exact.
Ar imprima una, apoi două, apoi trei, fiecare pe linii separate, deoarece
mergem prin matrice și veți vedea că în al doilea rând, printf
Declarație, scoruri i.
Deci, în primul tur de scrutin prin intermediul nostru pentru buclă, i este egală cu zero, ceea ce înseamnă că suntem
obtinerea de valoarea la scor zero -
care, dacă ne întoarcem la diagrama noastră, este unul -
și completarea -
oh, se spune c.
Asta ar trebui să fie% d.
Eu va stabili că într-un pic atunci când Am mana asta cu voi.
Dar vom prezenta un întreg astfel încât să ar trebui să fie% d chiar aici, nu% C.
Ceea ce este% c pentru?
>> STUDENT: caractere.
>> Jason Hirschhorn: caractere, exact.
Care este celălalt?
Dacă nu vrei să faci% d pentru o întreg, ce altceva poti face?
>> STUDENT: Eu.
>> Jason Hirschhorn:% I, exact.
Astfel încât orice întrebări despre iterarea prin matrice?
Deci, ce se întâmplă dacă facem acest lucru?
În loc de a face i este mai mică trei, noi nu i se mai
mic sau egal cu trei.
Ce se întâmplă atunci când vom rula acest cod?
Da, Annie?
>> STUDENT: Se vor imprima lucruri ciudate pe a patra linie.
>> Jason Hirschhorn: Deci ați spus, este va imprima lucruri ciudate pe
a patra linie?
Are cineva un raspuns la întrebarea ei?
Deci, șansele sunt că, atunci când ajungem la -
astfel încât pe a patra rundă de nostru prin buclă, la fel ca te-ai gandit, Annie,
va fi scoruri suport trei, care ne-am dat seama deja nu
există, și vom încerca și accesul că, imprima
, aceasta a folosi un fel.
Deci, computerul va, probabil, supăra pe noi.
Ai perfectă dreptate.
>> S-ar putea închide programul cu totul.
S-ar putea imprima ceva foarte ciudat.
Nu pot spune sigur.
Cote sunt că va ajunge, probabil, supărat pe tu și tocmai a demisionat imediat.
>> Dar acest lucru este o greșeală comună va avea în cazul în care ești doar în afara de cel de la
final, iar acest lucru este un bug care va vă ciuma în întreaga de codificare.
O modalitate îmi place să fac este doar pe o tablă, du-te prin fiecare iteratie
de buclă pe o parte sau pe hârtie pentru a vedea ceea ce se întâmplă, și apoi te
în general seama, Oh, așteptați, eu nu ar trebui să au mers la mai puțin sau
egal cu trei.
Ar fi trebuit să oprit la două, care este Ce se întâmplă dacă starea dumneavoastră este mai puțin
decât trei.
Orice întrebări până acum?
Dulce.
>> Deci, aveți toate computerele deschise.
Am de gând să vă dau două - trei minute pentru a scrie un program care
creează o matrice cu numere întregi unul prin cinci și apoi imprimă în fiecare
întreg pe o linie nouă.
Și dacă aveți orice întrebări, ridicați mâna.
Sunt fericit să vină de.
Cum am spus, să ia trei minute pentru a scrie acest lucru.
Este toată lumea în regulă dacă mă duc la un o fereastră nouă și închide asta?
>> Îmi pare rău dacă nu ați avut o șansă pentru a termina, dar am de gând să o facă
împreună chiar acum.
Deci, pe ecran, am # include cs50.h, # include stdio.h.
Poate cineva spune-mi ce cele două linii fac?
Michael?
>> STUDENT: Acestea includ biblioteci care CS50 făcut și că Steve are
salvate pentru tine de a utiliza pentru a face viața mai ușoară.
>> Jason Hirschhorn: Deci, ai spus că include biblioteci, una care CS50
făcut, cs50.h, și unul care este doar standard,, vine cu
pachetul C, stdio.h.
Ce vrei să spui includ bibliotecile, deși?
Poți fi un pic mai specific?
>> STUDENT: Se face astfel încât să puteți folosi anumite cuvinte cod să aibă o
funcționeze întâmpla fără a fi nevoie să meargă și de a face funcția de c te.
>> Jason Hirschhorn: Poți da-mi un exemplu?
>> STUDENT: Ca printf este cel pe care îl poate folosi.
>> Jason Hirschhorn: printf.
Deci, ai spus printf este unul dintre cei Funcțiile care mai degrabă decât să
scrie printf pe cont propriu, printf este sunt incluse de fapt în stdio.h, astfel încât să
se poate folosi doar și asume că va funcționa.
În stdio.h, dacă ați deschis acest dosar, ar includ modul printf
lucrări, toate de cod pentru printf?
De ce te dai din cap?
>> STUDENT: Deoarece fișierul header doar include declarația funcției.
>> Jason Hirschhorn: Exact dreapta.
Fișierul antet doar include declarația funcției.
Deci, practic, atunci când sa compilati, lovit faceți socoteala, pe care o vom face într-un
în al doilea rând, compilatorul știe că, dacă folosiți printf, printf există.
O să fie definit undeva.
Nu este o problema pentru tine folosind.
Și apoi mai târziu, acesta va include unu și zero care conțin de fapt
implementarea printf și le fuzioneze cu codul.
Cum vă asigurați-vă că include unu și zero pentru, să zicem, pentru a primi șir?
>> STUDENT: Ia șir este în cs50.h.
>> Jason Hirschhorn: Corect.
Așa că spune că se string există, declarația funcției.
Dar apoi unu și zero, binare fișier care conține, de fapt,
punerea în aplicare a șir luat?
Cum vă asigurați-vă că merge cu programul dumneavoastră?
>> STUDENT: Pass linker-ul în linia de argumentul de comandă.
>> Jason Hirschhorn: Treceți linker în argumentul din linia de comandă.
Cum faci asta?
>> STUDENT: E L-linie în clang
>> Jason Hirschhorn: Exact dreapta.
Ai spus-L CS50, corect?
Care include unu și zero.
>> STUDENT: Dar nu-mi fac asta pentru tine, nu?
>> Jason Hirschhorn: Exact.
Face face asta pentru tine, dar în cele din urmă, nu va fi face, sau
va trebui să facă o face pe cont propriu, astfel că este o
lucru bun să-și amintească.
Dacă aveți de gând să utilizeze una dintre aceste alte biblioteci, nu numai ai
a scrie # include și apoi biblioteca.
De asemenea, trebuie să-l lega inch
Și aceste două lucruri sunt diferite. L-CS50 este diferit
decât # include cs50.h.
>> Apoi ne-am int main nule acolade, iar acum vom codul
interior principal.
Prima linie am aici este un comentariu care spune, creează o matrice
cu int la unu la cinci.
Ce este un cuvânt bun pentru a descrie ceea ce am au acum pe ecran, doar
comentarii interiorul principal?
Ce numim noi asta?
>> STUDENT: Pseudocod.
>> Jason Hirschhorn: Pseudocod.
Mulțumesc, Jeffrey.
Asta este exact dreapta.
Pseudocod.
L-ați văzut pseudocode înainte?
Ridicați mâna dacă ați folosit pseudocod înainte de problema stabilit o.
Aproximativ jumatate din tine.
>> Mi-ar recomanda utilizarea pseudocod pentru a rupe în jos probleme în
mai mici, mai ușor de a mușca bucăți.
De asemenea, dacă faci pseudocod, vă au comentariile tale deja în mare parte
construit în, astfel încât să nu trebuie să du-te înapoi și să încercați să dau seama
ce faci.
Deci, poate cineva da-mi aceasta prima linie pentru a crea un tablou cu un int
prin cinci?
Tu?
>> STUDENT: Int și apoi puteți apela indiferent de numărul, și apoi pătrat
suport cinci.
>> Jason Hirschhorn: număr Deci int, croșetă cinci.
>> STUDENT: Egal, și apoi acolade.
>> Jason Hirschhorn: Egal, acolade.
>> STUDENT: Unu, doi, trei, patru.
>> Jason Hirschhorn: Unu, doi, trei, patru, cinci.
>> STUDENT: Și apoi acolade și apoi punct și virgulă.
>> Jason Hirschhorn: si cret bretele și virgulă.
Excelent.
Imprima fiecare int pe o linie nouă.
Poate cineva da mi codul, te rog?
[? Matu? ?]
Dă-i drumul.
>> STUDENT: Pentru (
>> Jason Hirschhorn: Pentru (
>> STUDENT: int i = 0
>> Jason Hirschhorn: int i = 0
>> STUDENT: Punct și virgulă i mai puțin de cinci.
>> Jason Hirschhorn: Punct și virgulă, i mai mică de 5.
>> STUDENT: Punct și virgulă, i + +.
>> Jason Hirschhorn: Punct și virgulă, i + +.
>> STUDENT: paranteze închise, apoi bretele deschise.
>> Jason Hirschhorn: paranteze închise și două bretele.
În interiorul acolade?
>> STUDENT: Și apoi printf "% d / n"
>> Jason Hirschhorn: Ne pare rău, stai.
Printf "% d / n, citat închis.
>> STUDENT: Și apoi Citat închis, virgulă, numărul, suport eu.
>> Jason Hirschhorn: virgulă, numărul, suport eu.
>> STUDENT: Ne pare rău, numere de suport eu.
>> Jason Hirschhorn: Numere, suport eu.
>> STUDENT: Îmi pare rău.
Și apoi închis paranteze, punct și virgulă.
>> Jason Hirschhorn: Închis paranteze, virgulă.
Am de gând să salveze.
Vom face numărul.
Și cum am alerga numărul?
>> STUDENT: Backslash.
>> STUDENT: Dot slash -
>> Jason Hirschhorn:. / Conta, exact.
Mulțumesc. . / Conta.
Unu, doi, trei, patru, Cinci pe linii noi.
Se pare că a funcționat.
Da, Noah?
>> STUDENT: Ai putea, de asemenea, face mai puțin sau egal cu patru, ca i este mai mică
sau egal cu patru?
Există vreun avantaj de a face mai puțin decât cinci, sau pur și simplu un alt mod de
scris-o?
>> Jason Hirschhorn: Deci, întrebarea este ce ar fi putut face eu este mai mică sau
egal cu patru în loc de i este mai mică de cinci.
Ar care au lucrat la fel?
>> STUDENT: Ar trebui.
>> Jason Hirschhorn: Da.
Este total ar fi de lucru la fel.
Stilistic, ea este în general mai puțin, și veți vedea într-o secundă atunci când
noi nu siruri de caractere, puteți folosi ceva numit strlen, care le-ați văzut
înainte, pentru a obține lungimea șirului.
Și nu poți face mai puțin sau egal strlen.
Ai putea face mai puțin sau egal strlen minus unul.
Deci, este doar frumos să nu mai puțin de strlen.
Da?
>> STUDENT: Și în real teste, nu avem de a prezenta observații cu privire noastră
Codul precum și?
>> Jason Hirschhorn: Întrebarea a fost in teste, faci
trebuie să furnizeze comentarii?
Deci, vom vorbi mai mult despre teste atunci când au venit, dar, în general, un bun
Regula de degetul mare este atunci când sunteți scrierea de cod, oferă comentarii.
Dacă primiți un cod greșit, dar comment dreapta, s-ar putea obține unele
de credit, atât de la mine dacă am fost sortarea te pe un set de probleme sau la un test.
Deci comentariile sunt întotdeauna bun pentru a oferi.
Dulce.
Contele.
Excelent loc de muncă.
Să trecem mai departe.
>> Siruri de caractere.
Siruri de caractere.
Am mai văzut asta în curs.
Acest lucru a suflat mintea mea atunci când am Primul aflat acest lucru.
Este, probabil, nu sufla nimeni minte aici, dar e in regula.
>> Siruri de caractere sunt matrice de caractere, și se termina cu, așa cum ați spus mai devreme,
nul terminator, care este acest personaj / 0.
Dacă vom trage un șir de bord, vom trage aici.
Deci, cât de lung este acest șir?
Scuze.
Cât de lung este acest șir?
>> STUDENT: [inaudibil].
>> Jason Hirschhorn: Patru?
De ce este ea patru?
>> STUDENT: Deoarece locul cinci este pentru caracterul nul.
>> Jason Hirschhorn: Deci, locul cinci este pentru caracterul nul.
Deci, dacă am fost pentru a rula pe strlen acest lucru, s-ar da-mi patru.
Corectați.
Și matrice, deși, dacă ar fi să inițializa această matrice, cât de multe spații
mi-ar trebui pentru a cere?
>> STUDENT: Cinci.
>> Jason Hirschhorn: Cinci.
Mi-ar trebui să întreb de cinci ani, dar nu pot doar pune patru caractere aici
pentru că am nevoie pentru a pune că null terminator pe final.
Așa că am de gând să scrie în "Ohai" și pune nul terminator în la sfârșitul anului.
Vom spune acest lucru este string e egal cu aceasta.
Ce este e suport de zero?
s suport de zero, Annie?
>> STUDENT: O.
>> Jason Hirschhorn: O, exact. e un suport?
e suport cinci?
>> STUDENT: nu există.
>> Jason Hirschhorn: nu există.
Exact dreapta.
Rece.
Orice întrebări cu privire la înțelegerea siruri de caractere ca matrice de caractere?
Bine, atunci.
Un program mai mult pentru voi.
Scrieți un program care cere utilizatorului pentru un șir, apoi imprimă fiecare
caracter pe o linie nouă.
Așa că haideți să trei minute pentru a scrie acest program, iar apoi vom cod
ca un grup.
>> Scuze.
Ai nevoie pentru a vedea acest lucru?
>> STUDENT: Nu.
>> Jason Hirschhorn: OK.
Să ia un minut mai mult la acest cod, sau cel puțin de a începe pe ea.
>> Astfel încât puteți să vă păstrați de lucru, dar am de gând pentru a începe să mergi prin ea.
Deci, ca înainte, am pe ecran # Include cs50.h, # include stdio.h.
int main.
Interior acolade Main, am două comentarii, pseudocod.
Unul este cere un șir de la utilizator.
Cea de a doua se imprima fiecare caracter pe o linie nouă.
Deci Anna, poți să-mi cer pentru un șir de utilizare?
>> STUDENT: printf.
>> Jason Hirschhorn: printf?
>> STUDENT: Da.
(
>> JASON Hirschhorn: (
>> STUDENT: "Dă-mi un șir.
>> Jason Hirschhorn: "da mi-o str - oops -
șir.
>> STUDENT: / n ") și virgulă.
>> Jason Hirschhorn: Sfârșitul șir, paranteze închise, virgulă.
>> STUDENT: Da.
Și apoi următoarea linie, string s = se șir.
>> Jason Hirschhorn: String s = se șir.
>> STUDENT: Da.
Și apoi ()
>> JASON Hirschhorn: ()
>> STUDENT: Punct și virgulă.
>> Jason Hirschhorn: Punct și virgulă.
Fantastic.
Așa că am de gând pentru a obține un șir și Am de gând să-l în ceea ce salva?
Care este variabilă numită pe care le-a creat?
>> STUDENT: s String.
>> Jason Hirschhorn: Variabila este numit s.
Este de tip string.
Exact.
Următorul lucru pe care vrem să se imprime fiecare personaj pe o linie nouă.
Cine poate da-mi codul?
[Inaudibil]?
Poți să mi-o dai?
>> STUDENT: Sigur.
>> Jason Hirschhorn: Să o facem.
Și îmi pare rău.
Nu-mi place să repet ceea ce spui pentru că ai prins corect, dar eu
Trebuie să se repete, astfel încât, atunci când transcrie acest lucru, ei pot obține toate
în textul de pe transcrierile.
Astfel încât puteți să vă păstrați doar vorbind.
Din păcate, am să-l spun pe tine.
Îmi pare rău, dar -
>> STUDENT: Asta e bine.
Pentru int i = 0
>> Jason Hirschhorn: Pentru int i = 0
>> STUDENT: Eu mai puțin -
>> Jason Hirschhorn: Punct și virgulă.
>> STUDENT: Înainte de aceasta, putem pune un variabile astfel încât să obțineți int lungime nume?
>> Jason Hirschhorn: Oh, tu nu faci Vreau să pun punct și virgulă?
OK.
Deci, ce vrei să faci după ce la zero?
>> STUDENT: Vreau să obțineți Lungimea șir de e și
stabilit că pentru o variabilă?
>> Jason Hirschhorn: OK, Deci, cum fac asta?
>> STUDENT: Deci, ce faci lungime int =
>> Jason Hirschhorn: lungime int =
>> STUDENT: S-T-R-L-E-N.
>> JASON Hirschhorn: S-T-R-L-E-N -
>> STUDENT: S.
Paranteze.
>> JASON Hirschhorn: (e).
>> STUDENT: Și atunci cred că trebuie să a pus o virgulă între cele două int.
>> Jason Hirschhorn: Un punct și virgulă după ce la zero?
>> STUDENT: Da.
Apoi a pus o virgulă după care, și vă spun, eu o lungime mai mică.
i mai mică lungime, care este variabilă.
>> STUDENT: Și apoi punct și virgulă.
>> Jason Hirschhorn: Punct și virgulă.
>> STUDENT: I ​​+ +.
>> Jason Hirschhorn: I + +.
Există buclă nostru pentru.
OK, în interiorul de buclă.
>> STUDENT: și apoi face printf.
>> Jason Hirschhorn: printf.
>> STUDENT: Console.
>> Jason Hirschhorn: Parantezele, citate.
>> STUDENT: Parantezele, citate,% C / N.
>> Jason Hirschhorn:% C, OK.
>> STUDENT: / n.
>> Jason Hirschhorn: / n.
>> STUDENT: citate închise.
>> Jason Hirschhorn: citate închise.
>> STUDENT: virgulă.
>> Jason Hirschhorn: virgulă.
>> STUDENT: S.
>> Jason Hirschhorn: S.
>> STUDENT: Suport i..
>> Jason Hirschhorn: Suport i..
>> STUDENT: și paranteze atunci închise.
>> Jason Hirschhorn: paranteze închise.
>> STUDENT: Și apoi punct și virgulă.
>> Jason Hirschhorn: Punct și virgulă.
Fantastic.
Așa că haideți să salvăm acest lucru.
Face vraja.
Oh, Doamne.
Am o serie de erori.
Prima eroare pe linia 11, se spune, așteptat expresie, și-l dă
mi-o eroare care de-a doua Int, nu e eroarea.
Există unele erori pe acolo.
Stie cineva ce eroare care este?
Kurt?
>> STUDENT: Cred că ar trebui să fie o virgulă și nu o virgulă.
>> Jason Hirschhorn: OK, o virgulă în loc de un punct și virgulă.
Deci, este că tot ce avem nevoie pentru a repara?
>> STUDENT: Nu.
>> Jason Hirschhorn: Ce altceva avem nevoie pentru a repara?
>> STUDENT: Trebuie să includă string.h.
>> Jason Hirschhorn: Includeți string.h.
În cazul în care am nevoie pentru a include acest?
>> STUDENT: același loc te inclusiv alte lucruri, chiar
după ce includ stdio.h.
>> Jason Hirschhorn: Să vedem dacă acest fapt în primul rând pentru că, în general, îmi place
pentru a stabili un singur lucru în primul rând, și apoi executați l, iar apoi a vedea erorile care le primim.
Deci, vom șterge terminalul cu controlul n, hai să facem vraja.
Deci, o altă eroare pe linia 11.
Așteaptă punct și virgulă.
Și eu sunt încă obtinerea erori pe această linie.
Așa că nu mi-a dat o eroare spunând că nu înțelege ce strlen este,
dar este să-mi dea erori pe acest linie, deci ce altceva este greșit?
Mark?
Marcus.
>> STUDENT: Nu trebuie să scoateți de-a doua declarație Int?
>> Jason Hirschhorn: Eliminați doilea Int.
Să încercăm.
Acum șterge terminalul.
Face vraja.
Eroare.
Implicit, declararea bibliotecă Funcția strlen.
Deci, acum putem vedea această eroare.
Ce trebuie să includem?
>> STUDENT: string.h.
>> Jason Hirschhorn: Includeți string.h, Vom face # includ string.h în partea de sus
a ecranului.
Să salvăm, face vraja.
Acum compilat.
Deci, din nou, lucrurile pe care avem nevoie pentru a amintiți-vă linia 12 în buclă noastră de când
suntem o înființarea, int i = 0, lungime = strlen (s).
>> Aceasta este o strategie fantastic.
Stilul de acest lucru este mare, Designul de acest lucru este mare.
Putem merge în acele motive mai târziu, dar în acest fel aveți nevoie doar pentru a apela
strlen dată în loc de fiecare timp ce alerga prin bucla.
Cu toate acestea, trebuie să utilizați o virgulă acolo și nu aveți nevoie din nou Int.
Dacă sunteți declararea atât a celor variabile împreună,
nu au nevoie din nou Int.
Și apoi, dacă ai de gând să utilizați strlen, care este o altă bibliotecă
nu funcționează incluse în stdio.h sau cs50.h, face
vă că include string.h.
Kurt?
>> STUDENT: Deci, dacă nu aveți nevoie să spune ce lungime tip este, nu că
înseamnă că trebuie să fie un int?
Tu nu ar putea avea două tipuri diferite Tipuri de acolo?
>> Jason Hirschhorn: Deci, ai putea au două tipuri diferite.
Lungimea este un int aici, totuși.
Lungimea este un int pentru că e virgulă și apoi același lucru.
>> STUDENT: Deci, se presupune că se va să fie la fel ca prima?
>> Jason Hirschhorn: Exact.
Noi nu vom face acest lucru acum, dar te poate include două variabile asupra
aceeași linie cu un singur tip de date.
X astfel int, y ar crea două variabile.
Deci, int x, y, dacă am face asta, dă mi-o variabila x neutilizate și Y, deoarece
noi nu le folosesc.
Deci, punând gol înainte este doar o truc fantezie, dacă nu utilizați
ceva, să-l folosească.
Dar, după cum vedeți, am crea x și y pe aceeași linie cu o virgulă.
Este crearea a două numere întregi chiar acolo.
Deci da, totul este posibil pentru a crea două lucruri pe aceeasi linie
separate printr-o virgulă.
Să scăpăm de cei care, totuși.
>> Deci, nu e vraja.
Multumesc baieti pentru codificare el pentru noi.
Să fie una mai mult timp, ea a alerga.
Dă-mi un șir.
[Inaudibil], ai facut cea mai mare parte.
Care este șirul?
>> STUDENT: Buna ziua.
>> Jason Hirschhorn: Buna ziua.
H-E-L-L-O, fiecare personaj pe o singură linie.
Arata grozav.
Să-l executați din nou.
Întotdeauna o să verifice pentru cazuri colț.
Ce este un caz colț bine pentru a verifica?
>> STUDENT: Un număr?
>> Jason Hirschhorn: Un număr.
Deci, voi pune în 1, și se imprimă 1.
Ea nu cere scrisori, astfel se pare ca munca numere.
Caz colț bine pentru a verifica.
Ce este un alt colț bine caz pentru a verifica?
>> STUDENT: Un șir gol.
>> Jason Hirschhorn: Hm?
>> STUDENT: Ca un șir gol.
>> Jason Hirschhorn: sir gol.
Astfel încât să nu pună în nimic.
Și ceea ce se tipărite?
>> STUDENT: Nimic.
>> Jason Hirschhorn: Nimic.
Se pare ca functioneaza.
Ai putea încerca mai multe cazuri de colt, dar în general numere, un date diferite este
mare pentru a încerca, de asemenea nu este nimic.
Nimic, zero negative sunt întotdeauna lucruri mari pentru a încerca și de lucrurile pe care le
ar trebui să testeze, lucruri cu siguranță vom testa pentru și Sosire 50 de ani va testa.
Orice întrebări cu privire la spell.c?
>> Bine, să ne întoarcem.
Mai am un program de pentru ca voi să scrie.
Se numește students.c.
Acesta este un program care cere utilizatorului pentru cinci nume, apoi alege aleator
si afiseaza unul dintre numele.
Acest program este un pic mai mult implicat decât în ​​ultimele două am scris,
Deci, de ce nu ne ia cinci minute să cod, în mod individual, iar apoi vom
codarea l ca un grup.
>> Acest program implică, de asemenea, unele lucruri ar putea să nu fi văzut înainte, așa că, dacă
Ai o întrebare despre, cum fac Eu fac asta, să ridice mâna.
Voi veni și vă va indica în direcția cea bună.
Dar noi suntem, de asemenea, o fac pentru că acest va fi o modalitate buna de a introduce unele
subiecte care sunt dificil.
>> Așa că funcționează, nu?
>> STUDENT: Da.
>> Jason Hirschhorn: Ori de câte ori te întorci într-un set problemă, există multe moduri de a face
ea, dar unele sunt mai elegant decât altele.
Să ne scufunde inch
# Include cs50.h.
# Include stdio.h.
void main Int, acolade.
In interiorul acolade, Am două comentarii.
Primul este, cere utilizator pentru cinci nume.
Al doilea este, alege aleator și imprima unul dintre numele.
Deci, hai sa facem primul, cere utilizatorului pentru cinci nume.
Care a cerut utilizator pentru cinci nume și-mi poate spune cum să faci asta?
Doar doi oameni au făcut prima parte.
Trei oameni au prima parte.
Patru, cinci.
Tom, cum o faci?
>> STUDENT: Te-ar declara un șir și apoi numele, suport cinci.
>> Jason Hirschhorn: String numele suport cinci.
Deci, ce este această linie fac, Numele șir suport cinci?
>> STUDENT: V-ar declara o serie de siruri de caractere.
>> Jason Hirschhorn: Aceasta este o serie de siruri de caractere.
Cât de multe siruri de caractere se vor pentru a se potrivi în aici?
>> STUDENT: Cinci.
>> Jason Hirschhorn: Cinci.
Excelent.
Am de gând să-l nume, deoarece numesc vom obține cele mai multe.
OK, următorul?
>> STUDENT: Și apoi au o pentru buclă -
>> Jason Hirschhorn: Pentru buclă.
>> STUDENT: - pentru I = 0.
>> Jason Hirschhorn: for (int i = 0.
>> STUDENT: Punct și virgulă.
>> Jason Hirschhorn: Punct și virgulă.
>> STUDENT: Am mai putin de cinci.
>> Jason Hirschhorn: Am mai puțin de cinci ani.
>> STUDENT: Punct și virgulă.
>> Jason Hirschhorn: Punct și virgulă.
>> STUDENT: I ​​+ +.
>> Jason Hirschhorn: I + +.
>> STUDENT: și paranteze atunci închise.
>> Jason Hirschhorn: paranteze închise, și apoi unele acolade.
În interiorul acolade?
>> STUDENT: Și apoi printf.
>> Jason Hirschhorn: printf.
>> STUDENT: paranteze deschise, numele% d.
>> Jason Hirschhorn: Îmi pare rău?
>> STUDENT: Nume.
>> Jason Hirschhorn: Nume.
>> STUDENT: Și apoi spațiu, iar apoi d%.
>> Jason Hirschhorn: Nume, spațiu,% d.
>> STUDENT: Și apoi / n, și apoi închis.
>> Jason Hirschhorn: nume Deci, spațiu, % D / n, paranteze închise.
>> STUDENT: virgulă, i + 1.
Îmi pare rău.
Citat închis, și apoi virgulă, i +1.
>> Jason Hirschhorn: Închis Citat, virgulă, i +1.
>> STUDENT: Da.
Și apoi următoarea linie -
>> Jason Hirschhorn: i + 1.
>> STUDENT: Da.
Și apoi următorul diapozitiv este numele pe care le suport.
>> Jason Hirschhorn: linia următoare este numele pe care le suport.
>> STUDENT: = se string.
>> Jason Hirschhorn: = Get -
de capital G-E-T -
șir.
Hopa, îmi pare rău.
>> STUDENT: paranteze deschise, inchise și apoi -
>> Jason Hirschhorn: deschis, închis paranteza.
>> STUDENT: Punct și virgulă.
>> Jason Hirschhorn: Punct și virgulă.
OK, deci inițializa matrice de siruri de caractere, nume, si apoi du-te printr-o
pentru buclă, și de cinci ori imprima un cere pentru utilizator și apoi depozitați
cinci siruri de caractere.
Are cineva vreo ajustări la aceasta?
Tom, cred că toată lumea este de acord cu tine.
Arata destul de bine.
OK.
De ce ai făcut i +1, deși?
>> STUDENT: Vreau să spun, nu are să fie, dar i +1, astfel încât este
Numele unul pentru a numi cinci.
În caz contrar, ar fi nume zero, pentru a numi patru.
>> Jason Hirschhorn: Deci ai făcut-o i +1 pentru că altfel ar fi
imprimate la zero la patru, deoarece asta e modul în care gândesc calculatoare, dar oamenii
nu citesc chiar așa.
Acesta este un alt lucru veți întâlni.
Uneori, când imprimați ceva pentru utilizator, veți dori să o facă
un pic mai frumos, și de a face i +1 în acest caz poate
modalitate de a face mai frumoasa.
>> Văd, de asemenea, cinci de două ori, numele string este de cinci, i este mai mic de cinci.
Știu unde ai cinci.
Ai luat-o de la mine spunându ai cinci nume.
Dar, dacă am vrut să fac un cod pic mai robust, un singur lucru am
putea face este aici, in afara de Int, am putea face ceva de genul asta,
# Define, și am putea face NUMELE 5.
>> Deci, practic, ori de câte ori scriu de capital N, capitalul A, capitala M, capitala E,
capitalul S, că șir, se va înlocui care cu 5 în codul.
Sau hai să-i spunem doar - vom doar numesc NUMĂR.
Deci, eu sunt definirea tuturor capace NUMĂRUL să fie 5.
>> Deci, acum, ori de câte ori am numărul 5, I se poate înlocui cu toate NUMĂR capace.
Și acum, dacă doriți să schimbați numărul de nume, tot ce trebuie să faceți este să
aceasta linie o, linie de patru, unde am # Define numărul 5, care modifica la 10,
sau schimba asta la 4.
Când codul devine mai mult, tu nu ești de gând să-și amintească toate locurile pe care le
pune câte nume ai vrut, și în pentru ca să nu ratezi o, acest lucru este
o modalitate buna de a face acest lucru, pentru a găsi ceva până sus și apoi să utilizați doar că fraza
peste tot de-a lungul codul.
Marcus?
>> STUDENT: Este stilistic preferat decât definirea la nivel global o
n constante?
>> Jason Hirschhorn: Deci, este ca stilistic preferat decât la nivel global
definind o constantă n?
Deci spui că ai putea face, int = numărul 5?
>> STUDENT: Nu au consoane în C sau nu?
>> Jason Hirschhorn: Sau const - la egal.
Deci spui doar o variabilă globală?
>> STUDENT: Da.
>> Jason Hirschhorn: Deci stilistic, nu e neaparat un drept
răspunde, dar ambele sunt mai bune decât aruncarea acestea aleatorie
numerelor pe tot codul.
Noi le numim numere magice.
Când mă uit la codul dvs. sau atunci când cineva a citit prin ea, ei
Nu vreau doar aceste numere aleatorii care nu fac sens.
Chiar numărul 26, care, în general, este numărul de litere din alfabet,
este mai bine să se definească ALPHABET sus sus și salvați numărul 26 în șir,
în cazul în care are sens.
>> Sau pe probleme stabilit o, mai degrabă decât - din nou, nu am vorbit despre acest lucru la
timp, dar în loc să arunce într-o 25 de pretutindeni sau un 10, puteți
salvați numărul 25, ca trimestru sau 10 ca DIME, și care face mai ușor pentru
oricine a citit prin codul de înțeleg de ce ai ales acest număr.
Și, de asemenea, pentru tine, dacă vrei vreodată să actualiza codul dvs., acesta este un pic face
mai robust.
Da?
>> STUDENT: Este acest cod, de asemenea, va să fie disponibile pentru noi după?
>> Jason Hirschhorn: Toate aceste coduri pe care le-am scris împreună sunt
va fi trimis la tine băieți și disponibile.
Da.
Deci, cere utilizatorului pentru cinci nume.
Aleatoriu alege și imprima unul dintre numele.
Cine a făcut această linie?
Aceasta este cea mai grea linie aici.
Îmi pare rău, Tom.
Ai făcut o treabă foarte bună, dar acest lucru este un pic mai complicată.
Marcus, dă-i drumul.
>> STUDENT: Ei bine, în primul rând, ai de gând să trebuie să includă stdlib.h și time.h.
>> Jason Hirschhorn: Deci tu spui la în partea de sus, includ două biblioteci mai mult.
Vrei să includă S-T-D-L-I-B punct H, Biblioteca Standard, și ce
era celălalt?
>> STUDENT: Time.h.
>> Jason Hirschhorn: # include time.h.
Deci, acestea sunt două biblioteci mai mult.
Presupun că acum am de gând să fie utilizând Funcțiile care sunt conținute în aceste
doi, care este motivul pentru care este necesar pentru a le include?
>> STUDENT: Deci, în primul rând esti gând să doriți să scrie srand.
>> Jason Hirschhorn: srand.
>> STUDENT: (dată (0)
>> Jason Hirschhorn: Îmi pare rău.
Srand (timp (
>> STUDENT: 0.
>> Jason Hirschhorn: 0.
>> STUDENT:)), punct și virgulă.
>> Jason Hirschhorn: Un alt Paranteză închisă?
Punct și virgulă.
Am de gând să înlocuiască doar zero, cu NULL.
Va face cam acelasi lucru, dar în general, veți vedea NULL, care
vom vorbi despre acest lucru linie într-o secundă.
>> STUDENT: Stilistic mai bine?
>> Jason Hirschhorn: În general, oamenii NULL dreapta, dar același lucru.
>> STUDENT: Și apoi numele Int.
>> Jason Hirschhorn: Numele Int.
>> STUDENT: =
>> Jason Hirschhorn: =
>> STUDENT: Rand.
>> Jason Hirschhorn: Rand.
>> STUDENT: ()
>> JASON Hirschhorn: ()
>> STUDENT: numărul Modulo.
>> Jason Hirschhorn: Ce-i modulo?
Caracterul?
Caracterul la suta?
>> STUDENT: caracter Procent.
NUMĂRUL Modulo pe care l-ați definit sus.
>> Jason Hirschhorn: Modulo NUMBER.
>> STUDENT: Și apoi punct și virgulă.
>> Jason Hirschhorn: Punct și virgulă.
>> STUDENT: Și apoi noua linie, printf.
>> Jason Hirschhorn: printf.
>> STUDENT: (
>> JASON Hirschhorn: (
>> STUDENT: "
>> Jason Hirschhorn: "
>> STUDENT:% s / n
>> Jason Hirschhorn:% s / n
>> STUDENT: "
>> Jason Hirschhorn:% s / n "
>> STUDENT: virgulă, nume de spațiu.
>> Jason Hirschhorn: Space -
>> STUDENT: Oh, cred, ceea ce am numi aici?
>> Jason Hirschhorn: Am nume numit.
>> STUDENT: Open suport, numele.
>> Jason Hirschhorn: Open suport, numele.
>> STUDENT: suport închis.
>> Jason Hirschhorn: suport închis.
>> STUDENT:)
>> Jason Hirschhorn:)
>> STUDENT: Punct și virgulă.
>> Jason Hirschhorn: Punct și virgulă.
OK, hai să salva.
Să facem acest cod.
Studenții.
Să facem acest cod.
Studenții.
Nu. / Elev. . / Studenți.
Numele unul.
Vom spune David.
Numele doua, RJ.
Nume trei, Rob.
Numele patru, Lucas.
Numele cinci, Joseph.
Și apoi se imprimă Iosif din nou.
>> Deci, lasă-mă să ruleze din nou.
Permiteți-mi să fac același nume.
David, RJ, Rob, Lucas, Joseph.
Și mi-a dat lui David de data asta.
Așa că am făcut același lucru, dar le-a dat mi un lucru diferit, și că este
pentru că, desigur, noi cerem pentru un nume aleator.
Deci, cred că, în funcție de pe mine rătăcire în jurul camerei, pe care cei mai mulți oameni
Probabil a primit prima la dreapta parte, înființarea că matrice și apoi obținerea
toate numele.
Vorbesc despre liniile 10, prin 16.
Dar liniile 18, prin 21 sunt, probabil, unele lucruri pe care nu s-au văzut înainte,
asa ca hai sa mergem prin cele.
>> Această linie, srand timp NULL este în esență -
Ne pare rău, să sărim în jos o linie, rand ().
Care vă oferă un număr aleator, un număr întreg aleator.
Și dacă te-a lovit rand om, care o mulțime de ai făcut -
M-A-N pătrundă R-A-N-D -
în terminalul de acest fel, M-A-N spațiu R-A-N-D, apăsați Enter.
V-ar veni la manualul și ar fi capabil să citească că rand
ieșiri de comandă num bytes aleatoare pseudo după însămânțarea număr aleator
Generator dată.
>> Astfel că este o descriere.
Asta este ceea ce face rand, oferă aveți un număr aleatoriu atunci când
apelați această funcție.
Din păcate, nu e chiar aleator pentru că, dacă doar numi aleatorie
fără să-l unele semințe, unele punct de plecare, se va alege întotdeauna
la fel, și-l folosește o formulă pentru a determina următoarea.
Deci, dacă te sun rand, acesta va doar vă dau același lucru.
Acesta va fi foarte previzibil.
Este de fapt, nu va fi aleatorie.
>> Deci, ce trebuie să facem, pe Marcus instrucțiuni pentru mine, s-au rand semințe
cu altceva, care este ceea ce funcția srand face.
Ea semințe rand cu ceva un pic mai mult aleator decât același lucru, și
el este semănat cu timpul NULL, care este, doar prin convenție, curent
timpul în secunde.
>> Deci tu presupunând că toată lumea nu este va rula codul de la exactă
aceeasi secunda, asa ca este un pariu sigur că timp NULL va fi diferit
de fiecare dată când acest cod este rulat.
Pariu sigur că, astfel, srand voința rand semințe cu ceva diferit la fiecare
singură dată.
Deci, prin convenție, atunci când vrei un de numere aleatoare, vom scrie această linie,
srand timp NULL, pentru a ne da o mult semințe mai aleator, iar apoi vom rula
rand, ceea ce ne dă un număr aleatoriu.
Da?
>> STUDENT: Ne puteți spune ce vrei să spui prin semințe?
>> Jason Hirschhorn: semințe ca in -
astfel rand se va alege un număr și se va utiliza unele
Formula pentru a ajunge acolo.
Deci, o să încep cu ceva și apoi ao transforma în ceva bazat
de pe acea formula.
Dacă vă dau mereu același lucru, este întotdeauna o să-l transforma într-
același lucru.
Așa că primul lucru pe care da aceasta este sămânța.
Deci vrei să-l dea ceva diferit pentru a începe cu, și așa
se va transforma in ceva diferit.
>> Și apoi în cele din urmă, linia 20, aceasta se numește%
modulo, și că este confuz.
Asta e ceva care este un pic diferit aici, că tu nu prea
au în matematică viața reală.
Dar, în esență, atunci când ia un gigant numărul și împărțiți în C, ceea ce
se întâmplă cu restul?
>> STUDENT: A se trunchiate.
>> Jason Hirschhorn: A se trunchiate.
Deci, 20 împărțit la 3 este ceea ce?
Ce înseamnă că a reveni la te, 20 împărțit la 3.
Ne pare rău, 10 împărțit la 3.
Ce înseamnă că se întoarcă la tine?
>> STUDENT: [inaudibil].
>> Jason Hirschhorn: 10 împărțit la 3 doar randamente 3, nu 3 restul 1.
Deci, ceea ce 10 modulo 3 se întoarce este doar restul, 1.
Deci, dacă ai vrut să știi ce 10 împărțit de 3 a fost de fapt, te-ar
face 10 împărțit la 3, te-ar lua 3 dvs., și apoi vei face 10 modulo 3, și
vei primi un 1.
Deci ai dat seama că 10 divizat de 3 este 3, rest 1.
>> Și în această linie, rand ar putea fi orice număr întreg, în esență.
Deci, modulo spune, împărțiți-l de număr, care este în acest caz 5.
Și dacă vreodată împărțiți de un număr, număr întreg trebuie să fie întotdeauna mai mică
acest număr.
Deci, dacă sunteți împărțirea de către un număr de 5, restul este întotdeauna o să fie
zero la patru.
Asta e doar modul în care matematica funcționează.
>> Astfel încât un număr mare moduloed de un mic Numărul va întoarce întotdeauna
restul și se va întoarce întotdeauna un numărul care este mai mic decât numărul pe care
împărțită.
Are cineva întrebări despre modulo, deoarece aceasta va veni în foarte,
foarte la îndemână, așa că am dori să vă asigurați toată lumea se înțelege?
Rece.
Și am văzut că acest program a lucrat.
OK, se deplasează pe.
>> Deci, data viitoare, vom merge în funcții, și vom merge
prin restul de aceste lucruri destul de repede pentru că vreau să ajung la
argumente în linia de comandă.
Deci funcții sunt în esență, După cum ați văzut, cutii negre.
Ei iau lucrurile în numite parametri, fac ceva pentru ei, fie
le modifica sau crea unele efecte secundare, și în cele din urmă, au scuipat
ceva, care este valoarea de returnare.
Poate cineva da-mi un motiv de ce ne-ar folosi funcții?
E cineva?
Un motiv de ce ne-ar folosi funcții?
Oricine?
Am văzut două mâini.
Ce e un motiv bun?
Marcus?
>> STUDENT: Dacă trebuie să sunați la același bucată de cod de mai multe ori.
>> Jason Hirschhorn: OK, dacă aveți nevoie de pentru a apela aceeași bucată de
codarea de mai multe ori.
Jeff, ai avut un motiv diferit?
>> STUDENT: Doar pentru ca poate mai puțin cod.
>> Jason Hirschhorn: Puteți puțin cod.
Dreapta.
Dacă vrei să faci ceva mult -
în codul anterior, am putea avea scris a obține șir de cinci ori, dar o
pentru bucla face sa arate mai frumos și va trebui să scrie mai puțin cod.
Funcțiile sunt o idee similară.
Dacă vreau să fac același lucru foarte mult, mutați-l la o funcție și de apel care
funcționa de fiecare dată.
Care va face acest lucru pentru tine.
Asta e un motiv de mare utilizarea funcțiilor.
>> Deci, anatomia unei funcții.
O funcție va fi, în general, arata ca aceasta.
Se va începe cu tipul de retur, atunci veți obține numele.
Va dura argumentele, altfel cunoscut sub numele de parametrii, iar în interior
aceste acolade, veți scrie codul.
>> Am văzut o funcție foarte mult.
Asta e principala.
Aici este principalul suprapuse pe că anatomie am avut mai devreme.
Ce Int chiar aici semnifica?
Ce Int înseamnă?
Când scriu int main (void).
>> STUDENT: Tipul de retur?
>> Jason Hirschhorn: Îmi pare rău?
>> STUDENT: Tipul de retur.
>> Jason Hirschhorn: Int este reveni tip, exact dreapta.
Principalul întoarce un întreg.
Ce este principalul?
>> STUDENT: Numele funcției.
>> Jason Hirschhorn: principal este Numele funcției.
Exact dreapta.
Și neavenit?
Ce este nulă între paranteze?
>> STUDENT: Aceasta nu ia orice valoare externă.
>> Jason Hirschhorn: Deci gol -
dreapta.
Între paranteze, am pus parametrii sau argumente de
Funcția ia, ceea ce se în cutia neagră.
Când scrieți vid, ce spui aceasta nu ia nimic inch
Void main astfel int inseamna lui principal Nu lua nimic inch
>> In interiorul acolade, avem unele cod, și apoi vom vedea la sfârșitul
reveni la zero.
Ce se întoarce la zero înseamnă?
Ei bine, am vorbit despre tipul returnat.
Principal trebuie să returneze un int.
Asta e ceea ce face această linie.
Se întoarce un întreg, zero.
>> Desigur, nu am văzut că o mulțime pentru că în programarea facem cu
mașinile pe care le facem și compilatoare vom folosi în zilele noastre, ai
nu au nevoie de acea linie.
Principal este destul de special, care știe atunci când ajunge la sfârșitul principal, doar
returna zero, în cazul în care totul a mers bine.
De fapt, în cazul în care ceva nu merge bine, principal va reveni de multe ori un alt
număr care înseamnă că ceva a mers bine cu programul dumneavoastră.
>> Deci, în general, atunci când vedea codul, te Nu scrie întoarcere la zero, dar e bine
să știe că se întâmplă în spatele scene pentru că ori de câte ori scrie
un alt tip de funcție, aveți de gând să trebuie să
includă un circuit de retur.
Dacă vrei să spui am de gând să returna un întreg, trebuie să
scrie reveni ceva.
Dacă spui gol aici, la început, main gol, pentru
de exemplu, atunci nu e întoarce nimic - gol nu înseamnă nimic -
astfel încât nu aveți nevoie de retur.
Dar scrii vreodată ceva care nu e anula pentru tipul de întoarcere, aveți nevoie de
o linie care spune retur și tu nevoie pentru a pune ceva acolo
care se potrivește tipului.
Orice întrebări despre asta?
Dulce.
>> Domeniul de aplicare.
Acest lucru este ceva ce am atins, de asemenea.
Fiecare variabilă, după cum știm, are o anumit domeniu, și că este practic
vorbesc despre cazul în care variabila poate sau nu poate fi referit.
Și îmi place să spun ceea ce se întâmplă în acolade rămâne
în interiorul acolade.
Deci, de exemplu, dacă ne uităm la acest cod, vom defini o variabilă globală
in afara de principal, int a, aici în partea de sus.
Am numit un alt int-un interior principal.
Avem niște bretele mai buclat, și ne cheamă un alt o Int.
>> Avem trei o în cod.
Acestea nu sunt același lucru.
Am creat trei variabile distincte.
Apoi, în interiorul acestor cret interior bretele, am spus-o = 4.
Care un este că a vorbi despre, Primul, al doilea,
sau al treilea?
>> STUDENT: a treia.
>> Jason Hirschhorn: Se vorbește despre al treilea.
Toți cei care o de fapt poate fi a vorbit despre în acest special
exemplu pentru că domeniul lor de aplicare toate merge în aceste acolade cele mai intime.
Cu toate acestea, atunci când spunem lucrurilor aceeași nume, există ceva numit ascunde.
Deci, te descurci doar cu sau repara sau de a folosi variabilă mai recent, sau una
mai aproape de tine.
Deci interiorul aici, acest al treilea o este cea mai apropiată la acea linie, o = 4, deci
afectează treilea.
Și ultimul rând, o = 2, care este un că a vorbi despre, prima, a doua,
sau al treilea o?
>> STUDENT: În al doilea rând.
>> Jason Hirschhorn: Se vorbește despre cea de a doua o.
Desigur, o a treia este cea mai apropiată de l în codul, dar un al treilea
nu există în afara aceste acolade.
Odată ce ai ajuns la acel închisă cret bretele, e ca și cum a dispărut,
în esență.
Deci, doar doi ați plecat sunt cele primele două, și, desigur, acum
este cea mai apropiată de cea de a doua.
>> Deci, asta e un lucru bun pentru amintesc despre domeniul de aplicare.
De exemplu, eu sunt sigur că le-ați întâlnit acest lucru într-o face în timp ce buclă.
Dacă ați inițializat în interiorul variabila face în timp ce bucla și apoi încercați să
accesa o afară, probabil niște avertizare ca, aceasta
variabila nu există.
Asta e din cauza ideii aplicare, că lucrurile exista numai
in aceste acolade.
Acolade sunt ca o îmbrățișare gigant, care dai la codul, este un alt
mod de a gândi la asta.
>> Deci, aceasta este o altă funcție, ceva pentru ca voi să cod, hellofunction.c.
Vom trece că de acum, dar acest lucru este ceva ce am să vă încurajez să
practica pe cont propriu.
Scrieți un program în care apelurile principale o altă funcție care imprimă un
salut pentru utilizator.
Se ia în esență Salut lume și abstractizare care printf în
o altă funcție.
Dar nu vom face asta chiar acum pentru că nu avem la fel de mult timp
a plecat ca mi-ar fi plăcut.
>> Deci, declarația funcției.
Am văzut asta la fel de bine.
Dacă doriți să scrieți o altă funcție, aveți nevoie pentru a lăsa calculatorul să știe și
principal știe că ea există.
Deci, ce facem noi este mai principal, ne scrie tip returnat, numele, și
parametri, iar apoi jos principal, aici, vom copia de fapt acea linie
și apoi scrie codul actual.
Deci, în acest fel, dacă ai apela funcția în principal în partea de sus, principalul știe că
salut există, de exemplu, dacă am fost pentru a apela salut, iar apoi se pare a
implementarea jos.
Ce se întâmplă dacă nu includ acest linia de sus de sus, salut nule (void)?
>> În cazul în care nu includ această linie și solicită principale Bună ziua, eu sunt
va primi o eroare.
Am de gând pentru a obține o eroare, deoarece compilatorul nu știe
că există acest lucru.
Acest lucru este similar cu ce am nu # includ cs50.h.
Ceea ce în esență cs50.h face este de a pune ajunge șir acolo.
Se pune int ajunge acolo.
Se pune toate aceste funcții prototipuri înainte de principal, astfel încât atunci când
le numesc în principal, principal știe că există aceste lucruri.
Asta e ceea ce fac acele fișiere ore..
Și așa, dacă ai de gând să faceți propriile dvs. funcția, le-ați luat pentru a vă asigura
ai pus ca prototip acolo.
Orice întrebări cu privire la acest lucru până acum?
>> Argumente în linia de comandă.
Aceasta este ceea ce vom termina pe, și apoi sperăm că o vom
stoarce în unele PSET.
Nu știu dacă vom putea să stoarcă că, în cauza de timp, dar
cu voi, cei care sunt aici, si daca Vreți să spun după un pic, am
pot merge peste el afară.
Dar vom termina cu argumente în linia de comandă
pentru ultimele 15 minute.
Ne vom trezi, Michael?
Te-ai trezit?
Bun.
Nu știu dacă dormi cu ochii închiși.
Ar fi dificil.
>> Argumente în linia de comandă.
Acestea sunt o modalitate de a transmite informații într-un program.
În cele din urmă, ne vom întâlni pe alții.
Dar, în esență, vom opri scris int main (void), dacă vrem să
ia unele argumente în linia de comandă.
Vom scrie acest lucru numit int main (int argc,
șir argv, paranteze.
Că este confuz.
Aceasta este o mulțime de scrisori, care nu sunt în umană engleză, așa că am de gând să
despachetați-le chiar acum.
>> Argc reprezintă numărul de argumente -
și din nou, toate acestea vor fi disponibil on-line -
și care este numărul de argumente.
Argv standuri pentru vector argument, și acestea sunt argumentele ei înșiși.
Este o serie de siruri de caractere.
Am văzut de fapt o matrice de siruri de caractere înainte de ziua de azi.
Am creat o în ultima PROGRAM am codat.
>> Deci, aici este un exemplu.
Eu scriu. / Ohai CS50 secțiune pe linia mea de comandă.
Argc în acest caz este egal cu 3.
Argv suport 0 este Ohai, argv suport 1 este CS50, argv suport 2 este de secțiune.
Din nou, argc reprezintă numărul de argumente, și pentru excursie te-ai trezit un pic
bit, contăm întotdeauna numele de funcție ca primul argument.
Deci, în acest caz, există trei argumente, numele funcției
și apoi cei doi pe care am tastat inch
>> Apoi, vom salva pe cei Argumentele ei înșiși în argv.
Și, din nou, la fel cum am văzut mai înainte, am făcut acest lucru în ultimul program am codat.
Puteți trece prin matrice de argv și a obține aceste siruri de caractere.
Asta-i esență, ceea ce am făcut la sfârșitul ultimei programul nostru.
Am ales un nume aleatoriu și apoi sa dus la nume indiferent de suport și imprimate
out șir localizate acolo.
>> Pe partea de sus a doar matrice, pentru că siruri de caractere în sine sunt tablouri, ca
a vorbit despre, puteți avea matrice de matrice, care este
în esență, ceea ce este argv.
Într-un fel vă puteți gândi la acest lucru este de rânduri și coloane.
Eu pot trage chiar acum.
Deci, argv -
că nu e stergerea.
Să tragem în Ohai.
>> Deci, dacă am scris în, Ohai secțiunea CS50, Am de gând să trunchia
Secțiunea pentru acest exemplu.
Dar, în esență, mi multi-dimensionale matrice, Ohai CS50,
vom face secta.
Deci, aici, eu pot accesa -
dacă dau doar argv un număr -
acest lucru este greșit.
Ce e în neregulă în această schemă?
>> STUDENT: Start de la zero.
>> Jason Hirschhorn: Ar trebui începe de la zero.
Ar trebui, probabil, de asemenea, roti, dar deoarece am deja desenat pe, eu sunt
de gând să-l lase pe acolo pentru acum.
Dar aceasta începe de la zero.
Asta-i drept.
Îmi pare rău dacă acest lucru este mic.
Poate voi un fel de a vedea?
Deci, dacă am face argv 0, voi obține toate de Ohai.
Dacă fac argv 1, voi lua tot de CS50.
Dacă fac argv 2, voi lua tot de secte.
>> Dar acum, așa cum am spus, siruri de caractere sunt tablouri în sine.
Deci, ce pot să fac este să pot trata acest ca un tablou multi-dimensional, și am
se poate face ceva de-a lungul liniilor de argv 0, 0, ceea ce îmi dă doar
caracter 0.
Argv 0, 1, ceea ce îmi dă doar h..
Argv 1, 3, ceea ce îmi dă doar aceasta 0 aici în CS50.
>> Deci, deoarece siruri de caractere în sine sunt tablouri, punem
că într-un alt tablou.
Avem acum serie de matrice, și noi poate indexa în prima matrice și
apoi indice în a doua matrice nostru.
Și, după cum v-ați aștepta, am face asta de a pune doar pe cei doi -
Noi facem paranteze pătrate doar chiar una lângă alta.
Deci, în acest exemplu, argv 1 este CS50 și argv 1, 2, așa cum am spus, este de doar 5.
Are cineva întrebări despre matrice multi-dimensionale?
Voi fac minunat.
Dulce.
>> Deci, avem un alt program chiar aici, și acesta este lucrul finală suntem
O să fac chiar acum.
Deci, vreau să scrie un program care ia numele complet de utilizator, două și numai
două argumente în linia de comandă, și în cele din urmă, imprima un salut la
Utilizatorul care include prenumele lor.
Deci, de ce nu iei trei sau patru minute pentru a face acest lucru, iar apoi vom merge
peste el ca un grup, și apoi vom încheia?
>> Și din nou, aici, când spunem ia o numele complet de utilizator de pe descrierea
de această problemă, ar trebui să fie de comandă argumente de linie, nu cu ajutorul obține șir.
Da, Marcus?
>> STUDENT: Deci, atunci când spui doi comandă argumente linie, este faptul că, în plus față de
. / a alerga, sau -
>> Jason Hirschhorn: Bună întrebare.
Face, inclusiv. / Run, trei argumente în linia de comandă.
Sau inclusiv. / Personalizate, în acest caz, pentru că este
numele acestui fișier.
Deci, argc ar fi trei.
Dar vreau doar două argumente acordată programului.
Eu ar trebui să precizeze că.
Voi face această schimbare înainte de a posta acestea și le trimite la voi.
>> STUDENT: Ce se întâmplă dacă au un nume de mijloc?
>> Jason Hirschhorn: Dacă aveți un mijloc nume, nu mai ai noroc.
Îmi pare rău.
Sau, dacă te duci doar de Shakira, esti, de asemenea, de noroc.
Da?
>> STUDENT: Deci, atunci când oamenii nu au cs50.h, nu definesc argv
ca char stele argv?
Sau este încă numit string argv?
>> Jason Hirschhorn: Da.
Deci șir, din nou, am masca asupra a ceea ce exact se întâmplă acolo.
Care va fi despachetat poate miercuri, dar în curând.
E ca și cum roți de formare.
Pentru că, în esență, este același lucru.
>> Așa că haideți să-un alt minut pentru programul acest lucru, iar apoi vom trece peste
ca un grup, și apoi cum am spus, încheie.
Și cred că încă bomboane în plus, Deci voi ar trebui să ia sperăm
care, sau vă rugăm să luați asta.
>> Ne pare rău dacă sunteți încă scris, dar vreau să se arunca cu capul în și de noi
se poate termina împreună.
Deci, am scris în, # include cs50.h, # include stdio.h.
int main (void), acoladă, ondulat bretele, din interiorul trei linii de
pseudocod, ia numele complet de utilizator, două și numai două linie de comandă
argumente, imprimați un salut Utilizatorul care include prenumele lor.
>> Deci, primul, ia Numele complet al utilizatorului.
Cine mă poate ajuta să ia numele complet de utilizator?
Cum pot face ca o parte?
Voi ați făcut asta prima parte?
Ia numele complet de utilizator.
Ei bine, pentru că o linie de comandă argument, ceea ce ar trebui să scriu?
Ce ar trebui să se schimbe la Declarația funcția mea?
>> STUDENT: Nu vrei să fie nulă mai.
>> Jason Hirschhorn: Exact.
Nu vreau să fie nulă.
Ce aș dori-o să fie?
>> STUDENT: argc Int.
>> Jason Hirschhorn: Int argc.
>> STUDENT: argv String.
>> Jason Hirschhorn: String argv.
>> STUDENT: Suport, suport.
>> Jason Hirschhorn: Suport, suport.
Așa este, și că este de fapt, ce am de gând pentru a obține
Numele complet al utilizatorului.
Ei au de gând să-l pun acolo.
Astfel că unul a făcut.
Deci, acum vreau două și numai două argumente în linia de comandă.
Deci Noe, ceea ce este un fel pot a verifica numărul de comandă
argumente în linia de am?
>> STUDENT: Puteți face o declarație, dacă.
>> Jason Hirschhorn: Dacă afirmație, exact.
Ce vreau ca o condiție?
>> STUDENT: Dacă argc mai mare decât 3.
>> Jason Hirschhorn: Dacă argc este mai mare de 3.
Dacă argc mai mare de 3, ce să fac?
>> ELEVUL: Înapoi 1.
>> Jason Hirschhorn: Înapoi 1.
Se va asigura că am două și numai două?
>> STUDENT: Nu.
Dacă argc este mai mare decât 3 și mai puțin de 2.
>> Jason Hirschhorn: Dacă argc este mai mare mare de 3 și argc este mai mică de 2.
Ceea ce e un mod în care pot scrie acest lucru în doar o linie, sau fără a utiliza ca
și operatorul boolean?
>> STUDENT: Nu este egal cu 2.
>> Jason Hirschhorn: Dacă argc nu este egal cu 2.
Exact.
Deci, dacă argc nu este egal cu 2, că mi va da acest program,
personalizat, atunci când l-am alerga, și care va da-mi cât de multe
argumente în linia de comandă?
Câte voi verifica pentru?
>> Scuze.
Lasă-mă să reformulez asta.
Dacă argc = 2, cât de multe lucruri a făcut utilizatorul scrie în linie?
>> STUDENT: Unul.
>> Jason Hirschhorn: Doar unul.
Deci, înainte, ai avut dreptate, Noah.
Ce am de fapt nevoie pentru a pune acolo?
>> STUDENT: Asta este egal cu 3.
>> Jason Hirschhorn: argc nu este egal cu 3.
Vreau să egaleze 3 pentru că vreau personalizată plus celelalte două.
Deci, dacă argc nu este egal cu 3, se întoarcă 1.
De ce ai spus întoarce 1?
>> STUDENT: Pentru că înseamnă că e greșit.
>> Jason Hirschhorn: Asta înseamnă că e greșit, și ceea ce este că va face?
>> STUDENT: Re-solicita utilizatorului.
>> Jason Hirschhorn: Este de gând să renunțe programul, așa că va trebui să rulați
din nou, dar nu avem nimic aici pentru a cere-le din nou.
Nu am cerut asta.
Deci, asta e exact dreapta.
Reveni doar 1 închide programul.
Mare.
>> Și imprima un salut pentru utilizator care cuprinde prenumele lor.
Cum pot face asta?
Anna?
>> STUDENT: printf.
>> Jason Hirschhorn: printf.
>> STUDENT: ("
>> JASON Hirschhorn: (
>> STUDENT: "Bună ziua
>> Jason Hirschhorn: "Bună ziua
>> STUDENT:% s
>> Jason Hirschhorn:% s
>> STUDENT: / n
>> Jason Hirschhorn: / n
>> STUDENT: ",
>> Jason Hirschhorn: ",
>> STUDENT: Argv
>> Jason Hirschhorn: Îmi pare rău?
>> STUDENT: Argv
>> Jason Hirschhorn: Argv
>> STUDENT: Piata paranteze 1.
>> Jason Hirschhorn: paranteze pătrate?
>> STUDENT: 1.
>> Jason Hirschhorn: 1.
>> STUDENT: Si) virgulă.
>> Jason Hirschhorn:) virgulă.
Să alergăm această.
Face personalizate.
. / Personalizate.
Ea tocmai a demisionat.
De ce sa renuntat?
>> STUDENT: Nu ați pus nici un argument.
>> Jason Hirschhorn: nu am pune orice argumente inch
Arata grozav.
Ați nimerit-o.
Deci, din nou, te-ai dus în argv și tu verificat la argc început.
Acestea sunt două importante lucruri să-și amintească.
Deci, în ultimele noastre două minute înainte am pleca, nu vom ajunge la PSET două, dar
cum am spus, dacă vrei să stai după timp de 10 minute, aș el fericit pentru a merge
peste cu voi logice pentru aceste seturi de probleme.
Am avut o mulțime de a acoperi azi asa ca nu am ajunge la ele.
În general, îmi place să includă că, la sfârșitul.
Deci, dacă vrei să stai în jur, lipi în jurul valorii de 10 minute.
Vom face asta.
>> Apoi, așa cum am menționat la început, PSET zero și unu, vom ajunge ca
feedback-ul înapoi la tine, ca cel mai scurt timp posibil.
Scopul este de a obtine PSET un feedback-ul, parte comentarii,
înainte de PSET doi se datorează.
Deci, dacă ați făcut unele greșeli sau stilistic, lucrurile ar putea fi mai bine,
veți avea aceste informații, astfel încât să nu va face aceleași lucruri în PSET două.
Și apoi în viitor, veți obține toate de feedback-ul dvs. PSET și comentarii
înapoi înainte de următoarea este datorată.
>> În cele din urmă, dacă am putea pune într-un alt mufă pentru feedback-ul.
Aceasta este prima secțiune.
Acesta a fost primul meu secțiune predarea acestui an.
Du-te acolo.
Scrie lucruri, bune și rele, și voi folosi pentru a face
secțiune mai bine data viitoare.
Și ultimul, din nou, în cazul în care aveți nevoie nimic, lasă-mă să știu.
Sunt mai mult decât fericit să vă ajut.
Dacă doriți doar bomboane, am va avea bomboane in plus.
Sunt fericit să-l aducă la tine.
>> Acest lucru va fi un curs uimitor.
Acesta este unul dintre, dacă nu favoritul meu Desigur, mi-am luat în viața mea,
și sper că va fi ca minunat pentru tine.
Deci, vreau să fac totul în puterea mea să-l că minunat pentru voi face.
Am de gând să trimită un e-mail dacă ești în secțiunea mea sau Noe, și
O să încerc și programa cu fiecare dintre voi un timp pentru a verifica în peste
următoarele două săptămâni, așa că am putea obține un sentiment de ceea ce fundal CS este,
și-l va ajuta, de asemenea, ma adapta aceste secțiuni pentru a se potrivi mai bine nevoilor dumneavoastră.
Deci, asta e ce am aliniat.
Din nou, ne vedem afara dacă vrei să fii acolo.
Acest lucru a fost de doua saptamani secțiune.
Multumesc baieti atât de mult.