>> [MIZIK jwe]
DAVID Malan: Hello, tout moun.
Sa a se supersection CS50 a.
Asiyen Seksyon pa pral kòmanse pou yon lòt semèn.
Se konsa, jodi a, mwen isit la with--
>> MARIA: Maria.
DAVID Malan: --to aktyèlman pran yon gade nan pwoblèm
mete yon sèl, nan kou a premye semèn nan materyèl,
fè ou jwenn oryante ak CS50 IDE, yon ti jan a Linux, sistèm nan fonksyone sa a, se
kouri sou IDE, menm jan tou gade nan kèk nan tranzisyon an
soti nan grafouyen nan C dirijan moute nan pwoblèm mete yon sèl.
>> Se konsa, san yo pa plis tarde, nan pwoblèm mete yon sèl,
w ap ale nan gen prezante yo CS50 IDE, ki
se pwogram ki baze sou wèb sa a anviwònman ke nou itilize yo nan lòd
yo ekri pwogram yo.
Li te fèt yo gade trè okoumansman de yon òdinatè tipik
sistèm kouri yon operasyon sistèm rele Linux.
Men, li la nan syèl la sa yo rele, ki vle di tout moun nan klas la
ka gen aktyèlman li oswa li pwòp kont epi sèvi ak li, tankou byen.
>> Se konsa, pi fò nan pwobableman ou pa janm itilize yon anviwònman Linux anvan oswa petèt
menm yon anviwònman liy lòd.
Ak yon liy lòd anviwònman se diferan.
Li nan tout textuelle.
Li nan tout kòmandman klavye.
Epi, se nan pa gen mousing, pa gen ikon, dyalòg pa gen fenèt, pa gen meni.
Li nan piman tèks.
Se konsa, nan premye, li kalite a santi l tankou yon etap
bak an tèm de bagay konplike.
Men, li fini moute ke yo te yon anpil plis pouvwa anpil, sètènman,
pou yon syantis òdinatè, finalman.
>> Se konsa, kite a pran yon gade.
Men mwen wi nan CS50.io, atravè ki ou ka ale nan CS50 IDE.
Apre sa, anpil tankou nan grafouyen, gen nan twa zòn prensipal nan ekran sa a.
Se konsa, ki sou bò gòch-men, nou gen ki sa yo pral navigatè a dosye-a.
Apre sa, nan sa a folder nan tèt, ki se kounye a vid
depi m 'te debarase m de tout mwen dosye anvan supersection.
Epi sa a, kote nou pral sove C dosye ke nou ekri.
Nan dwat nan tèt, nou gen yon plas kote tout nan kòd nou an k ap pase yo debarase ekri.
Ak tout bon, si mwen klike sou plis sa a, sa a ki pral kite m 'chwazi New File.
Ak isit la mwen kapab kòmanse ekri C Kòd oswa, reyèlman, nenpòt ki kantite lòt lang yo.
>> Lè sa a, nan pati anba a kote li di jharvard @ ide50-- ak ou pral
di yon bagay yon ti kras different-- sa ki te sa a yo rele?
Tèminal fenèt.
Yeah.
Se konsa, fenèt la tèminal se liy la bay lòd sa yo rele
koòdone atravè kote ou ka kominike ak sistèm nan fonksyone kache.
Apre sa, pou kounye a, nou ap ale nan fè anpil ti pou sèvi ak sa a men
jis konpile, fè yon gade nan mesaj erè ke nou wè,
ak nan kouri pwogram nou yo.
Men, finalman, nou ap ale yo fè sa pi plis, tankou byen.
Epi ou ka menm enstale lojisyèl ak administre vorkspas ou
nan CS50 IDE, tankou byen.
Men, plis sou sa kèk lòt tan.
>> Se konsa nou ale pi devan epi ekri yon pwogram trè senp jis
yo ale nan yon cho-up nan hello.c, ki se petèt
pwogram lan pi senp nou ka ekri.
Mwen te deja louvri moute yon tab nouvo.
Mwen pral ale pi devan epi di gen ladan estanda io.h.
Lè sa a, int prensipal (san valè).
Lè sa a, printf ("hello, mond" antislach n, fèmen quote,
parantèz fèmen, ak virgules.
>> Tout dwa.
Se konsa, kounye remake fenèt mwen an se Untitled.
Se konsa, mwen trè byen vit ale yo ale jiska File, Save.
Apre sa, li enpòtan ke Mwen rele sa a pa "hello."
Se konsa, yon erè trè komen, espesyalman nan pwoblèm mete yon sèl,
se aksidantèlman jis rele ou pwogram "dlo" oswa "visye" oswa "Mario"
oswa "kredi" oswa renmen an.
Men, ou aktyèlman vle fè w ke ou gen ekstansyon nan dosye
paske sa a se yon fason a sèlman ki du a epi tou li editè a Kòd
konnen ke w ap aktyèlman ekri C kòd.
Se pou m 'ale pi devan epi klike sou Save.
>> Epi, koulye a, tou, sa CS50 IDE te fè pou nou se li la tou
sentaks make tout bagay.
Se konsa, li te fè tout bagay trè kolore.
Ak objektif an antye nan ki pa fonksyonèl.
Se jis fè desen je mwen an nan moso concept diferan
nan pwogram sa a.
Se konsa nou ale pi devan epi konpile sa a.
Apre sa, mwen ka konpile sa a nan yon koup nan fason.
Ak nan semèn yon sèl, nan fason fin vye granmoun-lekòl nou te fè
li te literalman nan la lòd line-- "sonnen hello.c."
Lè sa a, mwen frape Antre nan.
E pa gen anyen sanble rive nan fennèt la tèminal.
Men, sa ki te fè chanjman nan IDE a?
Ki kote, ankò, IDE jis vle di Entegre Integrated Devlopman Anviwònman.
Li se yon fason anpenpan nan di devlopman entegre sa a
anviwònman pou devlope lojisyèl.
Se konsa, sa t 'chanje nan UI a?
Ki sa ou te remake sa a, se diferan, Maria?
>> MARIA: mwen remake yon bagay anba IDE50 nan folder moute isit la.
>> DAVID Malan: Yeah.
Se konsa, moute isit la, se pa sèlman fè nou gen "hello.c."
Nou genyen tou "a.out", ki se kalite yon non bèbè pou yon pwogram.
Men, tout bon, li nan non an default pou yon pwogram lè ou jis konpile kòd ou a
epi yo pa di du a sa dosye nan pwodiksyon.
Se konsa, si mwen vle kouri sa a, mwen bezwen di compiler-- nan
ou pito, mwen bezwen di vorkspas a ke mwen
vle kouri pwogram nan ki rele "a.out."
Antre nan.
Apre sa, nan "hello, lemonn. "kounye a" ./ la ".
se aktyèlman enpòtan.
Menm si nou sèlman nòmalman ekri non yo nan kòmandman,
lè li nan yon pwogram ou te ekri, ou vle di "./"
paske ki klèman di Linux ke ou vle kouri nan yon pwogram yo rele
"a.out" sa a, se nan sa a, kote dot vle di anyè sa a ke mwen se kounye a
an, ki k ap pase yo dwe rele vorkspas, "a.out.
Paske si mwen jis di "a.out," Antre, Mwen pral jwenn "a.out lòd pa
jwenn "paske computer-- nan paske mwen envante "a.out;"
li pa t 'vini ak computer-- nan pa konnen ki kote yo gade pou li,
menm si li nan dwa anba nen m 'yo, se konsa pale.
OK.
Se konsa, nou te ka chanje sa a yo dwe "sonnen -o alo hello.c."
Men, si mwen frape Antre, ki sa pwogram sa a se ale nan pwodiksyon pou m 'konsa?
Ki sa ki nan non an nan dosye a?
Yeah, nan do.
Sa a dwat. "Alo."
Se konsa, "alo" a pwal non an nan pwogram nan
paske nou te itilize yon sa yo rele lòd liy agiman, ki se jis
yon fason pou chanje konpòtman an nan du a yo aktyèlman pwodiksyon
yon dosye Non espesifik.
Ak tout bon, si mwen rale deyò epi yo gade moute isit la,
koulye a, mwen gen pa sèlman "a.out" ak "hello.c" men tou, "hello," kòm byen.
Se konsa, kounye mwen kapab fè "./hello," Antre nan.
Apre sa, nan "hello, nan lemonn."
Men, ak sa a lastly-- pral kounye a konvansyon an
nou itilize nan tout la semès, typically--
se ou ka tou jis di "fè hello."
Ak tout bon, li nan li di li a jiska nan dat paske li deja egziste.
Kite m 'ale pi devan epi retire, ak yo lòd, ki RM, tou de "a.out" -
epi di "retire a.out dosye regilye?"
Sa jis vle di yo, se ou w ke ou vle efase li?
Mwen pral di wi.
Lè sa a, mwen pral retire "alo", men se pa "hello.c."
Mwen pral di "wi" klèman, men "y" se ase, tankou byen.
>> Epi, koulye a remake si mwen tape ls-- ki, sonje,
vle di list-- li bay lis tout nan dosye yo nan dosye mwen.
Ak tout bon, si mwen rale deyò epi yo gade nan gòch anwo,
li konfime ke sa ki nan nan sa a folder, menm
menm si li nan ki make kòm IDE50 moute isit la epi yo pa vorkspas, li nan jis "hello.c."
Se konsa, kounye desann isit la, si mwen "fè hello," Antre,
koulye a mwen wè yon lòd pi lontan ankò men yon pi plis sofistike lòd ki k ap pase
a ap itil nan semèn kap vini.
Epi, koulye a mwen kapab di "./hello."
>> Se konsa, kite a pran yon toune rapid kèk lòt Linux kòmande.
Lè sa a, poukisa pa nou pran yon etap retounen lakay yo epi aktyèlman gade nan C plis
jeneralman, tranzisyon soti nan grafouyen nan C, ak Lè sa konkli ak yon gade
nan pwoblèm nan premye mete nan C. Tout dwa.
Se konsa, mwen pral ale pi devan ak jis pwòp moute vorkspas mwen ak Kontwòl-L jis
kenbe ekran an byen òdone.
Men, ki pa gen okenn fonksyonèl impact otreman.
>> Sonje byen, nou te wè yon kòmandman kèk kounye a.
Se konsa, nou te wè sonnen, ki anjeneral ou pa pral gen al touye manyèlman ankò.
Nou pral sèvi ak olye pou fè.
Men, nou te wè tou ls, ki montre yon lis nan dosye yo nan anyè m 'yo.
Epi, koulye a poukisa se gen nan de there-- dosye kounye a, "alo" ak "hello.c."
Poukisa gen yon etwal oswa yon asterisk apre "alo"?
Ki sa ki siyifi, ki baze sou sa ki nou te wè nan semèn youn?
Kisa ou panse?
Ki sa ki zetwal nan siyifi?
>> MARIA: pou- pwogram nan "alo"?
DAVID Malan: "Alo *".
Yeah.
Oh, yeah?
Oh, ègzèkutabl.
Sa a dwat.
Se konsa, ki vle di ke "alo" se ègzèkutabl.
Se konsa, tout bon, Se poutèt sa Mwen kapab fè "./hello."
Tout dwa.
Se konsa, ki lòt bagay mwen kapab fè nan isit la?
Oke, li vire soti mwen kapab tou kreye repèrtwar.
Se pou m 'ale pi devan epi kreye, pou egzanp, yon "pset1" anyè.
Apre sa, spesifikasyon la seri pwoblèm pral gen ou fè egzakteman sa a,
pou w pa gen sonje jodi a.
Men, "pset1 mkdir" sanble pa gen okenn enpak.
Men, ankò, pa gen okenn mesaj erè se jeneralman yon bon bagay.
Se konsa, si mwen tape "ls" now-- ah, kounye a Mwen gen yon dosye ègzèkutabl rele
"hello," yon dosye C rele "hello.c."
Lè sa a, koupe an fin, se konsa yo pale, vle di ke sa a se yon anyè.
>> Se konsa, tout bon, koulye a, mwen vle louvri li.
Apre sa, mwen pa double klike sou li tankou nan yon entèfas, yon anviwònman grafik.
Mwen olye pou di "CD pset1."
Antre nan.
Pa gen anyen enteresan sanble gen ki te pase eksepte ti kras èd memwa m '
isit lan-- sa se yon fason a nan Linux raple m 'kote m' prale, se konsa sa katab la louvri.
Li nan jis di m 'klèman kòm opoze a grafikman.
Men, si mwen tape "ls," poukisa mwen wè yon lòt pouse imedyatman, ou panse,
lè m 'lis sa ki nan pset1?
MARIA: Ou pwobableman pa fè sa gen anyen nan la.
DAVID Malan: Yeah.
Se sak fè nou pa gen evidamman kreye anyen nan gen
paske mwen jis te kreye anyè a.
Koulye a, si mwen te vle kreye yon file-- pou egzanp, mwen te kapab kreye yon nouvo dosye.
Lè sa a, mwen te kapab ale nan Save epi sove li kòm,
tankou, "mario.c" si w ap fè edisyon an estanda nan pset yon sèl.
Lè sa a,, tankou nenpòt ki Mac oswa PC, jis chwazi folder "pset1 a, Save.
Epi, koulye a dosye a se vid.
Men, kite a rale nan ankò pou yon dezyèm fwa.
Se pou yo fè ls isit la.
Koulye a, nou wè "mario.c".
>> Se konsa, gen nan yon kèk lòt kòmandman ki yo vo kenbe nan tèt ou sou time--
klè, oswa Kontwòl-L se sa m 'te te frape; mkdir nou te wè;
RM nou te wè, osi byen, ki se pou retire oswa efase yon dosye.
Pran prekosyon nou ou ka also-- epi si ou gade a tutoryèl sou entènèt, ou pral RM -rf
se yon fason trè komen nan di efase yon katab ki gen bagay nan li.
Jis dwe super, super fè atansyon.
-rf vle di recursive efase tou sa li se
w ap eseye efase ak lafòs efase li.
Se konsa, repetitif vle di si li nan yon katab ak yon katab ak yon folder ak yon katab,
efase tout nan yo.
Epi lafòs vle di pa fè sa menm mande m 'repons lan se wi oswa ki pa gen, ou yé asire w?
Se konsa, li nan yon fason super danjere nan efase anpil bagay byen vit.
Men, beware-- twò souvan fè yon odasyeu elèv aksidantèlman efase, di, pset
yon sèl, pou egzanp.
>> MARIA: Men, si yo jis fè -r, yo pwal santi
mande yo sou chak dosye sèl.
>> DAVID Malan: Ki se modera anmèdan.
>> MARIA: Yeah.
>> DAVID Malan: Se konsa, Se poutèt sa se konsa anpil nan nou, pwòp tèt ou enkli,
menm mwen nan abitid la nan lè l sèvi avèk -rf.
Men, li la danjere.
Se konsa, achtè pran prekosyon.
Lè sa a, MV se kalite enteresan rele.
Se konsa, sa a se mouvman yo lòd, ki, ki santi l yon ti kras etranj
paske ou ka sèvi ak li nan tout bon deplase dosye soti nan yon sèl kote nan yon lòt.
Pou egzanp, ann sipoze ke mwen messed yo.
Sipoze ke mwen te kreye yon nouvo dosye pou pset la.
Apre sa, mwen sove li kòm "greedy.c."
Men, si mwen aksidantèlman sove li nan IDE50-- se konsa nan vorkspas mwen tèt li
epi yo pa nan pset1.
>> Ou ka wè kòm anpil nan tèt kite.
Genyen "greedy.c."
Apre sa, gen nan yon solisyon kèk.
Se konsa, yon sèl, mwen ka itilize nan super user-zanmitay fason
nan jis trenen ak jete li.
Apre sa, ki ta aktyèlman ranje pwoblèm sa a.
Men, jodi a, nou ap eseye fè yon gade nan fason yo pi plis Esoteric men pwisan
pou fè sa a.
Se pou m 'pran "ls" nan pset1.
Apre sa, mwen wè sèlman "mario.c."
Kite m 'ale pi devan epi fè "CD ..".
Se konsa, CD ankò se chanjman anyè.
".." Vle di ki sa, menm si?
Dènye fwa mwen te di "CD pset1 "ale nan pset1.
Se konsa, lè m 'di "CD ..", ki sa mwen ap fè?
Bak.
Yeah.
>> Se konsa, li k ap pase yo paran an sa yo rele.
Ale yon nivo leve, tankou sòti soti nan yon katab.
Se konsa, Antre nan.
Ak tout bon, gade ki sa li te fè.
Li demenaje ale rete m 'jis nan vorkspas olye pou a an pset1, ki se nan vorkspas.
Epi, koulye a si mwen tape "ls", gen nan yon pakèt antye nan bagay.
Nan gen "greedy.c".
Se konsa, kounye kite m 'sèvi ak MV literalman deplase "greedy.c" nan pset1.
Se konsa, yon anpil nan Linux kòmande travay egzakteman menm jan ak sa a.
Yo pran pa gen okenn agiman oswa yo pran yon sèl agiman oswa yo pran de liy lòd
agiman ak pou fè.
Ak nan ka sa a, li nan literalman fè sa
li di, kwake succinctly-- deplase greedy.c nan pset1.
Antre nan.
Pa gen anyen sanble yo rive.
Men, si mwen fè yon ls ankò, visye se ale.
Men, si mwen fè "CD pset1", Antre, ak Lè sa ls ankò, kounye a li nan nan plas la dwat.
Kòm yon sou kote, si pou kèk reason-- espesyalman
si ou gen tanzantan koneksyon rezo
oswa w ap ap mache otou lakou lekòl la ak kouvèti laptop ou
fèmen ak Lè sa a louvri l ' ankò, li vorkspas ou
sanble yon ti jan soti nan senk, pa gen okenn kontra gwo.
Jis Reload navigatè ou a fenèt, ak li ta dwe
resync pou ke-bò gòch dosye navigatè sanble egzakteman
tankou fenèt la tèminal.
Pa enkyete.
Lè w gen dout, Reload paj la, se konsa lontan ke ou te sove dosye yo deja.
OK.
Se konsa, MV kapab tou itilize chanje non dosye.
Li kite yo pran yon gade nan lòd final sa a isit la.
Se konsa, suppose-- ak sa a se super komen, tou, byen bonè nan.
Gen kèk elèv detanzantan kreye yon dosye rele, se pou yo say-- sa ki nan yon lòt yon sèl?
Menm jan ak "WATER.C."
Se konsa, mwen pral jis rele, pou okenn rezon, nan tout kapsil.
Men sa se nan pa kòrèk non pou dosye a
si sèlman paske pwoblèm nou mete spesifikasyon pa t 'di ou
pou konsève pou dosye a ke tout bouchon "WATER.C."
Olye de sa, nou espere "water.c" nan miniskil.
Epi, an reyalite, sa a se pwoblèm paske check50,
yon pwogram w ap ale al kontre nan pwoblèm
mete youn ki otomatikman teste Correct nan kòd ou a
ki pral rele nan ou si li pa kapab jwenn "water.c" nan tout miniskil.
>> Se konsa, mwen bezwen ranje sa a.
Se konsa, anpil fason diferan nan fè sa, premye a nan yo ki
ta dwe Kontwole-klike sou oswa dwa-klike sou non an dosye ak jis chanje Chanje non.
Totalman amann fè sa.
Men, ankò, jodi a, se pou yo fè l 'yon ti kras amateur.
Se pou nou sèvi ak MV chanje "WATER.C" nan "water.c."
Se konsa, ou ka tou itilize agiman an premye chanje non l 'bay agiman nan dezyèm
si agiman nan dezyèm se pa, nan reyalite, yon katab oswa yon non anyè.
>> Tout dwa.
Epi anfen, yon ti kras trick-- Se konsa, mwen se nan anyè vorkspas mwen nan moman an.
Si m 'vle jwenn nan pset yon sèl, Mwen kapab sètènman tape "CD pset1."
Men, li la se konsa fatigan tape "pset1" oswa ankò non dosye oswa non anyè
toujou.
Se konsa, trè souvan nan Linux, ki sa ou ka fè se kòmanse sezisman "PSE"
ak jis jwenn anwiye, frape Tab, epi kite figi a òdinatè li soti pou ou.
Super itil jwenn nan ki abitid.
Trape an sèlman se si ou gen dosye miltip oswa dosye kòmanse
ak lèt ​​la "p" oswa "ps," ou ta ka genyen
tape yon kèk plis anvan an òdinatè konnen ki sa fè.
>> MARIA: Nou renmen rakoursi.
>> DAVID Malan: Sa a volonte sove ou anpil tan.
Epi tou, menm jan nou te di nan konferans, ou ka woulo liv moute nan istwa, monte e desann,
jwenn dènyèman egzekite kòmandman, tankou byen.
Tout dwa.
Se konsa, kounye, se pou yo tounen atansyon nou tounen nan yon pwogram ki senp, alo nan lemonn.
Se konsa, nou te konpile sa a egzakteman.
Epi, koulye a poukisa yo pa nou pran yon gade nan kalite mouvman yo done
ak Lè sa a tranzisyon soti nan kèk korespondan blòk Grafouyen C.
MARIA: Awesome.
Se konsa, kounye a ke ou te te kòmanse ekri pwogram nan C,
nou ap ale nan kòmanse pale sou done kalite ak varyab.
Se konsa, kèk kalite done ke ou ta vle konnen kòmanse kounye a
yo se yo menm yo ke yo make nan ble.
Se konsa, nou gen int premye, ki vle di pou nonb antye relatif.
Apre sa, ki kenbe nonm antye relatif, menm jan ou ta ka gen guessed-- konsa 1, 2, 3,
ak nenpòt lòt nonm antye relatif ke ou ka panse a.
>> DAVID Malan: Epi tou negatif.
>> MARIA: Epi tou yo menm negatif, YEP.
Apre sa, 0.
Lè sa a, nou gen flote, ki yo k ap flote nimewo pwen.
Se konsa, sa a, se tout nimewo yo reyèl sa yo ki te pwen desimal.
Se konsa, 5.0, 5.2, e menm plis chif apre pwen an desimal,
kòm byen, epi tou li yo menm negatif.
Lè sa a, nou gen Char ki se yon karaktè.
Se konsa, mwen panse ke nou te pale osijè de sa a nan konferans jodi a.
Men, nou gen lèt, pou example-- A, B, C-- ki ka dwe estoke kòm yon Char.
Men, lè sa a nou gen yon anpil plis senbòl ki ka dwe estoke kòm yon Char.
Ak moun ki yo estoke kòm ASCII.
>> Lè sa a, nou gen bouleen, ki se Booleans.
Ak moun ki evalye Vre oubyen Fo oswa 1 ak 0, respektivman.
DAVID Malan: Epi sonje ke bouleen soti nan bibliyotèk la CS50.
Se konsa, li pa nan bati nan C, men li la super itil
gen nosyon de vrè ak fo.
E menm si ou ta ka Monchè plezi reyalite.
Yon bouleen teknikman bezwen konbyen Bits, se vre wi, ki reprezante Vrè kont Fo?
Konbyen Bits ou panse ou ta bezwen, omaksimòm?
Yeah, jis yon sèl.
Se konsa, li sanble ke C pa ka ba ou sèlman yon sèl ti jan.
Inite a pi piti a nan mezi ou ka jwenn se uit.
Se konsa, li nan yon ti kras inutil yo w ap lè l sèvi avèk yon multiple an antye, oswa uit Bits,
ki reprezante vre oubyen fo.
Men, sa se sèlman wout la li nan aplike nan C pa bibliyotèk la CS50.
MARIA: Lè sa a, yo menm ki ke nou ap pa ale nan pale sou kòm anpil
dwat now-- doub, sa a, se pou pi gwo flote.
Long long ak kout yo tou pou nonm antye relatif.
DAVID Malan: Vreman vre.
Nan edisyon HACKER a pset yon sèl, nou aktyèlman sèvi ak lontan lontan.
Men, pou edisyon an estanda, li pa ta dwe nesesè.
MARIA: Cool.
OK.
Se konsa, ou ta dwe operators-- pwobableman abitye avèk pi fò nan sa yo.
Adisyon, +; soustraksyon, -.
Pou miltiplikasyon, nou gen * a.
Se konsa, pa X a ke nou anjeneral itilize.
Divizyon, nou gen antislach a.
Apre sa, modulo se operatè dènye nou an ki nou pral pale sou kounye a.
Li nan yon operatè ki pèmèt nou pran rès la nan yon divizyon.
Se konsa, si nou gen 4% 2, 4 divize pa 2 se 2 ak yon rès nan 0.
Se konsa, 4% 2 se 0.
4% 3 se 1.
4% 5 se 4, menm jan ou te ka dvine.
Epi sonje lè w ap itilize tout moun sa yo operatè yo sèvi ak règ yo PEMDAS.
>> DAVID Malan: Se konsa, yo dwe klè, si ou fè 4% 2, poukisa se ke 0, egzakteman?
>> MARIA: Paske 4 divize pa 2 se 2 ak yon rès nan 0.
Se konsa, modulo bay nou ke rès kòm opoze a rezilta a nan divizyon an.
DAVID Malan: Ak tout bon, ki sa nou ap jwenn sa a itil
pou se ke nan kèk pwoblèm sa a, se pa nesesèman yon sèl,
si ou vle gen nan efè nan ki mete restriksyon sou tèt ou
nan yon ran de nimewo tankou 0 a yon bagay,
ou ka itilize yo vlope alantou modulo pi bonè pase tankou 2 nan milya dola
oswa valè a 4 milya de dola ki nou te pale osijè de nan konferans.
>> MARIA: Yeah.
E menm nan "visye" nou ta ka.
DAVID Malan: Wi, nan pwoblèm mete yon sèl, kòm byen.
MARIA: Yeah, bèl.
DAVID Malan: Bon allusion.
MARIA: Padon.
Boolean ekspresyon konsa pou operatè Boolean,
nou pral pale sou tout nan sa yo ke ou wè isit la.
Se konsa, kounye a, nou gen de siy egal ki nan lis pou egal.
Se konsa, sa yo se pou konparezon.
Se konsa, lwen, nou te sèlman wè yon sèl egal siy.
Sa a lè nou bay se yon valè nan yon varyab.
Se konsa, si nou te wè Int n = 5, Lè sa a, nou te asiyen 5 a n nan varyab.
Men, si nou vle sèvi ak == pou konparezon, nou ka tcheke si n == 5.
Men, si n == 5, Lè sa a, sa a, se vre.
>> Se konsa, operatè Boolean pèmèt nou, fondamantalman,
evalye Boolean ekspresyon vre oubyen fo.
Se konsa, pa equals-- nou gen nan esklamasyon make ak egal.
Se konsa, nou te kapab tcheke tou si n pa fè sa egal 5-- konsa n! = 5.
Mwens pase, mwens pase oswa egal a, pi gran pase, pi gwo pase oswa egal a,
ak Lè sa a nou gen ki lojik nan AK ak lojik nan OSWA.
Ak moun ki pèmèt nou evalye miltip ekspresyon Boolean ansanm
fondamantalman vini ansanm kòm yon antye ekspresyon Boolean.
Se konsa, si nou vle jwenn yon nimewo, di, ki gen plis pouvwa pase 5 men mwens pase 15
an menm tan an, nou ta sèvi ak nan ki lojik e ki operatè yo wè si n se
pi gran pase 5 && n mwens pase 15.
DAVID Malan: Ak isit la, tou, li vrèman fasil
byen bonè sou nan aksidantèlman itilize jis yon comercial sèl
oswa yon bar vètikal sèl.
Ak èspere ke du a pral rele nan ou paske yo aktyèlman
gen yon siyifikasyon trè diferan.
Pou moun kirye, yo ap itilize pou operasyon lojik,
opere sou Bits endividyèl elèv yo.
Men, ou fè vle pè a nan yo isit la.
Ak super enpòtan se ke premye yon sèl, siy ki egal,
ki se operatè a egalite kòm opoze a operatè a plasman.
>> MARIA: Epi ba a vètikal se lokalize ant Delete a epi retounen.
DAVID Malan: Wi.
Sou yon US klavye nòmal pou li.
>> MARIA: Oui.
Se konsa nou so dwa nan deklarasyon kondisyonèl.
Nan grafouyen, ou te deja wè, pwobableman,
si deklarasyon ki pèmèt ou tcheke si gen yon bagay se vre, Lè sa a,
fè yon lòt bagay.
Se konsa, ou ta ka yo te vle yo tcheke si luten ou a se
manyen kèk lòt luten oswa fwontyè a nan ekran an.
Lè sa a, ou ka gen te vle fini jwèt la oswa fè yon lòt bagay.
Se konsa, sentaks la pou sa se "si (kondisyon)."
Se konsa, si luten ou a ap manyen yon bagay, Lè sa a, se andedan aparèy òtopedik yo Curly.
>> Lè sa a, nou gen si-lòt bagay deklarasyon.
Lòt Bagay pèmèt nou fè yon bagay si kondisyon an ke nou
tcheke pou depi nan konmansman an se pa vre.
Se konsa, si luten la ap manyen la fwontyè fè sa, lòt moun fè yon lòt bagay.
Se konsa, otreman fè yon lòt bagay.
Lè sa a, nou gen yon ti bout tan egzanp pou sa a.
Se konsa, si (military_time <12), nou vle printf "Bon maten!"
Lòt Bagay nou ap ale nan printf "Bon aswè!"
Debaz egzanp.
>> DAVID Malan: Bon.
>> MARIA: Cool.
Se konsa, kounye a nou gen deklarasyon switch.
Chanje deklarasyon an ka jeneral pèmèt nou fè yon anpil nan menm bagay la
nou jis te pale osijè ki sou ak si deklarasyon.
Pou egzanp, kounye a nou gen nan fòm jeneral nan deklarasyon an switch
ki pèmèt nou pran yon varyab rele n
epi konpare li a yon anpil nan valè diferan, ki isit la nou
yo te rele constant1, constant2.
Nou ka gen yon anpil plis.
Ak moun ki yo rele yo ka.
>> Se konsa, si nou gen yon switch statement-- ak sa a travay
sèlman pou integers-- nou gen yon varyab nan ka sa a sa a, se n.
Si n nan varyab se egal a constant1, nou
ap egzekite kèk brib nan kòd oswa yon bagay ke nou vle fè.
Lè sa a, nou ta kraze.
Se konsa, repo a vle di ke deklarasyon an switch
yo ap sispann si egzekite n se egal a constant1,
ak Lè sa a pwogram ou an ap kontinye.
Li pral sòti soti nan la chanje deklarasyon epi li pral
kontinye fè yon lòt bagay.
>> Si, toutfwa, n fè sa ki pa egal constant1, lè sa a ka pou constant2
yo pral tcheke.
Se konsa, si n egal constant2, ki lòt pral brib nan kòd dwe egzekite.
Lè sa a, li pral kraze si se sa ki egal a li.
Lè sa a, nou ka gen also-- pa nesesèman, though-- yon ka default,
ki pral rive si n pa fè sa egal nenpòt nan ka yo ke ou te nan lis la.
Ak nan ka a default, nou menm tou nou pa bezwen yon ti repo nesesèman
paske deklarasyon an switch pral konnen ke li bezwen mete fen nan apre default a
ka si sa a, se ka-a.
>> DAVID Malan: Men, estilitikman, nou toujou mete l 'nan la.
>> MARIA: Yeah.
>> DAVID Malan: Yeah.
Se konsa, espesyalman lè kòmanse soti, espesyalman si nan mitan moun mwens
konfòtab, mwen ta pèsonèlman jis rekòmande bwa avèk ifs yo
ak ifs-elses epi si-lòt bagay si-elses- ak pou fè si sèlman
paske yo ap yon ti kras plis senp.
Sa a se yon optimize bèl, oswa pafwa menm estetik li
fè kòd la plis lizib.
Lè an reyalite, pwobableman mitan-semès nou pral wè yon pwoblèm
mete kote li jis sanble pi bon ak pi fasil yo li pou moun yo
lè l sèvi avèk yon deklarasyon switch.
Men, pa enkyete sou kenbe Bucaram sou sa a twò bonè.
>> MARIA: Yeah.
Si ou gen yon anpil nan si deklarasyon, li ta ka jis pa dwe pran anpil lizib.
Li pa ta ka trè vit pou ou pou w ale nan li.
Se konsa, chanje deklarasyon ka dwe pran anpil ki itil, kòm byen.
Epi tou, pa remember-- pa fè sa bliye mete repo yo nan la.
>> DAVID Malan: pa sonje sa a.
>> MARIA: Paske lè sa a ou ta ka tonbe a soti nan yon ka nan yon lòt.
Se konsa, kite pou nou di ke constant1 ka pa t 'gen yon deklarasyon ti repo nan li.
Lè sa a, nou ta ka tonbe nan anndan ka constant2.
Apre sa, nou pa vle fè ke si nou te deja rive ka constant1
ak li a egal a n.
>> Se konsa, pou egzanp, si nou gen yon varyab N ki gen yon nimewo klas,
epi nou vle wè ki sa sa klas is-- si n egal 50,
nou ap ale nan enprime "CS50 se Entwodiksyon nan Syans I. "
Lè sa a, nou ap ale nan kraze.
Epi sa a, li.
Si, toutfwa, n ki egal a 51, nou ap ale
ekri ak lèt ​​detache "CS51 se Entwodiksyon nan òdinatè Syans II. "
Lè sa a, ankò, nou ap ale nan kraze.
Sepandan, si lè sa a nou mete 124, 61, nenpòt lòt nimewo ke ou ta ka panse a,
oswa pwogram pa pral yo rekonèt sa.
Se konsa, li k ap pase yo di, "Padon, mwen se pa abitye ak sa klas la. "
Epi, se k ap pase yo chire.
DAVID Malan: Se konsa, ou ka vrèman wè si, nan lòt moun si, lòt bagay lide isit la.
Se jis diferan sentaks pou eksprime egzak lide a menm.
>> MARIA: Egzakteman.
Koulye a, nou gen operatè tèrsyèr nou an.
Se konsa, operatè tèrsyèr gen twa parts-- yon kondisyon,
yon bagay yo fè si ke kondisyon se vre,
ak Lè sa a yon bagay fè si ke kondisyon se fo.
Se konsa, ou wè la a, fondamantalman, sentaks la nan ki isit la.
Nou gen make la kesyon, ak Lè sa a, the-- sa nou rele sa a?
DAVID Malan: kolon la.
MARIA: Colon.
Mèsi.
Regrèt.
Se konsa, kite pou yo gade nan egzanp nou yo wè si nou ka fè sans nan sa a men
class_num == 50.
Se konsa, isit la nou wè operatè Boolean nou an == ki konpare class_num nan varyab
a 50.
Magazen Se konsa, class_num yon nonb antye relatif.
Men, si ki nonb antye ki pè egal 50, Lè sa a, nou ap
ale nan magazen "David Malan" andedan pwofesè a fisèl.
Si nimewo klas pa fè sa egal 50, "pa David Malan"
a pwal pwofesè a.
>> DAVID Malan: Mèsi poutèt ou.
Se konsa, sa a sanble ekivalan a sa ki, ou ta di, nan premye gade?
>> MARIA: Pou m 'li sanble tankou si-lòt bagay deklarasyon.
>> DAVID Malan: Yeah.
Ak nan reyalite, sa a se kalite nan yon bèl yon sèl revètman,
se konsa pale, pou mete ann aplikasyon egzakteman lojik nan si-lòt bagay
men fè tout bagay nan yon sèl etap.
>> MARIA: Egzakteman.
Yeah.
Se konsa, si deklarasyon-lòt bagay ta ka Leve kanpe, pran yon anpil nan espas.
Yo ta kapab twò lontan pou yon bagay kòm senp tankou sa a.
Se konsa, sa ka trè somèr ak trè bèl.
Se konsa, kounye a nou ap ale nan gade nan egzekite yon bagay ankò e ankò,
se konsa tcheke pou yon kondisyon plizyè fwa
Lè sa a, kontinye ak fè yon bagay pandan y ap ke kondisyon se verite.
Se konsa, sa pote nou joliman nan pasan ti tan.
>> Sou bò goch la, nou gen nou an premye pandan y ap riban.
Se konsa, pandan yon bagay ki vre, fè yon bagay ankò e ankò.
Se konsa, asire w ke w remake ke nou an kondisyon isit la se valide nan tèt la.
Lè nou konsidere ke ak dezyèm loop-- nou an, nou rele ke yon fè-pandan y ap loop-- nou fè yon bagay,
lè sa a nou tcheke pou yon kondisyon.
Men, si ke kondisyon kontinye ap fè vre,
n 'al jwenn retounen lakay yo epi fè sa a ankò.
Se konsa, diferans lan prensipal se kote se kondisyon an tcheke pou.
Ak kòd la pa janm pouvwa gen egzekite si kondisyon an se pa
vre ak riban an pandan y ap.
Lè nou konsidere ke ak fè-pandan y ap nan riban, nou gen kòd la
ki se toujou egzekite omwen yon fwa.
Lè sa a, pandan y ap kondisyon Ak nan kontinye ap fè vre,
nou ka ale retounen lakay yo epi repekte ankò anndan an.
Se konsa, poukisa ou panse nou ta sèvi ak yon fè-pandan y ap riban sou yon riban pandan y ap?
Dwa.
Se konsa, si nou vle èd memwa a itilizatè pou kèk sòt de D ',
si nou vle mande yo a antre nan non yo,
nou vle omwen mande yo yon fwa.
Men, si yo antre nan ke non, nou pa ap
pral mande yo ankò paske nou deja konnen li.
Men, si yo pa antre non yo, oswa si yo
antre nan yon bagay sa a, se evidamman pa yon non,
nou toujou vle kontinye mande yo sou pou non yo.
>> DAVID Malan: Ak nan konferans nou te gen youn tankou sa a ak jwenn int la pozitif
egzanp, kote gen nan pa gen anyen yo tcheke nan premye paske ou gen pa menm
vinn yon int.
Se konsa, nou vle fè sa a men jwenn yon int soti nan user-- nan
Lè sa a, tcheke li, petèt, ankò, li ankò e ankò.
>> MARIA: Egzakteman.
Pou loops-- OK.
Pou pasan ka pèmèt nou fè prèske menm bagay la egzak, tankou byen.
Li nan aktyèlman menm bagay la egzak.
Se konsa, pa gen anyen ki ou kapab fè avèk pou pasan
ke ou pa ta kapab fè ak pasan ti tan.
Men, pou pasan ka sanble yon ti kras ti jan pi plis konplike syntactically
paske yo gen twa pati andedan sa
te ye anvan an jis nan kondisyon ki gen pasan ti tan.
Se konsa, pati a an premye ke ou lanmè, nan kite-pi, nou gen "int nen = 0."
Se konsa, sa a se kote nou inisyalize varyab nou an.
>> Lè sa a, nou gen yon virgules ak "nen <7."
Se konsa, sa a se kote soti kondisyon aktyèlman se.
Se konsa, ki se ki sa nou ta gen mete jis nan pandan y ap nan loop--
"pandan y ap nen <7."
Isit la, ki ale nan la presegondè nan nou an pou riban.
Se konsa, "dwaves <7."
Lè sa a, yon pati dènye nou an se "nen ++," ki se kote nou mete ajou varyab nou an.
Se konsa, bagay la enpòtan reyalize se ke sa a
ki pral ale nan sa a pou riban sèt fwa ak egzekite sèt fwa.
Se konsa, nou gen sèt nen, ak yo ap tout
pral di, "mwen isit la ede ou, nèj blan "
yo paske yo te pare yo ede nèj blan.
>> Avèk pandan y ap pasan, nou ta te fè inisyalizasyon a ak jour an
pa andedan kondisyon an, ankò, men swa anvan oubyen pandan y ap andedan riban an
a asire w ke we-- paske nou toujou bezwen moun ki pati.
Se konsa, asire w ke nou gen yo, nou ta te toujou te ajoute yo
sou li a, jis pa andedan parantèz yo.
>> DAVID Malan: Se konsa, li sanble like-- nan konferans la, pou egzanp,
Mwen prèske toujou sèvi ak, tankou, mwen ak n ak varyab bèl raz.
Li sanble ke ou ka sèvi ak plis malen yo te rele varyab, tou.
>> MARIA: Yeah, li la aktyèlman trè bèl yo sèvi ak varyab yon ti jan plis deskriptif
paske espesyalman si yon moun lòt bagay se lekti code-- ou petèt w ap elèv klas
oswa si w ap kolabore ak somebody--
ou vle asire w ke yo konprann ki sa ou ap fè.
>> OK.
Se konsa, sa a se yon bagay trè funky-- pou riban andedan yon pou riban.
Mwen pa konnen si nou te wè sa a anvan.
Pwobableman pa.
Men, nou ka gen aktyèlman sa a men se konsa olye pou yo pasan pasan.
Se konsa, nenpòt moun ki vle petèt mache m 'nan sa k ap pase isit la?
DAVID Malan: Mwen pral pran yon koud.
MARIA: Cool.
DAVID Malan: OK.
Se konsa, spoiler-- nou vle enprime bagay la sa a, se nan kwen an men dwat-ou anba
la.
>> MARIA: Dwa.
Yeah, yeah.
>> DAVID Malan: Se konsa, nou te jis mete sa echantiyon pwodiksyon la.
Se konsa, mwen ka dégager ki soti nan topmost bouk ke w ap
iteration sou ranje yo eksteryè riban, se konsa pale.
Apre sa, w ap iteration sou kolòn ak riban an entim.
Apre sa, entwitif, sa a ta dwe èspere ke fè sans
paske pa nati nan chak pwogram nou te wè
anvan, printf, ki se nan fonksyon nou ap lè l sèvi avèk, finalman,
gen kapasite nan enprime bagay soti esansyèlman liy pa liy.
Tankou, yon fwa ou te outputted yon liy nouvo, gen nan
pa gen okenn double retounen lakay yo epi enprime yon bagay pi wo nan ekran an, omwen
pa lè l sèvi avèk printf tankou sa a.
>> Se konsa, nan ki konsiderasyon, li fè sans ke riban an eksteryè
yo ta dwe refere li a ranje yo paske pou chak bay ranje,
w ap ale nan vle enprime soti xxxxx, ak Lè sa
deplase sou pwochen ranje a, xxxxx.
Se konsa, ranje vini an premye.
Lè sa a, nan chak ranje, ou enprime kolòn.
Si ou te eseye fè l 'nan opoze a, li ta pwobableman pa
soti jan ou gen entansyon.
>> MARIA: Yeah.
Nou jis pa t 'kapab tounen nan ranje a anvan ak printf.
>> DAVID Malan: Ak sa ki nan enteresan pou chak chat jodi a sou sijè ki abòde,
aktyèlman, se ke ranje se yon int ki nan te deklare nan riban an topmost.
Men, remake ke li se toujou andedan nan, se konsa pale,
aparèy òtopedik yo Curly ki imedyatman swiv,
menm si li nan pa teknikman nan moun aparèy òtopedik Curly.
Se konsa, ranje se nan sijè ki abòde pou la antye a brib nan kòd,
tou de andedan nan deyò a pou riban ak andedan nan enteryè a pou riban.
Men, pa kontra, kote se kolòn nan sijè ki abòde?
Kolòn nan varyab?
Yeah, se sèlman nan anndan bouk la.
Epi sa a, OK paske nou pa gen aksè li deyò nan aparèy òtopedik Curly li yo.
Tout sa nou fè se ekri an lèt detache soti yon nouvo liy nan fen anpil la.
Se konsa, ki an reyalite se OK.
>> Se konsa, sa a gen efè a, li sanble, pou fè twa ranje ak kat kolòn.
>> MARIA: Dwa.
Se konsa, premye nou ale nan premye ranje nou an.
Apre sa, jis nan premye ranje nou an, nou fè a kat kolòn andedan premye ranje a.
Se konsa, nou enprime soti kat X la.
Lè sa a, nou ka sòti an pou riban, depi nou te deja enprime soti kat X la.
E nou enprime yon liy nouvo.
Lè sa a, nou ale nan nan menm pwosesis pou de plis ranje
fè yon total de twa.
>> DAVID Malan: Lè li nan vo anyen li a jis yon asosye nan font la, reyalite a
ki echantiyon pwodiksyon an sanble anpil pi wo,
tankou si gen nan plis ranje pase kolòn.
Men, li la jis paske X la se pi wo pase sa li se lajè.
Sa a tout sa ki k ap pase a, plis espas vid ki genyen ant liy yo.
>> MARIA: Dwa.
Fre.
DAVID Malan: Tout dwa.
Se konsa, yon gade rapid nan pwoblèm mete yon sèl, pran nenpòt kesyon, ak Lè sa a ajoune?
Tout dwa.
Se konsa, nan pwoblèm mete yon sèl, gen nan twa defi prensipal, finalman.
Men, anvan, w ap jwenn ke pwoblèm nan mete
spesifikasyon, menm jan ak anpil nan psets sa a tonbe, ki pral mache ou
atravè yon kèk egzèsis cho-up, pwen ou soti yon resous kèk
ke ou ka oswa ka pa gen pou wè deja.
Pou egzanp, CS50 gen yon suite nan bout pantalon,
ki se videyo ti bout tan, pa kontrèman sa a, men sa
yo trè sijè specific-- petèt senk minit,
10 minit nan longè sou pasan oswa sou kondisyon oswa sou algoritm
oswa pita sou plis sijè avanse, kòm byen.
Apre sa, nou jeneralman Afiche sa yo nan pwoblèm nan
kouche pou ke elèv yo gen yon resous ak ki
yo revize materyèl ki ta ka gen deja vini nan konferans oswa seksyon.
Men, fason sa a li nan konsantre plis ak plis ankò nan men yo.
>> Nou menm tou nou gen tandans Afiche nan pwoblèm kouche bagay rele valktroug.
Se konsa, prèske tout nan egzanp yo mwen fè nan konferans, sou sèn isit la, nou menm tou nou
te tire sou kamera nan avanse yon pi plis pi dousman,
yon solisyon plis entim pa m 'sou laptop mwen nan ki kòd, liy pa liy
se konsa ke nan klas, nou pral souvan ekreme nan yon bagay oswa yon moun
pral foure ak yon reponn a yon kesyon.
Men, li pa nesesèman koule an pou tout moun nan odyans lan.
Se konsa, ou ap jwenn Kòd valktroug pou pifò nan egzanp yo
ke nou fè isit la nan konferans pou ke ou ka mache atravè li nan pwòp vitès ou
ak remonte oswa vit pou pi devan oswa sote tout ansanm, si ou ta renmen.
>> Genyen souvan yon kèk kesyon cho-up ki
mande w sòt nan ranfòse materyèl sa a
ak asire w ke w ap confortable anvan ou kontinye ak rès la nan pset la.
Lè sa a,, nan kou, gen nan pset nan tèt li.
Apre sa, youn nan bagay ki nou trè fè espre
fè nan CS50 se prèske chak entérésan oswa entelektyèlman entérésan
mekanik etap ki ou ta ka dwe fè
se prèske toujou trè byen dokimante.
Plis pase kou a nan tèm nan, nou pral kòmanse poze kesyon retorisyen plis
tankou sonje ki jan fè sa a oswa ki?
Men, jeneralman, w ap jwenn ke pwoblèm ansanm sa yo, fè ou jwenn
a mekanik yo nan yon bagay lè sa a,
enteresan, defi yo entelektyèl yo finalman kite nou la a elèv la.
>> Avèk ki te di, Zamyla, ki moun nou kenbe refere li jodi a nan konferans,
se youn nan anplwaye nou an depi lontan manm ki tou kenbe valktroug
sou pwoblèm pset espesifik tankou mario ak visye, men se pa dlo ane sa a.
Lè li nan nan sa yo valktroug ke li souvan
ofri kèk konsèy ak ke trik nouvèl pou Ki jan yo kontinye, pa janm di ou
egzakteman sa yo dwe fè, men rather-- tankou yon kondisyon,
si ou will-- ban nou omwen yon koup nan lide konsa ke li a jiska ou,
finalman, deside ki jan yo apwòch yo.
>> MARIA: sòt de tankou yon-wo nivo konpreyansyon yo genyen sou lojik la nan sa ki
nou ap mande ou fè.
>> DAVID Malan: Egzakteman.
Epi, an reyalite, Zamyla a valktroug yo vle di ke
reponn a souvan mande kesyon de ki kote
fè mwen te kòmanse, espesyalman lè espesifikasyon sa yo, se lontan
yon ti kras redoutable bay tout tèks la ak simagri yo ke yo gen nan yo.
>> Se konsa, water.c, w ap jwenn apre ou te fin ranpli li,
se aktyèlman relativman senp.
Absoliman se yon pakèt moun nan nou ale nan Bang
tèt nou kont miray la ap eseye figi konnen poukisa li pa nan konpile
oswa poukisa li pa kouri kòrèkteman.
Men, yon fwa w ap fè ak li ak yon fwa ou te
pase kèk tan batay ak nenpòt ki nan pinèz yo ke ou ta ka gen,
w ap jwenn ke li nan yon pwogram trè kout.
Li ka fè nan jis yon kèk liy nan kòd, pifò ladan yo
nou te wè isit la nan konferans deja, si ou rasanble blòk yo bilding dwat.
>> Ak jan nou sijere isit la, li k ap pase yo mande
ou presize konbyen minit yon moun ap pran yon douch sou lakou lekòl la.
Nou presize nan pwoblèm nan mete pousantaj la koule nan dlo
nan, tankou, yon douch ki ba-koule tèt, anpil tankou clip la Seinfeld
nou te wè yè oswa opoze a ladan l '.
Lè sa a, ou jis gen fè yon ti jan nan matematik,
really-- aritmetik lè l sèvi avèk C rive nan di nou ki jan anpil moun, apeprè, boutèy dlo
se ke ekivalan a si nou ap pran yon douch n-minit.
>> Koulye a, nan mario.c, sa a ki pral yo dwe yon pwogram yon ti kras pi lontan.
Li nan toujou pa pral fè sa a depi lontan.
Jis yon liy kèk pi lontan pase water.c.
Men, li k ap pase yo dwe opòtinite rkree lekòl la fin vye granmoun Mario
piramid soti nan Super Mario Frè m 'oswa kèk swiv-sou.
Li nan pa ale nan gade kòm bèl pase oswa kòm kolore kòm ke yon moun la.
Nou jis ap ale nan sèvi ak hashtags ti kras tankou nou gen isit la sou ekran an
lè l sèvi avèk tèks ASCII.
Men, li pral apwoksimatif lide a menm.
Epi, se k ap pase yo dwe genyen yon fè egzèsis ki nan premye gade
sanble trè simple-- jis enprime yon piramid ki senp.
Men, gen nan yon koup Karakteristik isit la ki enteresan.
Remake kwen an nan rightmost piramid la aktyèlman gen lajè de.
Se konsa, gen nan de egal kolòn wotè, ki
fè li mande pou yon ti kras ti jan nan te panse yo fè
w ke ou jwenn ki egzakteman dwa, kòm opoze a jis yon parfe Incline
liy.
Se konsa, sa a, se yon ti jan nan yon ka kwen men alimèt jwèt la vrè.
>> Apre sa, li la tou ki pa Peye-evidan nan premye ti koutje sou jan yo enprime espas ki la blan.
Se konsa, lè mwen gade nan an echantiyon pwodiksyon isit lan--
ak li a tou nan spec-- nan li kalite sanble yon rektang,
men yon dyagonal de a rektang ki te koupe koupe,
ak li nan jis espas blan, se konsa pale.
Se konsa, yon moun poze souvan kesyon isit la se toujou, byen,
ki jan mwen deplase hashtags yo sou a dwat a?
Ou ki jan mwen enprime espas yo vid?
Apre sa, li la aktyèlman pi fasil pase sa pifò elèv yo panse.
Dwa?
Ou ka apwoksimatif li vizyèlman pa jis frape bar nan espas fwa oswa de fwa
oswa twa fwa.
>> Se konsa, menm si ak printf nou prèske toujou enprime soti yon afè oswa yon int
oswa yon mo tankou "hello, mond "oswa seri de nan mo,
ou ka tou jis enprime quote, espas, unquote.
Epi sa pral aktyèlman ba ou yon espas blan la.
Se konsa, kenbe ki nan tèt ou ak pa overthink sa a.
Ou reyèlman gen deside ranje pa ranje pa ranje,
pa kontrèman egzanp ou yon ti moman de sa, ki jan anpil nan moun ki
kolòn yo ta dwe espas blan ak ki jan anpil nan yo ta dwe hashtags.
Li pral pran yon ti jan nan tan, men li la finalman yon devinèt lojik nan kalite.
>> MARIA: Yeah.
Men, lojik la pou yo ale ranje pa ranje a pwal trè itil isit la.
DAVID Malan: Yeah.
Mwen panse ke kòd la echantiyon ou gave-- menm menm si li pa t 'yon pwogram konplè.
Ou toujou bezwen int ak prensipal ak anile ak # enkli stdio.h,
yon anpil nan bagay ki soti nan konferans.
Men, blòk yo bati sanble yo dwe la.
Lè sa a, anfen se yon bagay yon ti kras plis algoritmik.
Se konsa, li sanble ke nenpòt ki lè ou ale nan CVS oswa nenpòt magazen konvenyans
ak yon moun men ou nan la bòdwo kesye oswa kòm pyès monnen chanjman,
li vire soti yo ke yo, moun, si wi ou non yo konnen li ou pa,
yo se pwobableman lè l sèvi avèk sa ki nan rele yon algorithm visye,
kijan si w ap dwe, di, $ 21 nan chanjman paske pou kèk rezon
ou te achte yon bagay trè chè ak yon trè gwo bòdwo a CVS,
li ta reyèlman anmèdan si nan kesye te ban nou 21 selibatè oswa, pi mal
ankò, yon anpil tout pyès monnen.
Olye de sa, ki sa yon moun ki rezonab se pwobableman pral fè se yo pwal santi
gen tan pwan yon $ 20- ak Lè sa a yon bòdwo 1-$, ak men ou jis de bòdwo nan ka sa a.
MARIA: Se konsa, yo ap chèche pou misyon pou minimize chanjman nan yo ke yo bay tounen ba ou.
DAVID Malan: Egzakteman.
Ak menm bagay kontra avèk pyès monnen, kòm byen.
Si w ap dwe, di, $ 0.50, èspere ke ou pa vle 50 peni.
Ou olye pou vle de trimès, pou egzanp.
Koulye a, sa a fè asime ki kesye a gen
ase nan chak denominasyon ki li oswa li te ta ka vle ba ou.
Men, nou pèmèt ou asime kòm anpil nan pwoblèm nan.
Apre sa, objektif la, finalman, se aplike nan C Kòd yon algorithm visye.
Se konsa, se itilizatè a pèmèt tape nan konbyen lajan
chanje l ap dwe ak dola ak santim, kèk kalite k ap flote pwen
valè pwobableman.
Lè sa a, sa ou dwe fè matematik la ak figi konnen algorithmically, byen,
konbyen pyès monnen mwen ka ba ou minim l 'ban nou
egzakteman ki kantite lajan pou chanjman.
Men, gen k ap pase yo dwe yon kèk pati difisil isit la, dwa?
Fè tankou gen nan tout la enpresizyon pwoblèm.
MARIA: Egzakteman.
Se konsa, k ap flote pwen valè gen enpresizyon.
Èske nou pale sou sa a nan konferans jodi a?
>> DAVID Malan: Nou te fè a dènye fwa nan konferans.
Nou te pale de enpresizyon.
Epi ou pa vle tronpe itilizatè a de konbyen chanjman l ap dwe a.
Se konsa, solisyon an, nan pwoblèm mete spesifikasyon la,
bay kèk panse, finalman, kòm nan ki jan ou ka bese moun enpresizyon
erè, ki kapab.
Li se evite, sètènman, pou entrain yo nou ap pale de.
Epi, an reyalite, pennies-- petèt nou pral ranvwaye Zamyla,
Mwen panse ke, pou ke trik nouvèl yo la.
Se konsa, finalman, w ap jwenn yon pwogresyon nan pwoblèm semèn sa a,
premye a nan ki se trè piti, Lè sa a, mwayen, Lè sa a, yon ti kras pi gwo.
Men, tout nan yo sèvi ak bilding nan blòk soti nan semèn sa a sot pase yo,
soti nan supersection sa a, pwoblèm mete spesifikasyon
mete ou nan resous multitud.
Men, toujou, si nan tout difikilte, espesyalman nan mitan moun mwens konfòtab
ki pa gen okenn background anvan, vini nan lè biwo
nan Lendi ak Madi ak Mèkredi ak Jedi.
Ale nan CS50 Diskite sou atravè sit kou a nan,
atravè kote ou ka chat ak manm pèsonèl la ak kamarad klas.
>> Men, finalman, mwen panse ke nan pi bon konsèy se jis kòmanse bonè.
Li pa kalite a nan klas ke ou ta dwe kòmanse nan Mèkredi psets
vin pi mal Jedi swa, lannwit oswa.
>> MARIA: pi bon konsèy mwen se yo te te kòmanse pa Lendi.
DAVID Malan: Lendi.
Se konsa, si ou pa gen te kòmanse deja- pa gen okenn.
Men, menm si se pa Lendi, Lè sa a, Madi.
Pi bonè nan pi bon an.
Epi sa a, rezon ki fè yo nan kou gen anpil jou an reta se
ba ou yon ti jan nan yon presyon sikolojik
yo kòmanse pi bonè men yo toujou kite bagay glise lè bagay sa yo pran plis tan
pase ou atann.
>> MARIA: Epi ou vle fè pou sèvi ak lè biwo kòm anpil jan ou kapab, tou.
>> DAVID Malan: Nenpòt kesyon?
Tout dwa.
Oke, poukisa pa nou ajoune isit la?