[Powered by Google Translate] [Rock Music] [Music - "Happy Sama-sama" ANG pagong] David MALAN: Ngayon, magsisimula namin ang aming pagtuklas ng batayan ng computer science at ang aming panimula, ngayon, sa sining ng programming, na kung saan na isang halimbawa lamang. Ngunit sa parehong ugat ng problema paglutas, alam na Tradisyonal CS50 Puzzle Araw ay bukas. Kung hindi mo pa RSVPed para sa kaganapang ito, maaari kang pumunta sa cs50.net/rsvp. Maaari mong dalhin ang mga koponan ng dalawa o tatlo o apat. Ikaw ay hinamon na may mga problema tulad ng nakita mo up doon sa simula. Lahat ng mga bagong mga problema sa taong ito kung ikaw partook nakaraang taon, at ikaw ay magkaroon ng pagkakataon pagkatapos ay upang manalo ng ilang kamangha-manghang mga premyo. Kasama ng mga ito, Wii at ilang gift certificate at tulad, lahat ng habang nakikipag-hang-out kasama ang CS50 mga mag-aaral at mga kaklase at pizza at Facebook. Kaya higit pa sa na bukas kung nais mong. Ito pagkatapos ay CS50, para sa mga pagsali sa amin sa unang pagkakataon. At alam na ang kursong ito ay partikular na tinutukoy upang makakuha ng sa pamamagitan ng kursong ito sa panghuling pagtatapos nito, kung saan punto mo ay hindi lamang isang pag-unawa sa mga ito batayan ng computer science, ngunit kakailanganin mong ito praktikal na kasanayan set na maaari mong pagkatapos ay dadalhin pabalik sa iyong sariling department, kung ito ay ang engineering agham, applied matematika, ang pisikal na agham, natural agham, o tulad ng. Katunayan, kung ano ang kaya kapana-panabik na tungkol sa computer science mga araw na ito ay lamang kaya naaangkop sa sa lahat ng mga uri ng mga patlang. At kahit ngayon, ay lamang namin scratch sa ibabaw ng isang tradisyonal na programming language kilala bilang C, bibigyan namin sa halip ay tumingin sa isang bagay na tinatawag scratch, isang bagay na may kung saan ang kuwento ng pag-ibig na cookie ay ipinatupad ng isa sa iyong mga predecessors sa mga taon na nakalipas, upang sabihin sa mga kuwento, upang lumikha ng mga laro, upang lumikha ng interactive art, at aktwal na magsimula sa I-wrap ang aming isip sa paligid ang ilan sa ang mga pangunahing constructs na pailalim programming ngunit sa konteksto, tulad ng makikita mo, na higit na mas mababa nakakatakot, na higit na mas mababa arcane, kaysa sa makikita mo bago mahaba. At Napagtanto, masyadong, para sa mga mo pagsali sa amin ito semestre, ang mga parirala na kung saan namin natapos Miyerkules ng panayam, ito ay hindi mahalaga kung saan magtapos ka na may kaugnayan sa iyong mga kaklase sa klase na ito, ngunit kung saan mo, sa pamamagitan ng pagtatapos ng semestre sa linggo 11, magtapos na may kaugnayan sa iyong sarili karapatang ito napaka araw. Kaya nang walang karagdagang linggal, ito ay din nagkakahalaga noting na mga mas mababa kumportable, mga saanman sa pagitan, din, sa pamamagitan ng disenyo ng kursong ito, hindi sa anumang kasahulan vis-a-vis mga mas kumportable darating sa klase na ito. Tulad ng iyong makikita sa ibabaw ng linggo sa darating, mayroon kaming iba't ibang track para sa disparate background sa likod, ang mga seksyon para sa mga mas mababa kumportable, mas kumportable, mga isang lugar sa pagitan. Tulad ng iyong makikita ito weekend at sa susunod na linggo, ang dalawang bersyon ng pinaka-set ng problema sa parehong pamantayan at Hacker edisyon upang mo ang lahat ay maaaring self-piliin ang landas na ang pinaka kumportable. Kaya ngayon, hindi namin sumisid sa ito programming wika na tinatawag na sa simula. Ito ay isang graphical programming wika, at pa ito ay may parehong mga tampok ng ilan ng mas mataas na antas ng wika ay bibigyan namin galugarin mamaya sa semestre, kasama ng mga ito C at JavaScript at PHP. Subalit upang payagan sa amin upang maiwasan ang ilan ng distractions maagang ng syntax, ang mga bagay tulad ng mga semicolons, panaklong, at iba pang arcane detalye na, sa unang tingin, lamang hindi sa lahat ng intellectually kawili-wili at ay may posibilidad upang makakuha ng sa ang paraan mula sa ilang pangunahing unawa. Sa mga tuntunin ng ngayon ang suporta istraktura magpatuloy, natanto ito tool, CS50 talakayin, na kung saan ay naka-link sa kurso website mamaya ngayon, online forum ng talakayan sa kung saan magagawa mong upang magtanong ng bawat isa at kawani, at ito ay din ng isang tool, dahil kakailanganin namin makita ang susunod na linggo, na gagamitin namin medyo integratedly opisina oras pati na rin. Sa katunayan, mga oras ng opisina nagsisimula sa Lunes, at lantaran, ang unang linggo ng oras ng opisina ay medyo mababa key. Hindi sa tingin ko makikita mo scratch lahat na hindi naa-access. Sa halip maliwanag, dahil kakailanganin namin nakikita, at kaya kung ano ang gagamitin namin ang mga ito para sa ngayon ay i-extract ang ilan sa mga pangunahing ideya na, pagkatapos, magpumilit sa buong iba pa ng semestre. Ngunit simula Lunes, 8:00 PM sa pamamagitan ng 11:00 PM ay opisina oras sa Annenberg sa paglipas ng utak pahinga. Sectioning dalawang ay magsisimula ngayong gabi, kaya minsan ito weekend, pumunta sa cs50.net/section, at bibigyan ka hihilingin ng isang bilang ng mga tanong. Kasama ng mga ito, kung paano mo ilarawan ang iyong antas ng ginhawa sa ngayon? Walang mahirap, mabilis na tuntunin na kung saan bucket. Lang ang uri ng bagay na marahil alam kung ay kabilang sa mga mas mababa ang kumportableng o kung hindi man. At ngayon, walkthroughs. Ang problema detalye ng hanay para sa linggong ito, parehong pamantayan at Hacker edisyon magkamukha, ay online sa cs50.net bilang ng ngayon. At makikita mo na ang unang ng mga edisyon na ito, ang standard edition sa bawat linggo, sinamahan ng isang bagay na namin tumawag ng walkthrough ng code, ang session ng pinangunahan ng isa sa mga Fellows sa kurso ng pagtuturo upang gabayan ka sa pamamagitan ng, magbigay mga tip sa kumuha ka ng isang partikular na landas pagdating sa simula ng mga hanay ng problema. Kaya sa bawat isa sa mga problema nagtatakda, kung sakaling ikaw ay kinakapos para sa iyong sarili kung saan ko sisimulan, magsisimula ka na may mga walkthroughs. At sa katunayan, payagan ako upang ipakilala ang Zamyla Chan, ito pagtuturo kapwa taon na ay humahantong bawat isa sa mga walkthroughs. Zamyla? [Palakpakan] ZAMYLA Chan: Oh, hi, sa lahat. Ang pangalan ko ay Zamyla. Ako ng junior pag-aaral engineering sa Winthrop House. Ngunit kong subukan at magkasya sa loob ng maraming mga kurso computer science bilang ko kaya, kaya talagang ako nasasabik na humahantong ito walkthroughs taon. Walkthroughs, para sa akin, ay isang mahalagang bahagi ng aking CS50 karanasan. Sa panahon ng walkthrough, para sa bawat p-set, makikita namin pumunta sa pamamagitan ng nakatakda nang magkasama ang problema, tingnan ang mga problema, ang uri ng hatiin ang mga ito sa pamahalaang kagat. Bibigyan kita ng mga tip, mga diskarte, para sa pagkuha sa pamamagitan at pagsisimula. Umaasa ako upang makita mo ang lahat sa walkthroughs. Kung hindi ka maaaring gumawa ng ito sa tao, at pagkatapos ay mangyaring gawin ang tune sa online. David MALAN: Mahusay. Salamat sa iyo, Zamyla. Kaya Napagtanto na ang mga walkthroughs, sa katunayan, sa isang Biyernes hapon, ngunit ito ay sadyang sa pamamagitan ng disenyo upang ang kahit na mas gusto mo na hindi dumalo sa mga klase sa Biyernes hapon, ang mga video ay ang lahat ng mga mas mabilis sa paglipas ng sa weekend. Kaya Napagtanto na cs50.net ay ang lahat ng Zamyla walkthroughs. At na may petsa ngayon at oras, 03:00, Harberd Hall, 104. At ang ilan ng Fellows pagtuturo na rin ang handa ilang remarks para sa iyo sa pagliban upang bigyan ka ng kaunting pananaw sa kung ano ang kanilang karanasan na nanggagaling sa at pagpunta ng CS50 ay tulad ng. Kaya kung kami dim ang mga ilaw para sa sandali lamang, bigyan ko sa iyo ilan sa CS50 staff ng. Jackson STEINKAMP: kinuha ko ng CS50 nakaraang taon bilang isang primer anyo sa mahulog, at talagang blew aking isip. Hindi ko ay kinuha anumang klase ng programming bago, at hindi kailanman ay dumating sa anumang computer agham makaranas sa lahat. At lamang, Narinig ko ang buzz tungkol sa klase at nagpasya upang dalhin ito. Julia MITELMAN: Ito ay talagang masaya, talagang nakakaengganyo. Ko pa rin, sa araw na ito - Ko lang kamakailan Nakita ko ang tumbahin disk na David ay nagbigay sa amin sa aming unang araw ng panayam. Ako ay nag-hang ito sa aking wall. Marahil ito ay isang maliit na nerdy, ngunit ako ay nag-hang sa sa aking pader sa panahon ng klase bilang isang paalala kung paano cool na ito ay. Travis Downs: kaya nakakahiyang. Jackson STEINKAMP: Computer agham ay isang bagay mo dapat subukan kahit na ikaw ay hindi isa para sa ang mga tradisyonal na agham. Ang sarili nitong karanasan, at CS50 tiyaking handa ka suportado rin sa pamamagitan nito kasama ang tunay na hukbo ng mga TFs. Ali NAHM: ko kinuha ito bilang isang primer anyo, at kaya ko gumawa ng maraming ng mga bagong kaibigan. Nakakuha din ako ipinakilala sa buong konsentrasyon at buong paaralan ng engineering, at kaya ko lubos na inirerekomenda ito at tanggapin ka sa aming CS50 pamilya. Nagtuturo YANIV YACOBY: CS50 lang sa iyo kung paano gumamit ng mga tool na malawak na naa-access. Kailangan mo lang ng laptop, kailangan mong isang web browser, at kailangan mong malaman upang magsulat ng ilang mga code, at maaari mong talagang bumuo kapong baka bagay. Karen XIAO: lang kaya cool na upang gumawa ng isang bagay at may mga tao na gamitin ito at mayroon ang mga tao na makita ito, at na kung ano ang gustung-gusto ko talaga tungkol dito. TIM McLaughlin: - isang pakiramdam ng komunidad, tingin ko, sa ganitong kurso higit pa kaysa sa anumang iba pang mga kurso ko na kinuha sa ngayon. Hindi ka lang pagkuha ng isa pang - hindi ka pagpuno ng isa pang kinakailangan. Hindi ka lamang pagpunta sa aralin at pagpunta sa seksyong. Ngunit ginagawa tonelada ng mga bagay na ang lahat tungkol sa programming at lahat ng tungkol sa teknolohiya, ngunit hindi talagang nararamdaman tulad ng isang klase karamihan ng oras. Travis down: At sa unang araw, sila ipinasa ang cake, at Agad na ako ay ibinebenta. Jacob PRITT: Libreng kendi at pizza. ZAMYLA Chan: - hindi alintana ng iyong antas ng interes, sa tingin ko na CS50, makikita mo magsaya, at makikita mo intellectually stimulated. MARK GROZEN-Smith: Ito ay palaging isang partido sa klase, at ito ay isang party na gabi-gabi na nagtatrabaho sa iyong p-set. Jackson STEINKAMP: Sa bawat oras na tapusin ka ng problema sa set, ay pakiramdam tulad mo natapos ang proyekto. Melissa NIU: Ito ay presman taon, at ako ay tapos shopping. Mayroon akong aking apat na klase handa, at ko sa Annenberg. At maingay ako sa isang kaibigan, at sabi niya, hey, ako pamimili klase na ito ay tinatawag na ng CS50, at dapat mong sumama sa akin. Natapos pagkuha ito na pagkahulog, at pagkatapos ng klase iyon, ako Naisip siguro ako pupunta sa menor de edad sa CS. Ngunit dito ako, tatlong taon mamaya, pa rin ang pag-aaral ng computer agham at na aktwal na gawin ito bilang isang pangunahing, at mahal ko bawat sandali nito. Rob BOWDEN: Wala akong palagay. Ali NAHM: natin makita. Melissa NIU: hibang. Speaker 1: Pakiramdam ko ay tulad ng gusto ko napaka klisey. Gusto ko lang sabihin, i, kahanga-hangang. YANIV YACOBY: Accessibility. Jacob PRITT: Libreng kendi at pizza. Travis Downs: Hindi ma-i-isang klase na kamay out cake. TIM McLaughlin: energetic. VIPUL SHEKHAWAT: Essential. Rob BOWDEN: Hayaan akong sa tingin ng isang sagot. Tingin ko Nakatanggap ako ng isang bagay. Oh, diyos. Oo, Rob Bowden aking pangalan, at ito ay CS50. [Palakpakan] David MALAN: Lahat ng karapatan, kaya sabihin simulan upang ipinta ang isang larawan ng direksyon kung saan maaari naming pumunta, at sabihin ipakilala konseptong ito dito kilala bilang pseudocode. Kaya pseudocode ay hindi isang programming wika unto mismo. Walang teknikal per se, ngunit ito lamang ang uri ng pangkalahatang paraan ng pagpapahayag ng iyong sarili medyo tiyak, medyo algorithm, medyo procedurally, ngunit walang kinakailangang mag-alala tungkol sa anong wika ang iyong pagpapahayag iyong sarili. Ang ilang modelo ng Ingles at mga wika ng programming gamit ang na mangyari mong maging pamilyar, upang maaari naming simulan pagsusulat ng ganitong uri ng bagay habang namin. At sa katunayan, Joseph, maaari ko bang hiramin up ka sa entablado upang maging tagasulat dito? Nawala ko na magpatuloy dito nang maaga at nakalimutan upang ilagay sa ilang mga medyas ngayon, at ito makikita sa aming higit pa katawa-tawa halimbawa. Ngayon, kailangan ko na sa paglipas dito. Kukunin ko na gawin ang mga bahagi ng mga medyas. Kaya dito kami ay may isang maliit na scratch pad. Ito ay literal lamang TextEdit sa isang Mac. Namin ay hindi aktwal na pagpunta sa magsulat ng isang runnable programa, ngunit lang kami upang simulan ang sketching ang pseudocode batay sa sa ilan ng payo na ibinigay mo sa akin dito. Kaya dito ay ang aking tumpok ng mga medyas sa bahay. Wala akong mga medyas sa kapag gisingin ko up sa umaga, at na namin ngayon kailangang magsulat ng isang programa, isang algorithm ng mga uri, na kung saan upang makakuha ng mga medyas na ito sa aking mga paa. At sa kahabaan ng paraan, sabihin makita kung trip namin, o makaharap, ilan sa mga ideya na kayo ay pagpunta upang magsimula pag-iisip tungkol sa mas sineseryoso kapag programa baka ang iyong mga programa ay hindi kumilos medyo gaya ng nilalayon. Kaya umupo ako pababa dito. Mayroon akong aking tumpok ng mga medyas. Ano ang unang bagay na isang makatuwirang tao gagawin gawin kapag ang layunin ay upang ilagay sa isang pares ng medyas? May ninyo ako ng isang hakbang, at isang hakbang lamang. Oo? Madla: Bend pababa. David MALAN: Bend pababa, Okay. Hakbang dalawang. Hakbang dalawang. Madla: Piliin ang iyong sumuntok. David MALAN: Piliin ang iyong sumuntok. Okay, kaya bahagyang kalabuan dito, at ito ay isa sa mga unang stumbling bloke na kami ay dapat mong sadyang nakatagpo dito. Ito ay isang maliit na hindi maliwanag, kaya kunin ang iyong sumuntok. Fine, kukunin ko na ang isang ito, ngunit computer ng, Napagtanto sa loob lamang ng bit, ay hindi na uri ng tao na likas na hilig sa makatarungan piliin ang pinakamalapit na isa. Kami ay pagpunta sa upang magsimula, bago mahaba, pagpapahayag ating sarili mas tiyak. Lahat ng karapatan, kaya hakbang dalawang kunin ang iyong sumuntok. Namin ito. Hakbang tatlong. Sa likod. Madla: Maghanap ng pagtutugma ng pares. David MALAN: Maghanap ng mga pagtutugma pares. Okay, sa gayon ito ay mabuti. Mayroon akong upang piliin ang sumuntok. Kaya ang layunin ay upang makahanap ng pagtutugma suntukin, ngayon, ngunit kung ano ang ay na ibig sabihin nito? Ang isang makatuwirang tao, tulad ng sa Miyerkules kapag ko lang alam kung paano mahanap ang Mike Smith sa isang libro ng telepono, uri ng nagpunta sa kanilang mga likas na hilig. Ngunit dito, malinaw naman ito sumuntok dito, ngunit isang computer hindi kaya katutubo. Computer na ay pagpunta sa magkaroon ng isang koleksyon ng mga bits, bilang namin tinalakay sa Miyerkules, at mga ay nakaayos sa paanuman sa memorya. Ngunit ang punto ay computer na iyon ay may lamang ang kakayahang upang tingnan ang mga bagay nang paisa-isa, at sa katunayan, kahit kami tao - kahit na ito nararamdaman tulad ko glanced down at may split pangalawang mamaya ko malalaman kung saan ay ang suntukin, ang aking utak at ang aking mga mata siguro ay isang mabilis sagap ng mga medyas, at pagkatapos ay latched sa ang isa sa pinag-uusapan. Kaya kung namin ang lahat ng mga mas sinasadya ngayon bilang isang computer, paano ko mahanap ang pagtutugma pares? Well, mayroon kaming upang umulit. Mayroon kaming marahil loop sa paglipas ng ito gulo ng mga medyas sa palapag kung saan sinasabi ko isang bagay tulad ng PARA SA BAWAT suntukin, pumili ito up, AT KUNG ang parehong hugis at laki bilang sa iba pang mga, pagkatapos tuldok, tuldok, tuldok, ipagpapatuloy namin ang kuwento. Kaya para sa bawat suntukin, kaya ko kunin ang isang ito. Check ko ay ang katumbas ng isang ito. Hindi ito, kaya ko bang ilagay muna panig. Pagkatapos ko umulit muli. Ay ito isang katumbas? Hindi, hindi ito, kaya ko bang ilagay ito muna. Ang isa na ito? Hindi. Ang isang ito? Hindi, at iba pa. At pagkatapos ay sa wakas, sana, ako nakatagpo ito sumuntok dito. Kaya kung ito ay ang parehong hugis, laki, dalhin ito. At ngayon, kung ano ang aming susunod na hakbang dito? Oo? Madla: Kilalanin mula sa kaliwa. David MALAN: Okay, kilalanin kanan at kaliwa, kaya masuwerte, na uri ng mga gawa. Ang isang maliit na simetriko, o ko na lang pagod sila ng paraan na. Lahat ng karapatan, kaya nakilala ko ang karapatan ng. At ngayon, bago tayo magpatuloy, hayaan mo akong ituro kung ano Joseph ng na ginagawa dito bilang uri ng isang dalubhasa programista. Kaya muli, walang isang paraan ng paggawa nito, ngunit lampas lamang pagnunumero ang mga linya, Joseph na nagsimula na gawin ito uri ng indentation. Sa katunayan, ito ay isang karaniwang convention sa programming, kung saan kapag mo ng isang bagay na umuulit, looping estilo, tulad ng kami ay nagpapahiwatig sa Ingles parirala "PARA SA BAWAT suntukin, "ang convention sa pseudocode at, dahil kakailanganin namin nakikita, normal programming wika, ay lang i-indent. Pindutin ang space bar ng ilang beses, pindutin ang Tab key o ang tulad ng, kaya na nested sa ilalim ng "PARA SA BAWAT sumuntok" ang tipak ng bagay-bagay na kailangan mong gawin bilang isang resulta ng loop na. Kaya na ng lahat na conveying magkakahulugang mga. Ngayon samantala, ang "Kung ito ay ang parehong hugis at laki," ang katotohanan na "Dalhin ito" ay naka-indent sa karagdagang lamang ay nangangahulugan na ang tanging bagay na dapat mong gawin kung na kondisyon, kung na sangay, na tinidor sa kalsada, ay sa katunayan totoo. Kaya ngayon dito, hindi namin sa hakbang na apat, kilalanin ang kanan at kaliwang. Nakilala ko ang kanan. Ninyo akong bigyan hakbang ang limang. At technically, maaari naming talagang tumawag ang PARA SA BAWAT bagay - dapat mong marahil numero ng lahat ng mga linya kung kami ay pagpunta sa gawin ito. Joseph: [hindi marinig] David MALAN: [hindi marinig]? Okay, fine, ang lahat ng karapatan, makikita namin gawin ito ang iyong paraan. Lahat ng karapatan, kaya hakbang limang, kung paano ang gagawin namin ang karapatan na suntukin? Paano kami magpatuloy sa susunod, dito? Oo? Madla: elevator ng kanang binti. David MALAN: elevator ng kanang binti, Okay. Hakbang anim? Mabilis. Oo. Madla: Maghanap ng isang bukas na dulo ng sumuntok. David MALAN: Okay, hanapin ang bukas na dulo ng sumuntok. Kaya mabuti. Kaya dito, totoo lang, karaniwang likas na ugali ay lamang na ilagay sa kanang suntukin, ngunit na masyadong ay medyo malabo. Maliban kung ang computer o tao alam kung ano mismo ang ay nangangahulugan na, hindi ito upang maisagawa na, kaya dito, nag ko natagpuan ang pagbubukas ng stock. Hakbang pitong? Madla: Pindutin ang iyong mga paa. David MALAN: Touch paa. Okay, kaya ngayon namin pumunta - Lahat ng karapatan, ako pagpunta sa tumagal ng ilang mga kalayaan dito. Salamat. Hakbang walong? Ilagay sa sumuntok. Okay, kaya ngayon ako, sa tingin hindi namin malapit sapat upang pag-uri-uriin ng tumagal ito isa sa bahay. Karapatan lahat, kaya ito ay lumagpas. Kukunin ko ang ilang mga kalayaan sa kung ano ang ibig sabihin nito, aktwal na. Ilagay ang sumuntok sa. Lahat ng karapatan, ngayon hakbang sa siyam? Madla: Ilagay ang paa pababa. David MALAN: Salamat sa iyo. Hakbang siyam, ilagay paa, at ngayon, maaari naming ulitin. Kaya siguro, maaari na namin ngayon pumunta sa hakbang 10 at sabihin kilalanin pakaliwa suntukin, ngunit na baka pa nagagawa. At kaya pagkatapos, ang maaari kong pag-uri-uriin ng ulitin ang mga hakbang na ito. Ngunit ang ganitong uri ng begs ang tanong. Bago, ang huling oras na namin nais upang ulitin ang isang bagay, kami ginawa ito iteratively, muli at muli, PARA Loop BAWAT upang magsalita. Gusto ito gumawa ng kahulugan upang gamitin ang isang loop upang pangasiwaan ang parehong sa kaliwa at ang karapatan na suntukin? Dahil ito nararamdaman tulad ng mga pagpapatakbong ito ay medyo mas magkakahawig maliban para sa katotohanan na isa nagsisimula dito at isa nagsisimula dito? Ginagawa namin loop, o namin lamang panatilihin ang pagsusulat ng mga hakbang 10 at 11 at 12? Madla: Loop. David MALAN: Okay, kaya loop. Ko aktwal na maaaring sinabi lamang panatilihin ang pagpunta. Kaya bakit ito ang kaso? Well, ito ay talagang ang unang ng aming di-halata disenyo ng mga desisyon, at sa katunayan, ang isa sa ang mga sukatan na kung saan sisimulan namin upang pag-aralan, para sa ating sarili at para sa iyo, ang kalidad ng isang programa ay lamang kung gaano kahusay na dinisenyo ito ay. Nagawa mo sa kaunting halaga ng trabaho na kinakailangan upang makapag-trabaho ang tapos na ang pinaka-mabilis, alinman sa mga tuntunin ng ang iyong oras o sa mga tuntunin ng tumatakbo oras ng computer? Gaano karaming mga pagpapatakbo ang tumatagal upang maisagawa? Sa arguably, ito ay isang pagkakataon para sa isang loop dahil sa lalong madaling sisimulan ko ang pagkopya at pag-paste, bilang Joseph epektibong gagawin simulan ang paggawa sa isang sandali, ikaw ay ang uri ng pag-aaksaya iyong oras, at ikaw ay doble nagpapahayag. Ngunit sa parehong panahon, ito ay talagang lamang dalawang espesyal na kaso, kaliwa at kanan. At samantalang bago, maaari ba akong magkaroon ng 10 o 20 o higit pang mga medyas sa isang tumpok, talagang saysay hindi sa 50 linya ng code sinasabi check suntukin ito, pagkatapos ay sa susunod na, pagkatapos ng susunod na isa. Dito, isang maliit na mas mababa halata, at Gusto ko ipinanukalang na maaari naming pumunta alinman paraan. Maaari kaming magkaroon ng loop na iyon, bagaman ito lamang loop dalawang beses, o maaari lamang namin kopyahin at i-paste lang ng kaunti dito upang makakuha ng trabaho ang nagawa. Ngunit ang program na ito ay maraming surot, kaya na magsalita. Maaaring magkaroon ang ilang mga pagkakamali, mga error, o mga kaso ng sulok, kaya magsalita, na hindi namin ay talagang inaasahan. Walang nangyaring mali oras na ito, ngunit kung ano ang maaaring maling naganap habang execute ang program na ito? Madla: Wala kang anumang mga medyas. David MALAN: Kaya hindi medyas doon anumang. Kaya sabihin isaalang-alang na sulok kaso. Kaya kung maaari kaming mag-scroll bumalik sa hakbang ng isa, kaya hakbang sa isa ay yumuko down, kaya na sumusuri kung. Hakbang dalawa, kunin ang iyong suntukin, ngunit pagkatapos ay mahanap ang pagtutugma ng suntukin, kilalanin kanan. Namin uri ng ginawa ng buong bungkos ng mga pagpapalagay, at ito ay, lantaran, bakit programa minsan pag-crash ng. Kung ikaw, programmer, na ginawa ng ilang mga pagpapalagay, tulad ng tiyak mayroong pagpunta sa medyas o tiyak mayroong pagpunta sa memory pakaliwa sa computer, tiyak na mayroong pagpunta disk space kaliwa sa hard drive - Well, kung gumawa ka ng mga pagpapalagay na ito, at hindi iyon, sa katunayan, katotohanan, na alam minsan kung ano ang computer pagpunta sa gawin? At kung minsan, kapag makuha mo ang mga Umiikot na bola beach o sa frozen na Windows o tulad ng, na tiyak dahil ilang programmer ay hindi inaasahan ng mga tinatawag na mga kaso ng sulok. Ano pa ang maaaring maling naganap sa programang ito? Oo? Madla: Hindi mo ay may karapatan binti at kaliwang binti. David MALAN: Okay, hindi maaaring magkaroon ng parehong kanang binti at isang kaliwang binti, at iba pa Ang program na ito ay hindi maaaring maging pangkalahatang naaangkop. Iba? Madla: Maaari kang pumili ng up ng isang ulila suntukin. David MALAN: maaari ko na kinuha up ng isang ulila suntukin, kaya walang katugmang sumuntok na lang ay walang kapatid dahil nag ko nawala ito, ito ay gutay-gutay, sa wash pa rin, o ang gusto. Kaya na, ay hindi talaga ay paghawak. Oo? Madla: Maaari mo na magkaroon ng mga medyas sa. David MALAN: maaaring Mayroon na akong medyas. Hindi ko ay aktwal na suriin. KUNG wala kang medyas, pagkatapos ay magpatuloy upang gawin linya ng isa at dalawang. At na maaaring mangyari. Mahulog kang tulog sa iyong mga medyas sa at ang mga tulad ng, kaya na, masyadong, isang napaka-makatwirang kaso ng sulok. At maaaring isa isa? Madla: suntukin ay nasa loob out. David MALAN: Kaya sumuntok ay baligtad, kaya ginawa namin walang error check, sa maikling. Hindi namin suriin kung ang estado ng mundo ay tulad ng iyong inaasahan namin. Hindi namin suriin kung nahanap na namin ang aktwal na kung ano ang iyong hinahanap namin. At kahit ito ay uri ng isang katawa-tawa halimbawa kinasasangkutan ng medyas, sa pagtatapos ng araw, ito ay eksaktong uri ng mindset kailangan mong magkaroon habang pagsulat programa, kahit sa scratch pati na rin sa C, sa JavaScript, PHP, dahil kung hindi man, ang iyong mga programa ay nagpapakita ng ang katumbas ng na Umiikot na bola ng beach o magbunga hindi tumpak na mga resulta. Kaya maraming salamat dito sa aming tagasulat Joseph. [Palakpakan] David MALAN: Ang lahat ng mga karapatan, kaya kung ano ang, sa katunayan, isang computer program? Well, sabihin tumagal ng isang mabilis na sulyap sa isang kinatawan dito. Kaya ito ay isang programa na nakasulat sa isang wika na tinatawag na C. C ay medyo lumang mga araw na ito, ngunit maraming mga mas bagong mga wika ay binuo sa ibabaw ng mga ito. Sa katunayan, PHP, isa ng web-sentrik wika bibigyan namin patungo sa pagtatapos ng termino, may mismo kung ano ang tinatawag na interpreter, isang programa na nakasulat sa C, ngunit higit pa sa na sa maraming linggo mula ngayon. Ngunit ang programang ito, at ito ay kung ano ang ibig sabihin nito upang magsulat ng isang programa, kahit na sa isang napaka-simpleng. Mayroon kaming ilang medyo misteriyoso syntax dito, ngunit maaari mong marahil hulaan, kahit na hindi ka na program bago, ano programa na ito ginagawa. Sa katunayan, hindi ko alam kung ano ang printf ay, ngunit-print tiyak conjures up ang ideya ng pag-print ng isang bagay ang. At kaya oo, ang programang ito sa huli upang i-print out ng mga salitang "Hello, World." Ngayon, kung ikaw ay may isang Mac o PC o Linux computer, logro , hindi bababa sa kung nag-download ka ng ilang mga malayang magagamit na software, maaari kang na-pagsulat program sa ang iyong sariling laptop para sa pa ng ilang oras sa ngayon. Sa Mac OS, halimbawa, ito programa na tinatawag na Terminal na may isang Mac, na karaniwang sa iyong Utility folder, at sa pangkalahatan ay bubukas sa isang itim at puti o puti at itim na window sa kung saan mayroon kang prompt sa kung saan maaari mong i-type ang mga utos. Kaya ito ay talagang nakapagpapaalaala ng kung ano ang computer ginagamit bago graphical user interface, GUIs, ay dumating sa kahabaan. Ngayon, sa Windows, mayroon kang isang katulad na mekanismo sa form ng command prompt. Ngunit ano ako pagpunta sa gawin dito ay magbukas ng, sabihin nating, TextEdit muli, kaya ang parehong programa na aming ginagamit para sa pseudocode ng ilang sandali ang nakalipas, at ako pagpunta upang magpatuloy at isulat ang aking unang program. Isama stdio.h, anumang ay nangangahulugan na iyon, int pangunahing walang bisa, anumang ay nangangahulugan na iyon, at pagkatapos ay sa gitna dito, printf ("hoy, mundo."). At pagkatapos ay malapit quote, isara paren, semicolon. Ngayon ako pagpunta sa sige at pindutin ang Command-S. Pupunta ako sige at i-save ito bilang hello.c, kaya ang convention sa sa mundo ng C programming pangalanan ang file ng tuldok c. Ako lang ilagay sa Home direktoryo ng John Harvard, dito, i-click ang I-save, at ngayon ako pagpunta sa pumunta sa ito terminal na window, na muli ang black and white prompt kung saan maaari kong execute ng command. Maaari ba akong magpatakbo ng mga programa sa pamamagitan ng pag-type ng kanilang pangalan, hindi sa pamamagitan ng double-click icon sa karaniwang kahulugan. Ngunit bagay ay tungkol sa C ay na ang isang wika tulad ng C unang may sa form na ito, isang bagay na tinatawag source code. Isang bagay na mukhang isang maliit na tulad ng Ingles ngunit talagang mas tulad ng Ingles kaysa Joseph ng pseudocode ng sandali ang nakalipas. Ng kaunti pa arcane. Mukhang na sundin ang ilang mga pattern o panuntunan. Ang katotohanan na mayroon akong kulot mga tirante, semicolons, quote, anggulo tirante, nararamdaman tulad ng isang computer ay dumating na ito uri ng wika. Ngunit kung pumunta ako, ngayon, sa terminal window na ito, maaari ba akong magpatakbo ng isang utos na i-convert na source code ay isang bagay na tinatawag na object code. Na i-convert ang Ingles tulad ng syntax sa zero at na, ang parehong mga uri ng mga zero at mga namin uusapang tungkol sa Miyerkules. Ngayon, ako pagpunta sa magpatakbo ng isang command na tinatawag na kumalatong. Higit pa sa sa linggo sa darating, ngunit ito ay isang programa na may kung saan ang maaari kong i-convert hello.c sa isang buong bungkos ng mga zero at mga. Ngayon, ko na patakbuhin ang command na ito. Ko na patakbuhin ang kumalatong, at pagkatapos ay sinabi ko patakbuhin ang iyong sarili sa ang file na ito na tinatawag na hello.c, na nilikha ko ng ilang sandali ang nakalipas, at Mukhang ng walang mangyari. Ngunit sa katunayan, kung ako poked sa paligid ng aking home directory, Gusto ko makita na ito stupidly na pinangalanang a.out programa ngayon umiiral. Ito ay ang default na pangalan para sa isang programa kapag sumusulat sa C. Maaari naming i-override ang kalaunan, ngunit a.out ay pangalan ng programa ko lang convert sa zero at mga. At ngayon na ang mga ito ay zero at mga, aking Mac, sa kasong ito, o iyong Windows PC, maaari maunawaan ang mga bits, mga zero at mga. At kaya kapag ako ay pindutin ang Enter, nakikita ko "hoy, mundo!" Subalit ang isang bit maraming surot. Hindi ko lubos sabihin ang "hoy, mundo: air: -! Jharvard." Air ay ang pangalan ng aking computer. Jharvard ang pangalan ng account, kaya kung ano ang ko malinaw ligtaan mula sa programa? Ang ilang mga uri ng line break. Hindi ko pindutin ang katumbas ng Ipasok o ang carriage return, at ito ay, muli, testamento sa ang katotohanan na ang mga computer maaari lamang gawin kung ano ang sabihin sa iyo ang mga ito na gawin. At ang katotohanan na hindi ko sabihin sa computer ilipat ang cursor sa susunod na linya - mahusay, tiyak na ito ay hindi pagpunta sa lamang gawin ito presumptuously para sa akin. Kaya kung pumunta ako pabalik sa aking programa, at sinasabi ko \ n - Kaya \ n, dahil kakailanganin namin sa lalong madaling panahon makita, ay ang paraan ng kumakatawan ng kakaiba mga bagay tulad ng mga bagong line character, bagay na kung hindi man ay ang resulta ng pagpindot sa Enter key. Ngunit sa ngayon, alam na pagpindot ang Enter key lamang ang aming code tumingin kakaiba, kaya nagpasya ang mundo, alam mo ano, upang panatilihin ang mga bagay prettier, upang panatilihin ang mga ito sa isang linya, sabihin lamang sabihin \ n ay kumakatawan sa isang bagong linya. Hayaan akong resave aking file, bumalik sa window ng terminal, at a.out ng re-run, ang Enter. Pa rin maraming surot, ngunit bakit? Madla: [hindi marinig] David MALAN: Oo, kaya kailangan kong mag-recompile ito. Kaya upang makatipon ng isang program lang ang ibig sabihin nito ay convert ang mga ito mula sa pinagmulan code sa code ng bagay, source code sa mga zero at mga. Ngayon, lamang katunayan na ako pindutin ang I-save sa TextEdit ay walang nadadala sa mga zero at mga dahil ko kailangan muna Sabihin kumalatong hey, binago ko ang mga linya ng code, ang source code. Kailangan mong muling buuin ang a.out. Walang lumilitaw na nangyari, ngunit sa isang computer, sa command line, kaya na magsalita, kapag walang nangyari, na ibig sabihin lahat na rin. Kapag ang isang bagay ay mangyari, ito ay nangangahulugan na messed up ka, sa pangkalahatan. Kaya sabihin pupunta na ngayon sa a.out, at sa katunayan ngayon, mayroon akong "hoy, mundo. " At ngayon, kung ano ang tungkol sa mga zero at mga? Kung saan, sa katunayan, ay ang mga? Well, hindi ko talagang lamang uri ng sundutin sa paligid napaka mabisa. Hayaan akong buksan ang TextEdit. Narito ang a.out. Hayaan akong sige at buksan ito, at ito ay tila kung ano ang aking programa kamukha. Kaya binuksan ko na, hindi hello.c, ngunit a.out. Ngunit ito ay talagang hindi kung ano ang aking programa talagang ay. Malinaw, ito ay ang ilang mga uri ng alpabetikong character. Nakita ko zero at na, ngunit ito ay dahil a.out ay isang programa. Mga zero at mga - ngunit TextEdit, pati na ang pangalan ay nagmumungkahi, ito ay lamang tulad ng Notepad sa Windows, ay isang text editor, kaya nakakalito ang lahat ng mga zero at mga bilang kahit na sila ay, kung ano ang? ASCII na character. Kaya isipin ang sa Miyerkules, lamang namin dumating na ito arbitrary na pagma-map ng mga numero, o bit, sa mga titik ng alpabeto at mga simbolo ng bantas at tulad. Kaya TextEdit, na ito ay isang text editor misinterpreting mga pattern ng mga zero at mga na dapat na maging pagpi-print ng mga salita, tulad ng "hoy, mundo." Ito ay pagpapakita ng mga ito bilang ASCII, at na ang dahilan kung bakit ito mukhang isang maliit na magulo. Ngayon, may mga ilang mga pahiwatig ng kawastuhan in dito. Pansinin kung ako i-highlight, ay isang pahiwatig ng aktwal na "hoy, mundo, "kaya sa isang lugar sa programang iyon pangungusap ko sinulat ni. Ngunit sabihin sige at ngayon makita na may iba't ibang mga programa. Ito ay hindi isang gagamitin namin na madalas, ngunit ito rin ay may ng Mac at sa loob ng CS50 appliance. Hayaan akong sige at buksan sa isang programa na tinatawag na XXD. Bumalik sa araw, karamihan sa mga programa ay patas na may pangalang cryptically, at kaya trend ay patuloy. Ngunit-b ay nangangahulugan na ang tuhugan sa programang ito bilang binary. Huwag patakbuhin ito. Itong ipakita sa akin bilang mga zero at mga, at ito ay ang C programa namin lamang sinulat ni. Ngayon, ako, bilang isang tao dito, ako matapat ay walang ideya kung ano ang mga iba't ibang mga pattern ng mga zero at mga kumakatawan. Bumalik sa araw, ako, sa aking manuntok card o ang tulad ng, gagawin aktwal upang tingnan kung ano ang mga iba't-ibang mga pattern ng 01111000, aktwal na kumakatawan sa. O mas masahol pa, Gusto ko kailangan upang gawin ang pagsuntok o sa paglikha ng mga pattern ng mga zero at mga. Ngunit sa ngayon, sa pananampalataya na CPU, Intel loob, upang magsalita, sa loob ng lahat ng aming mga computer mga araw na ito, alam kung paano i-interpret ang mga zero at mga. At ilang mga zero at mga ibig sabihin ng naka-print. Ilang mga zero at mga ibig sabihin-play ng tunog. Ibig sabihin ng ilang mga zeroes at mga input ng user mula sa isang keyboard. Mayroong ang lahat ng mga uri ng iba't ibang mga pattern ng, ngunit hindi namin thankfully, bilang mga tao, tanging pangkalahatang kailangang mag-alala tungkol sa programming sa ito medyo mas mataas na antas. At sa iba pang mga klase ng CS maaari mong hanaping mabuti ang mas malalim at tumingin sa mga bagay tulad ng mga zero at mga, o pa iba pang mga bagay pa rin. Kaya ngayon sabihin convert ang. Natin ilipat masyadong mabilis ang layo mula sa C at lumipat sa isang bagay ng kaunti pa umaaliw, ng kaunti pa sa kapana-panabik na, sa na maaari naming makakuha ng aming mga animation at tunog at katulad na malinaw na escaped sa amin sa medyo primitive interface. Kaya ito parehong programa sa C kinakatawan ngayon sa programming language na tinatawag scratch tulad ng sumusunod. Ito ay katumbas ng ito kumusta na programa ng mundo na nakasulat sa ito piraso ng puzzle style wika na tinatawag na scratch. Kaya ipaalam sa akin sige at buksan up na ito napaka programa. Muli Ito ay tinatawag na sa simula. Malayang magagamit, at ito ay ang parehong bagay namin makapagsimula ngayon. Kaya ito dito ay wala, at ito ay pinaghiwa-up sa ilang mga iba't ibang piraso. Sa kanang tuktok, mayroon kaming ang tinatawag na entablado, at sa katunayan, na kung saan ang mga cookies gumanap ng kaunti lamang ang nakalipas. At sa na yugto ay bagay na tinatawag na sprites, character, o bagay, o entidad. Ito ay hindi talagang mahalaga kung paano sa tingin mo sa kanila, ngunit sila Programmable, naitataas na mga bagay, at sa kasong ito, ito programa na sinulat ni ang aming mga mag-aaral ay may ilang mga gingerbread mga cookies, ilang ng pabilog cookies, ang maramihang mga puso, ng buong bungkos ng mga salamin sa mata. Dahil dito, siya ay programa ang bawat isa ng mga indibidwal na character hiwalay. Ngayon, kung ano ang ibig sabihin ng programa ang mga character na ito? Well, hayaan mo akong sige at mag-click sa ang kaliwang kamay cookie na ito at mag-scroll sa itaas sa kaliwa dito. Sa kaliwang tuktok ng aking screen ngayon ang gayon tinatawag na script area. Ito ay uri ng isang blangkong slate, simula, papunta sa kung saan maaari ko i-drag at i-drop ang mga piraso ng puzzle na, lantaran, gawin eksakto kung ano ang sinasabi nila. Sa pinakatuktok ng ito stack ng mga piraso ng puzzle ay ang salita Kapag ang Green Flag-click, at kung hindi mo mapansin bago, ang paraan na sinimulan ko na cookie kanta ng pag-click, literal, ng isang kulay berdeng bandila. Kaya na piraso ng puzzle sa kaliwang tuktok ay nangangahulugan na kapag ang tao pag-click ang berdeng flag, ay nagpatuloy gawin ang mga sumusunod na mga bagay. Ngayon, kung ano sila cookie magpatuloy gawin? Hindi ko talaga alam kung paano i-interpret ang pa, ngunit ang cookie tila-set nito mag-uka sa zero, pagkatapos ito naghintay tatlong segundo, pagkatapos ito ay nagbago nito pangkat sa isa, pagkatapos ito naghintay isang segundo, pagkatapos ay nagbago nito mag-uka pabalik sa isa. At pagkatapos ito aktwal na mukhang isang bit ng isang bug, hindi dapat upang baguhin ang mga mag-uka muli at muli maliban kung ito ay ay nagbago sa ibang lugar, ngunit ang serye ng mga hakbang na ito ay kung ano ang dictating ang pag-uugali ng mga ito partikular na cookie. Kaya sabihin aktwal na mag-scroll nang pabalik at hindi tumingin sa isang bagay masyadong complex pa. Hayaan akong magpatuloy at pumunta sa File, New, at kumuha ng malinis na slate. Kaya ngayon, katunayan ako ay isang walang laman na lugar ng script, ang isang walang laman na yugto, sa aming scratch default engkanto, at sa kaliwang tuktok sa aking screen ko ang papag ng lahat ng kanilang mga magagamit na mga piraso ng puzzle. At hindi namin pumunta sa pamamagitan ng halos na marami sa mga bagay na ito ngayon dahil, muli, ang karamihan ay maliwanag, ngunit kami ay subukang maikategorya ang mga ito at ituro ang pagkakatulad may mga hinaharap na wika na kung saan ay namin sumisid. At sa kaliwang tuktok dito ay ang unang Kapag ang Green I-flag click na, kaya ipaalam sa akin i-drag ito sa paglipas dito, mag-zoom out ng kaunti. At kung ako i-click ang berdeng bandila, wala talagang mangyayari dahil Hindi ako naka-attach ang anumang logic, ang anumang pahayag kaya magsalita, upang na berdeng flag, kaya hayaan mo akong pumunta sa mga kategorya sa paglipas dito. Ako ay kasalukuyang sa Control kategorya. Sa halip ako pagpunta sa pumunta down sa kategorya na hitsura, at may isang buong grupo ng mga bagay dito na sinasabi Sabihing, Isipin, Baguhin ang Kulay, Lumipat Costume. Kaya maaari mong gawin ang ulok mga bagay sa mga costume at tunog at tulad. Hayaan akong magpatuloy at sabihin lamang Sabihing, at ngayon mapansin bilang drag ko at drop ito piraso ng puzzle, ito ay pagpunta sa gusto sa aldaba sa nararapat na hugis. Kaya kapag pumunta ako magpatuloy at ipaalam sa pumunta ng aking mouse, i-lock nila magkasama, at ngayon kung pumunta ako sa paglipas dito at i-click ang berdeng bandila, cat ay sa katunayan kamustahin dahil iyon ang kung ano ang loob ng puting kahon na ito. Namin sa lalong madaling panahon makita na ang puting kahon na ito ay kung ano ang tinatawag na argument, o isang parameter. Ito ay isang paraan ng pagbabago ng pag-uugali ng, sa kasong ito, ang isang piraso ng puzzle, ngunit kung gusto ko upang sabihin kung ano mismo ang ko sinabi bago, kamustahin, mundo, maaari ko ngayon bumalik sa paglipas dito, i-click ang i-play, at "hoy, mundo" ay kung ano ng sinabi. Kaya literal namin ay mga programa na ngayon. Ito ay hindi lahat na nakapanghihimok ng isang programa, ngunit hindi bababa sa ito ay isang maliit na mas nakakahimok kaysa isang bagay na ganito, sa unang tingin, tulad nito. At maaari naming masyadong mabilis ang lahat ng mga mas makahulugan dahil sa simula, tulad ng sa iba pang mga wika, may lahat ng uri ng pahayag, hindi lamang Sabihing o pag-print ng isang bagay, ngunit maaari mong gawin ang mga bagay tulad ng naghihintay, dahil lamang namin nakita na may ang cookie, ang ilang bilang ng mga segundo. Maaari mong i-play ang mga tunog sa kapaligiran ng scratch tulad ng maaari mong sa isang normal na tunog-play ng computer program. Maaari mong suriin kung ano ay tinatawag na Boolean expression. Kaya ngayon, sabihin simulan upang idagdag sa aming toolkit ilang terminolohiya na aktwal na nauugnay sa halimbawa na Joseph at ginawa ko dito sa mga medyas. Kaya pahayag lamang ang mga salaysay ng katotohanan. Gawin ito. Isang panuto para sa engkanto, o sa akin ang tao, upang gawin ang isang bagay. Ang isang Boolean expression ay isang bagay na may halaga, tinatawag na halaga sa katotohanan, na alinman sa zero o isa, mali o totoo, off o sa, walang o oo. Ba talagang hindi mahalaga kung paano sa tingin mo ng mga ito, ngunit ito ay isang binary estado. Bilang Nate tinalakay sa Miyerkules ng video, dalawang iba't ibang mga bagay. Kaya sa simula, Boolean expression mangyari upang tumingin tulad ng mga asul na mga bagay dito, at sa kasong ito, ang tanong mark nagpapahiwatig na hinihiling ng isang tanong. Ay ang pusa, o engkanto, ng pagpindot sa mouse pointer? Kaya ito ay isa lamang halimbawa ng isang bloke ng scratch na pagpunta -daan sa amin upang suriin ang oo o hindi, ang mouse pagpindot sa engkanto sa screen? At ito ay maaaring maging kapaki-pakinabang kung ang iyong aktwal na nais na gumawa ng mga bagay gamit ang iyong mouse. Bilang karagdagan sa mga Boolean expression, mayroon kaming mga bagay tulad ng mouse sa down, sa gayon ay maaari mong i-detect na uri ng tanong pati na rin. Maaari naming gawin ang mga matematika kung gusto iyong aktwal na, at may aktwal na mas nakakahimok paggamit para sa pa sa dalisay ng aritmetika, dahil kakailanganin namin nakikita. Palsipikado randomness at gumawa ng iyong programa ay lilitaw sa tingin o kumilos naiiba batay sa ilang tila random na mga halaga, at pagkatapos ay mayroon kami ng mga bagay tulad ng Boolean expression tulad AT. Kaya kung ang iyong aktwal na nais na suriin ang dalawang halaga, makikita namin makita sa Scratch na maaari naming tunay na subukan kung ito ay totoo at ito ay totoo. Halimbawa, sa kaso ng aking mga medyas, maaari ko nag sa pinakadulo nagtanong ang tanong kung kaliwa sumuntok sa at kanang sumuntok ay, isara. Lahat ng tapos ka na para sa araw, kaya na isang pagkakataon para sa na. Kaya sabihin at susubukan piraso ng ilan sa mga ito nang magkasama at pumunta sa isang ilang mga halimbawa nakapanghihimok kaysa ang isang ito. Kaya hayaan mo akong magpatuloy dito at buksan ang ilan sa mga halimbawa na palaging sa website ng kurso pati na rin, at buksan ang hello2. Kaya sa hello2 dito, mayroon kaming programa na ginagawa ng ilang bagay, ngunit hindi ito gawin ito kasing epektibo tulad ng maaari naming. Kaya dito sinasabi nito na "hoy, mundo" para sa isang segundo at pagkatapos ay naghihintay para sa isang segundo. At pagkatapos ay ginagawa itong muli, at pagkatapos ay ginagawa itong muli. Kaya kung ako i-click ang berdeng bandila, scratch nagsasabing "Kamusta, mundo. Kumusta, mundo. Kumusta, mundo. "At ito ay malinaw naman kandidato ngayon para pagpapabuti. Ano ang nasa gilid pagpapabuti, sana, maaari naming ngayon kung sa simula sumusuporta ang konsepto? Ang ilang mga uri ng loop. Ang ilang mga uri ng pag-uulit, ngayon, ay magaling, kaya ipaalam sa akin aktwal na subukan na. Ipaalam sa akin aktwal pumunta at ilipat ito. Kaya paunawa ay maaaring bumaklas ng mga bloke kasing-dali ng maaari mong idagdag sa -attach sa kanila. Hayaan ang mga pumunta sa akin sa ilalim ng Control, mag-scroll pababa dito, at sa katunayan, ito piraso ng puzzle dito, Ulitin at Habang Panahon at Magpakailanman Kung. Kaya may isang bilang ng mga paraan ng pagpapahayag ng mga looping constructs sa simula. Ang gusto ko marahil dito ay hindi Tuluyan dahil lamang ako gusto ito mangyari tatlong beses, ngunit marahil Ulitin. Kaya hayaan mo akong i-drag Ulitin sa paglipas dito, i-drag at drop ang mga ito, at ngayon sa halip ng pagsabi ng "hoy, mundo" tatlong hiwalay na beses, hayaan mo akong i-drag ito piraso ng puzzle in dito. At kahit na ito ay hindi mukhang upang magkasya, ang programa ay ang smart sapat upang mapagtanto na ito palaguin upang punan, kaya ang hugis na bagay at hindi ganap na laki. Hayaan akong baguhin ang pag-uulit sa tatlong, at ngayon ay hayaan mo akong umalis magpatuloy at i-drag Maghintay Isang Pangalawa sa doon pati na rin. Ito upang lumagot na bigla sa pati na rin, at kaya ako ngayon upang i-drag ang mga guys na ito sa dito at magtapon ng mga ito ang layo dahil ako hindi na kailangan ang mga ito. Hayaan akong mag-zoom out at i-click ang berdeng bandila ngayon, at kami ay may ang parehong programa ngunit, bilang hinulaang ko bago, mas mahusay na idinisenyo dahil maaari ka isipin kung gaano masama sa programang ito ay makakuha ng, tiyak aesthetically, kung mayroon kang simulan ang pagkopya at pag-paste, pagkopya at pag-paste, o ng pag-drag at drop ang parehong darn bagay muli at muli. Ngayon, lamang sinasabi ng mga bagay-bagay sa screen, pag-print sa screen, talagang lahat hindi na kapana-panabik, kaya sabihin buksan ang isang ikatlong pagkakaiba dito. At ngayon, tulad ng makikita mo, ito makikita mabilis na makuha nakakainis - [Ngiyaw] David MALAN: - ngunit ring uri ng nakatutuwa. [Ngiyaw] David MALAN: Okay, kaya mas mahusay, at maaari naming tiyak na gamitin iyon parehong paglipat ng asiwa ito sa isang looping istraktura, ngunit sabihin gawin itong mas kawili-wili pa rin. Hayaan akong sige at buksan up ng isang ika-apat na pagkakaiba dito, kung saan ako tumagal ang mga bagay ng isang hakbang karagdagang. Kaya ayon na ito, ulok bagaman ito ay sa unang sulyap, kung ano ang programang ito gawin? Ito ay pagpunta sa ngiyaw-sabay. Bakit? Well, isa, Sa pagkaalam ko, palaging hindi bababa sa dalawang. Walang paniwala ng randomness dito. Ko literal hard-code ang isa at dalawa, ngunit ito ay isang Halimbawa ngayon ng aktwal na paggamit ng Boolean expression. Karamihan bang bilang Joseph ginawa sa kanyang pseudocode, ang indentation KUNG mahanap ka pagtutugma ng medyas pagkatapos gawin ang mga sumusunod, dito mayroon kaming isang expression KUNG isa ay mas mababa kaysa sa dalawang pagkatapos - at sa katunayan namin kahit ng kaunting indentation, kung saan ang lilang ay bahagyang naka-indent sa kanan - Ka upang i-play ang sound ngiyaw. Ngayon, sa kasong ito, na ang isa ay laging mas mababa kaysa sa dalawang, kaya ito ay ang uri ng basura ng isang kalagayan. Ngunit magagawa naming, dahil kakailanganin namin nakikita, mag-plug ng iba pang mga bagay sa mga placeholder kung saan isa at dalawang ngayon ay. Kaya natin ngayon advance sa limang halimbawa ng mga ilang hellos at pagtingin sa kung ano ang programang ito pagpunta sa gawin. Kaya ngayon, sa isang Ingles na pangungusap, kung paano ito programa kumilos? Madla: Meows sa kalahati ng oras. David MALAN: kalahati ngiyaw ng oras, kaya ito ay isang paraan ng conveying isang napaka-simpleng ideya. Kahit na mangyayari namin na ang paggamit ng ilang mga inequalities dito sa ilang mga numero, ito ay talagang lamang programmatical paraan, ang isang tiyak na paraan, sinasabi kung barya ay lumalabas ulo, pumunta magpatuloy at ngiyaw. O pasalungat, kung ang barya sa ay lumalabas tails, hindi ngiyaw. At sa kasong ito, kung paano namin ipahayag na? Susubukan naming pumili ng random na numero mula 1 hanggang 10, at kung Ang numero ay mas mababa sa 6, magpatuloy at ngiyaw. At kung paano ang ito makakuha ng in dito? Well muli, mapansin lang ang pag-drag at pag-drop at bagay latches sa lugar. Kaya ngayon sabihin makita kung gumagana ito randomness. Hayaan akong magpatuloy at i-click ang berdeng bandila. [Ngiyaw] David MALAN: Okay. [Ngiyaw] David MALAN: Okay. Okay, mahusay, kaya namin nakuha ng mga ulo, ulo, tails epektibo. Tails. [Ngiyaw] David MALAN: Mga Paunang abiso. [Ngiyaw] David MALAN: Mahusay. Ito ay palaging mahirap kapag lamang istatistika kang makakuha ng isang masamang patakbuhin, at lahat ng mga ulo, at ang programa ay aktwal na hindi gumana tulad ng gusto mong umaasa. Ngunit ang oras na ito, nagtrabaho, at tila namin na magkaroon, kung ginawa namin ito isang walang-katapusang bilang ng mga beses, 50% logro. Ngayon muli, hindi lahat na kawili-wili, lamang ang paggawa ng pusa ngiyaw, kaya sabihin makita kung hindi namin advance ito ng kaunti pa dito sa bersyon anim. Sa ngayon, mayroon kaming talagang nakakainis na bersyon - [MEOWS BAWAT FEW SECONDS] David MALAN: - at ito ay kung ano ang kilala, pangkalahatan, bilang isang walang-katapusang loop. Kaya walang-katapusang loop sa kasong ito nararamdaman masama. Tiyak na ito upang simulan ang tunog masamang, at pa walang katapusan loop ay hindi palaging masamang. Maaari mong isipin ng konteksto sa mga programa sa computer kung saan ikaw ay aktwal na gusto ng isang walang-katapusang loop? Oo? Madla: Kapag nais mong suriin ang isang kalagayan. David MALAN: Okay, kapag nais mong panatilihin ang check ng isang kondisyon? Tulad ng kung ano? Madla: [hindi marinig] David MALAN: Okay, mabuti, kaya kung mayroon kang ilang mga programa, ang ilang uri ng bagay sa automation ng bahay, kung saan nais mong i-Patuloy monitor ay isang bagay na ang kaso. Ay ang mga ilaw sa? Ay ang mga ilaw sa dahil maaaring mayroon kang timer, at nais mong ang mga ito upang pumunta off, maaaring kailangan mong gawin ang isang bagay muli at muli. At sa katunayan, pagsasalita ng mga timers, anumang mo na Orasan sa iyong computer o digital na mga relo, na ang isang walang-katapusang loop. Patuloy na i-update ang oras dahil ito ay patuloy check at check at check Binago ang oras sa, at kung gayon, naku, ang aking diyos. Sa wakas ay nagbago ang orasan. Kailangang ipakita na halaga sa iyo. Kaya kung saan karamihan ng mga oras na walang-katapusang loop ay isang pagkakamali, o hindi bababa sa isang mahinang desisyon ng disenyo, minsan ginagawa nila ang kanilang mga halaga. Well, sabihin advance pa dito sa hello7. Kaya ngayon ang programa ay makakakuha ng kaunti mas interactive. Hayaan akong mag-zoom in dito, at muli, ito ay kung ano ang magaling tungkol sa scratch. At gagamitin namin ang mga ito upang maging malinaw, simula, lamang ngayon at sa -set ang problema sa susunod na linggo. Ngunit sa Monday, namin sumisid sa C. Sa programang ito dito, ginagawa nito, magpakailanman, ang mga sumusunod. KUNG pagpindot sa mouse pointer - ngayon, na ang konteksto dito? Well, at notice na na napili pababa dito sa ibaba karapatan ay pusa, engkanto isa, kaya ang mga script, ito programa, nalalapat partikular sa kanya. Kaya kung ang pusa na pagpindot ang pointer ng mouse, pagkatapos ito ay pagpunta upang i-play ito down at maghintay ng dalawang segundo, at ulitin ad nauseum. Kaya sabihin sige at pindutin ang pag-play. Walang mangyayari, ngunit kung gusto kong alagang hayop pusa ngayon, maaari ko lamang. [Ngiyaw] David MALAN: kaibig-ibig. [Ngiyaw] David MALAN: Okay, mas nakakainis, ngunit nakakakuha ng mapurol, kaya sabihin ilipat sa at makita kung hindi namin maaaring mag-inyeksyon ng kaunti pa sa logic. Na Halimbawa pitong. Dito sa halimbawa walong, kami ay pagpunta sa ipakilala ng Iba Pa kondisyon. Kaya magkano tulad ng isang literal na tinidor sa kalsada, kung saan maaari kang pumunta pakaliwa o maaari kang pumunta sa kanan, kundisyon sa programming wika tulad ng simula, o bilang namin makita ang C, maaari daan sa iyo upang pumunta sa isang direksyon o iba pang pamamagitan ng isang KUNG ibang tao bumuo. Kaya medyo literal, KUNG paghawak ng mouse pointer, ang ay-play ang ilang mga tunog, iba pa ito upang i-play ang isa tunog, ngiyaw. Ngayon, kung maaari mong magpakilala mula sa pangalan ng mga tunog, maaari mong malamang na hulaan kung ano ang programang ito nilalayong manawagan up ang ideya ng. Cat na ito ay meowing maligaya. [Ngiyaw] David MALAN: maligaya, ngunit hindi medyo i-hinawakan. [ROARS] David MALAN: Kaya ngayon mayroon kami ng pusa na ang ay sumigaw sa iyo. Lahat ng karapatan, maayos, isang huling halimbawa may pusa dito, at sabihin bukas bersyon siyam ng ito dito. Sa ngayon, mayroon kaming ang susunod na pinaka-nakakainis na tunog na maaari kong mahanap, kaya kami ay may isang walrus o dagat leon dito na pagpunta sa gawin ang mga sumusunod. [Selyo aw-aw] David MALAN: Okay, kaya ito ay pumunta sa hanggang sa ikaw ay malaman kung paano programa na ito ay gumagana. Kaya oras na ito, ang mga hayop na ito ay may dalawang mga script, at kung ano ang kawili-wili dito ay na ang mga script na ito ay upang maisagawa kahanay. Kaya dahil sila parehong simula may isang berdeng bandila click, ito ay tulad ng pagpunta tulad nito, at parehong programa ay magsisimulang tumakbo ito sabay-sabay kahit na sila ay looping magpakailanman. Kaya sa tuktok na script, Mayroon akong ilang logic. Anong mga tampok na nagbibigay up doon? [Selyo aw-aw] Madla: [hindi marinig] David MALAN: Kung ang? [Selyo aw-aw] Madla: Kung naka-mute na sa zero, ito upang panatilihing-play ng tunog. [Selyo aw-aw] David MALAN: Okay, mabuti. Kaya KUNG naka-mute, anumang ito ay, orange bagay na ito ay zero, Pagkatapos i-play ang tunog ng dagat leon at sa tingin "Oh, hi, "para sa dalawang segundo. Ngayon, hindi ko alam kung ano ang naka-mute ay, ngunit zero conjures up ang ideya ng mali o off. Kaya kung naka-mute false, kaya kung hindi naka-mute, panatilihing-play ang tunog. Karapatan lahat, maayos, paano naming ihinto ang bagay na ito? Well, tingnan natin sa pangalawang script pababa doon. Ang pangalawang script sabi naka-mute sa zero. Mapansin ring orange, kaya kung ano ang scratch ito kulay bloke sa parehong lilim kung nito-uri-uriin ng lohikal na may kaugnayan. Kaya tulad ng naka-mute up itaas ay orange, kaya ay naka-mute pababa dito nabanggit sa orange block. Ngunit ito ay isang variable na asignatura, kaya tulad sa alhebra, mayroon kang x at y at z, programming mayroon kang variable, ngunit sila sa pangkalahatan - natin i-pause para sa isang sandali at figure kung paano upang itigil ang tumatahol na ito. Paano ko gawin ito? [Selyo aw-aw] David MALAN: Okay. Ito tumigil. Okay. Kaya tulad sa algebra mayroon kang variable x, y, at z, ngunit sa mga programa, nagkakaroon ang mga variable tulad ng x, y, at z ay frowned kapag dahil wala ang mga ito sa lahat ng nagpapahayag. Wala silang semantiko kahulugan sa anumang, kaya sa karamihan wika programming, mga variable ay maaaring magkaroon ng ganap na nasimulan pangalan o salita o parirala, gusto naka-mute, sasabihin ano ang ginagawa nila. Kaya din ang pangalawang script na ito ay nakikinig magpakailanman, at sinabi kung ang key, ang keyboard key ng Space, pinindot, tandang pananong. Kaya may isang kondisyon na may isang Boolean expression na pagpunta upang sagutin ang isang tanong alinman makatotohanan o mali, Mayroon akong sa loob nito KUNG ang space key ay pinindot AT KUNG naka-mute ay zero, itakda naka-mute sa isa, magtakda ng ibang tao naka-mute sa zero. Ang iba pang tinidor Kaya sa kalsada, at paunawa kung paano nag ko Nested ang dalawang KUNG kondisyon, ay isang paraan ng pag-check ang Space Bar pinindot dahil kung gayon, alinman ko nais upang pumunta ito paraan o na paraan. At paano ko saliwain ang halaga ng naka-mute? Kong suriin ito zero? Kung gayon, gawin itong isa, tao gawin itong zero sa samakatuwid na magpalipat-lipat nito dalawang estado. Karapatan lahat, kaya kami ay may pagkatapos ay ang ilan sa mga pangunahing constructs. Mayroon kami ng Boolean expression, at mapagtanto rin, ito ay hindi lahat na pamilyar. Sa katunayan, narito ang isang mabilis na screenshot ng kurso sa Harvard CS50 shopping tool, at anumang website out doon na may checkbox at drop down na talaga, lahat ng oras na ito, na ginagamit Boolean expression. Sa kasong ito dito, kung ikaw ay i-click ang checkbox sa tabi ng Siyempre mas malaki kaysa sa o katumbas ng 4.5, o sa parehong sa tabi faculty, ka ng pagtukoy ng isang Boolean expression. Ipakita sa akin ng mga kurso para sa kung saan ang expression na ito ay totoo. O sa kanan, hindi kontrahan na may mga kurso ako pagkuha, kung iyon ay naka-check, pagkatapos ay oo, gusto mong mag-check kondisyon na, iba pang gusto mong huwag pansinin ang mga ito. Kaya Boolean expression ay uri ng buong, ngunit kapag ilagay namin ang mga ito sa mga kondisyon, kung KUNG kundisyon, KUNG ELSEs, o maaari naming kahit gayahin mas malalim mga antas ng, KUNG Iba Pa KUNG iba pa - kaya na uri ng estado tatluhan. Maaari kang pumunta sa ganitong paraan o ang paraan na ito o ganitong paraan. Maaari naming panatilihin ang nesting bagay upang pumunta sa iba't ibang direksyon. Kaya sa simula ay may mga loop na ito, tulad ng Habang Panahon. Ay may mga tampok tulad ng Ulitin 10, ang ilang tiyak na bilang ng beses. Mayroon kaming ang kakayahan na ngayon upang i-set ng mga variable, kaya sa kasong ito Ko na ipinahayag, halimbawa, ang isang variable na tinatawag na medyas. Ko na nasimulan sa 0, at na isa pang direksyon hindi kami nagsagawa dito sa Joseph, kung saan maaaring ko lamang subaybayan kung gaano karaming mga medyas na may ko sa at wakasan ang programa kapag ang halaga na variable 2. Iyon ay isa pang paraan ng uri ng generalizing na problema at paggawa ng isang bagay muli at muli. Well, sabihin sige at ipakilala ngayon ng ilang mga bagong bagay. Kaya ang mga may bago programing karanasan ay alam na ng maraming mga wika may array, o vectors o listahan, at sa katunayan, sa simula ay may isang bagay na tulad nito, masyadong. Kaya sabihin makita kung hindi namin maaaring tumagal bagay sa susunod na antas dito. Kung mayroon ko ang kakayahan, ngayon, na may mga piraso ng puzzle sa magdagdag ng isang bagay, tulad ng isang salita o numero, sa isang variable, maaari ko magsimula sa maipon ang mga bagay. At ito ay talagang kaakit-akit na mga bagay para sa mga bagay tulad ng mga laro, papel-laro kung saan ikaw ay ang uri ng paglalakad sa paligid ilang pantasiya mundo pagkolekta ng mga bagay, pagpili ng mga bagay up, pagkamit ng mga puntos, o ang gusto. Baka gusto mong subaybayan ng ilang mga uri ng imbentaryo, at katunayan, na ang isa sa aming dating na mga mag-aaral dito ginawa na may isang bagay na tinatawag Fruitcraft RPG. Kaya ipaalam sa akin sige at buksan ito bagay dito, at sa Fruitcraft, mayroon kaming mundong ito sa itaas. Kaya hayaan mo akong magpatuloy at i-click ang berdeng bandila. Abiso sa kaliwang tuktok ng ilang mga uri ng imbentaryo. Na ipinatupad sa simula ng kung anong kami tatawag sa isang array o isang listahan, at ngayon ay mayroon kaming maliit na animation na ito. Kaya lang namin na sinimulan ng mas maaga na may ito kuwento ng pag-ibig ng cookie, at pagkatapos namin sumulong sa mga pusa at sea lion, ngayon maaari kaming magkaroon mga bagay na mas interactive. At ito maliit na asul na tao, maaari ako magsisimula upang ilipat sa paligid ng kanyang maliit na bahay dito. Kaya kamukha niya nakuha sa isang exit dito, kaya gumagamit ako ng ang mga arrow key, hanggang, pababa, pakaliwa kanan. At ngayon ako sa labas, kaya ipaalam sa kung ano ang Mayroon akong dito. Mukhang isang orange, at sa katunayan, sa lalong madaling hinawakan ko ang orange, maipo-plopped sa aking imbentaryo. Kung pumunta ako sa paglipas dito sa seresa, ngayon ay mayroon akong isang bagay tao sa aking imbentaryo. At ito ay lahat ng maganda at nakatutuwa, ngunit sa tingin tungkol sa kung paano, ngayon, ito ay ipinatupad. Well, mayroon kaming ang paniwala na ito ng isang listahan, at na tila isang piraso ng puzzle mo lamang sabihin kung ano ang gusto mong idagdag dito, magdagdag orange, idagdag ang seresa. Ngayon, kung ano ang ito maliit na asul na tao ginagawa? Well, siya engkanto. At baka, orange at ang seresa - nila ang kanilang mga sarili ay hiwalay na sprites. At paggamit ng mga kondisyon sa Boolean expression, ang mag-aaral ay malamang na magagawang upang ipahayag KUNG asul na tao ay pagpindot seresa pagkatapos ay idagdag ang seresa salita sa kanyang imbentaryo, at pagkatapos ring itago ang cherry engkanto. Kaya sa ilalim ng hood, may marahil pa rin ay isang seresa engkanto doon. Namin ang sinabi sa ito upang maging epektibo invisible. Ngayon, kung panatilihing ako paglalakad sa paglipas dito, maaari rin naming gawin ito proximal bagay, kung saan ako maaaring pumunta at basahin ang sign. Kaya kung ng asul na tao paghawak ng sign, maaari naming sabihin block na ito tulad lamang ng pusa nagsalita sa amin sa salita, kumusta, mas maaga, "May ilang prutas? Dalhin ito sa lugar ng prutas. "Lahat ng karapatan, kaya ngayon, tila, Ko ang aking direksyon. Ako maaaring pumunta dito sa lugar ng prutas, linya sa aking sarili na ang pinto. Ngayon, ako in dito. Maaari kong pumunta sa tao sa counter. Nakita niya na ako malapit sa kanya, kaya hindi ito kailangang maging medyo identically paghawak, at ako won ang laro. Kaya mayroon kaming Fruitcraft RPG. Upang maaari naming gawin ang mga bagay na mas advanced kaysa ito. Maaari naming magdagdag ng tunog. Maaari naming magdagdag ng palsipikado randomness. Maaari naming magdagdag ng pagiging kumplikado. Hayaan akong sige dito, at sa halip na gawin ito sa aking sarili, hayaan mo akong ipakita sa iyo ang isa sa mga mas sopistikadong mga pagsusumite nakuha namin ang nakaraang taon mula sa isang tiyak na isang tao na may pangalang Blake. Maaari naming magkaroon ng isang volunteer na ay kumportable sa paglitaw sa camera at para sa laro? Paano tungkol doon? Halika sa up. Lahat ng karapatan, kaya ang laro na mayroon ka lamang hindi- nagboluntaryo upang i-play - [Palakpakan] David MALAN: - isang bagay mula sa nakalipas na panahon na tinatawag na "Frogger." Ano ang iyong pangalan? RENDA: Renda. David MALAN: Redna? RENDA: Ito ay tulad ng Brenda na may b. David MALAN: Okay, Renda. David. Masaya akong makilala kayo. Kaya dito sa "Frogger," at kung maaari naming taasan ang dami ng lang ilang sandali, hindi mo ito kaunti berdeng palaka sa ibaba. Maaari mong gamitin ang kaliwa, kanan, pataas at pababa, at ang iyong layunin ay cross kalye, tumawid ng ilog, at pindutin ang liryo Pad sa tuktok. Aw. Isa pang t - redo, ang lahat ng karapatan? Natin hit stop. Walang nakita na. [Palakpakan] [Palakpakan] David MALAN: Oo. Mahusay na tapos na. Mahusay, salamat sa iyo. Kaya na may Frogger. Ngayon na alam mo kung ano ang iyong nakuha inyong sarili sa, isa pang volunteer para sa isang magkakaibang laro isinumite ng ibang mag-aaral. Gusto ba ninyong sumama sa up? Ano ang iyong pangalan? Richard: Richard. David MALAN: Richard. Lahat ng karapatan, Richard, ay sa up. [Palakpakan] David MALAN: Mayroon kang isang bagay na makikita tunog pamilyar sa lalong madaling panahon, kaya narito ang iyong mga tagubilin. Kaya sa isang sandali, ang ilang mga piraso ng puzzle ay pumunta upang mag-scroll pataas mula sa screen na hitsura alinman sa kaliwa o pakanan pataas o pababa. Ay pagpunta sa pindutin ang mga arrow key sa paraang na ito ay tumutugma sa mga piraso ng puzzle na lining sa ang mga placeholder sa itaas. Kaya kapag mo ang kaliwang arrow, at mga linya sa kaliwa arrow, pindutin ang kaliwang arrow. Maaari kang magsimula. [Music - "malakas" KAYNE WEST] David MALAN: Lahat ng karapatan, malaking ikot ng papuri para sa Richard. [Palakpakan] David MALAN: Tunay na magaling. Salamat sa inyo. [Palakpakan] David MALAN: Kaya masaya at, tila, uri ng intimidating bilang maaaring ito ay upang ipatupad ang isang bagay bilang tila sopistikadong bilang na ito, nauunawaan natin na ang mag-aaral ay hindi itinakda at magsulat lamang ito nang sabay-sabay. Sa halip, maaari mong masira ang isang problema bilang tila complex ng ito sa mas maliit na piraso, at ito, masyadong, ay pagpunta sa isang tema. Ang pinakamasama bagay na maaari mong gawin sa pagsusulat ng isang programa sa karamihan ng anumang wika ay umupo, kumuha ng talagang nabigla, isulat ang buong sumpain bagay, at pagkatapos lamang umaasa na ito ay gumagana sa pamamagitan ng oras na tapos ka na sa pagsusulat. Sa halip, ang proseso ng programming dapat pangkalahatan napaka sinadya, napaka umuulit, kung saan mo lamang itakda ang napakaliit na hakbang para sa inyong sarili, kagat-laki na mga piraso ang gusto mong kumagat na lubos, at iba pa na mayroon kang mga katinuan pagsusuri, kaunti milestones na maaari mong matugunan. At pagkatapos kang bumuo sa ibabaw ng mga upang lumikha ng higit sopistikadong bagay pa rin. Kaya halimbawa, kung paano kami pumunta tungkol sa pagpapatupad ng isang laro tulad nito? Well, lantaran, Gusto ko tiyak magsimula sa pamamagitan lamang sumusuporta sa isang key sa isang pagkakataon. Sabihin lamang ipatupad ang suporta para sa kaliwang arrow. Kaya ang mag-aaral ay may sa paanuman lumikha sa Photoshop, o sa Scratch mismo gamit ang maliit na graphical editor, arrow key na kamukha ang isa sa tuktok umalis doon, lamang sa kulay abong placeholder. Pagkatapos ang mag-aaral ay may upang malaman kung anong x, y coordinate sa ilagay ang mga ito, kung saan upang ilagay ang mga ito sa window. 0, 0 dito, kaya mayroon kang upang malaman kung ang bilang ng mga pixels, o tuldok, upang i-offset ang arrow na iyon mula sa tuktok ng screen. At pagkatapos ay sabay-sabay na sa lugar, ang iyong programa ay hindi aktwal na gawin pa, kaya mong kailangan ng pangalawang engkanto, Halimbawa ng isang kulay berdeng arrow na din na nakaturo sa kaliwa, at pagkatapos ay kailangan upang simulan ang pagsusulat ng ilang script para dito. At napansin mo, marahil, ang mga bagay na ito sinimulan darating sa iba't ibang mga bilis, at ang mga kulay ay sa iba't-ibang lokasyon, at na dahil ang mag-aaral ay gumamit ng kaunting palsipikado randomness. At sa pamamagitan ng palsipikado randomness, ko lang ang ibig sabihin pumili ng isang numero sa pagitan ng isang bagay at isang bagay dahil maaari mong magsimula sa mga bagay sa mapa, tulad ng kung ang numero ay sa pagitan ng isa at limang, na rin, sabihin bagay ang berdeng. Kung ito ay sa pagitan ng 6 at 10, sabihin gawin ang mga piraso ng puzzle pula sa halip. Hangga't mayroon kang isang paraan ng pagbuo ng ilang uri ng randomness, maaari mong gumawa ng mga pagpapasya batay sa na randomness. At panatilihing ko sinasabi palsipikado random dahil may maliit na marumi lihim. Computer ay hindi maaaring makabuo ng mga random na numero. Maaari silang lamang gawin kung ano ang kanilang sinabi sa dahil sila aparatong gawa ng tao. Hindi lamang nila hulaan ang isang numero tulad namin tao pakiramdam tulad ng aming makakaya. Computer na A ay upang gawin ang isang bagay matematika sa magsalamangka ang ilusyon ng matematika bilang, minsan gamit ang kasalukuyang araw ng panahon bilang isang input sa pag-uunawa kung ano numero upang bumalik, ngunit higit pa sa na ng isa pang oras. Sa ngayon, alam na maaari naming makabuo ng palsipikado randomness. Kaya sa sandaling mayroon akong ang kakayahan para sa kaliwang arrow upang magsimula lumilitaw sa magkaibang panahon at sa iba't ibang mga bilis, pagkatapos Maaari ba akong bumalik at magdagdag ng ilan sa mga KUNG kondisyon. KUNG engkanto na ito ng pagpindot sa iba pang isa, AT ang kaliwang arrow key ay pinindot - kaya tatlong kundisyon sa kasong iyon. Ang maaari kong gamitin na AT harangan marahil, sa kasong iyon - Gusto kong sige at dagdagan ang iskor. At sa itaas, mayroon kami ng puntos, mayroon kaming Galing, Mahusay, Magandang, at Boo. Kaya walang tila limang mga variable na ito mag-aaral ginagamit upang subaybayan ng mga iba't-ibang mga sukatan. Kaya sa maikling salita, ang resulta ay kamangha-manghang. Ito ay masaya, masaya upang i-play, ito nakakaengganyo, ngunit ito ay hindi kung saan ang mag-aaral ay nagsimulang. Siya ay nagsimula sa isang mas maliit na hanay ng mga hakbang. Kaya kung ano ang ilang mga iba pang mga bloke ng gusali na aming makakaya lalahin sa mga programang ito? Well, doon ang iba pang mga konsepto na ito sa karamihan ng mga wika, Scratch kasama ng mga ito, na kilala bilang mga thread. Kaya computer ng isang aktwal na hindi talagang gawin ang maramihang mga bagay ng oras, hindi bababa sa hindi karaniwang. Sa halip, ang computer ng isang pangkalahatang ay isa lamang CPU, at kahit kahit na ang mga computer ay sobrang mabilis at maaari, samakatuwid, lumikha ng ilusyon ng paggawa ng maraming mga bagay nang sabay-sabay - check ang iyong mail, pagkuha ng instant mensahe, pag-print ng isang dokumento - talaga, ang computer ay paglukso mula sa pag-print sa IMing sa pag-email, bumalik at pabalik at likod at balik kaya mabilis na namin mabagal mag-isip mga tao lamang hindi mapagtanto na ito ay aktwal na pagpapatakbo ng mga programa ng kaunti sa isang pagkakataon. Ngayon, ito ay isang bit ng isang puting nagsisinungaling ang mga araw na ito dahil, sa kasalukuyan, maraming aming mga computer ay kung ano ay tinatawag na multi-core, kaya isa CPU ngunit maramihang mga core, na kung saan ay uri ng tulad ng sa pagkakaroon ng maramihang mga CPUs. At kaya minsan, computer maaari tunay gawin ang maramihang mga bagay sa isang pagkakataon, ngunit sa pangkalahatan sa loob ng isang programa, ang mga programa umasa sa mga bagay na ito na tinatawag thread. Kaya thread ay uri ng tulad ng isang pinaliit na programa na maaari umiiral sa tabi ng isa pang miniature programa at maaaring tumakbo sa parallel, o hindi bababa sa ay maaaring tumakbo sa ilalim ng ilusyon na sila ay tumatakbo nang sabay-sabay. Kaya sa simula ay sumusuporta sa mga bagay na ito na tinatawag thread. Maaari kang magkaroon ng maramihang mga script na e-execute nang sabay-sabay, tulad namin ginawa sa mga leon dagat, at ito ay nagbibigay-daan sa amin upang aktwal pagkatapos ay pakikipag-ugnayan kabilang ang mga sprites. Hayaan akong sige dito at hilahin, sabihin nating, thread, at i-play ito tulad ng sumusunod. Mayroon kaming dalawang sprites, bawat isa sa kung kanino magpapadala kami makita may isang script lang. At napansin mo mukhang ilang katalinuhan sa pusa sa isang ito sapagkat siya ay nakakakuha ng mas malapit - [ROARS] David MALAN: - at mas malapit sa maliit na ibon. Kaya kung paano ang ibon operating? Well, sabihin tingnan sa ibon muna. Ang ibon script sinabi kapag ang berdeng bandila-click, pumunta sa x katumbas ng negatibong 115 at y katumbas ng 150. Kaya ko lang naisip ang isang random na lokasyon kung saan Nais kong ang ibon upang simulan, at ko lang plopped kanya doon sa pamamagitan ng default. Pagkatapos Habang Panahon KUNG hindi pagpindot sa pusa, kaya ito ay isang iba't ibang uri ng looping bumuo, ngunit ang parehong ideya, gawin ito muli at muli at muli. Hangga't hindi ka ng pagpindot sa pusa, ilipat ang tatlong hakbang, at kung ikaw ay nasa gilid ng bounce,, kung saan ang uri ng isang sumasalamin sa kamalayan ng billiard. Kaya na kung paano ibon ay gumagalaw sa palibot ng uri ng tila random, ngunit ito lamang dahil ito nagba-bounce off ang mga pader sa kasong ito. Ngayon pusa, samantala, uri ng pagdaraya. Cat, kapag ang berdeng bandila click ang, oo, nagsisimula sa ilang mga lokasyon, isang random na lokasyon - ng hindi bababa sa bahagi bilang bawat ang pick random berdeng bloke doon - at pagkatapos nang Tuluyan KUNG paghawak sa ibon, play ang tunog ng leon, at pagkatapos ay itigil ang script. Kaya kapag sinabi ko wakasan, o lumabas bago, ang isang palaisipan piraso sa scratch na lang patayin ang programa sa na ituro dahil ito uri ng lohikal na tapos. Ngunit kung hindi man, dito, mapapansin kung ano ang pagpunta sa mangyayari. Point patungo ang mga ibon at ilipat ang isang hakbang. Kaya puntong ito papunta sa ibon uri ng isang kalamangan sa pusa ay may na ito pauwi in sa gumalaw ibon, at kaya namin ngayong gumawa ng program na ito ang lahat ng mas kawili-wiling. Sa halip ng paglipat ng isang hakbang sa isang oras bawat CPU ikot ng, bawat hampasin toll ng bell, kaya na magsalita, hayaan mo akong magpatuloy at ilipat, sabihin nating, ang limang hakbang sa isang pagkakataon bilang pusa. I-click ang tatakbo, at ngayon siya talagang hinahanap sa kanya mabilis. Kung double namin ito nang higit pa sa 10 mga hakbang, ito uri ng napupunta karapatan para sa kanya. Ngayon, maaari naming bigyan ang mga ibon, marahil, ang isang bit ng isang kalamangan. Natin pumunta sa ibon at sabihin sa halip ng paglipat ng tatlong hakbang, sabihin ilipat sa kanya 30 hakbang. Ngunit siya pa rin Nakakuha nahuli sa katapusan. Kaya dito, mayroon kaming dalawang thread. Ito ay incarcerated sa simula may dalawang script at dalawang sprites, ngunit ang mga ideya sa iba pang mga wika na maaari mong magsulat, mahalagang, masyadong maraming mga programa tulad nito at may patakbuhin ang mga ito tunay, o imaginarily, sa parallel. Ngayon, mayroon ding ito konsepto sa programming kilala bilang kaganapan, at ito ay isang bagay na hindi namin makikita sa C, ang wika na kilala bilang C. namin makita ang mga ito patungo sa pagtatapos ng semestre sa web programming, kapag naming ipakilala ang JavaScript at ang paniwala ng mga pahina ng web ng gusali na dynamic at nakikipag-ugnayan sa mga user. Kaya sa kasong ito, mayroon kaming isang napaka-simpleng halimbawa ng dalawang sprites, batang lalaki at babae, bawat isa sa kanino ay may kani-kanilang mga thread, ngunit sa paanuman dalawang mga maki-ugnay sa pamamagitan ng paraan ng isang bagay na tinatawag na kaganapan. Kaya hayaan mo akong magpatuloy dito at mag-zoom in sa script ang batang lalaki, na ganito ang hitsura. Kapag ang berdeng bandila click, magpakailanman gawin ang mga sumusunod. Kung ang pangunahing Space, o ang Space Bar, ay pinindot, sabihin Marco para sa dalawang segundo, na pulos Aesthetic sa screen, isang maliit na speech bubble, ngunit pagkatapos ay i-broadcast. Kaya broadcast ay isa pang piraso ng scratch na kinatawan ng isang klase ng mga pag-andar sa mga programa na nagpapahintulot sa iba't ibang mga program, ibang thread, sa maki-makipag-usap, upang ipadala sa paanuman mensahe, isa sa isa pang. Pagpasa sa isang piraso ng papel sa klase uri ng mababang tech katumbas. Kaya broadcast ang kaganapan. Maaari kong ipadala ang mensaheng ito, at ang salita ng kaganapan ganap na arbitrary. Scratch minsan ay may mga drop down, kaya ko lang dumating up may isang random na salita tulad ng kaganapan dahil ngayon, ano ang batang lalaki ang ginagawa kapag pindutin ko key ay siya broadcast ang kaganapan na ito. At kung tiningnan ko ngayon sa script sa batang babae, ang kanyang script ay sobrang simple dahil ang lahat siya kailangang gawin ay hindi kumilos kapag -click ang berdeng bandila. Siya ay dinisenyo upang pagkilos kapag siya na natatanggap ng quote, magpanipi, "Kaganapan", at sa puntong iyon, siya ang pakikinig samakatuwid para sa ang tinatawag na kaganapan sa muli at muli. Sa lalong madaling natatanggap niya na kaganapan, siya ay pagpunta sa shout Polo para sa dalawang segundo. At sa gayon ay maaari mong marahil magpakilala mula sa eksaktong kung ano ang susunod na resulta ay magiging. Hayaan akong i-click ang berdeng bandila. Walang mangyayari dahil kailangan kong gawin kung ano? Madla: Space Bar. David MALAN: Space Bar. Boy sabi ni Marco, batang babae sabi ni Polo. Ngunit na hindi hard code per se. Na maki-komunikasyon sa pagitan ng mga script, kaya na namin ngayon may kakayahan upang gumawa ng mga mas kumplikadong mga programa kung saan mga dalawang mga sa paanuman maki-pakikipag-ugnayan. Kaya sa kung ano ang mga direksyon maaari naming gawin ito? Well, sa problema hanay 0, talagang, ang layunin ay upang magsaya sa scratch. Para sa Hacker edition, makikita mo sa halip magsaya ng isang mas sopistikadong bersyon ng scratch na tinatawag BYOB, Buuin Iyong Sariling bloke, ngunit ang ideya ay ang parehong. Magagawa mong - Oo, na sinadya. Nagmula sa Berkeley. BYOB Hacker bersyon edisyon ng ito, ngunit pareho , ang mga demograpiko, standard edition at Hacker edisyon magkamukha layunin sa kamay para sa mga darating na linggo ay talagang lamang sa sumisid sa malalim na, kumuha ng iyong mga kamay marumi na may programming, at gumawa ng ng isang bagay na kawili-wili, gawin ang isang bagay na interactive, gumawa isang bagay na pansining, gumawa ng isang bagay na masaya upang aktwal na ipakita, upang sa pamamagitan ng pagtatapos ng linggo, magkakaroon ka ng isang proyekto, hindi lamang para sa iyong unang CS50 pset, ngunit magkakaroon ka magkaroon ng isang maliit na isang bagay na maaari mong ipakita ang off ang sa Annenberg sa kaibigan o kahit pamilya sa pamamagitan ng pag-upload nito sa MIT website. At iba pa tulad ng sinabi ko sa Miyerkules, inaasahan namin ang 90% ng klase, pangkalahatan, upang gawin ang mga karaniwang edisyon. Napagtanto na mayroon ding outlet na ito para sa mga mo na na maaaring mahanap ang iyong sarili ng isang bit na nababato sa mga pangunahing kaalaman at talagang gusto sa sumisid sa at Craft isang pangitain mayroon ka nang may bago background sa mas friendly na kapaligiran. Kaya hayaan mo akong makuha ang isa pang halimbawa na ang isa sa aming mga dating dito na ginawa ang mga mag-aaral at sabihin sa isang maliit na isang bagay sa pamamagitan ng kanta. Na katulad, pati na ang play na ito, isipin ang tungkol sa kung paano pumunta ka tungkol sa pagpapatupad ng programang ito sa paggamit ng tiyak na ang parehong mga mga bloke ng gusali, ng kaunting palsipikado randomness, at bit ng pamilyar na kanta. Kung maaari naming taasan ang dami ng lang ng kaunti? [Music - "Umuulan dito MEN" ANG ng mga batang babae WEATHER] David MALAN: Iyon ay para sa CS50. Makikita natin sa Lunes. [Palakpakan]