[Musika nagpe-play] -Alright! -This Ay CS50. -This Ay CS50. -This Ay CS50. [Musika - IGGY AZALEA, "Fancy"] -My Paboritong memorya mula sa CS50 ay kapag nagpunta ako sa puzzle Araw. -Probably Lamang ang oras ginugol nagtatrabaho sa mga hanay ng problema sa aking mga kaibigan at mga taong wold Sa kalaunan maging ang aking mga blockmates. -My Pinakamahusay na memorya mula sa CS50 ay ang Hackathon. -Ang CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -Ang Hackathon -Rob Bowden. Lamang ang lahat ng bagay tungkol sa kanya. [Musika - IGGY AZALEA, "Fancy"] -My Paboritong memorya ay kapag ako ay sa stage at ko na nag-play ang prestihiyosong papel ng isang node [? sa Linked?] [? Listahan. ?] -When Namin ang lahat ng nakakuha ng libreng espasyo at Dropbox Si David ay tulad, tumingin sa ilalim ng iyong upuan. At iyon ay tulad, espasyo para sa lahat! [Musika - IGGY AZALEA, "Fancy"] -My Payo para sa anumang papasok na mag-aaral ng gagawin maging upang talaga gumagana sa P-sets sa mga kaibigan. -Office Oras ay napaka magkano ang iyong mga kaibigan. -Make Masulit ang iyong karanasan at matugunan ng maraming mga tao hangga't maaari. -Don't Matakot na humingi ng tulong. -Start Ang P-set ng maaga sa linggo. Sa tingin -I ang pinakamalaking bagay ay ang samantalahin ang lahat ng mga mapagkukunan na may CS50. -Go Sa oras ng opisina sa unang bahagi ng linggong ito. -Definitely Panoorin ang shorts. -Don't Procrastinate sa iyong P-set. -Make Bang kang makahanap ng isang mahusay na pangkat ng mga tao na magtrabaho sa P-sets na may. Maaari kang magkaroon ng maraming masaya at makakuha ng trabaho tapos nang sama-sama. -Don't Matakot na itulak ang iyong sarili. Pumunta para sa Hacker edisyon minsan. -Write Mga bagay sa papel bago kailanman hinawakan mo ang iyong computer. -CS50 Ay talagang mahusay sa pagbibigay ng paraan upang makakuha ng tulong. -My Isa piraso ng payo ay pagtulog. Sinabi ng sinuman na? Sleep, para sigurado. Ito ay madali hindi gawin, subalit na kailangan mong gawin ito, sa tingin ko. Gusto -I sabihin ba talagang i-iisip na inihanda dahil ka pagpunta sa ibigin ito. [Musika - IGGY AZALEA, "Fancy"] -This Ay CS50. -This Ay CS50. -This Ay CS50. [Musika - IGGY AZALEA, "Fancy"] -This Ay CS50. [APPLAUSE] David J. MALAN: Kaya ito ay CS50 at ito ang katapusan ng Linggo 0. At iyon ay isa lamang ng ilang ng mga tauhan ng CS50 na Naghihintay sa mga hindi ka lamang sa mga seksyon at oras ng opisina, ngunit, din, ito darating na katapusan ng linggo sa CS50 Puzzle Araw. Aling, muli, ay hindi ang lahat tungkol sa programming. Sa katunayan, ito ay inaasahan na iyong ay hindi magkakaroon ng sa programa ng kahit ano, ngunit sa halip na malutas ang mga problema sa paggamit wits at mga kaibigan sa tabi mo. Susundan natin ang sumali sa pamamagitan ng ilang ng aming mga kaibigan sa Facebook-- kung irehistro ka here-- na para sa nakaraang ilang taon, mayroon talagang nagsusulat mga hamong ito sa amin. At sa gayon, sila ay ang mga sa huli tumatakbo Araw ng palaisipan. At sa gayon, ikaw ay hinamon may tiyak na mga uri ng mga bagay at mga problema na kakailanganin ng mga tao sa Facebook i-isipin ang tungkol. Kaya na ay bukas. Magparehistro sa cs50.harvard.edu/register. Ngayon isang salita sa loob ng ilang ng mga tauhan sa partikular na. Ito dito ay Ansel Duff, sino ay ang tunay isa ng mga kapwa may-akda ng mga binary bombilya na nakita natin sa Miyerkules, bilang karagdagan sa CS50 sariling Dan Bradley. Ansel Duff ay isang dating din freshman advisee ng mina 3 taon ang nakalipas at siya kahit na aktwal na binuo ito lectern. Siya'y nawala sa gawin mga agham engineering at higit pa. Ngayon, ang kanyang larawan dito ay ang tunay Ansel 3 taon na ang nakakaraan sa CS50 Hackathon kapag siya ay hiniram sa isa sa aming balloon, natigil ito sa kanyang laptop, at, para sa susunod na 12 ilang kakaiba oras, nakatuon sa kanyang panghuling proyekto, pagkuha ng break lamang upang buksan bag ng kendi sa Hackathon. Subalit siya nagpunta sa mas kamakailang na gumastos ito nakaraang tag-araw sa amin, dahil CS50 para sa mga tauhan nito, at ngayon mag-aaral na ito semestre, May sarili nitong 3D printer. At sa isang maikling salita isang 3D printer ay isang aparato na mukhang masyadong tulad nito. Punan mo ito gamit ang isang plastic spool na tinunaw down na sa pamamagitan ng mga aparato at bumuo ka ng mga bagay Literal na mula sa wala. Karamihan tulad ng isang inkjet printer, magsisimula ka sa pagsigam out maliit na tuldok ng plastic na anyo nang magkasama upang bumuo ng buong bagay. At kaya Ansel halimbawa, mas maaga ito tag-araw, may isang iPhone 5 at nagpasya siya talaga gusto sa Panukala ito pataas sa kanyang desk. Ngunit hindi niya gustong pumunta out at bumili ng isang bagay mula sa Apple store o ang katulad, kaya siya SA down at makapagsimula sa pagguhit ng isang bagay. Kinuha niya ang ilang mga sukat bilang sa kung paano makapal at kung paano malawak na ang kanyang iPhone ay, siya iginuhit ang larawang ito dito, Nagpasya siya na nais niyang upang magkaroon ng isang 75 degree na pagtabingi dahil ito ay staring sa sa kanya sa kanyang desk doon. Naka pagkatapos niya ito, gamit ang software, sa isang modelong 3D CAD na tumingin ng kaunti isang bagay na katulad nito. At pagkatapos siya nagpatuloy, sa huli, upang aktwal na lumikha ng mga ito. Kaya sa katunayan, kung ang alinman sa iyo dito, marahil nang sunud-sunod na maaari kong magtapon sa, mayroon an-- doon mayroon kaming kakailanganin ng mga tao na may iPhone 5, at dito mayroon kaming dalawang higit pa. Ngayon, hindi na outdone, CS50 sariling Cheng Gong-set din out na ito tag-init upang bumuo ng lubos ng ilang mga bagay at, sa katunayan, para sa mga kadahilanang na hindi pa rin hindi malinaw, ay naging mabagal pag-print ng isang hukbo ng mga elepante may articulating arm at trunks. Ang isang pares ng mga na kung saan ay aktwal na dito kung sinuman ay ngayon like-- isang elephant. Ang lahat ng mga karapatan,. ngunit kung ano din ginawa Cheng para sa atin ay siya napaka Pinapayuhan-set up ng isang camera dahil na elepante, Naniniwala ito o hindi, tumatagal ng ilang dalawa at isang kalahating oras upang i-print. Kahit na ang iPhone stand kinuha isang oras at kalahating-print. At kung ano ang nagpunta maaga Cheng at ginawa ay naka-setup sa isang masarap na camera sa harap ng ito 3D printer, kinukunan para sa isang oras at kalahating bilang disenyo Ansel ng naka-print na. Naka-overlay kami ng ilang mga maalindog musika dito sa pagkakasunud-sunod upang bigyan ito sa iyo upang tumingin sa kung paano gumagana ang 3D sa pagpi-print. At kahit na ito ay talagang sa plastic, Napag-alaman na kung ito ay isang lugar ng interes sa iyo academically, mayroong mga tao, bukod sa ang mga ito Jennifer Lewis dito sa Paaralan ng Engineering, na talagang pagtatrabaho sa 3D pag-print ng plastic na bagay. Ngunit kahit na, lalong, biological mga materyales sa paglutas physiological mga problema para sa mga tao. Ngunit dito ay isang maliit na isang bagay mula sa CS50. [Malakas Mechanical NOISES] David J. MALAN: Hindi nito ang tunog anumang bagay na tulad nang sa katotohanan, ngunit ito ay magkano ang mas malalamig na itong panoorin sa na bilis, at may na tunog. Ngayon, sa Miyerkules, kung paano ay magsasagawa muna kami makarating dito? Sinimulan na naming pinag-uusapan tungkol sa computer na agham at kami tinanong kung ano iyon. At ito ay tungkol sa isang bilang ng mga bagay, at may kaya maraming iba't-ibang direksyon kung saan maaari kang magtungo pagkatapos ng isang kurso tulad ng CS50. Sa katunayan, kung ikaw kinuha ang isa ng mga hindi opisyal na gabay sa CS sa labas, ang buklet na nagbigay kami ng, kung ikaw ay pag-iisip ng pagkuha lamang CS50, o marahil paggawa ng isang pangalawang, o maaari ring maging sa pagtuon sa CS, huwag i-flip sa pamamagitan na iyon. At makikita mo ang isang diagram patungo sa dulo na Ipinapakita sa iyo ng maraming iba't-ibang direksyon sa CS na maaari kang pumunta off sa. Ngunit para sa araw, makikita namin ang pagtuon, muli, sa talaga ang isa sa mga pangunahing tanawin, marahil, kung saan mayroon kang input sa mga problema, mayroon kang output mula sa mga problema, at mayroon kang algorithm na kung saan upang lumikha ng mga output mula sa mga input. At isa tulad halimbawa, ay ng Siyempre, telepono ang aklat na ito dito. At ginamit namin bilang isang halimbawa upang pumunta sa pamamagitan ng isang algorithm na ay tama. At pagkatapos ng isa pa noon ay tama, ngunit medyo mas mabilis. At pagkatapos ng isa pa na noon ay isang maliit na higit pa dramatic, ngunit fundamentally mas mabilis. Mag-right, ito kami telepono libro inaangkin nagkaroon tungkol sa 1,000 mga pahina. At kung gaano karaming beses ginawang Mayroon akong upang pilasin ang libro ng telepono sa kalahati upang makahanap ng isang tao tulad ng Mike Smith, maximally, sa 1,000 na pahina ng libro? Kaya, 10 bigyan o tumagal. At kaya sa sandaling tore ko bagay na ito sa kalahati, o simpleng, mas maturely, hinati sa dalawa, ito ay lamang 10 mga pahina sa labas ng 1,000. At kung extrapolate mo, may kaunting panahon unrealistically para sa isang libro ng telepono, ngunit kung may ilang 4 ang aklat na ito telepono bilyong mga pahina sa loob nito, kaya ganap unwieldy pisikal, kung gaano karaming beses mo mong hatiin ang isang 4000000000 pahina ng libro ng telepono sa kalahati? Kaya ito ay aktwal na 32, bigyan o tumagal. At kaya 32 beses lamang, sa labas ng 4000000000 mga pahina, maaari mahanap mo ang isang tao tulad ng Mike Smith. At iyon ang kahusayan. Iyon ay isang mahusay na algorithm, daresay. Ngunit pagkatapos namin inilipat mula sa na upang subukang gawing pormal ito. At ipinanukalang ko ito pseudocode code. Pseudocode code ay hindi pormal na kahit ano. Ito ay hindi isang bagay na kabisaduhin mo. Ito ay isang bagay lamang ipahayag sa iyo medyo intuitively gamit ang Ingles, o anumang wika talaga ito, na nagbibigay ng iyong mga ideya succinctly. Ngunit kung ano ang key tungkol sa pseudocode code ay na sa iyo subukan upang asahan ang lahat ng mga posibleng mga kaso na maaaring mangyari. At sa katunayan, sa ganitong pseudocode code, mayroong talaga tatlong mga kaso sa bawat oras na hinati-hati ko ang mga libro ng telepono. Mike ay maaaring maging sa kaliwa. Mike ay maaaring maging sa kanan. O kaya naman ay maaaring maging sa pahinang iyon mismo Ako ay nasa niya. O kaya 1/4 na sulok kaso, kaya na magsalita. Ang isang masamang sitwasyon ay maaaring maging isa which-- kung ano ang nangyayari? Mike lamang ay wala sa sa aklat ng telepono sa lahat. At kapag programa crash-- kapag Mac at PC software na iyong pinapatakbo guys sa iyong mga computer kung minsan hangs o quits nang hindi inaasahan, na karaniwan ay nangangahulugan na ang ilang mga programmer, ang ilang mga tao na tulad mo sa lalong madaling panahon, screwed lamang up at ginawa ng ilang mga pagkakamali. Siguro ay hindi inaasahan na siguro doon Walang Mike Smith sa aklat telepono. At kung wala ka talagang magsulat code upang mahawakan ang sitwasyong ito na tulad nang, Sa pangkalahatan ay mahuhulaan Maaari itong mangyari bagay. Ang iyong machine maaaring mag-freeze. Maaari itong i-reboot. Maaari tumigil programa ang. At sa gayon ang lahat ng mga stupidities na maaari mong Nakaranas sa iyong aktwal na buhay lamang ang paggamit ng mga computer, ay lalong maging lamang Ipinaliwanag ang layo sa pamamagitan ng Swersey na ito at ito-unawa sa kung ano ang aktwal na nangyayari sa ilalim ng hood. Ngayon subukan upang Titingnan hayaan sa isang mas pangkalahatang problema. Sa halip na magsagawa ng pagdalo sa isang lugar tulad ng ito, na magiging masyadong mabagal upang gawin ang isa, dalawa, tatlo, apat. O siguro dalawa, apat, anim, walong. Ni tumuon, sa halip, sa Hayaan kung paano namin maaaring gawing pormal ang algorithm ng proseso sa pamamagitan ng kung saan maaari kaming magsagawa ng pagdalo. Ng simula at sa paglaon, ipaalam mag-apply ng ilang mga nomenclature na gagamitin namin ngayon kung kailan namin talaga simulan ang mga programa sa isang wika. Kaya Ibinibigay ko ngayon sa iyo, may apat na minutong video na binuo namin sa aming mga kaibigan mula sa TED, sa samahan. Kung saan ibinigay namin ang isang script at nila ang kanilang dinala animators upang pasanin, at aktwal na nilikha ng isang 2D animation ng kung ano ang isang algorithm ay. Kung maaari kaming palalamlamin ang liwanag ng ilaw. [Musika nagpe-play] NARRATOR: Ano ang isang algorithm? Sa computer science, isang algorithm ay isang hanay ng mga tagubilin sa paglutas ilang sunud-sunod na problema. Karaniwan, ang mga algorithm ay isinasagawa ng mga computer, ngunit mayroon kaming mga tao algorithm pati na rin. Halimbawa, kung paano gagawin pumunta ka tungkol sa pagbibilang ang bilang ng tao sa isang silid? Well, kung ikaw ay tulad ng sa akin, gusto mo marahil ituro sa bawat tao nang paisa-isa at bilangin up mula sa zero. Ang isa, dalawa, tatlo, apat, at iba pa. Well, na ang isang algorithm. Sa katunayan, ay subukan upang ipahayag ito ng ipaalam kaunti pang pormal sa pseudocode code. Ingles-tulad ng syntax na kahawig ng isang programming language. Hayaan n katumbas ng 0. Para sa bawat tao sa room, itakda n katumbas ng n plus 1. Paano upang bigyang-kahulugan ang pseudocode? Well linya isa declares, kaya upang makipag-usap, sa isang variable na tinatawag n at initializes halaga nito sa 0 ito lamang Nangangahulugan na sa simula ng aming algorithm, ang bagay kung saan kami ay pagbilang ay may halaga sa 0. Pagkatapos ng lahat, bago namin simulan ang pagbibilang hindi pa kami binibilang ng kahit ano. Pagtawag ito variable n ay isang convention lamang. Sana tinatawag ko ito karamihan ng kahit ano. Ngayon line dalawang demarks sa simula ng isang loop, isang pagkakasunod-sunod ng mga hakbang na gagawin ulitin ang ilang bilang ng beses. Kaya sa aming halimbawa, ang mga hakbang na kami ay pagkuha ay pagbibilang ng mga tao sa kuwarto. Sa ilalim na linya ay dalawang linya tatlong na naglalarawan nang eksakto kung paano namin pumunta tungkol sa pagbibilang. Nagpapahiwatig indentation Ang na ito ay na ulitin tatlong linya. Kaya sa pseudocode code ay sinasabi ay na pagkatapos ng simula sa 0 para sa bawat tao sa room namin taasan n ng 1 Ngayon ay tama algorithm na ito? Ni Bang dito nang kaunti na rin ipaalam. Gumagana ba ito kung may mga dalawang tao sa room? Ni makita Hayaan. Sa linya ng isa initialize namin n sa 0. Para sa bawat isa sa mga dalawang tao, pagkatapos ay dinagdagan namin n pamamagitan 1. Kaya sa unang paglalakbay sa pamamagitan ng loop, i-update namin n 0-1. Sa pangalawang paglakbay sa na parehong loop, i-update namin n 1-2. At kaya, sa pamamagitan ng algorithm na ito ng end, n 2, na sa katunayan ay tumutugma sa numero ng ng mga tao sa kuwarto. Sa ngayon, kaya mabuti. Paano ang tungkol sa isang sulok kaso bagaman? Ipagpalagay na mayroong 0 tao sa room-- bukod sa akin, kung sino ang paggawa nadaragdagan pa. Sa linya ng isa, muli naming initialize n sa 0. Oras na ito bagaman, linya tatlong ay hindi maisagawa sa lahat dahil may ay hindi isang tao sa kuwarto. At kaya n nananatiling 0, na sa katunayan ay tumutugma ang bilang ng mga tao sa kuwarto. Pretty simple, tama? Ngunit pagbibilang ng mga tao nang paisa-isa ay medyo hindi mabisa, masyadong, walang? Tiyak na maaari naming gawin mas mahusay. Bakit hindi mabibilang ng dalawang tao sa isang pagkakataon, sa halip ng pagbibilang ng isa, dalawa, tatlo, apat, limang, anim, pitong, walo, at iba pa. Bakit hindi bilangin ng dalawa, apat, anim, walong, at iba pa? Ito mas mabilis pang tunog. At ito ay tiyak ay. Ipahayag ni optimization na ito Hayaan sa pseudocode code. Hayaan n katumbas ng 0. Para sa bawat pares ng mga tao sa room, itakda n katumbas ng n plus 2. Pretty simpleng pagbabago, i-right? Sa halip na bilangin ang mga tao nang paisa-isa, sa halip namin bilangin ang mga ito ng dalawang sa isang pagkakataon. Algorithm na ito, kaya, dalawang beses nang mas mabilis hangga't ang huling. Ngunit ito ay tama? Ni makita Hayaan. Gumagana ba ito kung may mga dalawang tao sa room? Sa linya ng isa, initialize namin n sa 0. Para sa na ng isang pares ng mga tao, pagkatapos ay dinagdagan namin n pamamagitan ng 2. At ito sa pamamagitan ng algorithm na ito pagtatapos n 2, na sa katunayan ay tumutugma sa numero ng ng mga tao sa kuwarto. Ipagpalagay susunod na mayroong zero mga tao sa kuwarto. Sa linya ng isa initialize namin n sa 0. Tulad ng dati, linya tatlong Hindi maisagawa ang lahat ng ito dahil walang anumang mga pares ng mga tao sa room, at sa gayon n nananatiling 0. Aling sa katunayan ay tumutugma sa bilang ng mga tao sa kuwarto. Ngunit ano kung mayroong tatlong tao sa room? Paano gumagana ang algorithm ng pamasahe? Ni makita, sa linya ng isa Hayaan, initialize namin n sa 0. Para sa isang pares ng mga taong iyon, pagkatapos ay dinagdagan namin n pamamagitan ng 2. Ngunit pagkatapos ay kung ano? Walang ibang full pares ng mga tao sa room, kaya dalawang linya hindi na nalalapat. At ito sa pamamagitan ng pagtatapos ng algorithm na ito, n ay 2 pa rin na kung saan ay hindi tama. Sa katunayan sinabi algorithm na ito sa maging mayroong bug dahil mayroon itong pagkakamali. Sabihin redress na may ilang bagong pseudocode code. Hayaan n katumbas ng 0. Para sa bawat pares ng mga tao sa room, itakda ang N katumbas ng n plus 2. Kung ang isang tao ay nananatiling unpaired, itakda ang N katumbas ng n plus 1. Upang malutas ang partikular na problema, hindi namin ipinakilala sa isang kondisyon linya apat, kung hindi man ay kilala bilang isang sangay, na lamang executes kung mayroong isang tao namin Hindi ma ipares sa isa pa. At kaya ngayon, kung mayroong isa, o tatlo, o anumang kakaibang bilang ng mga tao sa room, algorithm na ito ay mabibilang na ngayon ang mga ito. Maaari mas mahusay ang ginagawa namin? Well, maaari naming bilangin sa threes, o fours, o kahit fives at sampu-sampung, ngunit lampas na, ay ito pagpunta upang makakuha ng Medyo mahirap upang ituro. Sa pagtatapos ng araw, kung ang isinasagawa ng mga computer o mga kawani na tao, algorithm lamang isang hanay ng mga tagubilin kung saan upang malutas ang problema. Ang mga ay tatlo lamang. Ano ang problema ng ginagawa mo malutas gamit ang isang algorithm? David J. MALAN: Kaya sadyang, isang napaka-simpleng programa, isang napaka-simpleng algorithm, para sa pagkamit ng isang bagay napaka-simple, ang pagbibilang ng bilang ng mga tao sa kuwarto. Ngunit ni tease bukod hayaan ang ilan sa mga kinatawan Nagtatampok dito na talaga pagpunta sa maging kapaki-pakinabang kahit na ang pagpapatupad ng mga pinaka- complex ng software. Kaya halimbawa, sa unang linya, mayroon kaming kung ano ang tinatawag naming ang variable, at mula sa algebra, ikaw ay Sa pangkalahatan ay pamilyar gamit ang x at y at z minsan, at iba pa. Ngunit sa programming, variable hindi pa rin, sa pagtatapos ng araw, na halos kapareho sa na. Pero siguro mas simple mag-isip ng isang variable na bilang isang lalagyan lamang. At, sa katunayan, ito ang ilang bilang ng mga piraso ipinatupad sa anumang paraan sa iyong hard disk o sa memory ng iyong computer, ngunit higit pa sa na sa hinaharap. Ito ay isang lalagyan lamang. At kung sabihin mo ng isang bagay tulad ng hayaan n katumbas ng 0, mahusay na tulad ng pagtawag ito glass mangkok dito n, lamang ang isang arbitrary na pangalan, at paglalagay walang anuman sa ito sa umpisa. Kaya ang halaga ng ito mangkok ngayon ay zero. At syempre kung perceive mo sa isang kasunod na linya, upang aktwal na dinagdagan ng ilang mga linya ng code, tulad ng sa pangatlong linya na ito dito, sa pamamagitan ng 1, na tulad ng sinasabi kung ano ang mga kasalukuyang halaga ng n, ito ay 0, plus 1, maglagay ng isang bagay tulad ng isang ping pong ball in dito. Ngayon ang halaga ng ito variable ay medyo simple 1. At maaari mong masyadong mabilis extrapolate, ngunit ngayon ito ay 2, ngayon na 3, at iba pa. Kaya na ang lahat ng variable ay. Ito ay isang piraso ng imbakan sa talaga mag-imbak ng ilang data. Para sa ngayon ito ay isang ping pong ball. May ito ay isang numero. Ngunit maaaring ito ay mga salita sa isang diksyonaryo, tulad ng spell checker Alluded kong sa Miyerkules para sa isa sa mga hanay ng problema noong nakaraang taon ni. Ngayon isa pang key ideya, na katulad ay medyo madaling maunawaan Gusto ko i-claim, ay na ng isang loop. At nakikipag-ugnayan sa proseso ng ng pagbibilang sa lahat ng tao ay, siyempre, ang paggawa ng parehong muli bagay at again-- ang alinman sa isa sa isa o dalawang oras sa isang pagkakataon. At maaari mong ipahayag ito sa wikang Ingles, o pseudocode code, sa anumang bilang ng mga paraan, ngunit ang paggamit ito pang-ukol "para sa" ay isang napaka-karaniwang paraan ng paggawa na. Para sa bawat tao sa kuwarto, gawin ito. Muli at muli. At ang katotohanan na ito ay naka-indent, linya tatlong, Nangangahulugan lamang na kung ano ang ka dapat gawin ay ang mga bagay-bagay na naka-indent sa ibaba ang dalawang mismong linya. Isang tao convention lang, ngunit isang karaniwang isa dahil kakailanganin namin makita sa aktwal na mas mataas antas ng programming wika. Maliit na ngayon na mas kawili-wiling ay kapag nakakuha ka sa isang sulok kaso. Halimbawa, ang isang sulok kaso ay kapag may ay tatlong tao, o limang, o pitong, o anumang kakaibang bilang ng mga tao sa room, dahil ang paggawa na sa pamamagitan ng twos preno Sa kalaunan dahil ang iyong pagpunta na makaligtaan ang sinuman, alinman sa napaka simula o dulo napaka depende sa kung paano ito gawin. At sa gayon, ngayon, mayroon akong ito sangay, o kondisyon, kung ang isang tao ay nananatiling, pagkatapos ay magpatuloy at pangasiwaan ang isa na lonesome tao na hindi makakuha ng pagpaparisin sa ibang tao. Kaya na kung ano ang gusto namin tumawag isang kundisyon, o isang branch. Pseudocode Ngayon code higit pa sa pangkalahatan ay maaaring maging nakasulat sa paglutas ng anumang bilang ng mga problema. At kung ano ang inisip ko naming nais gawin dito ay maglaan ng ilang sandali mag-anyaya ay dapat naming sabihin CS50 ni pagmamay-ari Rob Bowden sa entablado upang sumali sa pamamagitan ng dalawang mga boluntaryo, sino ay walang ideya kung ano ang naghihintay. Nagpunta down na kamay Isang lalong madaling sinabi ko na. Paano tungkol sa iyo sa magtapos dito, dumating sa up. At kung paano tungkol sa mula sa mas malayo ang layo, kung paano tungkol sa paraan sa likod. Bumalik hilera, dumating sa up gamit ang iyong mga kamay up. Tama, at kung ano ang iyong pangalan? Anita: Anita. David J. MALAN: Anita. Okay, mabait sa matugunan mo. Hayaan akong kitang ipakilala sa Rob Bowden. Ito ay Anita. At kung ano ang pangalan mo? KIERSTEN: Kiersten David J. MALAN: Kiersten. Kiersten, dumating sa pataas at matugunan Rob Bowden at Anita. Nice upang matugunan mo. KIERSTEN: Nice upang matugunan mo. David J. MALAN: tama, Rob. Rob BOWDEN: Nice upang matugunan mo. David J. MALAN: Anita. KIERSTEN: Hi Anita. David J. MALAN: At ang iyong ilang daang mga kaklase. Kaya, ngayon hayaan mo akong sige at hilahin up lamang ang simpleng programa dito sa Mac OS na kailangan ipaalam sa akin talaga-lista ng ilang mga tala pababa. At kung ikaw guys gusto sa bawat isa kumuha ng isang posisyon sa isa sa mga paaralan doon, hayaan mo akong sige at nagsisimula sa isang listahan pseudocode ng code, kung gagawin mo. At kung ano ang gusto kong gawin dito, sa huli ay uri para sa iyo ang ilang mga tagubilin na aming mga miyembro ng madla ay aktwal na pagpunta sa recite para sa amin. Hayaan akong sige at lamang baguhin ito sa isang listahan ng may bilang upang tumugma sa kung ano ang ginagawa namin ay up doon. At kung ano ang pupuntahan ko gawin sa iyong tulong, ay magsulat ng isang programa sa pseudocode, kung saan mga guys ay pumunta sa upang ipatupad ang mani butter at halaya sanwits. Kaya marahil apropos sa magpakita ng isang bagay ilan sa inyo Maaaring nakita sa internet para lamang ng isang maikling nakakainis na sandali. [Musika BUCKEWHEAT lalaki, "peanut butter  Halaya TIME "] David J. MALAN: OK. Tama na ganyan. Kaya dito samantala, mayroon akong pares ng Google Salamin na maglalagay kami sa sariling Rob Bowden CS50 ni upang makita ng buong mundo sa pamamagitan ng kanyang mga mata. At kami na ang aming pinakamahusay na sa post na ito produksyon upang aktwal na weave ang footage ng kung ano ang Rob ay nakikita ngayon, sa aktwal na ito panayam na video sa aming dalawang mga boluntaryo sa tabi niya. Kaya kung ano ako pagpunta sa gawin ay, magpapadala ako maging tagapagmakinilya. Mayroon kaming mga layunin dito ng talaga ang pagsusulat ng programa kung saan upang gumawa, sa huli, isang peanut butter at halaya sanwits, ngunit ang tatlong ay pagpunta sa kumilos na waring ang mga ito ay mga computer. At mga computer, sa pagtatapos ng araw, ay aktwal na medyo pipi device. Ang mga ito ay napakabilis na, ngunit maaari nilang lamang gawin, literal, kung ano ang mga ito ay sinabi. Hindi mo maaaring sabihin lamang gumawa ng mani butter at halaya sanwits. Mayroon kang sa programa ang mga ito upang gawin iyon. Kailangan mong sabihin sa kanila may katumpakan kung ano ang gagawin, mas bagay pumunta horribly at, sana ay, amusingly pilipit. Kaya may sinabi na iyon, kailangan namin isa call-out mula sa mga madla para sa kung ano ang dapat basa isa ay, kung ang layunin dito ay upang gumawa ng mani butter at halaya sanwits. Oo? Madla: [INAUDIBLE] ang bag ng tinapay. David J. MALAN: Buksan ang bag ng tinapay. Kaya kung ang tatlong contestants gagawin gustong magpatuloy upang gawin iyon nang literal. Buksan ang bag ng tinapay. [Madla tumatawa] David J. MALAN: gumana sa na Kaya ipaalam. Lahat ng karapatan. Kaya hakbang dalawa, how-- sabihin tumagal ito nang higit pa. Oo, nasa harap. Madla: [INAUDIBLE] ang tinapay. David J. MALAN: Ano iyon? Madla: Alisin ang tinapay. David J. MALAN: Alisin ang tinapay. Katulad nito succinct. Salamat sa iyo. [APPLAUSE] David J. MALAN: Iyon ang dahilan nito? OK, kaya hakbang dalawang ay pagpunta upang maging alisin ang tinapay. Tama, may isang taong nais na sumulat sa amin ng mas mahabang pangungusap? May ibang? Isang kaunti pa [INAUDIBLE]. Hindi, wala na ngayon. Oo? Madla: Ilagay dalawang hiwa sa tabi ng bawat isa. David J. MALAN: Ilagay dalawang hiwa sa tabi ng bawat isa. [Madla tumatawa] David J. MALAN: Ilagay dalawang hiwa sa tabi ng bawat isa. Hakbang apat. Oo? Madla: Dalhin mo ang iyong kamay at itakda ito basta-basta sa tuktok ng peanut butter panakip. [Madla tumatawa] Madla: [INAUDIBLE] sa tabi ng peanut butter. David J. MALAN: Ano? Sabihing na muli. Madla: Unscrew ang takip at ilagay ito malumanay sa tabi ng peanut butter. David J. MALAN: Ilagay ninyo malumanay sa tabi ng peanut butter. OK, pag-unlad. Hakbang limang. Mahusay. Oo? Kunin ang kutsilyo. David J. MALAN: Pumili ng hanggang kutsilyo. OK, magbasa-anim. Oo? Madla: Pindutin nang matagal ang kutsilyo sa pamamagitan ng ang hawakan. David J. MALAN: Hold kutsilyo sa pamamagitan ng ang hawakan. Pindutin nang matagal ang kutsilyo sa pamamagitan ng ang hawakan. Hakbang pitong. Oo? Madla: [INAUDIBLE] kutsilyo sa mani butter at ng kasing-baba out si [INAUDIBLE]. David J. MALAN: Ilagay ang kutsilyo in-- ko narinig "ilagay ang kutsilyo sa peanut butter at tumagal ng kaunti out hangga't maaari. " Sa pamamagitan ng paraan, alisin muna ang papel. Ang lahat ng mga karapatan, magbasa-siyam. Hakbang siyam. Hakbang siyam. Na namin talagang hindi pa ginawa ng sandwich. Oo? Madla: Ang paggamit ng kutsilyo sa peanut butter, ilapat ang peanut butter sa sinabi tinapay. David J. MALAN: Ang paggamit ng kutsilyo sa peanut butter, ilapat ang peanut butter sa Sinabi tinapay. [Madla tumatawa] David J. MALAN: Lahat ng karapatan hakbang 10. Hakbang 10. Oo? Madla: Taste mani mantikilya upang matiyak na kalidad. [Madla tumatawa] David J. MALAN: Hakbang 11. Hakbang 11. Hakbang 11. Halika sa. Oo? I-right doon. Madla: Maingat na kunin halaya. David J. MALAN: Maingat na kunin halaya. OK, at pagkatapos ay isa pang kamay ay up. Kanan sa likod mo. Oo, sa asul. Madla: Lahat ng karapatan, alisin panakip mula sa [INAUDIBLE], Oo, alisin ang takip mula sa halaya. [Madla tumatawa] David J. MALAN: Mula halaya. Ha ha. [Madla tumatawa] David J. MALAN: At? Madla: At bahagya Maglimas anumang [INAUDIBLE]. [Madla tumatawa] Madla: Siyempre, bago [INAUDIBLE], alisin ang papel mula sa halaya. David J. MALAN: Alisin ang papel mula sa halaya. Hakbang 14. Kami ay halos doon. Oo? Madla: Baliktarin ang bote halaya bago ang lahat ng bagay ay bumaba out. David J. MALAN: Baliktarin ang halaya bote bago halaya ay bumaba out. Hakbang 15. Madla: Palitan ang cap. David J. MALAN: Palitan ang cap. Hakbang 16. Oo? Madla: [INAUDIBLE] David J. MALAN: Sabihing na muli. Madla: Kumuha ng cap-off ng iyong halaya. David J. MALAN: Naka-off ang iyong halaya. Kaya really-- Oops. Halika sa. Palitan ang cap. Ilagay ang cap-- Sinabi mo alisin ang takip mula sa halaya. Huwag mag-tulad ng hindi namin sa isang bit ng isang loop. Hakbang 17. Oo? Madla: [INAUDIBLE] David J. MALAN: Sabihing na muli. Madla: [INAUDIBLE] David J. MALAN: Bumalik sa step-- Madla: [INAUDIBLE] David J. MALAN: Alisin ang cap mula sa peanut butter. Oo? Madla: I-drop ang lahat ng mga halaya sa tinapay. David J. MALAN: I-drop ang lahat ang halaya sa tinapay. David J. MALAN: Kami ay halos doon. Hakbang 19. Madla: Alisin ang labis halaya. David J. MALAN: Haha, halaya. [APPLAUSE] David J. MALAN: Bakit hindi we-- Isang hakbang upang kunin ito sa bahay. Isa pang hakbang at pagkatapos ay Makikita kaming maghatid ng mga sandwich. Oo? Madla: [INAUDIBLE] David J. MALAN: Habang anumang sanwits indent remains-- let ni this-- kumain. [Madla pagtawa] David J. MALAN: Lahat ng karapatan, salamat ka sa aming mga boluntaryo dito. [APPLAUSE} David J. MALAN: Mayroon kaming ilang mga magaling pamamaalam regalo para sa bawat isa sa iyo. Ang iyong sariling peanut butter, halaya, at tinapay na magdala pabalik sa bahay. Salamat sa iyo. KIERSTEN: Salamat sa iyo. David J. MALAN: [INAUDIBLE] maligayang pagdating. [APPLAUSE] David J. MALAN: Kaya, ito ay, ng Siyempre, isang katawa-tawa halimbawa. Mag-right? Ngunit ito uri ng magbunyag kung paano namin mga kawani na tao tumagal lamang kalinawan para sa ipinagkaloob. At ang katotohanan pa ako pakikipag-usap sa isa pang tao, siya lamang ang nakakaalam kung ano ang iyong ibig sabihin. Mga Computer ay hindi pagpunta malaman kung ano ang iyong ibig sabihin, kahit na kapag gumagamit ng, bilang Ikinalulungkot namin tungkol na gawin ngayon, mga programa ng isang bagay sa wala, isang drag at drop, palaisipan istilong piraso wika. Kahit na idinisenyo para sa mga batang mga anak, mayroon kang upang maging tahasan kaya at kaya literal na may kung ano ang nais mo ang iyong mga programa na gawin. Ngayon huli, kami ay pagpunta sa maging ang mga programa wala sa pseudocode code, Ingles tulad ng syntax, ngunit code o, mas maayos, source code. Ang source code lamang ang magarbong paraan para naglalarawan code na iyong aktwal isulat sa isang keyboard na hindi sa Ingles per se. Ito ay sa C o Java o C ++ o isang bagay tulad na, dahil kakailanganin namin sa lalong madaling panahon makita. At sa katunayan, sa pananakot lamang ilan sa iyo, sa unang tingin, ito ay isang programa na nakasulat sa isang wika na tinatawag na C. Ngunit upang hindi i-pananakot ang ilan sa iyo, gagawin mo ganap maunawaan kung ano ang nangyayari sa darating sa susunod na Lunes kapag ito pagdating sa isang bagay na katulad nito. Tapat, ito ay isang mas lumang wika. Ito ay medyo arcane, subalit ito ay kinatawan ng maraming mga wika mga araw na ito na may maraming mga panaklong at kulot braces at quote mark at semicolons. At ng maraming ito syntactic bagay-bagay na hindi sa lahat ng intellectually kawili-wili. Sa katunayan, ito ay isang lubos distraction mula sa napaka-simpleng ideya na staring sa amin sa mukha. Ang program na ito, dahil maaaring mo lamang hulaan, mga kopya sa computer screen ng isang tao ang mga salitang "Kamusta pinaghihiwalay ng mundo." Iyan na ang lahat. Kaya malinaw, may ng maraming mga bagay-bagay na nakukuha sa paraan ng ilang obviousness doon, ngunit ito ay pagpunta sa masyadong mabilis mawala ang layo at maging ganap na madaling maunawaan. Sa katunayan, kung ano ang pagpunta naming gawin ngayon ay distill ito medyo mahirap unawain naghahanap ng programa, na muli makakarating ka upang maunawaan nang mabilis, ngunit sa isang bagay magkano ang mas simple. Sabihin natin kung ano ang ibig sabihin namin. Gumuhit ng isang larawan ng kung ano ang ibig sabihin namin Hayaan, sa pamamagitan ng paraan ng mga puzzle piraso dito. Kaya ito ay isang programming wika na kilala bilang scratch. Ito ay binuo ng MIT Media Lab. At ano ang makikita mo sa problema magtakda ng zero, na ilalabas ngayong gabi sa ibang pagkakataon, kami ay mayroon pumunta ka sa ito URL dito scratch.mit.edu. At mayroon silang isang web batay interface sa pamamagitan ng kung aling mga makikita mo isulat ang iyong unang programa. O mga mo sa naunang karanasan, ang iyong ikalawang programa, ngunit sa isang kapaligiran na marahil ng isang maliit na pamilyar at na ay itulak sa iyo upang lumikha ng isang bagay gamit ang napaka-visual na kapaligiran. Ngayon, ano pupuntahan ko na gawin dito ay buksan up ang mismong programa. Umiiral na ito hindi lamang bilang isang web browser, kundi pati na rin bilang isang nada-download na programa sa gayon maaari mong aktwal na gamitin ito kung wala kang internet access. At ako pagpunta sa gawin iyon in dito, sa Sanders, lamang sa kasong ang Wi-Fi ay hindi makikipagtulungan super din. At kung ano pupuntahan ko lang gawin ay point ang ilang mga tampok ng programang ito. Kaya, upang maging malinaw, mayroon akong lamang double na-click ang icon sa aking desktop, o equivalently nawala sa scratch.mit.edu, at ito ay nakuha up window na ito. Ito ay isang programming kapaligiran. Ito ay isang piraso ng software na ang ilan sa aming mga kaibigan sa MIT ay sumulat na sabihin sa amin at ka magsulat mga programa sa wikang tinatawag na sa simula. Ngayon nangyari ito upang maging isang pusa kung sino ang may pangalan na rin scratch at ito ay kanyang mundo kung saan nakatira niya. Ito ang stage, kaya upang makipag-usap, na Parihaba sa itaas na kaliwang sulok. At siya ay walang upang magmukhang isang pusa. Maaari kang gumawa ng kanya hitsura tulad ng anumang bagay at mo ay maaaring magkaroon ng maraming tulad sprites, o mga character, sa isang program. Samantala, sa paglipas dito sa malayong karapatan, ay isang malaking blangko slate. At ito ay kung saan, sa isang sandali, pupunta kami upang simulan ang programming sa pamamagitan ng pag-drag at pag-drop mga graphical na palaisipan piraso na ay tama dito sa gitna. At mayroong paraan ang higit sa kanila kaysa Makikita kaming magpalipas ng oras sa dito sa klase dahil makikita mo na ang mga ito ay ang lahat ng medyo madaling maunawaan. Muli, ito ay dinisenyo para sa mga bata, ngunit namin gamitin ito upang tease-tanggalin ang ilan sa mga pangunahing ideya ng variable, loop, kondisyon, at, sa lalong madaling panahon, mga bagay tulad ng mga pag-andar at mga kaganapan at mga thread at iba pang magarbong mga bagay na aming makapunta sa bago mahaba upang aktwal na lumikha isang bagay mula sa simula. Nilalayon Pun. Ngayon, kung ano ang pupuntahan ko gawin dito ay mag-click sa hindi paggalaw, ngunit control. At ito lamang ang uuri ng here-- at nakikita ko ang ibang itakda ang kulay ng mga bloke. Ngunit mapansin ng ilang mga pamilyar na mga salita. "Kung" at "pang tao kung" at "ulitin." At maaari mong marahil hulaan na reminiscent ng mga sangay, o ang mga kondisyon ng nakita natin, at kahit na ang looping bumuo. Kaya mayroon kaming katulad na mga bloke dito. Ngunit ang pinaka-kagiliw-giliw isa ay ang isang ito dito. Kapag ang berdeng bandila click, ito, para sa mga may naunang programing karanasan, ay katumbas ng sa isang pangunahing pag-andar. Ngunit para sa mga hindi pamilyar, ito ay ang piraso ng palaisipan na kick simulan ang aming buong programa. Ito ay nangangahulugan na literal kapag pumunta ako, sa ganitong programa, at i-click ng isang kulay berdeng flag-- na maaari mong makita dito sa kaliwang tuktok na sulok ng UI, kaya tingnan ang berdeng bandila sa tabi ng pulang stop sign? Kapag nag-click ko na, ang aking programa ay pagpunta upang tumakbo. Ngayon, ako ako pagpunta sa gawin ang isang bagay sobrang simple na may scratch. Pupunta ako sa sige at pumunta sa panel na tingin dito, kung saan mayroon akong isang bungkos ng mga lilang palaisipan piraso, at Pupunta ako sa magpatuloy at gawin isang bagay na sobrang simple tulad ng, sabihin natin. At then-- ang notice na ito teksto sa puting kahon ay editable-- pupuntahan ko sasabihin "Kamusta mundo," gusto lang namin May ginawang sa na textual bersyon ng ilang sandali ang nakalipas. At ngayon kung pumunta ako at i-click ito berdeng flag, ngayon ko pa-program. Ito ay hindi isang partikular na kawili-wiling programa, ngunit ginawa ko ang computer na gawin ang isang bagay. Nagsimula ako ng isang programa at ito Ginawa ang sinabi ko ito dapat gawin. Ngayon, maaari ba akong patuloy na i-drag at i-drop higit pa at higit pa sa mga palaisipan piraso at sila ay pagpunta sa interlock, ngunit sampal ng ilang mga terminolohiya sa dito ipaalam na aming makita ang mga paulit-ulit buong kurso, at talagang sa buong computer science at ang mga programa sa mas pangkalahatang paraan. Ang "sabihin ang" bloke, sa mga lilang, sabihin magsimula lamang sa pagtawag ng pahayag. Ito ay tulad ng isang pahayag ng katotohanan. Gawin ito. Kaya, ito ay isang kategorya ng mga tagubilin na maaaring feed isang computer bilang bahagi ng isang programa o ng isang algorithm. At upang maging malinaw, hindi ka marahil kinuha para sa ipinagkaloob na mayroon ka ng mga program sa iyong computer. At nagpapaumanhin uri ng mga algorithm ang mga ito, ngunit isang programa ay talagang isang bungkos ng mga algorithm na sinulat ni ilang mga tao. Package up nila ito at sila ibenta ito kaya mo, o sila ay naka-post sa isang website para sa iyo upang i-download. Kaya, isang programa ay isa lamang buong bungkos ng mga zero at mga iyon, kahit papano, nilikha tao. At ang mga pattern ng mga zero at mga kumatawan mga bagay, sa huli, tulad ng "kamustahin mundo" o "pag-play ito musika "o" i-play ang video na ito " o "magpadala ng isang e-mail." Ngunit kami ay bumalik sa paraan mas detalyado kung ano isang programa ay kapag ikaw, iyong sarili, isulat ang mga ito. Narito ang isa pang statement-- "Maghintay ng isang segundo." Hindi ko pa ito gamitin, ngunit kung gusto ko ang aking mga programa upang i-pause para sa isang sandali upang gawin ang isang bagay, ang maaari kong sabihin dito na gawin ito. Maghintay ng isang segundo. Ngayon isa pa ay maaaring "i-play ng tunog." Kaya, ito ay natatangi sa simula, ito ay may kakayahan upang i-play ng mga tunog. Kaya, ang isang pahayag maaari ko paggamit ay, dito, "i-play ng tunog." Samantala, Boolean expression, kaya ito ay fancier salita na ipinangalan sa isang tao lang na may pangalang Ginoong Bool, at ito ay tungkol sa isang katanungan. Totoo o false-- ay ang mouse pababa? Ang isang Boolean expression ay isa lamang ang ilang mga expression sa Ingles na alinman true o false. Alinman sa on o off. Ang alinman sa isa o zero. Maaari mong isipin na ito sa anumang bilang ng mga paraan, subalit ito ay alinman sa totoo o hindi totoo ito, sa huli. Kaya "mouse pababa tandang pananong," na ay magiging isang Boolean expression. At maaari mong tingin ng iba, marahil. Halimbawa, "ay ang natitira numero mas mababa kaysa sa tamang numero? " Iyon, masyadong, ay magiging isang Boolean expression. "Mas mababa sa" ay isang Boolean expression. Isa ito, masyadong, "hinahawakan pointer ng mouse." Hindi ako sigurado kung bakit sila na tinatawag na ito pointer ng mouse. Nangangahulugan ito lamang, ay ang cursor, ay ang arrow sa screen, pagpindot sa pusa, halimbawa. O ilang iba pang mga aspeto ng screen. At ito ay isang tanong, muli, at na Tinutukoy ng isang Boolean expression. Isang bagay na maaari mong nais na gamitin sa isang kondisyon. Kaya namin dumating sa na sa isang sandali lamang. Maaari mong "at" ng mga bagay nang magkakasama. Kaya, kung nais mong suriin kung ito ang kaso AT iyon ang kaso, maaari kang gumamit ng "at" block tulad nito. At narito ang kundisyon na. Pansinin ang hugis ng maliit na pambungad na sa itaas ng kulay-dilaw na piraso puzzle, ito ay reminiscent ng hugis Nakita na lang namin ng ilang sandali ang nakalipas. Ang bawat isa sa mga Boolean expression May mga itinuturo gilid sa kaliwa at kanan. At iyon ay dahil nagpasya MIT tao na sa pamamagitan ng visual na conveying hugis, maaari mong uri ng matulungan ang mga tao, mag-aaral at mga bata magkamukha, sa uri ng punan ang mga blangko literal. Ngayon na puzzle-- na pambungad ay isang maliit na maliit, at dahil kakailanganin namin makita sa programa, sa simula, ito ay lumago upang magkasya. Ito ay mapanatili ang hugis nito, sa huli. Kaya isang kondisyon sabihin nagpasya kang "Ang dapat kong gawin ang isang bagay o hindi?" Ang isang Boolean expression ay ang aktwal na tanong na iyong ginagamit upang magpasya ko pumunta sa ang natitira O huwag pumunta ako sa kanan kapag nakatagpo ko ito tinatawag na tinidor sa kalsada? Maaari kang magkaroon ng dalawang sangay. KUNG ang isang bagay ay totoo, gawin ito, iba pumunta na paraan, o maaari mo lamang gawin wala sa lahat, pati na ipinahiwatig sa block na ito. Katulad nito, maaari naming ma-nest ang mga bagay na ito. Kaya kung nais mong Triple tinidor sa kalsada, alinman sa gawin ito o ito o na, maaari mong ma-nest lamang ang mga bagay nang magkakasama. At nagsisimula ito upang makakuha ng isang maliit na pangit, sa huli, para sigurado, ngunit ang logic ay pa rin ang parehong. Maaari mong basahin nang literal ito itaas hanggang sa ibaba at sinasabi nito kung ano ito means-- kung ito ay totoo, gawin ito, iba pa kung. Ang isang loop ay hindi makakuha ng mas simple sa simula. Habang Panahon gawin ang sumusunod. Ngayon maaaring hindi mo tingin mo Maaari makagawa ng higit dahil mayroong hindi magkano ang puwang sa pagitan ng tuktok at ang ibaba ng ito piraso puzzle pambungad. Ngunit makikita mo sa simula ay pagpunta sa lumago upang magkasya ng maraming mga palaisipan piraso bilang gusto mong i-Cram sa doon. Ang isa pang loop ay maaaring maging ipinahayag na may-uulit. Kung alam mo nang maaga, "ako nais na gawin ang isang bagay 10 beses, " Maaari mo lang sabihin sa scratch upang gawin ang isang bagay 10 beses. At, samantala, maaari kaming magkaroon variable. Kaya narito ang isang arbitrary isa, ito ay orange sa kasong ito, at ito ay isang whirlwind tour. Muli, makikita mo ang napaka naa-access ito sa sandaling ka magsimula ng pagturo at pag-click. Na may pangalang ko ang aking mga variable n, ngunit ko Maaaring may pangalang ito ang anumang bagay na gusto kong, at ako pagtatakda ito dito, sa ito arbitrary Halimbawa, sa zero. Nakikita na ngayon ng isang programa tulad ng kumusta mundo ay hindi lahat na nakapanghihimok, kaya sabihin aktwal na magbukas ng isang bagay na isang dating mag-aaral na ginawa. Hayaan akong sige at buksan up, halimbawa, ang isang ito dito, kung saan nais kong ibigin upang magkaroon ng isang volunteer. Ang lahat ng mga karapatan, kung paano about-- sabihin pumunta mas malayo. Oo, dumating sa up. Ano ang inyong pangalan? ABBY: Abby. David J. MALAN: Abby, dumating sa up. Kaya't hindi mo kailanman na-play ito laro bago? ABBY: Hinde David J. MALAN: Lahat ng karapatan. David, mabait sa matugunan mo. Halika sa paglipas. At kung ano ang iyong programming background, kung mayroon man. ABBY: ko na ang natutunan ng ilang mga C ++. David J. MALAN: mo na ang natutunan ng ilang mga C ++. At kung ano ang iyong laro nagpe-play sa background? ABBY: Hindi isang lot. David J. MALAN: OK, sa gayon na ginagawa namin iyon. Kaya narito kung paano ang laro ay pagpunta sa gumana. Pupunta ako sa magpatuloy at i-click ang berdeng bandila, na ay up dito sa kanang tuktok. Ngayon ang iyong predecessor sa klase ay nagbigay sa iyo ang ilang mga tagubilin dito. At sa sandali lamang, ito sabi ni "na espasyo upang magsimula." Kaya sige lang at pindutin ang spacebar. COMPUTER LARO: Pikachu. David J. MALAN: At ang layunin ay upang mahuli ang pagkain, bilang itinatanghal doon sa kaliwa. At sa [INAUDIBLE] [LARO musika nagpe-play] David J. MALAN: Aww, mahusay, salamat sa iyo para sa pag-play. Mayroon kaming dito ng kaunti pamamaalam regalo para sa iyo. Mayroon kaming CS50 ang stress ball, kung nais mong pumili. Ang lahat ng mga karapatan, magandang upang matugunan mo. Salamat sa iyo para sa darating at Hinahamon. Kaya mayroon kaming higit pang mga bola ng stress, kaya gawin ang isa pang halimbawa upang ipaalam motivate. Ang isang boluntaryo? Ang lahat ng mga karapatan, kung paano tungkol sa dito mismo sa harap. Ano ang inyong pangalan? Phillip: Phillip. David J. MALAN: Phillip. Halika sa up, Phillip. Kaya, Phillip ay magiging hinamon sa isa pang laro na isa sa iyong mga predecessors Isinulat ni bilang bahagi ng problema set zero, na tinatawag na Hardest Game Tam ni. At kami makita sa loob lamang ng sandali kung ano ang ibig sabihin sa pamamagitan ng ito. Phillip, mabait sa matugunan mo. Ano ang iyong background? Phillip: Tapos na ng maraming coding. Tapos na ang isang maliit na paglalaro, masyadong. David J. MALAN: OK. Mayroon ka bang isang pulutong ng paglalaro, masyadong. At pinatugtog mo ang larong ito bago? Phillip: Walang David J. MALAN: Lahat karapatan, kaya dito pumunta namin. Pupunta ako sa sige at i-click ang berdeng bandila. [LARO musika] [Musika MC martilyo, "U HINDI ITO Touch"] Phillip: [INAUDIBLE] David J. MALAN: [INAUDIBLE] Phillip: [INAUDIBLE] [Tumatawa] [Musika MC martilyo, "U HINDI ITO Touch"] David J. MALAN: [INAUDIBLE] Mag-araro sa pamamagitan nito. Phillip: [INAUDIBLE] David J. MALAN: Sige. [Musika MC martilyo, "U HINDI ITO Touch"] David J. MALAN: Lahat ng karapatan. Binabati kita. [APPLAUSE] David J. MALAN: gagawin namin post na ang mga online mamaya kaya na maaari mong procrastinate may ito pati na rin. Princeton ay lumalabas susunod, pagkatapos nun. Kaya ang aktwal na magpatuloy ngayon hayaan upang simulan mula sa simula, kaya upang makipag-usap, at aktwal na bumuo ng hanggang maaari naming tease hiwalayin ang ilan sa mga ideya na ito at makapunta sa isang bagay kahit na mas kumplikadong sa pagtatapos. Pupunta ako sa pumunta sa paglipas dito at pupuntahan ko upang magpatuloy at lumikha ng isang bagong file. Kaya muli, ang hanay ng problema ay lumakad sa iyo sa pamamagitan ng ilan sa mga hakbang na ito. Ngunit, ang lahat ng ginawa ko ay naglalakbay sa File menu at ako sinabi "bago," kaya magkano tulad ng Microsoft Salita, o anumang programa tulad na. At ni sige now-- ipaalam at kami ipinatupad "Kamusta mundo" ng ilang sandali ang nakalipas, ngunit gawin ang isang bagay na medyo cuter ipaalam. Pupunta ako sa pumunta up sa mga kaganapan. At ako pagpunta sa gawin "kapag click berdeng bandila. " At pagkatapos ay ako pupunta upang gamitin, dapat naming sabihin, isang branch. Kaya ako ng pagpunta sa gumamit ng isang "kung" kundisyon. At pansinin kung paano sa lalong madaling makakuha ako malapit dito, nais ni ito sa snap-sama. Kaya ipaalam ako pumunta at ito snaps magkasama. At ngayon maaari kong gawin ang isang bagay kawili-wiling. Kung mag-scroll ko sa pamamagitan dito, ako ako pagpunta upang makita ang isang buong bungkos ng mga block. Kung pumunta ako sa "data" - hayaan mo akong mag-zoom in-- mayroong isang bagay tungkol sa mga variable. Kung pumunta ako sa "paggalaw," maaari mong tila i-bagay sa paligid. Kung pumunta ako sa "mga operator" - oh, ito ay kawili-wili, Maaari ba akong pumili ng random na numero. Kaya hayaan mo akong gawin ang isang bagay na may lamang ang ilang mga bagay na maaaring mangyari, dahil lamang. Pupunta ako sa magpatuloy at i-drag ito piraso puzzle, ito ay na mas mababa sa bloke, kaya lamang "Ay ang bilang na ito mas mababa kaysa sa isa na?" Ngunit hindi ko nais isang hard code ang isang numero dahil na ay medyo pointless. Kaya ako pagpunta sa i-drag piraso ito dito, at pansinin kung paano ito snaps sa, at ngayon hayaan mo akong sige at sabihin ang "kung ang bilang na pinili nang sapalaran ay mas mababa sa anim na, huwag ang mga sumusunod na. " Ngayon kung bakit mas mababa sa anim? Ano posibilidad ay ang epektibong pagpunta sa ninyo ako, intuitively lamang? Tungkol sa 50%, tama? Kung ang bilang na iyon hulaan nang sapalaran sa pagitan ng 1 at 10 ay mas mababa sa anim na, malinaw na isa ito, dalawang, tatlo, apat, o limang. At upang ang pupuntahan ninyo ako ng 50% na posibilidad ng kung ano ang nangyayari? Gawin ang isang bagay tulad na rin ipaalam ito, "i-play ang sound ngiyaw." At paunawa, muli, lumalaki ang piraso palaisipan upang magkasya, kaya hangga't tumutugma ang mga hugis. Iyon ay kung ano ang mahalaga. Hayaan akong pumunta sa paglipas ng sa scratch dito at i-click ang "play." Wala mangyayari. Iyan ba ang isang bug? Hindi, hindi kinakailangan. Ito ay maaaring maging lamang na ang isang mas malaking bilang ay napili. Kaya ipaalam gawin ni itong muli. Wala. [Ngiyaw] David J. MALAN: May ito ay. [Ngiyaw] David J. MALAN: Muli. Bilang [MEOWING] David J. MALAN: Kaya kung hindi mo kailanman na-play ng isang laro, siyempre, kung saan bagay-bagay ang nangyayari random, tulad ng masamang guys ay darating o hindi nagmumula sa sa screen, o mga bagay na hindi nakakapasa o hindi pagbagsak, na dahil lamang ng isang bagay super simpleng ganito ang nangyayari. Pumili ng random na numero, at kung ito ay mas mababa kaysa sa ilang halaga, siguro gawin ito o marahil gawin iyon. Maaari naming isama na sa isang kondisyon. Gawin ang isang bagay na iba't ibang Hayaan. Hayaan akong magtapon na ang layo. Maaari mong mapupuksa ang mga bagay-bagay sa pamamagitan ng pag-drag lamang ito off sa kaliwa at pagpapaalam go. Hayaan akong magpatuloy at gawin ang isang bloke magpakailanman at masyadong mabilis gawin ang isang bagay nakakainis. Hayaan akong sige at sabihin "i-play ang sound ngiyaw." Ngunit hindi ko nais na ito na maging masyadong nakakainis, kaya ipaalam sa akin grab sa block na ito, "Maghintay isang segundo," at abiso walang higit pang mga kuwarto para dito. Ngunit kung malapit-lapit pumunta ka, Nais ni ito upang pumunta doon. Kaya Hinahayaan pumunta ako at magpo ito lumalaki upang punan ang bloke. Kaya ngayon, ito ay isang loop. [MEOWING] David J. MALAN: ako Literal na ginagawa ito magpakailanman. Muli at muli. Iyon ay isa lamang hindi natural sounding. Hayaan akong sige at baguhin ito upang hindi isang segundo, dalawang segundo at pindutin ang Enter. At kung ano ang magaling tungkol sa simula ay na maaari mong programa interactive. Gumawa ng pagbabago, siguro ay pindutin ang Enter o Play muli, at ito ay lamang panatilihin ang pagpunta. Well, ngayon kung bakit hindi namin gawin isang bagay na medyo cuter? Sa halip na magawa ang lahat mula sa simula, hayaan mo akong sige at buksan up ng isang maaga ginawa ng isa, na ako pre-bake, na tinatawag na "Alagang Hayop ang Cat." At Magpo-post kami ng lahat ng ang mga file na online, at itakda ang problema zero ay magsasabi sa iyo kung paano i-access ang mga ito at buksan up ang mga ito. At paunawa, ito ay medyo simple. Ngunit nang maaga, mukhang kong na-grabbed isang "magpakailanman" bloke, kaya Nakakuha ako ng isang loop. At pagkatapos Mayroon akong isang "kung" kundisyon. Mayroon akong isang Boolean expression. Kaya sa Ingles, glancing lamang sa na ito, lalo na kung hindi mo kailanman -program bago, intuitively lamang, kung ano ang pagpunta ay gawin, sa programang ito? [Madla Chatter] David J. MALAN: Kung pet mo ang pusa, ang pusa ay pagpunta sa ngiyaw, tama? Dahil "magpakailanman-alis ng check" ay ang pointer ng mouse ng pagpindot sa pusa. Kaya upang maging malinaw, at hindi ko sinabi ito bago, ang lahat ng mga puzzle piraso at ang script na na pinagsama namin ang mga ito sa, kaya upang makipag-usap, isang script ay magkasingkahulugan na may programa, talaga, ay kabilang sa pusa ito. At ang dahilan is-- dahil abiso kung paano ito parehong pusa dito ay naka-highlight, down na dito maaari kang lumikha ng isang pangalawang pusa o aso o talaga anumang nais mo graphically. Maaari kang mag-import ng isang bagay mula sa Photoshop, o ang katulad, at isama ang isang bagay kung nais upang gawin itong para sa isang proyekto. At kung anong makikita mo, sa huli, ay na sa iyo ay maaaring magdagdag ng mga script, idagdag puzzle piraso, sa indibidwal na mga character. Kaya ang mga lahat ng nabibilang sa ang partikular na pusa. Kaya ngayon kung pumunta ako magpatuloy at i-play ang program na ito, walang nangyayari. Ngunit ito ay tumatakbo. Ang programa ay sa ito magpakailanman loop, uri ng paghihintay para sa kung ano ang mangyayari? [Madla Chatter] David J. MALAN: Upang alagang hayop ang pusa. Kaya kung ilipat ko ang aking mouse patungo him-- [MEOWING] David J. MALAN: Kaya ngayon Ako petting ng pusa. Samantala, maaari kaming magkaroon ng double branch. Hayaan akong sige at buksan up huwag alagang hayop ang pusa. Magpo-post kami ito online pati na rin. Ito ay isang kaunti pa mahirap unawain, ngunit walang sinasabi maaari mong hulaan marahil kung ano ang nangyayari sa mangyari. [MEOWING] David J. MALAN: Cat ay meowing, enggrandeng lumang oras. Ngunit ang program na ito ay siyempre na tinatawag na "Huwag Alagang Hayop ang Cat," kaya malinaw, gusto kong pet ang pusa. [ROARING] David J. MALAN: Huwag alagang hayop ang pusa. Ngayon, sabihin tumagal ng isang hitsura sa isa pang halimbawa dito. Isa na ito ay tinatawag na "Kumusta, Hi, Hi," para sa mga kadahilanang iyon ay maging malinaw, dahil sa lalong madaling patakbuhin ko ito thing-- [Selyo Barking] David J. MALAN: Bihirang madaling isulat ang mga nakakainis na mga scratch program. [Selyo Barking] David J. MALAN: Ngayon ay hindi namin pumunta sa mahusay na detalye sa lahat ng mga ito, ngunit napansin mayroong isang ilang mga bagong tampok dito. Mayroong isang variable, na tinatawag na "naka-mute," at pagkatapos ay mayroong isang bungkos ng mga kundisyon. At sa ngayon, ipaalam sa akin tease lang sa iyo sa pamamagitan ng sinasabi na kung ito tao ay nakakakuha ng masyadong nakakainis, Maaari ko pindutin ang spacebar at siya tumitigil. Dahil ang papel na-play sa pamamagitan ng ang dalawang mga script ay ang mga sumusunod. Ang isa sa mga ito ay ang magawa ang Barking bawat ilang segundo. Ang iba pang isa ay naghihintay lamang para sa akin upang pindutin ang spacebar. At kung gagawin ko pindutin ang spacebar, ito ang nangyayari upang baguhin ang estado ng variable na ito, ang halaga ng variable, na tila na tinatawag na "naka-mute," ako ay hindi tumawag ito ang isang bagay tulad ng boring n, Tinatawag ko ito isang salitang Ingles, "naka-mute." Mula sa 1-0 o 0-1. Mula totoo sa hindi totoo o hindi totoo sa true. At sa gayon maaari mong aktwal tingnan ngayon, na ay maaaring magkaroon ng dalawang mga script, dalawang mga programa sa pagtakbo nang sabay-sabay, at pareho ng mga ito ay maaaring pag-upo sa isang loop paggawa ng isang bagay. Naghihintay para gawin ang tao isang bagay tulad ng pagpindot sa spacebar. [Selyo Barking] David J. MALAN: At ngayon siya ay muli sa kanyang daan. [Selyo Barking] David J. MALAN: Kaya ano pa maaari naming gawin sa mga halimbawa? Well, sabihin magpatuloy at gawin ang isang Halimbawa may pagbibilang ng mga tupa. Patuloy naming ito sa kahabaan ng linya dito of-- ni buksan ang halimbawa tupa ipaalam. At paunawa, na halos tulad ng dati, ang isang ito, thankfully, ay mas mababa ng kaunti nakakainis. Sa sandaling pindutin ang i-play ko here-- Ay naku, ito ay nakakainis. Siya ay pagpunta sa baa may ilang mga bagay na maaaring mangyari. Ni-play muli ito Hayaan. [Tupa BLEETING] David J. MALAN: Ang pagkakaiba lamang ay Binago namin ang costume, kaya upang makipag-usap, at kami ay halving at sabihin kung ano na ang aktwal na bilang ay. Ng sige na rin ipaalam at tumagal ito ng isang hakbang karagdagang. At ipaalam sa akin tease sa iyo ng isa iba pang mga tampok dito. Sabihin sige at buksan up isang programa na tinatawag na mga thread. Kaya halos tulad ng maaari kang magkaroon ng isa sprite, pagkakaroon ng maramihang mga script, maaari kang magkaroon ng dalawang sprites, isang ibon sa isang pusa, ang bawat isa sa pagkakaroon ng kanilang sariling mga script. At bawat isa sa kanila maaari magpatakbo nang sabay-sabay. Kung kailanman na iyong narinig ang salitang "multithreading" isang computer ay "multithreaded" paraan maaari itong gawin ang maramihang mga bagay nang sabay-sabay, at, sa katunayan, sa gayon ay maaari sa simula. At ngayon mapansin ang ibon ay uri ng pipi. Ito lamang ang ginagawa ng mga bagay random, nagba-bounce off ang screen. Malinaw ang pusa ay nai-program sa uri ng magkaroon naghahanap ng mga kakayahan sa home in sa ibon dahil siya palagi na nakaturo sa kanya. Hanggang sa wakas, siya catches ang aktwal na ibon. Kaya ako ay hindi dwell sa mga detalye dito, ngunit maaari kang uri ng sulyap sa parehong mga hugis, ang ilang mga "Kung" kundisyon, ang ilang mga variable, marahil ilang mga loop, ay sa huli ginagawa ang parehong bagay. Ngayon ipaalam sa akin sige at buksan up ibang bagay nang sama-sama, upang tease ilan sa inyo, lalo na mga higit pang mga kumportableng, ano ang maaari mong talagang gawin sa mga ito. Pupunta ako sa sige at magbukas ng mga Pindutan dito. At ito ay isang napakabilis simpleng-tila programa, ngunit panoorin kung ano ang mangyayari kapag Manood I-- kung ano ang mangyayari kapag binuksan ko ang bersyon nito, dito sa browser, scratch.mit.edu. At kapag nag-click ako ito malaki pula button, mapapansin kung ano ang mangyayari. Kaya kung ano ang nangyayari sa dito? Mayroon talagang isang marami pang kumplikado nangyayari sa ilalim ng hood, kahit na naipatupad ko na ito, o tapat, si Dan Bradley ay naipatupad ito nang sa gayon lamang. Siya ay dinisenyo ng isang pasadyang scratch palaisipan piraso, na kilala bilang extension sa simula, tinatawag niya ito-toggle. At kung ano ang ginagawa I-toggle ay nagpapadala ito isang mensahe sa internet. At na mensahe mismo mukhang ng kaunti cryptic. Ngunit ito, masyadong, ipapakita sa iyo Nauunawaan ng mga end terminong ginamit sa. Ang mensahe na aktwal na siya ay pagpapadala mukhang ng kaunti ng isang bagay na katulad nito. Ito ay teksto lamang. Cryptic. Makikita mo maintindihan ito sa pamamagitan ng oras makuha namin-set ang problema pitong. Ay lamang pagpapadala nito sa isang textual mensahe sa internet sa isang server. At server iyon ay, sa huli, pakikipag-usap sa ito ilaw bombilya, na May isa sa mga magarbong ilaw na mga bombilya sa loob nito na, mismo, ay pakikipag-usap upang ang Wi-Fi sa network dito, kung saan isang lokal na aparato down na here-- at, sa huli, ito ay aktwal na i-ilaw na on at off. Ngunit maaari naming magawa nang higit pa pa rin kawili-wiling mga bagay. Pansinin kung ano ang ginawa din Dan para sa amin. Ginawa niya ang maramihang mga sprites, ang bawat isa sa na may isang script na naghihintay para sa isang pag-click. At kung nag-click ako pula, ito ay pumupunta pula. Kung nakukuha ko asul, ito ay pumupunta blueish. Berde, dilaw, orange. At lahat ng ito ay nangyayari sa pamamagitan ng pagpunta paraan out papunta sa internet, i-back down na dito sa liwanag bombilya, on at off. At kung maaari mong naniniwala it-- at ito ay marahil isa sa mga pinaka masalimuot na mga scratch mga proyekto ng isang tao ay may implemented-- ginawa niya ito, sa pagiging makatarungan, sa isang araw. At iyon ay ang hamon namin threw down na sa Dan nang makita namin mayroon binary bombilya, mayroon kaming wala, paano Maaari pagsamahin namin ang mga ito? At, sa katunayan, ito ay ganap na isang bagay na sinuman sa kuwartong ito maaaring gawin sa pamamagitan ng end-- semestre ng ba siya reimplemented binary na mga bombilya gamit ang parehong interface na noon ay sa aming iPad sa Miyerkules. Kaya na ngayon, kung ako talaga i-click ang plus sa paglipas dito, mayroon kaming isa, dalawa, tatlo. Maaari ko pindutin ang 16 at i na ang isa sa. 128, at iba pa. Ngayon kung na mag-isa ay may at blown ang iyong isip, maaari mong gawin sa ngayon mas naa-access ang mga bagay, hindi na kinasasangkutan ng anumang hardware tiyak. Bagay lamang sa screen mismo. At, sa katunayan, kung ano ang pinaka-mag-aaral magtapos ka sa paggawa ay ang ilang mga uri ng laro, ilang piraso ng sining trabaho, o ang ilang mga uri ng interactive animation. At ako ay sabihin sa isa sa aming mga paborito ay naging isang ito. At naisip ko kung namin maaaring palalamlamin ang liwanag ng ilaw, isasaalang-alang namin ang isang sulyap sa ito panghuling Sa simula ng proyekto sa konklusyon. Ngunit kung ano ang makikita mo dapat tandaan, bilang Maaari ko tease sa iyo ng isang huling detalye, sectioning ay magsisimula sa susunod na linggo. Oras ng opisina ay magsisimula sa susunod na linggo. Problema set ipo-post zero CS50.harvard.edu sa ibang pagkakataon ngayong araw. At ikaw ay greeted sa zero problema itakda sa sarili Zamyla Chan CS50, na nag- Mga Gabay sa karamihan sa aming mga walkthroughs. Ito ang mga naka-embed na video sa mga hanay ng problema na hawakan ang iyong mga kamay sa pamamagitan ng maraming ng unang pangkat up at sa pamamagitan ng maraming sa mga posibleng mga pasya sa disenyo. Kaya kung hindi mo kailanman ay nagkaroon na damdamin kapag tumatawag ng araling-bahay pagtatalaga at nagtataka, kung saan ako magsisimula? Siya ay mayroon na sagot para sa iyo. At ngayon, isang pangwakas na programa mula sa isa sa iyong mga predecessors sa sagot sa tanong "Ano ang ibig sabihin ng Fox?" [Musika YLVIS, "ANO ANG MGA FOX sabihin?] YLVIS: (pagkanta) Dog napupunta woof. Cat napupunta ngiyaw. Pumupunta Bird tweet at mouse ay pumupunta squeak. Cow napupunta Moo. Palaka napupunta croak. At ang mga elepante napupunta toot. Ducks sabihin quack at isda pumunta blub. At ang selyo ay pumupunta kita ang kita ang kita, ngunit mayroong isang tunog na alam ng walang sinuman, kung ano ang ibig sabihin ng Fox? At David J. MALAN: Iyon lang para sa CS50. Makikita natin sa iyo sa Palaisipan Araw at sa Lunes. [APPLAUSE] [Musika YLVIS, "Ano ang ginagawa ng FOX sabihin?"] NARRATOR: At malalim na ngayon mga pananaw, sa pamamagitan ng Daven Farnham. Ngayon Nakatanggap ako pindutin sa harapan sa isang libro ng telepono. Nakalilito, bilang ako sa tahanan sa panonood ng online.