[MUSIC nagpe-play] ANDI PENG: Ito ay CS50, at maligayang pagdating sa dalawang linggo ng section. Ito ay tunay na habang linggo dalawa sa aming class-- talaga, ang unang linggo namin ay section. Ipakita ng kamay, kung paano marami sa inyo ang lahat dumating sa sobrang seksyon noong nakaraang linggo? OK, na OK. Iyon ang OK. Ilan sa inyo ang nanood super seksyon noong nakaraang linggo? SIGE. At sa iyo guys did fine sa hanay ng problema sa isa? Kaya ako pagpunta sa gawin ito na kami ay may ng grupo ng mga tunay na intelligent kids sa ganitong klase at mga bagay ay pinong. SIGE. Kaya first-- Una, lamang kami ay pagpunta sa madaling sabi pumunta sa mga agenda para sa araw na ito. Susubukan naming makipag-usap tungkol sa Logistics course. Ang isang pulutong ng ikaw ay malamang na may mga katanungan tungkol kung paano mga bagay na tumakbo sa kursong ito. Susubukan naming sagutin ang mga ito. Kami ay pagpunta sa madaling sabi pumunta sa paglipas ng mga loop sa kasong man sa inyo guys nasagot ang super section. Susubukan naming makipag-usap tungkol sa pagmamapa ASCII. Susubukan naming makipag-usap tungkol sa array, pag-andar, argumento command line. At sa wakas, kung ano ang iyong guys marahil ang lahat talagang nais na maging dito upang matuto tungkol sa, ay ang iyong pset2. Magkakaroon kami ng ilang mga nice tricks at mga tip para sa kung paano gawin iyon. SIGE. Gayundin, pangalawa, mayroon kaming maraming ng kendi dito. Sinuman na may gusto ng kendi, lumapit lamang dito. Kunin ang ilang. Mayroon akong isang bungkos. Kami ay may isang tonelada sa opisina. Hindi ko talagang gusto kumain ng kendi sa buong araw. Ikaw guys dapat kumain ang lahat ng kendi, dahil dinala ko ito dito para sa iyo guys. Kumain lang ng kendi. Makikita may kendi sa bawat section. Kaya una, sino ako? Ang pangalan ko ay Andi Peng. Ako ang head TA ng CS50 dito sa Yale. At sa karagdagan sa na iyon, ay ako din be-- kung ang sinuman ay like-- iyong tumatakbo buddy, ang iyong mga balikat sa sigaw sa. Kung ang gabi bago dahil ang iyong pset ni, wala kang mga ideya kung ano ang nangyayari, pindutin ang up ako. Susubukan naming makiramay magkasama, at iba pa. Basta alam na ako dito bilang mapagkukunan para sa iyo bilang harap na linya sa pagtulong sa iyo guys malaman kung paano upang malutas ang mga problema sa CS50 at sa hinaharap. Ang aking email ay andi.peng@yale.edu. Kukunin ko ring ipadala ang isang indibidwal na email na may mga numero ng aking telepono sa loob nito sa gayon ay hindi lahat ng tao sa internet maaaring makita ang aking numero ng telepono. Huwag mag-atubili na tumawag sa akin sa anumang oras. Seryoso, ang aking telepono ay karaniwang kalakip sa aking kamay. Hindi ko maaaring tumugon sa loob ng ilang minuto. Hindi ko maaaring tumugon sa loob ng ilang oras. Ngunit maaari kong ginagarantiya mo, kung mong e-mail sa akin, kung tumawag ka sa akin, text me, ako ay tumugon sa loob ng 24 na oras. Madalas, kukunin ko na tumugon bago na, dahil naiintindihan ko na ang lahat ay nakuha ng ilang mga problema, at gusto mo ang iyong mga sagot na nasagot nang masyadong mabilis. Subalit, kung ikaw ay tumawag ako ng 30 minuto bago na piraso na ay dahil Huwebes night-- maging tulad ng, Andi, tulungan mo ako, Hindi ko pa started-- maibigay ko na balikat mong sigaw pa. Ngunit maaaring ito ay oras na mag-isip tungkol sa kung paano hindi gawin na susunod na pagkakataon. SIGE. Oops. Paano ako bumalik? Mayroon kaming pumunta. Kaya sa kursong ito, kami ay may isang tonelada ng suporta para sa lahat. Bilang karagdagan sa makatarungan mga seksyon dito, kung saan kayo bawat linggo makakuha na gumastos ng 90 kahanga-hangang minuto sa akin, kami ay mayroon ding mga oras ng opisina. Ilan sa inyo guys may naka ay sa mga oras ng opisina para sa tulong? Great. Iyan ay tunay mabuti upang makita, dahil kami Mayroon isang tauhan ng higit sa 45 TAS at Cas sinanay para sa kursong ito na dito para sa pagtulong sa iyo na guys sa iyong psets. Lunes sila ay gaganapin sa TEAL silid-aralan sa 17 Hill House dito sa Yale. Martes at Huwebes, sila ay gaganapin sa commons. 8:00-11:00 medyo marami ang bawat araw ng linggo. Pumasok ka, lumabas. Anumang problema, walang problem-- puntahan lamang sa, at pagkatapos ay tutulungan ka namin out na. Pangalawa, bilang karagdagan sa mga oras ng opisina at mga seksyon, kami din ay shorts. Ay kahit sino kailanman nakita ang isang pares ng mga shorts o walkthroughs sa video sa website? SIGE. Kaya ang mga ito ay tunay, tunay na kapaki-pakinabang. Ang aming mga kaibig-ibig Harvard production team doon sa paaralan na up north, may kinukunan sila at ginawa mga paniwala walkthrough video. Makikita nila ang magdadala sa iyo sa pamamagitan ng hakbang sa pamamagitan ng kung paano pumunta tungkol sa paglutas ng problema. Madalas, kung ikaw ay naguguluhan tungkol sa isang simpleng konsepto, isang isahan na konsepto, tingnan, dahil marahil kami ay may isang maikling on ito sa isang lugar sa aming website. At ito ay karaniwang isang mahusay na mapagkukunan upang tumingin para sa kapag ikaw unang nawala sa kung paano panghawakan ang isang problema. Ikatlo, kami ay mayroon ding study50 at reference50. Kaya pag-aaral 50 sa website ay lamang ng isang link. Ito ay, tingin ko, study.cs50.net o isang bagay tulad na. Google lamang ito. Mayroon kaming maraming mga slides handa. Mayroon kaming maraming ng shorts at walkthroughs-- bagay lahat naipon napakabuti at malinis at maayos para sa iyo guys lahat upang mag-browse sa pamamagitan ng, makita ang anumang mga concepts na ikaw ay naguguluhan tungkol sa. Ito marahil gusto sakop doon sa study50. Reference50-- katulad. Kami ay may isang pulutong ng mga iba't-ibang mga tala kaagad na magagamit para sa iyong pagtatapon. At bilang wakas, mayroon kaming kung ano ang tinatawag CS50 Talakayin, isang forum na kung saan, kung bago ang gabi ikaw ay gumagawa ng iyong problema, sabihin, mayroon kang isang katanungan. Mag-log in sa CS50 Talakayin. Post ang iyong mga tanong. At pagkatapos ay ang isa sa mga hundreds-- marahil, thousands-- ng mga kapantay pagkuha ng klase na ito online ay mag-log in. At marahil isang tao ay maaaring makakuha ng ang iyong sagot bago ang isang TA maaari. Ito ay mahalagang lamang ng isang online forum na maaari naming ang lahat gamitin upang talakayin ang aming mga problema. Iyan ay cool. SIGE. Kaya nagtatakda problema. Kami ay tungkol sa karapatan sa makapal ng hanay ng problema sa dalawa. Marami sa atin ay may naka struggled sa pamamagitan ng hanay ng problema ng isa. Alam na namin na marahil naghihintay para gawin ang huling gabi iyong pset ay hindi ang smartest bagay na gawin sa CS50. Tips at mga tip para sa mahalagang tagumpay ay basahin ang buong spec. Ilan sa inyo ay mayroon na basahin ang spec para sa pset 2? SIGE. Iyan ay isang solid na halaga. Alam ko guys ikaw ay malamang na kinikilala sa ngayon ang mga specs ay talagang mahaba. Ang mga ito ay tunay, tunay long. Ito ay talagang mahirap na basahin ang bawat linya ng na maingat na salita ng salita. Gusto mong pagsagap lamang na kung saan ang ito ay nagsasabi sa iyo na gawin ang isang bagay. Ako garantiya sa iyo, huwag gawin iyon. Kung gagawin mo na, ikaw ay malamang pagpunta sa makaligtaan sa tabi-tabi kung saan ito ay nagsasabi sa iyo kung paano magsimula ng isang problema o ito ay nagsasabi sa iyo kung ano ang pangalan ang iyong problema o ito ay nagsasabi sa iyo, ito ay marahil ang pinakamahusay na paraan upang simulan ang paggawa sa iyong problema. At pagkatapos ay makikita mo mawawala. Kapag sinubukan mong basahin ang iyong pagsasapalaran kalagitnaan sa pamamagitan, isang pulutong ng mga mahalagang information-- in na kayo ay hindi pagpunta sa ma-talagang access. Kaya basahin ang buong spec. Subukan na basahin ang buong spec bago ka dumating sa seksyon, dahil pagkatapos, kapag kami makipag-usap tungkol sa pset, Maaari namin ang lahat ng mayroon ng isang ideya ng kung ano ang nangyayari sa. Pangalawa, ito ay isang konsepto na makikita kong isangguni isang pulutong buong kurso semester. Ngunit mahalagang, sinalubong kami nang kalahating, di ba? Me, bilang iyong TA at Jason bilang course manager at Scaz bilang iyong propesor at si David bilang iyong professor at ang lahat ng ang iba pang mga kaibig-ibig TAS sa kursong ito, katulong sa course-- gagawin namin ang aming pinakamahusay na upang matiyak na ikaw ay naka-set up upang magtagumpay sa kursong ito. Kami hold section. Kami hold oras ng opisina. Susubukan naming sagutin ang iyong telepono tawag, sagutin ang iyong e-mail, gawin ang lahat ng aming makakaya upang gumawa ng mga Siguraduhin na ang iyong mga katanungan ay masasagot. Gayunpaman, makakatulong sa amin sa labas ng masyadong. Matugunan sa amin sa kalagitnaan. Kung dumating ka sa oras ng opisina hindi pagkakaroon ng nawala sa section, hindi matapos makita ang mga aralin, na walang anomang ideya kung ano ang nangyayari, ay tulad ng, tulungan ninyo ako. Pupunta ako sa maging tulad ng, well, ako ng paumanhin. Ito ay maaaring oras na ipahiram na balikat sa sigaw sa, dahil hindi ako sigurado kung ano ang maaari kong gawin upang makatulong sa iyo kung hindi mo subukan na hindi bababa sa tulong iyong sarili ng isang maliit na piraso sa simula. Matugunan sa amin sa kalagitnaan. Alam mo, mangyaring bumalik inihanda upang sagutin at makakuha ng handa na umaakit sa mga materyales. Ito ay gumagawa ng mga bagay-bagay kaya magkano madali para sa lahat ng kasangkot. Oo, na medyo marami ito. Grading. Kaya sa syllabus, ito ay medyo sa malalim tungkol sa kung paano namin grade. Ngunit mahalagang, ang breakdown in na ito ay 50% ng iyong grade ay ang psets, na ay kaibig-ibig, dahil na kung saan ka gumagastos ang malawak karamihan ng iyong oras course on. Quizzes 40%, at ang iyong huling proyekto ay 10%. Magkakaroon ng dalawang pagsusulit sa buong ang mga kurso ng semestre. Sa tingin ko ang mga oras at petsa ay nakalista din sa syllabus. Ang paraan na kami ay grading iyong psets ay mayroon kaming mahalagang apat mga halaga na namin italaga sa bawat grado. Kami ay may isang halaga ng mga saklaw, kawastuhan, disenyo, at estilo. Kaya bilang na nakikita mo, na ang uri ng ating formula para sa pagkalkula ng psets. Tatlong bigyan kami ng mas bigat sa kawastuhan, dahil malinaw naman ang iyong mga coach ay dapat na pagsubok para sa mga kaso na gusto naming ito upang subukan ang para sa. Ikaw guys ang lahat ng may check50 sa iyong pagtatapon. Ito ay isang kapaki-pakinabang na function na kayo guys maaari lahat i-upload ang iyong mga code sa aming mga server, kung saan kami ay suriin ito para sa iyo. At iyong nakita ang mga frowny mukha, smiley mukha. Ang mga ito ay tunay, tunay na kapaki-pakinabang. Mangyaring huwag maging ang ang mag-aaral na gusto pagsusubok sa hardcode sa lahat ng mga kasagutan sa mga ito. Tiyak na nakita ko ang isang pset kung saan isang tao makita ng lahat ang mga halaga ng check50 at mahirap lamang sila naka-code in-- kung ang bilang na ito, i-print out ang numerong ito. Kung ang numerong iyon, i-print out ang numerong iyon. Huwag gawin iyon. Kahit na technically check50 ay tama, ang iyong mga paraan ng paglutas ng Ang problema ay hindi tama. Kaya gamitin lamang check50 matipid. Ngunit ring siguraduhin na ikaw ay maunawaan kung paano ito gumagana, ang programa ay gumagana bilang karagdagan sa check50, dahil hindi namin maaaring subukan ang bawat posibleng kaso ng check50. Susubukan naming i-testing ang ilan sa kanila. Design ay mahalagang, kung paano mahusay na dinisenyo ay ang iyong code? Kung ikaw ay kopya-paste maramihang mga linya ng code sa marami, maraming beses. Siguro hindi mo na magkaroon ng lubos ang pinakamahusay na disenyo sa iyong code. Siguro ay oras na upang idagdag na loop. Mahalaga, dito ang lahat lamang tungkol sa sinusubukan na gawin ang iyong code, sinusubukan mong isulat ang iyong code nang mahusay hangga't maaari upang ang iyong programa ay tumatakbo sa lalong madaling panahon. Panghuli, mayroon kaming style. Kaya style ay uri ng isang arbitrary, subjective term. Alam ko opisyal na namin ay may isang estilo ng gabay 50 para sa CS50, kung saan ito ay nagsasabi sa iyo, oh, ikaw dapat magkaroon dito ng isang space. Ikaw ay dapat na uri ng format ang iyong code sa ganitong paraan. Dapat mong pangalanan ang mga bagay-bagay sa ganitong paraan. Hindi ko talagang pakialam, per se, kung paano pinili mo sa estilo ng iyong code, basta't manatili ka pare-pareho. Halimbawa, kung gusto mong mag-iwan ng isang puwang pagkatapos ng iyong apat na bago ang iyong apat na loop, gawin lamang na bawat oras. Huwag uri ng gawin ito. Huwag gawin ito sa iba pang mga beses. Kung gusto mong panatilihin ang kulot braces space sa isang tiyak na paraan, laging lamang gawin ito na paraan. Huwag uri ng gawin ito sa isang lugar dito at sa tabi-tabi hindi doon. Kapag kami ay pagmamarka, ito ay talagang mahirap kung mayroon akong ideya kung paano ka na sa pag-format ng iyong code, bagay ay wacky at wala sa lugar. Kung panatilihin ito sa iyo lamang pare-pareho, ito ay mas madali para sa akin bilang ang mas malaki upang ma-basahin ang iyong code. Ito ay lubhang mas madali para sa iyo bilang isang mag-aaral para ma-tumingin sa pamamagitan ng iyong code at makita kung ano ang mali sa ito slash kung bakit may mga isyu. Style ay isa sa mga pinakamadaling bagay ka guys ay maaaring gawin upang makakuha ng ganap na marka. Mahalaga, kung mahalaga sa iyo lamang, kung magbabayad ka ng limang minuto ng pansin sa iyong code sa bawat linggo, dapat mong maging pagkuha ng buong puntos style. Panghuli, mayroon kaming kung ano ang tawag dito ang multiplier ng saklaw. Scope-- alam ko ito ay isang malaking salita, lalo na sa ganitong klase. Ngunit saklaw, ang lahat ng mga paraan na ay na kayo ay pagtatangka ang psets sa abot ng iyong kakayahan. Kung i-on mo sa tatlong out ng iyong apat na mga problema at hindi kahit na pagtatangka ng huli, ikaw ay malamang na pagpunta upang mawala ang ilang mga puntos sa saklaw. Kahit na simulan mo lang ang problema, gawin ang iyong pinakamahusay na maglakad sa pamamagitan nito. Kahit na kung ito ay hindi gumagana, i-on ito sa, dahil na nagpapakita at nagpapakita sa amin na iyong sinusubukan, na tinangka ng mga hanay ng problema sa abot ng iyong kakayahan. At pagkatapos ay maaari naming ibigay sa iyo full puntos para sa saklaw. Saklaw ay napakahalaga para sa kapag kami din makipag-usap tungkol sa mga pinakamababang pset iskor drop. Kaya sa kabuuan ng mga semestre, ka guys ay may siyam na psets. At kami ay talagang ay bumababa ang pinakamababang marka sa labas ng mga siyam, ngunit lamang kung ikaw ay mayroong ganap na puntos saklaw. Kaya kung i-on mo sa isang hindi kumpleto pset, sa kasamaang-palad, hindi namin maaaring i-drop na ang isa, dahil ang iyong mga nasasakupan puntos ay hindi nakumpleto. Kaya kahit na mayroon ka ng mga kakila-kilabot na linggo kung saan ikaw ay namamatay at ikaw ay may sakit o ang iyong aso ay namatay, ang iyong cat ay namatay, at ikaw ay overloaded sa araling-bahay, pagtatangka lamang ang pset. Gawin ito sa abot ng iyong kakayahan. Kung hindi ito gumana, ito ay hindi mahalaga. Buksan ito Just in. Hindi bababa sa maaari naming ibigay mo ang mga puntos para sa mga pagsisikap. A para sa pagsisikap sa ganitong klase. Hindi bababa sa pinakamababang marka drop para sa pagsisikap. Kaya oo. Iyan ay medyo magkano ito. Kahit sino ay may mga katanungan ba kaya malayo sa kung paano namin na marka sa klase? O alinman sa mga ito? Alinman sa mga kaya far-- seksyon, mga oras ng opisina? Cool. SIGE. Kaya ito ay isang paksa na hindi tunay na kagustuhan na makipag-usap tungkol sa. Hindi ko talagang nais na makipag-usap tungkol dito. Ikaw guys ay hindi talagang gusto marinig akong makipag-usap tungkol dito. Ngunit sa kasamaang palad, lahat tayo kailangang makipag-usap tungkol dito. David ginugol ng 20 minuto sa isang magbigay ng panayam sa pakikipag-usap tungkol dito. At iyon ay ang paksa ng academic honesty. Kaya kaming lahat ay may malamang na nakasulat isang sanaysay sa ibang panahon sa aming Yale career. Marahil mo na tapat na paraan ng isang talk na kung saan namin Na ay sinabi na hindi mamlahiyo aming mga sanaysay, dahil ang trabaho ay hindi atin. Sa computer science, kami ay ang parehong uri ng konsepto. Lahat ng trabaho na iyong isinumite, lahat ng code na sinulat mo dapat na code na iyong isinulat. Dapat hindi code na na sa iyo kinopya mula sa ibang lugar. Dapat hindi code na na iyong googled at plopped sa at hindi mo talaga alam kung ito gumagana. Ikaw uri ng magkaroon ng isang pakiramdam ng pagkakaroon ng kung ano ang ginagawa ngunit hindi talaga. Kapag may pagdududa, mahalagang, ito ay maging makatuwiran lamang. Sa aming syllabus, kami ay isang buong listahan ng mga bagay nakita namin ang mga makatwirang laban sa hindi makatwirang. Halimbawa, ang mga makatwirang ay sa iyo at sa iyong mga kaibigan tinatalakay kung ano ang pinakamahusay na paraan upang pumunta tungkol lohikal paglutas ng problema. Iyan ay medyo makatwirang. Ano ang hindi ay magiging makatwirang ay kung ikaw guys nakuha nang magkasama, nag-type ang parehong code, at naka sa parehong code. Iyan ay hindi makatwiran. Parehong bagay, uri ng isang sanaysay. Kung nais mong talakayin sa iyong mga kaibigan, hey, ito ang gusto kong isulat ang tungkol sa. Ito ang mga hakbang na gusto kong kumuha na magsulat tungkol sa mga ito, malaki. Iyan ay kahanga-hanga. Mangyaring makipagtulungan sa bawat isa. Kung sinimulan mo ang isang lalaki pagsulat sa parehong bagay, turn sa parehong sanaysay, na mas mababa ang OK. Kaya kapag may pagdududa, lamang ay hindi gawin ito. Dito, namin sa CS50, mayroon kaming mga script na tumakbo sa automate upang subukan hindi lamang ang kawastuhan ng iyong code, kundi pati na rin sa pagiging natatangi ng iyong code. Kaya mangyaring huwag ilagay sa amin sa posisyon ng pagkakaroon ng mag-refer ang inyong kaso sa EXCOMM. Mangyaring lamang para sa lahat ng tao, sabihin lamang gumawa ito ng isang kahanga-hangang karanasan. Natututo ng mas mahusay na sa bawat tao, namin ang lahat ay mas masaya, at naka-set up ang lahat nating magtagumpay sa kursong ito. Isang bagay na napaka natatanging tungkol sa klase na sa tingin ko lahat ng tao ay dapat na tunay bigyang-pansin ay na kami ay ano ang tinatawag na ang panghihinayang sugnay sa aming syllabus. Kaya mahalagang, sa loob ng 72 na oras, kung naniniwala ka na nagawa mo ang isang bagay hindi ka talagang sigurado ay Kung naaangkop, mangyaring dumating sa amin. Ipinapangako namin sa iyo na sa loob ng 72 na oras kami ay hawakan ang ating sarili ang kaso walang pagsangguni sa isang mas mataas na kapangyarihan sa administrasyon. Kaya't kung ikaw ay dumating sa akin at sabihin, Andi, hey, Ako ay talagang paumanhin, ngunit sa tingin ko ay may isang pares ng mga linya sa aking code kagabi na ako uri ng googled, Nakakuha off ng stack Umaapaw, kopyahin at i-paste, at ako ay talagang, talagang paumanhin tungkol sa na, ipaalam sa akin. Mangyaring huwag pabayaan ito magnaknak at umaasa lamang na mahuli ko ito. Kami ay mahuli ito. Lumapit ka lamang sa akin. Ipaalam sa akin sa loob ng 72 na oras. Kami ay malaman ng isang solusyon. At ang pangako namin na hindi kami mag-refer sa awtoridad mahalagang unibersidad. Kaya ito ay sa iyong pinakamahusay na interes na maging tapat sa lahat ng tao lamang kasangkot sa kurso. SIGE. SIGE. Kaya ngayon, mabilis bago Ilipat ko sa, ang sinuman may mga katanungan tungkol Logistics sa kung paano kurso kami ay pagpunta upang tumakbo, paano seksyon ay pagpunta upang tumakbo, ang alinman sa mga iyon? SIGE. Oo. Madla: [hindi marinig]? ANDI PENG: Oo. Kaya quizzes-- kung ilan sa inyo ay sa seksyon ng Lunes / Miyerkules? Ilan sa inyo ay sa Martes / Huwebes? OK, kaya ito ay isang solid split dito. Kaya ang paraan na aming pinatatakbo ito sa Yale ay na tayo ay pagpunta sa may dalawang magkahiwalay na quizzes-- isa para sa bawat section-- na ay kinuha sa panahon ng klase. Sa tingin ko ay October, dulo ng Oktubre, isang bagay tulad na, tulad ng isang linggo ng pagsusulit. Oo, kaya lang dumating sa klase. On na Lunes o Miyerkules, ikaw ay kumuha ng pagsusulit. On na Martes o Huwebes, ikaw ay kumuha ng isang iba't ibang mga pagsusulit. Ngunit sa parehong materyal ay sakop. Oo. Magandang tanong. Oo. Madla: Saan ginagawa namin pumunta upang suriin ang aming mga grado? ANDI PENG: Oo. Kaya ako ay pagpapadala ng isang e-mail kahit anong sa bawat linggo kapag quizzes ay graded-- o, Paumanhin, kapag psets ay namarkahan. Psets ay karaniwang naka sa pamamagitan ng tanghali o Biyernes. Kaya pangako ko na ang gagawin ko ay subukan upang makakuha ng mga ito pabalik sa iyo sa pamamagitan ng tanghali sa mga sumusunod na Biyernes. Tuwing ako grade ng pset, aking susuguin out ng isang abiso sa grado ng libro na nagsasabi sa iyo ang iyong mga puntos Maaaring matingnan nang online. Kaya karapatan sa linggong ito, pagkatapos kong tapusin pagmamarka psets noong nakaraang linggo, ka guys ay makakuha ng isang e-mail notification na nagsasabi sa iyo, hey ito ay kung saan mo pumunta upang tingnan ang iyong mga marka. At maaari mong makita ang bawat breakdown ng iyong mga marka. Maaari mong makita ang mga komento. Oh, mabilis na bagay din. Ang puna na seksyon sa dakilang aklat ay kung saan kukunin ko na marahil gastusin sa karamihan ng aking mga oras grading. Kaya isang bagay na talagang mahalaga kapag ka guys ay tumitingin ang iyong mga marka sa iyong psets ay hindi lamang naghahanap sa pisikal na marka ngunit din ang pagkuha ng oras upang talagang basahin ang aking mga komento. Madalas na nagbibigay sa iyo ng feedback sa kung paano ka sa paglutas ng problema. Kung kailangan mong gawin isang bagay na mas mahusay na ng kaunti, nakabubuo pamumuna ay karaniwang ay pinakamahusay na ibinigay sa mga seksyon ng mga komento. Kaya mangyaring, mangyaring, pupuntahan ko upang patagalin ang pagsusulat ng mga komento. Mangyaring, Gusto ko talagang Pinahahalagahan ito kung ikaw guys ay basahin ang mga komento. SIGE. Cool. Lahat tama. Kaya kami ay pagpunta sa simulan ang pakikipag at lamang na suriin mabilis ang ilan sa mga materyal mula sa week zero kaya lang hindi namin sa kanan ng pahina para sa simula ng mga problema na ito linggo. Kaya habang loop ay isa sa tatlong mga uri ng mga loop napag-usapan namin kanina sa klase na ito. Ang isang habang loop mahalagang ay nakasulat sa mga syntax kung saan, habang ang isang tiyak na kalagayan, gawin ito nang paulit-ulit, di ba? Isipin ito sa ganitong graphic dito. Ikaw ay pagpunta sa magsimula sa isang tiyak na punto sa iyong code. Ikaw ay pagpunta upang ipasok ang kalagayan loop if-- hindi ko know-- x ay mas mababa kaysa sa isa. Kung iyon ay totoo, ikaw ay pagpunta upang maipatupad ang katawan loop. At ikaw ay pagpunta sa patuloy na paggawa na muli, muli, muli, paulit-over-- siyang dahilan kung bakit ito ay isang loop-- hanggang nagiging inyong kalagayan false. Kaya sa ganitong paraan, ang isang habang loop ay isa sa mga mas simpleng paraan na magsulat ng anumang uri ng mga kondisyon na kailangang ulitin paulit-ulit-ulit. Maging maingat lang tuwing sumusulat ka ng anumang uri ng loop na mayroon kang isang kondisyon exit bilang rin ang isang pag-update sa anumang ito ay kaya na ang iyong mga loop ay hindi lamang tumakbo nang paulit-ulit na walang hanggan. Sa anumang kaso, ikaw ay pagpunta sa nais na tiyakin na iyong binabago ang ilang mga aspeto ng ang iyong code o sa dulo ng loop lamang upang matiyak na mayroon kang isang paraan ng progressing patungo sa kalagayan na nais mong tugunan upang end. Ba na magkaroon ng kahulugan sa lahat ng tao? Kami lamang ay hindi nais na maging naiipit sa spiral na kung saan ang pumunta kami sa paligid at sa paligid at walang paraan upang basagin ang loop. At sa bawat loop mahalagang ay isang paraan ng paggawa na. SIGE. Pangalawa, marami sa inyo sa iyong Mario psets marahil ay nagkaroon upang umupa sa ganitong uri ng loop. Ito ay tinatawag na isang gawin habang loop. Una sa lahat, maaari sinuman sabihin sa akin kung ano ang pagkakaiba sa pagitan ng isang do habang loop at isang habang loop ay? Oo. Madla: Ang gawin habang loop ay tumatakbo sa unang [hindi marinig]. ANDI PENG: Oo, eksakto. Kaya habang palaging ginagawa loop isang gawin kahit anong ay sa loob ng do, sa loob ng mga bracket doon at ang mga kondisyon na bago mag-check para sa the-- Paumanhin, ginagawa na code bago suri para sa mga kalagayan. At ito ay lalo na may kaugnayan sa amin dito sa klase na ito, dahil ang karamihan sa mga beses kami ay pagpunta sa gusto upang i-prompt ang user para sa ilang uri ng mga input. At pagkatapos, depende sa ang input bigyan sila sa amin, pagkatapos ay maaari naming suriin, oh, gawin kailangan namin upang i-prompt ang mga ito muli? Kaya sa Mario, kung ibinigay mo ang user isang negatibong taas, halimbawa, ikaw ay pagpunta sa unang prompt at gawin ang anumang nasa loob. Pagkatapos ay ikaw ay pagpunta upang suriin habang. Alam mo, ay negatibong 1, ay na ang isang positibong numero? Kung ito ay hindi, ako pagpunta upang pumunta bumalik at ulitin ang mga do at ulitin at ulitin at ulitin hanggang sa sila sa wakas ay magbibigay sa iyo ng isang numero na gusto mo, na lahat tayo ay maaaring upahan sa aming code. Ito ay medyo mahalaga para sa mahalagang anumang input ng user. Ako garantiya sa iyo ng anumang mga oras sa isang pset kung saan hinihiling namin sa iyo na input anumang uri ng code, hindi namin marahil pagpunta sa iyo isang pagsubok na kaso kung saan hindi namin pagpunta sa iyo ng isang bagay na masama na pagpunta sa subukan upang basagin ang iyong code. Kung sinubukan namin upang hilingin sa inyo na input ng isang integer, maaari lamang naming magbigay sa iyo ng isang string at makita kung paano mo hawakan na. Kung hihilingin namin sa iyo na gamitin ang isang edad, maaari ka naming bigyan ng isang negatibong numero upang makita kung paano mo hawakan na. Tiyakin na ikaw guys ay pagsubok para lamang mga kaso kung saan hindi mo makuha ang pinakamahusay na input, sabihin lamang sabihin. At isang gawin habang loop ay malimit ang pinakamahusay paraan upang idisenyo ang iyong code sa gayon na ito ay nakakatugon na saklaw. SIGE. SIGE. Kaya ito ay marahil ang pinaka complex loop sa labas ng tatlong na kami ay tumingin sa ngayon. At tila masyadong nakakatakot sa unang. Ngunit ginagarantiya ko sa inyo, sa sandaling ikaw guys makuha ang hang ng kung paano gamitin ang isang para sa loop, ito ay isa sa mga pinaka-kapaki-pakinabang na mga bagay, pinaka-kapaki-pakinabang na kasangkapan sa iyong arsenal para sa paglipat ng pasulong sa ganitong klase. Kaya halimbawa, sa simula, kami ay nagkaroon na ito napaka-simple block na lamang ang sinabi ulitin ito ang ilang mga parirala na tiyak na bilang ng beses. Siya nga pala, SAJ-- na Scaz Andi Jason. Malimit mag-sign kami ng aming mga email SAJ. Kung sinasabi nating SAJ, huwag maging nalilito. Iyan ay sa amin lamang. Kaya sa simula, nagawa naming magkaroon ng isang block na sinabi, ulitin ang pag-ibig ko SAJ! 10 ulit. Very simple. Ang lohika sa likod na isang napaka, napaka-simple, right? Gusto kong pumunta sa unang sa pamamagitan ng unang oras at makita na, sa ikalawang pagkakataon at makita na, sa ikatlong pagkakataon, kaya balik at iba pa, hanggang maabot ang hanggang 10. At ang paraan namin ay kumakatawan na sa code ay sa pamamagitan lamang ng isang simpleng para sa loop. Kaya para sa, ikaw ay pagpunta na idedeklara ang iyong mga variable dito, sa kasong ito, sa isang int. Kami ay pagpunta upang pangalanan ito i. Kami ay pagpunta sa initialize ito sa 0. At ang pagpapahinto edition ay magiging i ay mas mababa sa 10. At ang mga update ay magiging i ++. At sa loob ng loop, ito ay pagpunta upang maipatupad ito hanggang sa huli pinindot niya ang dulo ng condition-- kung saan kaso, ito ay pagpunta upang basagin ang loop. May ay dapat na mga bagay-bagay na sa iyo guys may lahat ng uri ng nakikita dati at nagkaroon na gawin para sa iyong problema magtakda ng isa. Kahit sino ay may anumang mga katanungan patungkol para sa mga loop sa ngayon? SIGE. Great. SIGE. Kaya para sa mga ka na magkaroon ng basahin ang mga pset spec para sa linggong ito Alam na namin ang pagpunta sa may upang umupa bagay na tinatawag na ASCII at ASCII table. Kaya David sa panayam tumawid sa madaling sabi paano ang mga computer essentially-- lahat ng bagay ay naka-encode sa isang computer sa binary, sa zero at mga. At ang paraan na ang mga computer ay magagawang sa tindahan ng iba't ibang mga halaga sa karagdagan sa zero at iyan ay sa pamamagitan ng paggawa ng mga mapa ang mga numero upang kumatawan sa iba pang mga digit o mahalagang iba pang mga character. Kaya sa kasong ito, ang isang ASCII table-- lahat ng ginagawa nito ay mga character na mapa, o char, sa mga numero. Kaya ang source code file sa iyong computer-- ang nakakakita nito, hey, ang isang grupo ng mga zero at mga, zero at mga, zero at mga. Iyon ay kung ano na naka-imbak sa aktwal na memory ng iyong computer. Ngunit kapag tayong mga tao ay nais na makipag-usap sa mga computer, want-- naming sabihin, halimbawa, kung gusto ko ang mga uppercase A, Pupunta ako sa kailangan ang ilang mga paraan ng pagsabi ng computer, oh, kapag nagta-type ako uppercase A, ibig sabihin ko ito representasyon sa binary. At upang ang mga paraan namin sa na inihagis sa isang arbitrary bagay na tinatawag na isang ASCII table, kung saan kami, bilang mga tao, tulad ng programmers, ilang oras ang nakalipas, nagkataon kami nagpasya na kami ay pagpunta sa italaga ang mga numero ng mga halaga sa mga character na ito. Kaya ka guys ay maaaring google ito online. Tingin ko ay may isang link na ito sa iyong pset-- lamang ng isang talahanayan na mapa ASCII, ASCII table. Sinasalin Ito lamang binary numero sa mga character. At ito ay pagpunta sa maging tunay kapaki-pakinabang para sa iyong hanay ng problema kapag gusto mo kalkulahin ang kahit ano o kung ikaw nais na ipakita ang ilang mga character o integer o manipulahin ang ilang mga character. Ito ay pagpunta sa maging tunay Mahalaga na sa iyo ang lahat malaman kung paano i-navigate ang isang talahanayan na ASCII. Kaya halimbawa, ang mga uppercase A ay kinakatawan ng mga numero ng 65. At ang lowercase isang ay kinakatawan ng 97. Kaya mahalaga na malaman na ang pagkakaiba sa pagitan ng dalawang mga halaga ay 32. Madalas, kung kailangan mong i-convert mula sa isa sa iba pang, ang pagkakaiba ay 32. At huwag mag-alala kung ikaw ay uri ng nalilito sa ito sa unang. Kami ay pumunta sa paglipas ng kung paano namin gagawin gamitin ito sa aktwal na code. SIGE. Kaya para sa inyo na may mga laptop out, mag-atubili na makuha ang isang talahanayan na ASCII, dahil ang mga ito ay malamang na nangangailangan ka guys upang isangguni kung ano ang mga character ay. SIGE. Kaya alam na tiyak character map sa mga tiyak na mga numero, kung ako ay upang patakbuhin lamang ang unang linya ng na code-- ang printf a, lowercase ng, minus uppercase A. Kahit sino magkaroon ng isang hula sa kung ano ang magiging pag-print out ng screen na ngayon? Kaya una sa lahat, kung ano ang ginagawa lowercase ng kumakatawan? Ano ang numero na naka-encode sa talahanayan ng ASCII. Paumanhin? Madla: 97? ANDI PENG: 97, malaki. At kung ano ang uppercase A? Madla: 65. ANDI PENG: Kaya kung ano ang 97 minus 65? Madla: 32. ANDI PENG: OK. Kaya kung ano ang gagawin mo guys isipin ang pagpunta sa mangyari kapag ako input na linya ng code sa aking computer? Madla: [hindi marinig]. ANDI PENG: Paumanhin, makipag-usap up. Huwag mag-alala. Ito ay isang ligtas na kapaligiran, bawas ang camera. Lahat ng Kami ay pagpunta to-- walang alalahanin. Basta lahat kami ay pagpunta sa magpanggap tulad ng ito ay lamang sa amin Chilling sa kuwartong ito. Huwag mag-alala. Walang tanong ay masyadong tanga. Walang sagot ay isang tangang sagot. Marahil ako pagpunta sa gumawa ng mga pagkakamali sa kurso ng aking pagtuturo. Seryoso, lalaki, maibulalas lang ito. Maging tiwala sa iyong sarili, alam mo? Kaya kung ano ang na? Sino ang nagsabi na ang huling sagot? SIGE. Mag-shout na maganda at malinaw. Madla: 32? ANDI PENG: 32. OK, patakbuhin ang code na ito hayaan at makita kung na kung ano ang mangyayari. SIGE. Kaya bilang mo guys Maaari uri ng makita, ang pangkaraniwang pagtatanda na ko i-set up ito para sa kung paano namin gumugol anumang uri ng mga programa sa aming computer. Mayroon kaming aming pangunahing pag-andar sa loob ng aming mga pangunahing function. Lamang ako ng pagpunta sa kopyahin at i-paste ito sa linya ng code. Maging maingat din kapag ikaw guys ay pagkopya at pag-paste code. Minsan tiyak na operator huwag i-paste sa ibabaw ng tama. Sa kasong iyon, ang minus sagisag ay talagang isang dash. At kaya ang computer ay hindi itong kunin. Kaya ako ay upang bumalik at pisikal type muli iyon. Lamang maging maingat kapag ka guys ay ginagawa na. SIGE. Kami ay pagpunta sa magpatakbo ng mga ito dito. Kaya kami ay pagpunta sa cd sa aming section2. Tinatawag ko na ito asciimath program. Kaya tandaan, kapag nagpatakbo namin ang anumang program, nais naming unang itala ito sa pamamagitan ng pagpapatakbo ng ito sa pamamagitan ng aming make. At pagkatapos ay nais naming aktwal na patakbuhin ang programa sa pamamagitan ng paggawa dot-slash. Kaya kami ay pagpunta sa ./asciimath. Right, doon pumunta kami. At nakita namin 32. Magaling. Karapat-dapat ka ng isang piraso ng kendi. Kendi para sa iyo. Sorry. Lahat tama. SIGE. Kaya maaari naming bumalik sa aming halimbawa dito. Aah, hindi. Aah. SIGE. Tingin lang ako sa pagpunta sa panatilihin ito tulad na. SIGE. SIGE. Kaya bilang maaari mong makita ang isang lalaki, maaari naming gawin maraming ng mga magagandang bagay, isang pulutong ng mga napaka-cool na mga bagay-bagay, ng maraming napaka-komplikadong bagay na may kinalaman sa ASCII na mga character at numero. Kapag nakarating ka pababa sa line limang, na ang isang pulutong na sundin kasama. Hindi namin pagpunta upang pumunta sa pamamagitan ng mga seksyon. Huwag mag-atubiling, kung maaari, dahilan ito sa papel unang sa kung ano ang dapat mangyari kapag input mo tulad ng isang string ng mga halaga. Halimbawa, sa na ang huling linya, kami ay z-- na kumakatawan sa isang tiyak na number-- a-- na kumakatawan din ng isang tiyak number-- plus 1 modulos 26 plus lowercase ng. Kung ikaw guys ay panatilihin ang pagbabasa sa pamamagitan ng mga ito, ikaw ay Maaaring makita ang isang pattern lumapit sa kung paano namin ang pagmamanipula ng mga code. Ako ay mataas, mataas na iminumungkahi pagkatapos ng lahat ng seksyon ng sa iyo guys sige at input mga lahat sa iyong computer at makita kung anong uri ng numero ay galing at pangangatwiran sa pamamagitan ng kung bakit ang mga ito ay nangyayari, dahil para sa iyong psets Makikita ito ay talagang mahalaga para sa iyo upang maunawaan bakit ang ilang mga bagay ay nangyayari. Ang lahat ng mga slide ay online. Kaya huwag mag-alala tungkol sa sinusubukan mong pisikal na kopya ng mga tala. Online Lahat ni. Ang seksyon na ito mismo ay online. Lahat ng aking mga source code na Nauubusan na ako ay online. Oo. Mayroon ka ba pa rin ng isang katanungan? Madla: Ano ang modulos? ANDI PENG: OK. Kaya modulo ay isang operator na pupuntahan maging medyo mahalaga sa pset iyong guys ni dito. Kaya ang paraan na ang mga operator sa C at sa mga programa sa trabaho ay na mayroon ka kung ano ang tinatawag na ang simbolo ng dibisyon at ang simbolo modulus, na kung saan ay tulad lamang ang porsyento sign. Kaya sa C, kapag ginawa mo ang isang integer hinati sa pamamagitan ng isang integer na may isang slash, C ay may kaugalian na gusto upang i-cut off ang lahat ng decimal point, dahil ang isang integer nagnanais ang pag-convert sa isang integer. Hindi Ito ay pagpunta sa gusto mong maging isang double may isang bungkos ng mga desimal lahat pagkatapos nito. Kaya kung gagawin ko 3 hinati sa 2, ito ay pagpunta upang ihiwalay ang mga 0.5 at bigyan lamang sa iyo 1. Kaya na ang isang bagay na maging napaka-ingat kapag ikaw ay paggawa ng anumang uri ng math sa programming, ay na ang mga numero na nakukuha mo ay hindi maaaring ang mga numero na kayo ay nag-iisip, kung saan ay bakit rounding sa iyong huling pset ay kaya mahalaga. Binibigyan ka ng Modulo ang natitira. Kaya halimbawa, kung ako ay 3 modulo 2-- kaya 3 porsiyento sign 2-- ito ay magbibigay sa iyo ang natitira na. So 3 na hinati sa 2 ay 1.5. Ito ay 1 naiwan ng 1. Ito ay magbibigay sa iyo ng 1, na kung saan ay ang naiwan ng mga iyon. Kaya kapag ikaw guys ay gumagalaw sa pamamagitan ng talaan ASCII, modulo ay humantong sa pagiging isang bagay na napakahalaga, at kami ay talakayin na sa susunod. SIGE. Kaya ang isang bagay na medyo, medyo bago at medyo kakaiba na kami ay tinalakay sa linggong ito ay ang konsepto ng kung ano ang isang array ay. Kaya array ay ang unang uri ng data na istraktura na namin ang pagpunta sa nakatagpo sa ganitong klase. Lahat ng data na istraktura ay ay ilang uri ng mga arbitrary, literal ang mga bagay tulad ng istraktura na namin bilang programmers ginawa, na binuo namin sa aming mga code na ay maaaring maglaman ng iba pang mga piraso ng code. Kaya sa puntong ito, ang isang array-- tingin ng mga ito bilang isang file cabinet, kung saan kung bubuksan mo ang iba't ibang istante ng iyong file cabinet, maaari mong ma-access ang iba't-ibang mga bagay-bagay. Sa memorya, isang array ay ginagawa lamang ang parehong bagay sa iyong computer. Maaari kang magkaroon ng iba't ibang mga blocks-- namin tumawag sa kanila indices-- ng isang array. Ito ay tulad ng isang bloke, isang istante ng memory na ginawa namin sa loob ng iyong computer na maaari mong input ang ilang mga bagay sa iba't ibang mga puwang. Kaya sa isang array, ikaw laging may upang specify-- kailangan mong tukuyin ang deklarasyon ng isang array sa mga sumusunod na format. Ikaw ay pagpunta sa unang tukuyin ang mga uri ng data na nais mong lumikha ng array. Kung gusto ko ang isang array ng mga integer, Ako pagpunta sa ilagay int doon. Kung gusto ko ang isang array ng mga string, Pupunta ako upang ilagay ang mga string doon, ang pangalan ng iyong array, at pagkatapos ay ikaw ay pagpunta sa may mga square bracket. At sa loob ng mga square bracket, ikaw ay pagpunta sa may sa laki ng iyong array. Isang bagay na talagang mahalaga sa tandaan kapag lumilikha ng mga array ay na, kapag lumikha ka ng isang array, hindi maaaring baguhin ang laki. Kaya kung alam mo na sa ngayon mayroon kang isang hanay ng mga laki 10, alam mo na pupuntahan ko na magkaroon ng 10 mga cell sa loob o 10 mga indeks na sakop ng array, at hindi kailanman ito ay pagpunta upang palawakin o paliitin kahit na ano, at na may kasalukuyan lamang 10 mga bloke ng puwang inilalaan sa iyong memorya na maaaring tindahan hanggang sa 10 mga bagay-bagay ng anumang mo inilagay. Kaya sa ganitong paraan, ang isang uri ng data array, ang istraktura ng data na ay isang array ay ibang-iba mula sa ilang mga iba bibigyan namin ng ay sumasaklaw sa susunod sa kursong ito. Oo. Halimbawa, kung nais mong lumikha ng isang hanay ng mga laki 3 na nakapaloob na mga variable ng integer-- oh, sorry, ng temperature-- at temperatura, ng Siyempre, ay isang integer. Kaya gusto naming lumikha ng int, kung saan ay ang data uri ng kung ano ang gusto namin sa tindahan. Kami ay pagpunta sa tumawag ito temperatura para sa kapakanan ng mga katawagan ng pagbibigay ng pangalan isang bagay na naiintindihan namin ang lahat. At kami ay pagpunta sa may mga square bracket. At gusto namin ang tatlong numero. Kaya kami ay pagpunta sa ilagay tatlong sa loob ng mga ito. Isang bagay na talagang Mahalaga na panatilihin sa isip ay na array ay zero-index. Lahat ay nangangahulugan na na kayo magsimula sa mga index ng 0, at patakbuhin up ka sa pamamagitan ng laki ng array minus 1. Kaya halimbawa dito, kami ay magkaroon ng isang hanay ng mga laki 3. Ito ay pagpunta sa ma upang i-hold ang tatlong mga halaga. Ngunit ang mga numero themselves-- na number, array, index na, array, mga 0 hanggang 2. Kaya guys, maging tunay, tunay maingat kapag ikaw ay pagpunta sa pamamagitan ng iyong mga problema set at paglikha ng anumang uri ng array, dahil ang isang pulutong ng beses na ito ay tunay, tunay na madaling makalimutan na. Hindi nga ako magkakaroon ng index ng 3, na ako ay kasalukuyang lamang Mayroon ang index ng 2. At kung susubukan mo upang ma-access ang mga third index, ito ay magiging kung ano ang tinatawag na ang null Terminator. Ito ay hindi pagpunta sa aktwal umiiral sa array. At ang computer ay hindi pagpunta sa gusto na. Kaya mag-ingat tuwing ina-access mo bagay lamang upang matiyak na tandaan mo na array ay zero-index. SIGE. Kaya ang unang halimbawa ay lamang isang paraan ng paglikha ng isang array. Ang ikalawang halimbawa mayroon akong sa ibaba ay lamang ng isang hiwalay na paraan ng paglikha ng kung ano ang parehong data structure na ko na lang inputted namin. Kaya sa halip ng pisikal na tumatakbo sa pamamagitan ng at paglalagay sa temperatura ng 0 ay katumbas ng kahit na ano, temperatura 1 ay katumbas ng kahit na ano, temperatura 2 equals kahit na ano, maaari ko talagang lamang direkta lumikha ng lahat ng ito sa isang linya sa temperatura square bracket ay katumbas. At notice sa kasong ito, hindi mo na kailangan upang tukuyin kung paano malaki ang iyong mga array ay, dahil ang computer ay pagpunta sa pumunta sa pamamagitan ng at makita na mayroong tatlong mga sangkap sa mga kulot tirante. At ito ay pagpunta upang malaman, OK, Kailangan ko ng isang hanay ng mga laki 3. Hindi ka pagpunta sa kailangan upang input ito ang mga sumusunod na paraan. At din, oo, na paraan. Kahit sino ay may mga katanungan tungkol sa kung paano namin gumawa ng array o kung paano gumagana ang istraktura ng isang array? Oo. Madla: [hindi marinig]? ANDI PENG: Oo, eksakto. Kaya kung ikaw ay upang magpahayag at magpasimula isang array ng mga sumusunod na paraan, na kung saan ay ang ikalawang paraan, maaari ka lamang mag-iwan ang mga iyon. At ang computer awtomatikong alam na ito pangangailangan upang mabilang kung gaano karaming mga elemento ay sa mga kulot tirante, na pinaghihiwalay sa pamamagitan ng mga kuwit. Kaya dito nakikita nila 65, 87, 30. Kaya alam ang computer, oh, may tatlong integer. Alam ko na lumikha ng isang pangalan ng array temperatura na may tatlong elemento sa loob nito. Magandang tanong. Oo. Madla: Ay hindi ito posible upang lumikha ng isang array na may iba't ibang mga uri ng data na maaaring pumasok sa mga ito? Halimbawa, may integer [hindi marinig]? ANDI PENG: Para sa mga layunin ng klase na ito, hindi, ngayon. Kapag lumikha ka ng isang data istraktura tulad ng isang array, ikaw ay nagsasabi ng computer, hey, kailangan ko kayo na maglaan ito ng marami memory sa aking hard drive, sa bawat cell sa pagiging isang tiyak na bilang ng bits. Tandaan natutunan namin sa week zero na ang iba't ibang data mga uri ay may iba't ibang laki? Kaya halimbawa, ang isang string ay isang iba't ibang mga halaga ng espasyo kaysa sa isang pansamantalang trabaho, kung saan ay isang iba't ibang mga halaga ng puwang mula sa isang integer. At kaya kung hindi mo tukuyin at ikaw ihalo at tumutugma sa kung ano uri ng variable na mayroon ka, ang computer magiging tunay nalilito. At hindi ito ay pagpunta upang malaman kung magkano ang memory na magbigay sa iyo. Kaya para sa mga layunin ng mga karapatan ngayon, mga computer ay maaari lamang kilala ng isang uri ng isang array. Magandang tanong. SIGE. Kaya natural, ang ikalawang tanong na mayroon kami ay, well, ngayon na lumikha kami ng isang array at ilalagay namin ang lahat ng mga bagay sa array, kung paano tayo pagpunta upang ma-access ito? Kaya ang mga tipikal na istraktura na kami ay laging ma-access ang isang array ay ang aming kaibig-ibig para sa loop. Pangako ko sa iyo guys na kami ay magiging nakakakita ng isang pulutong ng mga ito kapwa dito. Mahalaga, anumang oras na gusto mo i-input ang mga halaga sa isang array o nais mong i-access ang mga ito, ang mga pinakamahusay na paraan upang gawin ito ay isang para sa loop, dahil sa isang para sa loop, ikaw kung gaano karaming beses ikaw ay pagpunta sa nais na tumakbo sa pamamagitan ng array, dahil mayroon kang isang stop edition, di ba? At sa bawat oras na patakbuhin mo sa pamamagitan ng, maaari mong ma-access ang isang iba't ibang mga elemento ng array. At din, ito ay isang dahilan kung bakit ang karaniwang namin simulan ang aming para sa loop sa 0 ang halaga, dahil kapag na-access mo array, Maaari mong ma-access ang zero index. At kaya ito parallels tunay mabuti. Ikaw guys na maaaring nais na isulat para sa int i katumbas 1. i ay mas mababa sa o patas sa 3. Pero hindi ito ay gumagana ganap na maayos dito, dahil ikaw lamang may mga elemento ng 0, 1, at 2. At kaya kung ikaw ay upang simulan iyong i sa element 1, 2, at 3, ikaw ay pagpunta sa dulo up na tumatakbo sa labas ng hangganan ng iyong array, at masamang bagay-bagay ay pagpunta sa mangyayari. Kaya Umaasa ako mo guys makita ang segue ng kung bakit sa mga naunang mga klase kami ay pagtuturo sa iyo guys kung paano patakbuhin at format ng isang para sa loop ang paraan na kami ay. Ito ay dahil, ngayon na namin transition sa array, maaari mong makita kung bakit ang 0 nagpapautang mismo sa lalong mabuti sa pag-access. Kaya ang paraan namin na na- Ako lamang-print out ito dito para sa kapakanan ng pag-print ito. Ngunit mayroon akong aking placeholder, comma. At ang aktwal na pag-access part ang nangyayari. Ang pangalan ng array ay tinatawag na temperatura. Kaya ito ay temperatura at ang ika-i element ng array. Kaya bilang ang para sa loop ay tumatakbo sa pamamagitan ng, ito ay pagpunta sa magsimula sa 0. Ito ay pagpunta upang i-print out ang 0 index ng array. Pagkatapos ito ay pagpunta sa i-print out sa unang elemento. Pagkatapos ito ay pagpunta sa i-print out sa ikalawang isa. At pagkatapos kami ay pagpunta sa break. Ay malinaw na lahat ng tao sa paano na ang nangyayari? Great. Lahat tama. Kaya dito kami ay may isang paraan ng na nagsasabi, kung hindi namin ginawa gusto sa hard-code in-- akin bilang mga programmer. Hindi ko nais upang aktwal na pisikal na ilagay sa bawat indibidwal na sangkap ng array. Kung Nais kong sa halip Mayroon ang halaga ng input ng user, ano ang pinakamahusay na paraan upang gawin iyon? Well, narito aking nilikha ang kaibig-ibig na function, kung saan ang maaari kong ipinapahayag ng isang array. Kaya int scores-- sabihin sabihin gusto naming gawin lamang isang array na gaganapin ang mga marka ng lahat ng 18 ng mag-aaral dito sa seksyon na ito. Sa tingin ko namin nakuha ng isang bit higit sa 18 mga bata ngayon. Ngunit para sa kapakanan Halimbawa, ang akala lang namin ay 18 ipaalam. Gusto kong lumikha ng isang pangalan ng array na mga marka sa type int, dahil ang mga score, of course, ay mga numero. At ako pagpunta sa may 18 sa mga square bracket, dahil iyon ang kung gaano karaming mga mag-aaral ko nais na ma-imbak ang mga marka ng. At ang paraan na gusto ko paramihin array ay na gusto ko patakbuhin ito sa pamamagitan ng isang para sa loop, ng Siyempre, na may 0 na aking 0 index. At pagkatapos ay may 18 na aking pagpapahinto edition, dahil mayroong 18 mga elemento sa array. At pagkatapos ay ako pagpunta sa gawin printf, Magpasok puntos para student-- yada yada yada. Maaari kahit sino sabihin sa akin kung bakit dito ako pag-print i plus 1 at hindi ko? Ito ay uri ng isang kakaibang ugali pinag-uusapan, hindi talaga. Ito ay hindi tunay na pisikal na makaapekto sa pagtakbo ng mga code. Oo. Madla: [hindi marinig] 0? ANDI PENG: Oo, eksakto. Ito ay isang bit mahirap sabihin, hey, ikaw ang 0 ng mag-aaral sa klase na ito. Ito ay isang medyo kakaiba. Kaya tayo, bilang mga tao, ay hindi tunay na tulad ng mag-isip ng kung paano computer tingin. Kaya kahit na sa computer, ito ay pag-iimbak ng mga halaga sa ika-0 index, kapag hindi namin tao, hindi namin talagang nais na mag-refer sa ating sarili bilang zero. Kaya kapag lamang i-print ko na, Pupunta ako upang i-print at idagdag 1 lamang para sa kapakanan ng kaliwanagan. Kaya kapag-print ko, pupuntahan ko na maging maaaring i-print aaral 1 hanggang 18. Hindi ito ang tunay na epekto ang takbo ng code sa anumang paraan, ang paraan ko i-print. Ngunit mag-ingat kapag ikaw ay talagang pag-access ng array. Kapag nakita mo ang mga marka ng i, paunawa dito talaga ako pag-access sa 0 index at hindi ang 1 plus 0-- o 1 plus 1, sa kasong ito, index kaya na ito ay aktwal na malinaw. Ay sa lahat ng uri ng OK sa kung paano ito ay tumatakbo sa pamamagitan ng at sa bawat index Ako paglalagay ng isang halaga sa array at paglikha ng isang array na may 18 mga numero na ang gumagamit ay pagpunta sa input? SIGE. Cool. SIGE. Lumipat kami ngayon sa isang bagay na medyo may kaugnayan para sa set rin ito piraso. Alam ko sa panayam, David-- Paumanhin, nagkaroon ka ng isang katanungan? Madla: Maaari mong palakihin ito? ANDI PENG: Oo, kaya sinubukan ko. Ngunit hindi ko alam. Para sa ilang kadahilanan, ito bersyon ng PowerPoint ay talagang hindi gumagana mabuti sa mga display. Kaya lamang kami ay pagpunta upang panatilihin ang mga ito tulad nito. Lahat ng ito ay na-upload sa online. Paumanhin, guys. Oo. SIGE. Kaya maaari rin naming magkaroon ng mga string. Kaya't kung ikaw guys talagang notice-- ko Alam tumawid Rob ito sa na lecture na siya did-- isang string ay talagang lamang ng isang hanay ng mga character, kung sa tingin mo tungkol sa mga ito, right? Ang isang string ay isang pangalan o isang pangungusap o isang salita, tama? Kung ako ay upang lumikha ng isang string pinangalanan Andi-- aking pangalan lang, A-N-D-ko. Sa tingin mo ng na bilang lamang ng isang variable. Ngunit ang tunay na, ito ay pinaghiwa-hiwalay sa isang array ng mga karakter. Kaya ito ay nakuha ng isang character ng isang naka-imbak sa isang halaga ng array. Ito ay nakuha ng isang character ng n naka-imbak sa pangalawang index at iba pa at iba pa. Kaya sa paraan, kami tunay na may uri na ito ng istraktura na itinakda sa ilagay para sa aming mga string. Kaya dito, kung ako ay i-input ang salitang "kumain" - kaya string salita ay katumbas ng makakuha ng string. Kung ako ay upang input ang salitang "kumain," na ay pisikal na mga paraan na ang aking computer ay nag-iimbak na string sa aking memorya. At kung ako nais na tumakbo sa pamamagitan ng na at i-print na out-- kaya para sa i ay katumbas ng zero, tandaan, sa panayam, namin sakop ng isang bagay na tinatawag na strlen, o ang haba ng string. Dahil hindi ko talaga alam kung paano malaki ang array ay ng kahit anong inputting-- ng gumagamit Halimbawa, inputted ko ang salitang "kumain," at alam ko iyon ang tatlong mga character ang haba, di ba? Kaya maaari kong ilagay sa isang tatlong doon at lahat ng bagay ay pinong. Ngunit kung ang iyong mga user input ng isang bagay na ang isang iba't ibang mga bilang ng mga halaga, ikaw ay pagpunta sa hindi ma-talagang malaman na kapag ang programa mo ang iyong code. Kaya ang paraan na hawakan namin kaso sa pagsubok tulad na ay na kami ay may isang bagay tinatawag na strlen, na kung saan ay isang function lamang na nagsasabi sa iyo kung gaano katagal ang isang string ay. Kaya strlen ng salita. Aking salita ay kumain. n ay katumbas ng strlen ng salita. Maaari isang tao sabihin sa akin kung ano na ang halaga talaga ang may karapatan? Ano ang ibig n na kumakatawan sa kanan ngayon, sa halimbawang ito, kung ako ay kumain? Madla: 3. ANDI PENG: 3, eksakto. Kaya mayroon kami para sa int i katumbas zero, n ay katumbas ng 3, mahalagang. At i ay pagpunta sa tumakbo hanggang sa ito ay mas mababa kaysa sa 3i ++. At ito ay pagpunta sa mahalagang pumunta sa pamamagitan ng at gawin ang parehong bagay. Ito ay pagpunta upang i-print out bawat halaga at magbigay sa iyo E-A-T. Lamang Ito ay nagsasaad ng isang iba't ibang paraan ng pagsulat ng mga ito. Iyon ay magiging kapaki-pakinabang. Oo. Madla: Ano ang mga benepisyo ng paglagay ang n ay katumbas ng strlen salita sa loob na para sa loop [hindi marinig]? ANDI PENG: Oo. Kaya kung ako ay to-- sabihin, halimbawa, kung ako ay upang gawin iyon at pagkatapos ay do-- oop-- na, sa aking code, magiging tunay na maging ang paggawa tulad ng parehong bagay. Gayunpaman, ang paraan na ipinaliwanag David ito sa panahon ng panayam, kung mayroon man sa inyong mga lalake tandaan, ay na, tulad ng mga kawani na tao, tulad ng programmers, namin talagang subukan sa programa ng aming code upang ang aming mga computer ay may upang gumana ng kaunti hangga't maaari, sa gayon na ang aming mga code ay hindi mabisa. Kaya kung ako ay na, kung ano ang mangyayari sa pamamagitan ng aking para sa loop ay na unang ko na nais magpahayag ng isang variable na pinangalanan i ay magiging 0. Ako ay pagpunta upang suriin, oh, ano ang strlen ng salita? Oh, ang strlen ay 3. Kaya ay i mas mababa sa tatlong? Oo, ito ay. Pupunta ako upang tumakbo. At pagkatapos ay ang pangalawang pagkakataon bumalik sa paligid loop, ako pagpunta sa paglakas i. i ay magiging isa. At i ay pagpunta sa suriin, oh, ngunit kung ano ang strlen ng salita? Oh, ito ay tatlo. At ang na mukhang uri ng mapag-aksaya, sa bawat oras na patakbuhin mo ang sa pamamagitan ng mga loop, upang ma-check ang mga function, kahit na ang strlen ng salita hindi tunay na pagbabago? Kaya ito ay dagdag na kapangyarihan para sa isang computer. Kapag nagsimula ka ng pakikipag-usap tungkol sa mga bagay na bilyun-bilyong at bilyun-bilyong ng mga lugar long, isipin ang iyong computer hindi sa pisikal na pumunta sa pamamagitan at suriin ang lahat ng mga na ang bawat isang oras. Iyon ay kung bakit, lamang na gumawa para sa kapakanan ng kahusayan, kami ay madalas na gawin ito lamang, dahil sa ganitong paraan hindi namin lamang pagtawag sa function isang beses sa simula, at na ang bawat oras na ito Dumadaan ito ay pagpunta sa tindahan ng mga halaga 3 doon, na hindi mo kung patuloy na suriin ang bawat oras. Oo. Madla: Paumanhin. Just [hindi marinig]. Puwede mo int n katumbas strlen at ilagay na itaas ang labas ng para sa loop din? ANDI PENG: Oo. Maaari mong gawin na, walang pasubali. Ang dahilan na namin ito sa dito ay dahil ang paraan para sa isang loop gawa ay na ito ay tinatawag na isang lokal na variable sa kamalayan na ang lahat ng bagay na ikaw ay paglikha sa loob ng para sa loop ay umiiral lamang sa loob ng para sa loop. Kaya ang variable i lamang umiiral sa mga bracket. At dito ang din variable ng n ay umiiral lamang sa mga bracket. Kaya't kung ikaw ay gumamit ng strlen ng salitang maraming beses pababa sa ibaba, ganap na ang pinakamahusay na paraan upang gawin iyon ay upang ipahayag ito tuktok kaya hindi mo na kailangang gawin ito nang isang beses. Oo. Madla: Bakit mo magkaroon ng isang bagong linya pagkatapos ng porsyento nakikita kung nais mong ilagay ang lahat ng ang mga titik sa tabi nito hiwalay na? ANDI PENG: Oh, nais kong i-print ang mga ito sa lahat sa bawat linya. Hindi mahalaga. Oo, ito ay isang pag-format. Iyon ay isang mahusay na tanong, kahit na. Oo, kung gusto kong i-print lahat sa isang linya lamang ito, Hindi ko ibig na ang gitling in. SIGE. Ang bawat mabuti? SIGE. Cool. Kaya sa tingin ko sapat na ako ay nakipag-usap. Pagliko mo guys upang tumakbo sa pamamagitan ng code at sabihin sa akin kung ano ang mali dito. Saan ang bug? Kaya bilang maaari mong makita, ipinahayag ko na ang isang bagong hanay ng mga uri ng string pinangalanan class. At ako inputted na Sam, Jess, at Kim sa mga ito. At ako sa pagtatangka upang i-print out lahat ng mga elemento ng array. Maaari isang tao sabihin sa akin kung bakit ito ay pagpunta sa bigyan ako ng problema? Bibigyan kita ng isang lalaki 10 segundo upang isipin ang tungkol sa mga ito. SIGE. Oo? Madla: ang kaliwang center katumbas ng 3 o [hindi marinig]? ANDI PENG: Kanan. Kaya kung gaano karaming beses na ito ay tunay na pagpunta sa tumakbo sa pamamagitan ng loop? Madla: Four. ANDI PENG: Eksakto. Ito ay pagpunta sa sa pamamagitan ng apat na beses. Ito ay pagpunta upang tumakbo sa pamamagitan sa 0, 1, 2, at 3, sapagkat ang kanilang mga elemento ay i mas mababa sa o patas sa 3. Ito ay hindi pagpunta sa itigil kapag ito ay 2. Ito ay pagpunta sa panatilihin pagpunta hanggang umabot sa ito 3. At dahil alam namin, mayroon lamang tatlong mga elemento sa aming mga aktwal na array. Kung sinubukan naming i-access ang ika-apat sangkap o ang index ng 3, ikaw ay pagpunta sa hit sa tabi-tabi sa memorya na ay hindi umiiral. Ito ay tinatawag na null terminator. Walang magiging doon. Ang iyong computer ay hindi pagpunta upang maging napaka-masaya sa iyo. Oo. Kahit sino ay may mga katanungan sa kung bakit na nangyayari? Iyan ay isang karaniwang lugar upang maiwasan. Oo. Madla: Ay hindi ang unang slide ring magkaroon ng isang string ng 2? ANDI PENG: No. Kaya mahalagang, kapag nagsasagawa ka ng isang array, na bracket karapatan doon, na number-- lahat ito ay nagsasabi sa iyo ay kung paano maraming elemento ang mayroon ako. Ito ay hindi tunay na nagsasabi sa akin ang mga ini-index ng kahit ano. Kaya sa kasong ito, alam ko na gusto kong na magsulat sa tatlong mga lugar, may tatlong mga pisikal na lugar upang humawak ng kahit anong gusto ko upang i-hold. Kaya na ang dahilan kung bakit ang bilang ng tatlong ay doon. Gayunpaman, kung nais ko upang aktwal na-access ito, kung nais kong sabihin, printf klase bracket number, at saka ikaw ay pagpunta sa aktwal na ilagay ang pisikal na index doon. Oo, magandang katanungan. Madla: Kaya ay ang pisikal na index dapat na maging [hindi marinig]? ANDI PENG: Sorry. Maaari kang makipag-usap ng kaunti? Madla: Kaya ay ang pisikal na index [Hindi marinig] sa bawat isa sa mga kahon? [Hindi marinig]? ANDI PENG: Oo. Kaya ako pagpunta upang bumalik sa kanan dito. Mag-isip ng karapatan dito. Kami ay may isang hanay ng mga laki 3. May tatlong mga lugar, tulad ng, pisikal na mga placeholder sa dito. Ngunit ang mga ito ay pinangalanan 0, 1, at 2. Kaya kung nais ko upang ma-access ang mga ito, ang paraan na ma-access ko ang mga ito ay printf ng kahit anong nais ko sa dito. Gusto mong mag-print ang pangalan ng mga ito, dahil pagkatapos ay ang computer Malay mo, oh, kailangan ko upang tumingin sa array na ito para sa mga 0 index. Oo. Ngunit ang sukat ng mga ito ay hindi nagbabago. Ang laki ay 3, hindi alintana ng kung paano mo lagyan ng label ang mga ito. SIGE. Ang bawat mabuti? Madla: Kaya sa tuwing ako [hindi marinig]? ANDI PENG: OK. Kaya sa kasong ito, hindi namin talagang makakuha ng mga ito sa ngayon sa kurso. Ngunit alam na isang string tulad ko sinabi bago, ang isang string ay mahalagang isang hanay ng mga character. Kaya kapag gumawa ako ng isang array ng mga string, uri ako ng may isang array ng array ng mga character, di ba? Kaya sa kasong ito, dahil ako magkaroon ng isang array ng mga string, kung ikaw ay upang input ng isang talagang mahabang salita, na pa rin ay tumatagal ng up lamang ng isang space, dahil iyon ang isa string. Ngunit kung ikaw ay mag-isip ng ang mga character ng na array, pagkatapos na ang pagkuha up ng maraming higit pa character kaysa sa alinman sa iba pang mga salita ay. Hindi tunay na mahalaga para sa ngayon. Ngunit iyon lamang ang karaniwang lamang kung paano ito gumagana. SIGE. Kaya ito ay isang bagay na ako gawin mo isang pulutong sa mga kurso ng semestre. Kailangan ko na magpahinga ang aking boses. Kailangan mong guys upang pasiglahin ang inyong mga sarili. Ang isang pulutong ng ikaw ay malamang na may sa pagtulog ngayon. Ako inputting random na mga problema kung saan namin bilang isang klase o sa iyo may kasama na susunod sa iyo ay pagpunta na gumastos ng ilang minuto sa pagtalakay sa kung paano namin pumunta tungkol sa paglutas o paglikha ng isang programa tulad ng mga ito. Kaya ngayon, gusto naming upang lumikha ng isang program-- kami ay pagpunta sa tawag na ito upper.c-- na nagpalit isang lowercase salita sa isang itaas na-class string uppercase, paumanhin. Word sa mga string, paumanhin, ay magkasingkahulugan. Pupunta ako sa baguhin ang mga ito sa ibig sabihin ang parehong bagay. Oo. Kumuha ng ilang minuto. Hindi nito kailangang maging nakasulat sa anumang wika. Basta pseudocode code o lohikal na kung paano namin gagawin kahit pumunta tungkol sa paggawa tulad ng isang problema. Oo. [SIDE uusap] Napansin ko din na guys can-- Ako uri ng makita na ang programa. Hulaan ko ang aking kakulangan ng presenter mode ay isang problema. Ngunit ito ay OK. [SIDE uusap] Oo, please, guys. Halika at makakuha ng kendi. Halika at makakuha ng kendi. Madla: Oo! [SIDE uusap] ANDI PENG: Gayundin, oo, Kukunin ko simulan ang ibinabato kendi sa mga tao na hindi sagutin ang mga katanungan. Kaya dapat sa iyo ang lahat ng mga sagot na tanong. O ipagpalagay ko ang mga tao na huwag sagutin ang mga katanungan. Oo, iba pang mga paraan sa paligid. [SIDE uusap] Madla: [hindi marinig] ANDI PENG: Oo. Oo. [SIDE uusap] Sige, guys. Lumabas, tulad ng, 10 segundo pa. [SIDE uusap] OK, guys. Kaya bago namin simulan ang sinusubukan mong aktwal na pisikal na magsulat ng code, isang magandang ugali upang bumuo ay na nais naming unang uri ng dahilan out lohikal kung paano namin gawin ito. Gusto mong tiyakin, bago mo pisikal na simulan ang pagsubok sa code sa Mario, na gumawa ka ng tiyakin na mayroon kang ang iyong pseudocode. Iyon ay ang pagkuha mo sa pamamagitan ng kung ano ang kailangan mong lumikha ng sa gayon na, kapag ikaw ay pisikal na isulat ang iyong programa sa ibang pagkakataon, ikaw ay mas mahusay na kakayahan upang mahuli ang mga error sa iyong code at mga bagay na tulad ng. Kaya kami ay pagpunta upang simulan lamang by-- sa Ingles, sa pseudocode, ang sinuman nais na magbigay sa sa akin ng isang generic na paliwanag ng kung paano namin pumunta tungkol sa paggawa nito? Oo. Madla: [hindi marinig]. ANDI PENG: Oo naman, walang alalahanin. Madla: Maaari mong hilingin ito sa o magtanong isang tao upang makakuha string 1-- oo, string, at then-- ANDI PENG: Oo, kaya ito ay isang magandang simula. Kukunin ko simulan ang pag-type, sorry, habang nagsasalita ka. So-- Madla: -ang lowercase mga numero ay mas mataas, tama? O ang maliliit na titik magkaroon ng mataas na numero? ANDI PENG: Eksakto. Madla: Kaya naming pagkatapos ibawas 32 mula sa kahit anong [hindi marinig]. ANDI PENG: Great. Kaya namin uri ng magkaroon ng isang pangkalahatang kamalayan ng kung paano gumagana ang tungkol sa problemang ito. Alam na uri ng aming natutunan ang pisikal na mga paraan na ang mga string ay naka-imbak sa memorya, ano ang ginagawa mo na malaman na ikaw ay pagpunta sa marahil Mayroon na magsulat sa iyong code upang ilipat sa pamamagitan ng string? Madla: Para sa loop. ANDI PENG: A para sa loop, eksakto. Great. Kaya namin uri ng magkaroon ng isang generic pseudocode naisulat na uri ng ay nagbibigay sa mga tala sa kung paano mo Gusto ilipat ang tungkol sa paglutas ng problema. Ngayon na kayo ay may ito, ikaw Maaari reference ito para sa ibang pagkakataon kapag sinusubukan mong talagang isulat ang iyong code. Kaya maaari naming aktwal na pumunta dito. At Mayroon akong isang function na tinatawag upper.c-- doon ito is-- ng lamang ng isang blangko template ngayon na iyong guys ay pagpunta sa tulungan akong malaman sa kung paano sumulat ito linya ng code ay hindi linya ng code. Makikita ito ay maramihang mga linya ng code. Kapag ang simula ng anumang uri ng blangko pset, kung ano ang ang unang bagay na kailangan ko tandaan na gawin? Madla: [hindi marinig]. ANDI PENG: Great Yep. Isama. stdio.h. Madalas ito ay isa sa ang pinaka-madaling pagkakamali ng mga tao ay gumawa ng kapag ang mga ito pagsulat, ay na makikita nila kalimutan na isama ang isang mahalaga library na kailangan nila. Kaya kung ito ay oras ng opisina at ikaw ay tulad ng, Hindi ko alam kung bakit ang aking code ay hindi gumagana. Maaari mo bang sabihin sa akin kung bakit hindi ito gumagana? Kami ay pagpunta sa sabihin ninyo # isama? Dapat mong # include ito. SIGE. Kaya namin nakuha ang standard I / O dito. Iyan lang library kami ay pagpunta sa kailangan dito? Ano pa ang mga namin pagpunta sa gawin? Sorry. Isang tao lang sigaw ito? Madla: [hindi marinig]. ANDI PENG: May pumunta ka. SIGE. At paano ko pumunta tungkol sa simula ng anumang uri ng function, ang anumang uri ng pangunahing pag-andar sa loob ng aming programa? Int main. SIGE. Ano ang gagawin ko bang ilagay ang loob dito? Ano ang unang bagay na gusto mong gawin? Kung gusto namin upang makakuha ng isang string mula sa gumagamit, kung ano ang mga namin pagpunta sa may upang gawin ito sa unang linya? Paumanhin, ang iyong guys lamang pakiramdam free na magsalita at malakas. Shout out kahit anong lamang. Madla: Humiling user? ANDI PENG: Paano namin gawin iyon? Ask-- ako pagpunta sa uri "tanungin ang mga user"? Madla: Printf. ANDI PENG: OK. Printf. Ano ang gusto ko sa printf? Madla: I-type sa isang bagay. ANDI PENG: Tulad iyon? Guys, magpanggap tulad ako computer. Pisikal na sabihin sa akin ang bawat hakbang na kailangan kong i-type sa dito? Ako paggawa ng isang bagay na mali? Dapat ko bang na-type ng isang bagay? Madla: Kailangan mong quotes. ANDI PENG: Kailangan ko quotes? SIGE. SIGE. Madla: At pagkatapos ng mga bagong linya. Tuldok-kuwit. ANDI PENG: semicolon? SIGE. Good. Madla: At siguro tukuyin na ito ang gusto mo sa lowercase? ANDI PENG: Great. Ikaw guys matawa sa akin forgetting upang maglagay ng isang tuldok-kuwit. Ginagarantiya ko sa iyo sa tabi-tabi sa kurso ng klase na ito, ikaw ay kalimutan na maglagay ng isang tuldok-kuwit, at ito Dadalhin ka nito sa tatlong oras upang malaman kung bakit ang iyong code ay hindi gumagana. Ito ay nangyari sa ating lahat. Ito ay marahil mangyari sa iyo. Kumuha ng sa isang magandang ugali ng paggamit ng mga semicolon. SIGE. Madla: Gusto mo upang gawin ang backslash in? ANDI PENG: Oo naman. Gusto mo bang gawin ang backslash in? Madla: Oo. ANDI PENG: Great. SIGE. Ano ang susunod kong gagawin? Madla: Kumuha ng string. ANDI PENG: Kumuha ng string. Kaya ano ang gagawin ko type? Isang tao? Madla: String s. ANDI PENG: String s. Madla: GetString. ANDI PENG: ang isang tao, maaari mong sabihin sa akin kung saan mga function na ito GetString ay nagmumula? Madla: string.h. ANDI PENG: string.h? Sa tingin mo ito ay mula string.h? Madla: [hindi marinig]. ANDI PENG: May pumunta ka. Ito ay mula sa CS50.h. Kung lagi ka na nalilito sa kung saan ang isang file library ay o isang header na file ay, google literal string.h, at sasabihin ko sa inyo ano ang lahat ng mga function na sa string.h. SIGE. Kaya ngayon na aking nilikha ay isang string at na ako prompt ang user para sa mga ito, Naka-imbak ko na ito sa isang variable pinangalanan ni, ano ang kailangan kong gawin ngayon? Madla: Suriin kung ito ay sa lowercase. ANDI PENG: Sorry? Madla: Suriin kung ito ay sa lowercase. ANDI PENG: Sige, sabihin gawin na ipaalam. Paano ko gagawin yan? Sa totoo lang, para sa mga layunin ng klase sa ngayon, lang kami ng pagpunta sa ipalagay na ang lahat ng bagay na input kami ay mayroon na sa lowercase. Kung iyong nais na tingnan, gusto mo magdagdag lamang ng isang kondisyon na pahayag naka-check na, na tumakbo sa pamamagitan bawat solong elemento array at nag-check kung ito ay sa pagitan ng ilang mga halaga. Nakalimutan ko kung ano ang bilang ng mga halaga ng lowercase ay. Maaari mong tingnan ito sa mesa ASCII. Ngunit oo, na ang isang tunay na magandang point. Ngunit sa ngayon, kami ay lamang ng pagpunta sa ipalagay na ang lahat ng mga string input namin ay nasa lowercase. SIGE. Kaya kung paano ko pumunta tungkol sa ang problemang ito sa susunod? Madla: Para sa loop. ANDI PENG: Para sa loop? SIGE. Sabihin mo sa akin kung ano ang i-type. Madla: Para sa int i katumbas 0. ANDI PENG: OK. Madla: Oh, talaga, pagkatapos mo gawin ang isang kuwit at gawin n katumbas strlen. ANDI PENG: Kaya mahalagang bagay na sa tingin ko siya ay napansin dito ay na hindi mo na kailangan pang sabihin int n ang pangalawang pagkakataon na ginawa namin ito. Basta alam na sa isang para sa loop kapag kayo ay magpahayag, ikaw ay tunay na hindi na kailangan ang int ng sa pangalawang pagkakataon gawin mo ang isang variable. Maaari mong sabihin n strlen. Madla: Ng s. ANDI PENG: s. SIGE. Madla: Pagkatapos ng isang tuldok-kuwit. ANDI PENG: Oo naman. Madla: At pagkatapos ay [hindi marinig] n. Pagkatapos i ++. ANDI PENG: Great. Lahat tama. Ano ang gusto natin sa loob ng mga ito para sa loop ngayon? Tandaan, kung kami ay pagpunta upang tumakbo sa pamamagitan isang string at patakbuhin sa pamamagitan ng isang array, gusto naming suriin ang mga bagay sa loob nito. Ano ang mga namin pagpunta sa kailangan? Ito ay uri ng mga mapanlinlang na bahagi na ngayon. Kahit sino ay may isang hula? SIGE. Kaya una, paano namin kahit na ma-access? Paano ginagawa namin kahit unang tseke o ma-access ang isang elemento sa array? Paano namin gawin iyon? Ano ang notasyon na ginagamit namin upang gawin iyon? Ano ang tinatawag na ang pangalan ng mga ito array? Ito ay tinatawag na s, di ba? Tandaan, anumang string ay palaging isang array. Kaya s bracket i, di ba? Dahil na ay ang kasalukuyang halaga o index halaga Sinusuri namin. At kami ay pagpunta sa set na pantay-pantay to-- gusto namin ng isang lowercase na halaga, i-right? Gusto naming i-na lower-- Paumanhin, gusto namin ng isang uppercase. Gusto naming i-on ang lowercase halaga na ito sa isang uppercase. At kaya like-- Sorry, Anong pangalan mo? Madla: Heidi. ANDI PENG: Sorry? Madla: Heidi. ANDI PENG: Heidi. Tulad Heidi sinabi una, hindi namin malamang pagpunta sa kailangan the-- hindi namin marahil pagpunta sa may upang mag-alis 32 mula sa kahit anong charc na, tama? Dahil sa isang ascii table, ang pagkakaiba sa pagitan ng isang maliit na mga titik at isang uppercase sulat ay 32. Kaya kapag kami ay ginagawa ito, hindi namin malamang pagpunta sa nais na ibawas 32, di ba? Kaya kami ay pagpunta sa gawin i s. Ba lahat maunawaan kung bakit ginawa ko na? Dahil sa ngayon, sa aming array, Sinusuri namin ang 0 index, di ba? At sa 0 index ng string, na ang unang karakter. At na karakter kami ay pagpunta upang ipalagay ito ay lowercase. Kung nais namin na gawin itong uppercase, namin kung ibawas 32 mula sa halaga nito, dahil sa aming mga ASCII table, na kung paano namin kumuha ito sa susunod na naaayon halaga na ginagawang uppercase. Lahat ng tao na maunawaan ba iyon? Oo. Madla: Puwede mo ring huwag lowercase ng minus-- ANDI PENG: Oo, kaya iyon talagang talagang mahusay. Pupunta ako sa bumalik sa na tanong pagkatapos naming gawin ito. Oo. At pagkatapos ay kung gusto kong makita kung ano ang nangyayari, Marahil ako pagpunta sa nais na i-print, i-right? Isang tao sabihin sa akin kung ano ang Gusto kong i-print dito. Madla: printf percent c backslash [hindi marinig]. Iyan ay ang halaga ng s [hindi marinig] i. ANDI PENG: s i, sorry? Madla: [hindi marinig]. ANDI PENG: hindi ko alam. Ano sa palagay mo? Madla: Well, wouldn't-- ko Hulaan ko hindi ko bring-- Gusto ko ilabas ito sa loob, dahil [hindi marinig]. ANDI PENG: Oh, ikaw ay nagawa na iyon? Madla: Oo. ANDI PENG: umalis ni ito ang paraan Ipaalam ito ay, at Ipapaliwanag ko kung bakit bago. Tandaan, kahit na kapag ikaw magkaroon ng isang may-hawak ng lugar, nais mong ilagay ang mga panaklong sa paligid nito. Lahat tama. Kaya ito ay dapat na dito ang isang solid function. Tumakbo natin ito at makita kung compiles ito. Gumawa itaas. Naku. Iyon ay hindi hitsura masyadong mabuti. Bakit ito nangyayari? Tulad ng sa anumang error, gusto mong puntahan bumalik at magsimula sa ang unang isa, dahil kadalasan isa error sanhi maraming iba pang mga error matapos na ito. Narito makita upper.c namin: 18: 25, na nagsasabi sa sa akin sa programang ito na may pangalang upper.c, on 18 linya, error kataon deklarasyon library ng mga function strlen may uri unassigned-- blah, hindi ko alam kung ano ang nangyayari pagkatapos na. Lahat ng ito ay nagsasabi sa akin sa ngayon ay na may isang bagay ang nangyayari sa mga strlen. At ang computer ay nalilito, dahil ito ay tulad ng, hindi ko alam kung ano ang strlen ay? Ano ang ibig sabihin na marahil sabihin sa iyo kung ikaw ay nawawala? Madla: Ikaw ay nawawala [hindi marinig]. ANDI PENG: Kayo ay may karapatan. Mismong. Kaya ito ay kung saan ito ay mahalaga upang matiyak na ang bawat pag-andar na gamitin mo sa iyong code ay nagkakaroon ng tamang header file para sa mga library, o iba pa ikaw ay pagpunta upang makakuha ng maraming mga error at ang iyong code ay hindi pagpunta upang malaman kung ano ang nangyayari sa. Kaya kami ay pagpunta upang isama string.h dito. Ngayon kapag sinubukan namin upang ipunin itaas. Magtala ng tama. Tumakbo ni program na ito. Kaya type ang isang bagay sa lowercase. Ano ang gagawin mo guys nais na mag-type? Mag-shout out ng isang bagay. Lahat ng karapatan, lamang lumakad Charly in. Makikita type kami ng pangalan ni Charly. Charly sa lowercase. At sana, sana, ito ay pagpunta upang mag-shout out at sabihin ang lahat Charly sa uppercase. Yay! ang lahat ng tao na maunawaan kung paano Nagpunta ako tungkol sa paglutas ng iyon? Ang paraan na makakaya ko manipulahin gamit integer upang malutas ang isang bagay na Gusto kong gawin sa mga string, dahil character at integer Maaari isinangguni sa parehong paraan dahil ng paggawa ng mga mapa ASCII. Kaya upang bumalik sa iyong point, kung ako nais na ilagay dito sa halip ng 32 uppercase A minus lowercase ng tulad ng na iyon, na nais magtrabaho pantay pati na rin, dahil iyon lang lamang ang pagkakaiba sa pagitan ng mga dalawang mga halaga. Kung gusto kong gumawa ito again-- charly. Oh hindi. Sa tingin ko ay nagpunta kami sa maling paraan, oo? Madla: [hindi marinig] lowercase ng. ANDI PENG: May pumunta ka. Yep. At out spits charly. Kaya maging maingat kapag ka na pagbabawas halaga tandaan na kung saan ang isa ay mas malaki kaysa sa isa. Halimbawa, hanggang dito Nakalimutan ko na lowercase isang ay talagang mas malaki kaysa sa uppercase A. Kaya kapag ako sinubukang alisin ang mga ito sa iba pang paraan sa paligid, negatibong 32 nakuha ko. At ang aking computer ay tulad ng, Hindi ko alam kung ano na. Ito ay maaaring mangyari lamang ng ilang mga random halaga na ito ay hindi tunay mabuti. At kaya siguraduhin na ikaw ay pagbabawas sa tamang haba upang mahanap ang mga character na gusto mo. SIGE. Kahit sino nalilito Ay sa kung paano namin nagpunta tungkol sa pagsulat ng mga function na ito? SIGE. Sa aktwal, ang isang function na umiiral sa library na tinatawag na ctype.h. Tinatawag ctype.h Ang library. Ang function na ito talaga ang na nakasulat para sa iyo. Ito ay tinatawag na upper. At kaya para sa mga layunin ng ito pset, ikaw ay pagpunta upang mahanap na tunay na nais mong gamitin isang pulutong ng mga function na nakapaloob sa loob ng CType library. Upang itaas, upang mas mababa, ay itaas, ay lower-- sa mga lahat ng mga pag-andar na ikaw ay maaaring gamitin napaka, masyadong mabilis sa iyong sariling code na ay kung ano mismo ang ginagawa nito. Kami ay sumulat ng kung paano i-convert isang string sa uppercase. Ngunit ito ay talagang ang code na may ibang tao ay may nakasulat at na maaari mong ma-access sa pamamagitan ng isang iba't ibang mga function. Oo? Madla: Kaya kopyahin mo lang A sa may at gawin ito para sa bawat solong sulat? ANDI PENG: Oo, dahil hindi ko pag-aalaga tungkol sa mga halaga ng a. Lamang ako pag-aalaga na ang mga pagkakaiba pagitan ng mga ito ay 32, di ba? Ang pagkakaiba sa pagitan ng lowercase b at uppercase B ding 32. At ang pagkakaiba sa pagitan c at uppercase C ay palaging 32. Mayroon akong lamang sa pag-aalaga tungkol sa mga pagkakaiba sa pagitan ng dalawa, dahil ang lahat ng mga titik sundin ang parehong pattern, tama? Kung ako ay may mga pagkakaiba pagitan ng isa sa kanila, Alam ko kung ano ang mga pagkakaiba sa pagitan ng lahat ng mga ito ay. Magandang tanong. Oo. Ang bawat mabuti? SIGE. Oop. SIGE. Kaya isa pang konsepto na magiging lubhang kapaki-pakinabang bilang ikaw magpatuloy upang bumuo ng ang iyong code ay ideya na ito ng paglikha ng mga function o abstraction. Kaya ngayon, lahat kami kinuha algebra. Sa algebra, ikaw ay itinuro na mayroong ang kahanga-hangang bagay na tinatawag na isang function machine, kung saan kung ikaw input isang uri ng numero, ito ay tumatakbo sa pamamagitan ng mga kahanga-hangang mga function at out nagpa-pop isang iba't ibang mga output, di ba? Sa code, ang mga parehong bagay ang mangyayari sa anumang uri ng pag-andar. Kaya maaari ko pisikal sumulat sa aking katawan ng aking code isang pangunahing pahayag na talagang gumagana ano man ang mga katawan ng mga code ay ginagawa. Ngunit sa labas ng na, maaari din ako isulat ang maraming iba't ibang mga pag-andar na gawin ang maraming iba't ibang mga bagay. Halimbawa, hindi namin nai nagsimula gamit ang ilan sa kanila. Printf-- iyon ay isang function na may ibang tao ito ay isinulat na maaari naming tumawag sa aming code. Upang upper-- sa kasong ito, upper-- ay isa pang function namin ang nakasulat na tayo maaaring tumawag sa aming code. At upang hulaan ko kung bakit ginagawa kahit kami ay may mga pag-andar? Bakit hindi gumawa ng mapa namin ito lamang ang lahat sa parehong linya ng code? Ito ay ginagawang mas madali para sa lahat. Well, ang pagdadahilan sa likod na ay, una sa lahat, samahan. Ito ay talagang nakakainis pagpunta sa pamamagitan ng code ng isang tao at isa function tulad ng printf. Kung talagang alam mo guys kung ano ang function na printf entailed na isulat, ito ay, tulad ng, 1000 mga linya ng code. Kung sa bawat oras na nais ko sa printf isang bagay, Mayroon akong magsulat ng 1,000 linya ng code, na magiging talagang nakakainis na basahin, right? Iyon ang dahilan kung bakit hindi namin lamang nilikha abstract function na ito na kami na ang isang tao ibang tao ay nakasulat sa iba pang lugar. At sa bawat oras na kailangan namin upang gamitin ito sa ang aming code, kami na lang sabihin printf. At iyon ay maaaring gamitin ang pag-andar ang ibang tao ay nasusulat sa ating mga code. Ginagawang mas madali organizationally magbasa code. Pangalawa, ito ay pagpapagaan. Pinadadali nito ang mga hakbang na namin upang gawin upang malutas ang aming mga problema. Printf, function tulad ng printf, function tulad ng sa itaas ay ang lahat ng mga bagay na magbibigay-daan sa amin upang gawing simple ang ating mga code kaya mas madaling. At huling bagay ay reusability. Kaya ang katotohanan na kami ay may isang function na tinatawag printf na maaari naming tumawag sa maraming iba't ibang beses at nagbibigay-daan ito upang maging magagamit muli. Kung ako ay upang isulat printf, Ito lamang ang isulat ko sabay. Ito ay umiiral lamang sa mga na sa isang lugar. Kung Nais kong gawin itong muli, nais ko kung i-copy at i-paste ng lahat ng na sa aking pangalawang linya ng code. Iyon ang dahilan kung bakit kung lumikha kami ng isang function na umiiral sa labas ng ating main, maaari naming tumawag lamang sa ito at muling gamitin ito sa tuwing kailangan natin upang ito ay isang mas madaling para sa amin bilang mga programa upang magsulat. Kaya ang paraan na kami ay tunay na sumulat isang function ay halos katulad na, i-right? Ito ay uri ng unang pagkakataon kung saan ipapakita namin makita ang isang function tumagal sa isang style naiiba kaysa sa aming int pangunahing walang bisa. Sa kasong ito, kung nais kong magsulat ng isang function na tinatawag na q, di ba? At ang halaga int dito ay lahat na nagsasabi sa akin, ano ang gagawin ko gusto ito gumana upang bumalik sa akin? Kung gusto kong kubo isang integer, Pupunta ako sa nais na input. Ang mga ito ay ang mga parameter. Pupunta ako sa input ang halaga ng isang uri ng int. At ako pagpunta upang bumalik ibang uri ng halaga ng int. At dito, tulad ng sa iyo maaaring makita, lahat ako ginagawa ay cubing ano man ang aking input ay bilang aking output at bumabalik na ito. Kaya lahat ng mga function na ito ay ay tumatagal ng ilang uri ng integer. Multiply nito ito sa pamamagitan ng mismo ng dalawang beses kaya na cube ito sa epekto. At pagkatapos ito ay bumalik kahit na ano na output ay. Kaya sa kasong ito, ito ay may dalawang linya ng code na kami ay upang magsulat ng dagdag. Ngunit kung gusto naming tumawag sa oras na ito ng maraming beses, ito ay mas madaling i-type ang isa na line karapatan dito na ang sa mga kubo sa kailangang pumunta sa pamamagitan ng maraming beses. Kaya ang paraan na mahalagang anumang pag-format para sa anumang uri ng mga function ay pagpunta sa umiiral ay tulad dito. Kaya kami ay may mga pangalan ng function. Sa kasong ito, ito ay tinatawag na kubo. At pangalan namin ito kubo dahil ito ay madaling matandaan. Maaari mong pangalanan ito parisukat at maaari itong maging talagang nakakubo. Ay hindi mahalaga. Isang pangalan lamang na ikaw ay pagtatalaga ng iyong function. Ang karapatang ito dito, int, ay ang uri ng mga parameter na kailangan mo. Kaya kung ano ang function na ito kailangan upang gumana? Well, ang mga pangangailangan ng isang input. Pinangalanan ko itong input. Maaari mong pangalanan ito kahit anong gusto mo. Ngunit kailangan ko ng isang bagay na uri ng int. Ito ay pagpunta sa aktwal na isakatuparan kahit na ano ay sa loob ng dito, ng katawan ng function. At pagkatapos ay ang uri ng return karapatan dito, ito int lahat ng ito ay nagsasabi sa akin ay na ang function na ito ay pagpunta sa bumalik sa akin sa int. Kaya ito ay pagpunta sa kumuha sa isang int, at ito ay pagpunta sa magbibigay sa iyo ng likod ng isang int. Ba maunawaan ng lahat kung paano ang formatting ng uring ito gumagana? Cool. SIGE. Kaya hindi nag-aalala kung ito tila isang maliit na abstract ngayon. Ito ay isang bagay na namin makipag-usap tungkol sa. Ipapakita namin sumisid sa mas malalim sa susunod sa kurso. Ang paraan na ang anumang uri ng mas mataas na antas abstraction ng mga bagay na ito sa trabaho ay na, sa memory, sa ang iyong computer, ang lahat ng bagay ay naka-imbak sa ganitong uri ng stack, sasabihin ko. Kaya hanggang doon sa itaas. Hindi ko alam kung ikaw guys ay maaaring makita na rin. Kukunin ko ang subukan upang mag-zoom in. Dito sa itaas, kami ay magkaroon ng pisikal na text ng kung ano ang computer ay interpreting-- lahat ng mga zero at mga na umiiral sa loob ng aming mga computer. At pagkatapos ay ang kami ay initialize data at uninitialized data, ano ang tawag namin pangkalahatang variable. Kaya variable na umiiral sa lahat ng mga programa at sa kabuuan ng iyong buong, mahalagang, code. Huwag mag-alala kung ikaw guys ay uri ng hindi maliwanag sa mga ito. Ito ay hindi tunay bagay ngayon. At pagkatapos kami ay may kung ano ang tinatawag na isang kimpal sa isang stack. Mag-isip ng isang stack literal bilang tulad ng isang stack ng mga bagay, isang stack ng mga iba't-ibang mga bagay na itinutulak sa itaas ng bawat isa na mag-imbak sa iba't-ibang variable at syntax sa loob ng iyong code. At pagkatapos dito sa ibaba, kami ay ang mga variable na kapaligiran ng kung ano ang iyong e-execute sa loob lamang ang iyong mga maliit na linya ng code. At lamang kami ay pagpunta upang mag-zoom in sa aktwal na stack na bahagi. Here So right, kung kami ay upang mag-zoom sa sa lugar lamang ito ng stack, ito ay kung ano ang mukhang. At ito ay tunay na medyo mahalaga kapag makipag-usap sa iyo guys tungkol sa mga function, dahil paunawa na ang memory ng iyong computer ay nag-iimbak ang mga variable at ang mga function at ang mga parameter ng iyong parehong function at ang iyong pangunahing mga variable sa iba't ibang lugar. Kaya ngayon, main ay ang aktwal na pag-andar na ikaw ay Isinasagawa sa isang code. Ikaw ay ang kanyang mga parameter na naka-imbak dito at ang mga lokal na mga variable na naka-imbak dito. Lokal na variable ay nangangahulugan lamang ang anumang mga variable na umiiral lamang sa loob na function. At sa ibabaw ng mga ito, ikaw ay may ito hiwalay na function na tinatawag na kubo. Mayroon kang na parameter pati na rin ang mga lokal. At ang dahilan na maaari mong makikita dito ay ang kung ano mangyayari kapag kubo ay tumatagal sa isang halaga mula sa iyong pangunahing pag-andar ay na aktwal na ito ay pagkopya na over. Kaya kung nais kong kubo 2 at bumalik 8, na ang 2 ay aktwal na inputted bilang isang parameter at ito ay kinopya sa gayon ay magkaroon ka ng ito umiiral sa dalawang magkaibang lugar sa memorya. At mayroon kang upang maging napaka-ingat sa pag-alala kung saan ang isa sa mga tunay na ikaw ay pagmamanipula. At isang halimbawa ng kung ano ang nangyari na magiging tunay, tunay masamang umiiral dito mismo. Kaya dito mismo, na nakuha ko, sa teorya, isang programa dito mismo, isang pangunahing pag-andar na ako deklarasyon ng isang int x ay katumbas ng 1. Ako deklarasyon ng isa pang int y katumbas 2. At pagkatapos ay nagpapatakbo ako ito sa pamamagitan ng function na ito tinatawag swap, kung saan akala ko na ito ay pagpapalit-palit sa dalawang halaga. At pagkatapos ay ako pagpunta sa i-print out ang mga ito, right? Iyon ay kung ano ang gusto ko ang program na ito upang gawin. Kaya ng bumaba at tingnan ipaalam. Kaya kung ako ang tunay na sumulat ng isang iba't ibang mga function, tulad ng makikita mo, na namin ang aming pangunahing pag-andar dito. At pagkatapos na namin ang aming ikalawang function dito. Walang bisa swap. Walang bisa ay nangangahulugan lamang na ito ay hindi pagpunta sa bumalik sa kahit ano. Ang function na pangalan ay tinatawag swap, at ito ay pagpunta sa paggamit ng dalawang variable, int isang at int b, mula sa iyong [hindi marinig] function. Kaya mahalagang in dito, hindi namin pagpasa x at y sa function na ito. At kung kami ay upang lumikha this-- kaya gusto naming upang lumikha ng isang pansamantalang halaga, di ba? Kami ay pagpunta sa magtalaga na sa a. At pagkatapos ng isang ay pagpunta sa pantay-pantay na ngayon b. At b ay magiging pabalik kung saan ang halaga temp ay, kung saan ay isang, dahil kapag gusto mong magpalit ng mga bagay-bagay, hindi mo pwedeng gusto magpalitan ng mga ito. Mayroon kang upang panatilihin ang isa sa labas dito upang ito Naaalala ano na, dahil sa sandaling magpalit ka ng isa, nakalimutan mo kung ano na ang orihinal na halaga ay, di ba? Kaya sa teorya, ang program na ito ay dapat na gumana, tama? Kung gusto ko upang magpalit ng dalawa, dapat silang magpalit. Kaya natin patakbuhin ang mga ito at makita kung gumagana ito. Kaya bilang maaari mong makita ang isang lalaki, x ay isang beses sa 1 at y ay isang beses sa 2. At kung i-print ko ito, x ay pa rin sa 1 at y ay 2. Hmm, ang program na ito ay hindi tila sa maaari gumagana ang paraan na gusto ko ito sa trabaho. Nais ba ng sinuman na kumuha ng isang shot sa hulaan kung bakit ito nangyayari? Ito ay may sa gawin sa ang paraan na ang iba't ibang mga bagay ay naka-imbak sa iba't-ibang lugar sa memorya. SIGE. Kaya mo guys hindi kailangang mag-alala masyadong marami ang tungkol sa mga ito ngayon. Ngunit alam na kubo lokal variable ay isang at b, dahil dito sa aming function, ipinahayag namin ang isang at b bilang ang mga variable na umiiral sa loob ng kubo, na function. Ngunit tulad ng makikita mo, ang mga parameter na ito ay ang pagkuha sa ay ini-imbak dito. Ngunit kami ay hindi tunay bumabalik kahit ano. Kami ay hindi tunay na pagbabago x at y. Kami ay lamang ng pagbabago ng isang at b. Kami ay nagkaroon ng kinopya x at y sa isang bagay na tinatawag na isang at b. Ngunit kami ay hindi tunay manipulahin x at y sa kanilang sarili. Sigurado ka guys na nakikita paano na ang nangyayari? Ay na lang na kinopya namin ito sa ibabaw, ngunit kami ay hindi aktwal na nag-iingat subaybayan kung saan sila ay sa memory. At kaya ngayon ang computer ay naghahanap ng, oh, hindi ko na tumakbo ang bagay na ito sa pamamagitan ng ang kaibig-ibig function. Ngunit x at y ay x at y pa rin. Walang nangyari sa ang mga ito dahil sa ang katunayan na ang mga parameter at lokal na mga variable ay naka-imbak sa isang iba't ibang ilagay sa memory. At ito ay isang mas mataas na antas konsepto na bibigyan namin ng simulan ang nakakakita sa susunod sa kurso. Ngunit lamang malaman na ito ay isang problema na maaaring mangyari at na kami ay malaman mga paraan kung paano pakikitungo sa mga ito sa susunod sa kurso. SIGE. Lahat tama. Kaya ang huling konsepto hindi namin talagang pagpunta sa pabalat na ang pagpunta sa maging kapaki-pakinabang para sa pset this week ay kung ano ang tinatawag na command line argumento. Kaya Rob sa kanyang panayam nagpunta sa pamamagitan ng uri ng saglit sa kung paano ito nagagawa. Mahalagang malaman na ang kapag ikaw ay sumusulat tulad ng isang pangunahing pag-andar, kapag kami Isinulat andar bago sa nakaraan, nagkaroon kami int pangunahing walang bisa. At ang dahilan namin ay may void doon ay dahil ang aming mga programa ay hindi kailangan na halaga ng input upang tumakbo, i-right? Kapag nagpatakbo ako Mario, hindi ko na kailangan upang aktwal na-type lamang sa isang bagay kapag nagpatakbo ako Mario. Maaari ko bang i-prompt ang user sa susunod. Ngunit iyon ay hindi palaging ang kaso. Halimbawa, sa ganitong Nagtatakda problema linggo, ikaw ay pagpunta sa hilingin na, sa Bilang karagdagan sa pagpapatakbo ng iyong mga programa, ikaw ay pagpunta sa nais na input ang ilang mga bagay sa tuwid na tulad ng sa iyo patakbuhin ang iyong mga program. Kaya ang paraan namin na tinatawag na isang argument command line, na ay tulad ng isang argument maaari kang maglagay ng direkta bilang sinusubukan mong patakbuhin ang iyong mga program. Kaya ang notasyon para sa mga ito, ito ay medyo complex na-hinahanap, ngunit ito ay talagang hindi na mahirap. Kaya int main-- ito lamang ay ang iyong pangunahing function. Sa argc comma string argv brackets. Kaya ang lahat na sinasabi na ito int argc lahat na nagsasabi sa iyo ay na ang mga ito ay ang bilang ng mga argumento dapat asahan ang computer. Kaya isang bagay na talagang mahalaga na subaybayan ang ay ang pisikal na pangalan ng iyong programa bilang ng bilang isa sa mga argumento. Kaya kung nais kong magkaroon ng aking program tumakbo plus isang karagdagang command line argument, ang tunay na ako pagpunta sa may dalawang. Argc ang aktwal na pagpunta sa maging dalawa. At pagkatapos ay string argv bracket-- lahat ng iyon ay ginagawa, ito ay nagbibigay sa akin ng isang array ng mga string na pagpunta upang ipakita lamang at mag-imbak ang lahat ng mga command line argument ay. Kaya halimbawa, kung nais kong magkaroon ng ganitong program, ./copy INFILE outfile, di ba? Iyan na lamang ang isang tipikal na utos Linux. Ano ang tunay ay argc? Gaano karaming mga argumento command line ay may tunay na ito? Ang lahat ng ito ay ay gumawa ng kopya ng isang infile ng pangalan ng isang file at ang mga kopya nito sa isa pang file, i-right? Iyan na ang lahat na ito ay ginagawa. Tulad ng iyong nakikita, ako ginagawa ito sa isang linya walang tunay na nangangailangan ng programa. Ano ang aming argc sa kasong ito? Gaano karaming mga argumento ang mayroon kami? Madla: Tatlong? ANDI PENG: Mayroon kaming tatlong, eksakto. Kaya napaka-intuitive na lamang sa tingin na ito lamang ang infile at ang outfile. Ngunit alam na ang pisikal na pangalan ng program ikaw ay nagpapatakbo ng mga bilang ng bilang isa. Kaya sa kasong ito, argc ay talagang tatlo. Paano ang tungkol sa kung ano ang, ay argv 0? Tandaan, ang lahat ng mga argumento command line ay naka-imbak sa isang array ng mga string. Kaya't kung sinusubukan kong i-access ito, kung ano ang Gusto argv bracket 0 ibigay sa akin? Madla: [hindi marinig]. ANDI PENG: Eksakto. Ito ay magbibigay sa akin ang mga tuldok slash kopya, dahil na ang 0 elemento, ang unang elemento ng aking array. Ano ang tungkol sa argv 1? Madla: INFILE. ANDI PENG: INFILE, eksakto. Ano ang tungkol sa argv 2? Madla: OUTFILE. ANDI PENG: OUTFILE. Ito ay isang bit nakakalito ngayon. Ano ang gagawin mo guys sa tingin argv 3 ay pagpunta sa pagbibigay sa akin kung sinubukan kong i-print na out? Madla: [hindi marinig]? ANDI PENG: Mayroon ka ba ng isang kamay up? Oo. Madla: Ang isang alternatibong. ANDI PENG: Eksakto. Kaya tandaan sa panayam na tayo Mayroon sa dulo ng isang lahi ng isang bagay tinatawag na isang null Terminator? Susubukan naming makakuha ng sa na ito rin karagdagang sa sa klase. Ngunit alam na sa notation, ang paraan ng iyong computer alam na ito ay ang katapusan ng array na ito Inilalagay ng isang bagay na tinatawag na isang null terminator o isang gitling zero. Kaya kung susubukan mong ma-access ang argv 3, ikaw ay pagpunta sa pindutin ang dash 0. Ito ay kahit na higit pa sa isang kahanga-hangang gawa tanong. Ano ang tungkol sa argv 4? Kaya ito ay nakalipas na null terminator, nakalipas na ang hangganan ng aming mga array. Ano sa tingin mo ay pagpunta sa mangyayari kapag sinubukan namin upang gawin iyon? Madla: [hindi marinig]? ANDI PENG: Sorry? Sabihin na ng kaunti louder? Madla: [hindi marinig]. ANDI PENG Oo. Iyon ay ang pangalan ng area kayo ay pinaka-malamang na makakuha. Ngunit alam na argv 4-- na nagbibigay-daan sa iyo upang ma-access mga lugar sa computer ang iyong memory na ikaw talaga hindi dapat hawakan, sapagkat ngayon alam mo kung ano argv ay. Alam mo na ito ay isang hanay ng mga laki 3 na may dot copy, infile at outfile. Kung susubukan mong pumunta sa ngayon lampas na na ikaw ay nakalipas na ang null Terminator, ang iyong computer ay malamang na naka-imbak sa isang bagay sa argv 4. At ikaw ay hindi tunay na dapat ay pinapayagan ng access sa argv 4, dahil mayroon ka ng isang file cabinet at ikaw lamang pinahihintulutan ng access sa mga tatlong istante. Ngunit kung susubukan mo upang maabot ang paraan na lampas sa ang shelf ng kung saan ikaw ay pinahihintulutan, ikaw ay pagpunta sa simulan ang panggugulo sa iba pang mga bagay sa memory ng iyong computer. Iyon ay magiging tunay, tunay masama. Kaya alam na lang. Maging maingat na kayo huwag lamang sapalaran simulan pag-access ng mga elemento sa isang array na ay hindi sa kung ano ang nais mong likhain. Yep. SIGE. Kaya kami ay pagpunta sa gawin ang isa pang terminal halimbawa dito. SIGE. Kaya Rob mabilis sa panayam sa ibang mga araw nagpunta sa pamamagitan ng halimbawa na ito, kung saan siya nagkaroon int pangunahing int argc string argv bracket, na kung saan ay nagsasabi sa akin na ako pagpunta sa may mga argumento command line. Siya ay may, kung argc katumbas katumbas 2-- tandaan, katumbas katumbas nangangahulugan ng paghahambing. Kung ito ay katumbas ng 2, pagkatapos ay ako pagpunta sa print hello, ano man ang unang element ng array ay. Iba Pa print, kumusta mundo. Ano itong pagpunta sa mangyari mahalagang? Maaari isang tao ipaliwanag lamang sa English kung ano ang ginagawa ng programang ito? Oo. Madla: Kung may isang taong nag-type sa isang utos at sinabi ng kanilang unang pangalan at apelyido, hindi lamang ito ay i-print ang mga unang isa at sabihing, hello, ano man ang iyong unang pangalan ay. ANDI PENG: OK, patakbuhin natin ito ipaalam. Kaya halimbawa, kung ako ay upang gumawa ng mga ang file na ito gumawa ng halo to-- kumusta to-- ano ang gusto mo sa akin upang input? Madla: Una at huling pangalan. ANDI PENG: Una at huling pangalan? Spaces? Madla: Oo. ANDI PENG: Maaari isang tao sabihin sa akin sa ngayon, kung ano ang argc? Basta may karapatan? Oops, sorry. Hayaan akong bumalik. Gaano karaming mga argumento command line are-- ka guys ay hindi maaaring talagang makita. Ngunit kailangan kong subukan upang mag-zoom in. Sinusubukan ko. Oo, mayroong tatlong, di ba? Ito ay tuldok slash hello, ito ay Andi, at ito ay Peng. Kaya kung ano ang gagawin mo guys sa tingin ito programa ay pagpunta sa ma-print out? Oh. Pasensya na. Maling pangalan. Ito ay pag-print out, hello mundo. Gusto ba na ipaliwanag bakit na ang nangyayari? Oo? Madla: [hindi marinig]. ANDI PENG: Eksakto. Kaya dito, ang mga kondisyon ay, kung argc katumbas katumbas 2. Kaya lamang sa kaso na mayroong dalawang argumento command line. Pagkatapos ako pagpunta sa i-print, hello, ano man ito. Ngunit ibang tao, ako pagpunta sa i-print lamang, hello mundo. Kaya ang isang tao na gusto upang bigyan ako ng isang halimbawa ng kung paano Gusto ko magagawang upang aktwal na kumuha ito upang i-print ang halaga ng argv 1? Ano ang gusto kong input dito? Isang bagay lamang, tama? Dahil ang tuldok hello sa naka bilang ng bilang ang unang argumento. Isa lang ang aking nalalaman. Kaya dot kumusta na lamang kung gagawin ko Andi. Hello, Andi. Ba maintindihan lahat ng tao bakit na ang nangyayari? Oo. Madla: Kaya ang puwang sa pagitan ng utos line-- ito [hindi marinig]? ANDI PENG: No. Kaya ang espasyo sa isang command line argument, x, sabihin sa iyong computer na ito ay ang simula ng isang bagong string. Kaya here-- ito tindahan string argv ang lahat ng iyong mga utos argumento line sa mga string. At upang ang mga puwang sa command line argument-- lahat na ginagawa ay magsasabi sa iyo, ito ay sa dulo ng isang string at ito ay oras na para umusad sa isa pa. Oo. Ito ay medyo mahalaga para sa iyong pset, dahil ikaw ay pagpunta sa pagsubok ng mga ito. Kaya ang magkaroon ng kahit sino anumang mga katanungan sa mga ito? OK, cool. Oo? Madla: Kaya ang dahilan ng gagawin mo ilagay sa halip integer argument calc ng [hindi marinig] ay kapag gusto mong mag-type ng karagdagang impormasyon upang [Hindi marinig]? ANDI PENG: Oo, eksakto. Ang ilang mga programa ay mangangailangan ka na input ng isang argument command line na ito ay magbabalik sa at na gumagamit na iyon. Oo. Madla: Kaya kung ano kung [hindi marinig]? ANDI PENG: Well, kung ano ang mayroon ako upang baguhin pagkatapos ay sa aking programa? Madla: 3 Just. ANDI PENG: Bakit na nangyayari, sa palagay mo? Madla: Dahil ang [hindi marinig]. Madla: Gusto mo na baguhin ito sa 2 [hindi marinig]. Madla: 1 at 2. ANDI PENG: 1 at 2, eksakto. Kaya sa kasong ito, gusto mo marahil nais na magkaroon ng dalawang printf statements-- isa na naka-print na argv ng 1 at ang isa na naka-print na argv 2. Narito. Maaari ko talagang gawin na tunay na mabilis. May pumunta ka. Oh. Hindi lubos kung ano ang iyong nais. Ngunit kung ikaw guys gulo sa paligid sa ang pag-format, ito ay darating out. Oo. Cool. Alam ko hindi namin ng kaunti sa maikling panahon. Ngunit lamang ako pagpunta sa mabilis na gastusin sa isang pagpunta sa pamamagitan helpful-- ilang minuto Madla: Mayroon kang dalawang minuto. ANDI PENG: Mayroon akong dalawang minuto? Salamat. Ang ilang mabilis na pset tips. Kaya para sa pset, ko lubos na inirerekomenda, tulad ng sinabi ko, lahat ng tao na basahin ang spec. Ikaw ay sumusulat tatlong programs-- isa tinatawag initials.c, isa na tinatawag caesar.c, isa na tinatawag vigenere.c. Ang ilang mahalagang mga tip na ka guys ay talagang gusto upang panatilihin sa mind-- kaya doon ay ang function na ito tinatawag atoi-- ayon sa gusto kong sabihin, isang trois. Hindi malinaw kung na tunay na kung paano mo ito sinasabi. Ngunit ang lahat ng ito ay ginagawa, ito ay inputting. Ito-convert ng isang string sa isang int. Kaya ang isang kumakatawan ASCII upang i integer. Ito lang ang pag-convert ng ASCII mga halaga sa integer value. Kaya tandaan argv, ang array na tindahan ang lahat ng iyong mga utos line arguments-- ito tindahan ng mga ito ang lahat bilang mga string. At kaya kung gusto mong ma- magkaroon ng isa sa kanila na maging isang integer, ikaw ay pagpunta sa may upang gamitin ang halaga dito. Modulo, tulad namin sakop mas maaga sa klase ngayon, ay nagbibigay-daan sa iyo upang magkaroon ng natitira sa kahit anong mayroon ka. Kaya kung mayroon talaga namin, talagang malaking bilang sa Caesar, kung ano kung kami ay may katapusan ng isang string ng mga Vigenere? Paano kayo ay pagpunta sa maaaring upang makakuha ng na i-wrap sa paligid? Kung pinindot ko z at gusto ko ito upang bumalik sa a, paano ako pagpunta upang makakuha ng na sa wrapper sa paligid? Marahil nais na gumamit ng modulo doon sa isang lugar. Pangalawa, mag-browse sa paligid iyong library. ctype.h. Iyan ay isang bagong library na namin. Makikita ninyo ang isang pulutong ng mga tunay, tunay kapaki-pakinabang na functions-- isupper, islower, toupper, tolower, isalpha, at iba pa. Lahat ng mga function na ay magiging lubhang kapaki-pakinabang kapag sinusubukan upang malaman kung, ay ang karakter na ito ng isang maliit na mga titik? Paano ko-convert na ito string sa isang uppercase? Lahat ng mga bagay ay tunay, lubhang kapaki-pakinabang para sa iyong pset. SIGE. Oras ngayong gabi mga 8:00 Office sa 11:00 sa TEAL classroom bukas pati na rin ang Miyerkules at Huwebes ng gabi. Office oras ay nasa commons. Lubos na iminumungkahi sa iyo guys lahat makapagsimula kaagad, dahil hindi mo nais na maging na kid na Huwebes ng gabi ay may mga problema pagsusumite ng iyong pset at ito ay tulad ng, hindi ko alam kung ano ang gagawin. Sinimulan ko, ako tapos na, i-submit. Subukan upang bigyan ang iyong sarili ng ilang mga kuwarto, dahil sa mga problema sa code palaging mangyari. Gusto mong tiyakin na magbibigay sa iyo ng iyong sarili isang pulutong ng mga oras para ma upang makumpleto ang psets. Cool. Kukunin ko mag-istambay dito. Madla: naka-Ito ba online? ANDI PENG: Hindi ko alam kung ito ay online na, ngunit ito ay. Kukunin ko mag-istambay dito kung ang sinuman may naka anumang mga katanungan. Salamat sa pagpunta.